Files
MosisService/designer/CMakeLists.txt
omigamedev 8432bbb986 add sandbox support to desktop designer, fix mouse coordinates and UI issues
- Add DesktopSandbox class that integrates timer, JSON, crypto, and VirtualFS APIs
- Fix mouse coordinate handling: GLFW reports window coordinates, not physical pixels
- Fix font path resolution to search multiple locations for test apps
- Fix screenshot capture timing (capture before buffer swap)
- Fix test app CSS: use border-width instead of border:none, add display:block
- Fix test app Lua: add document nil checks, use HTML entities for symbols
- Update hot_reload to reset sandbox state on reload

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 10:22:32 +01:00

114 lines
3.0 KiB
CMake

# D:\Dev\Mosis\MosisService\designer\CMakeLists.txt
cmake_minimum_required(VERSION 3.22.1)
project(mosis-designer)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Find dependencies via vcpkg
find_package(glfw3 CONFIG REQUIRED)
find_package(freetype CONFIG REQUIRED)
find_package(PNG REQUIRED)
find_package(Lua REQUIRED)
find_package(glad CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
# Fetch RmlUi
include(FetchContent)
FetchContent_Declare(
rmlui
GIT_REPOSITORY https://github.com/mikke89/RmlUi.git
GIT_TAG 6.0
)
set(RMLUI_LUA_BINDINGS ON CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(RMLUI_SAMPLES OFF CACHE BOOL "" FORCE)
set(RMLUI_TESTS OFF CACHE BOOL "" FORCE)
set(RMLUI_FONT_ENGINE "freetype" CACHE STRING "" FORCE)
FetchContent_MakeAvailable(rmlui)
# Get glad include directories explicitly
get_target_property(GLAD_INCLUDE_DIRS glad::glad INTERFACE_INCLUDE_DIRECTORIES)
# Shared kernel library (platform-agnostic code from MosisService)
add_library(mosis-kernel STATIC
../src/main/cpp/RmlUi_Renderer_GL3.cpp
)
target_include_directories(mosis-kernel PUBLIC
../src/main/kernel/include
../src/main/cpp
${GLAD_INCLUDE_DIRS}
${LUA_INCLUDE_DIR}
)
target_link_libraries(mosis-kernel PUBLIC
rmlui
rmlui_lua
${LUA_LIBRARIES}
glad::glad
)
target_include_directories(mosis-kernel PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_compile_definitions(mosis-kernel PUBLIC
MOSIS_PLATFORM_DESKTOP
# Use our wrapper header that sets up RMLUI_SHADER_HEADER_VERSION before including glad
RMLUI_GL3_CUSTOM_LOADER="glad_loader.h"
)
# Sandbox sources (reuse from MosisService)
set(SANDBOX_SOURCES
../src/main/cpp/sandbox/timer_manager.cpp
../src/main/cpp/sandbox/json_api.cpp
../src/main/cpp/sandbox/crypto_api.cpp
../src/main/cpp/sandbox/virtual_fs.cpp
)
# Designer executable
add_executable(mosis-designer
main.cpp
src/desktop_platform.cpp
src/desktop_file_interface.cpp
src/hot_reload.cpp
src/platform_singleton.cpp
src/desktop_sandbox.cpp
src/testing/action_recorder.cpp
src/testing/action_player.cpp
src/testing/ui_inspector.cpp
src/testing/visual_capture.cpp
# Local backend with input recording hooks
src/backend/RmlUi_Backend_GLFW_GL3.cpp
src/backend/RmlUi_Platform_GLFW.cpp
# Sandbox APIs
${SANDBOX_SOURCES}
)
target_include_directories(mosis-designer PRIVATE
src
src/testing
src/backend
../src/main/kernel/include
../src/main/cpp
../src/main/cpp/sandbox
)
target_link_libraries(mosis-designer PRIVATE
mosis-kernel
glad::glad
glfw
freetype
PNG::PNG
nlohmann_json::nlohmann_json
)
# Windows-specific
if(WIN32)
target_link_libraries(mosis-designer PRIVATE opengl32)
endif()
# Copy assets for development
add_custom_command(TARGET mosis-designer POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/../src/main/assets
$<TARGET_FILE_DIR:mosis-designer>/assets
)