45 lines
1.6 KiB
CMake
45 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(Nova64 VERSION 1.0.0 LANGUAGES C)
|
|
|
|
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()
|