Files
MosisService/core/CMakeLists.txt
omigamedev 33841516f1 extract shared mosis-core library from sandbox APIs
Create core/ directory with platform-agnostic sandbox components:
- Timer manager, JSON API, Crypto API, Virtual FS
- Lua sandbox, Permission gate, Audit log, Rate limiter
- Platform abstraction interfaces (IAssetInterface, IFilesystemInterface)
- Platform-agnostic logger with Android/Desktop implementations

Update designer to link against mosis-core library instead of
including sandbox sources directly.

This is the foundation for unifying the Android service and
desktop designer to share the same codebase.

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

101 lines
3.0 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(mosis-core VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Core library sources - portable sandbox APIs
set(MOSIS_CORE_SOURCES
# Utility
src/logger.cpp
# Sandbox APIs (portable)
src/sandbox/timer_manager.cpp
src/sandbox/json_api.cpp
src/sandbox/crypto_api.cpp
src/sandbox/virtual_fs.cpp
src/sandbox/lua_sandbox.cpp
src/sandbox/permission_gate.cpp
src/sandbox/audit_log.cpp
src/sandbox/rate_limiter.cpp
src/sandbox/path_sandbox.cpp
)
# Optional sources that require additional dependencies
if(MOSIS_ENABLE_DATABASE)
list(APPEND MOSIS_CORE_SOURCES src/sandbox/database_manager.cpp)
endif()
if(MOSIS_ENABLE_NETWORK)
list(APPEND MOSIS_CORE_SOURCES
src/sandbox/network_manager.cpp
src/sandbox/http_validator.cpp
)
endif()
# Create static library
add_library(mosis-core STATIC ${MOSIS_CORE_SOURCES})
# Include directories
target_include_directories(mosis-core PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mosis>
$<INSTALL_INTERFACE:include>
)
# Also add internal include path for relative includes within library
target_include_directories(mosis-core PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include/mosis/sandbox
${CMAKE_CURRENT_SOURCE_DIR}/include/mosis/util
${CMAKE_CURRENT_SOURCE_DIR}/include/mosis/apps
)
# Platform-specific definitions
if(ANDROID)
target_compile_definitions(mosis-core PUBLIC MOSIS_PLATFORM_ANDROID)
elseif(WIN32)
target_compile_definitions(mosis-core PUBLIC MOSIS_PLATFORM_WINDOWS)
# Windows crypto library
target_link_libraries(mosis-core PRIVATE bcrypt)
elseif(APPLE)
target_compile_definitions(mosis-core PUBLIC MOSIS_PLATFORM_MACOS)
else()
target_compile_definitions(mosis-core PUBLIC MOSIS_PLATFORM_LINUX)
endif()
# Lua is required - parent project must provide it
if(TARGET lua_static)
target_link_libraries(mosis-core PUBLIC lua_static)
elseif(TARGET lua)
target_link_libraries(mosis-core PUBLIC lua)
else()
# Try to find Lua
find_package(Lua QUIET)
if(LUA_FOUND)
target_include_directories(mosis-core PUBLIC ${LUA_INCLUDE_DIR})
target_link_libraries(mosis-core PUBLIC ${LUA_LIBRARIES})
else()
message(WARNING "Lua not found - parent project must provide Lua target")
endif()
endif()
# JSON library (nlohmann/json - header only)
if(TARGET nlohmann_json::nlohmann_json)
target_link_libraries(mosis-core PUBLIC nlohmann_json::nlohmann_json)
else()
find_package(nlohmann_json QUIET)
if(nlohmann_json_FOUND)
target_link_libraries(mosis-core PUBLIC nlohmann_json::nlohmann_json)
endif()
endif()
# SQLite for database_manager (optional)
if(MOSIS_ENABLE_DATABASE)
find_package(SQLite3 REQUIRED)
target_link_libraries(mosis-core PRIVATE SQLite::SQLite3)
target_compile_definitions(mosis-core PRIVATE MOSIS_HAS_SQLITE)
endif()
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)