Files
Nova64/CMakeLists.txt
T
Lukas Höppner 1654d366b2 add WAMR to build
2026-08-09 21:11:17 +02:00

48 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(Nova64 VERSION 1.0.0 LANGUAGES C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
option(BUILD_CORE "Build the Nova64 native core library" ON)
option(BUILD_ESP32 "Build the ESP32 firmware project" OFF)
option(BUILD_SIMULATOR "Build the C# simulator project" OFF)
set(SIMULATOR_PROJECT "simulator/Nova64Simulator.csproj" CACHE PATH "Path to the C# simulator .csproj or .sln relative to repository root")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
if(BUILD_CORE)
add_subdirectory(core)
endif()
if(BUILD_ESP32)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/esp32/CMakeLists.txt")
add_subdirectory(esp32)
else()
message(WARNING "BUILD_ESP32=ON but esp32/CMakeLists.txt is missing.")
endif()
endif()
if(BUILD_SIMULATOR)
find_program(DOTNET_EXECUTABLE dotnet)
if(NOT DOTNET_EXECUTABLE)
message(FATAL_ERROR "BUILD_SIMULATOR requires the .NET SDK. Install dotnet or disable BUILD_SIMULATOR.")
endif()
if(NOT SIMULATOR_PROJECT)
message(FATAL_ERROR "BUILD_SIMULATOR=ON requires SIMULATOR_PROJECT to point to the simulator .csproj or .sln relative to the repository root.")
endif()
add_custom_target(simulator ALL
COMMAND "${DOTNET_EXECUTABLE}" build "${CMAKE_CURRENT_SOURCE_DIR}/${SIMULATOR_PROJECT}" /p:NativeLibDir="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/simulator"
COMMENT "Building C# simulator project"
)
if(BUILD_CORE)
add_dependencies(simulator nova64_core)
endif()
endif()