mirror of
https://github.com/encounter/aurora.git
synced 2026-07-09 18:19:33 -07:00
85 lines
3.3 KiB
CMake
85 lines
3.3 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
project(aurora LANGUAGES C CXX)
|
|
if (APPLE)
|
|
enable_language(OBJC)
|
|
endif()
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
option(AURORA_ENABLE_GX "Enable GX implementation and WebGPU renderer" ON)
|
|
option(AURORA_ENABLE_DVD "Enable DVD implementation backed by nod" OFF) # TODO: need to fix tests
|
|
option(AURORA_ENABLE_CARD "Enable CARD implementation based on kabufuda" ON)
|
|
option(AURORA_ENABLE_RMLUI "Enable HTML/CSS Based UI Library for use in end-user UI development." OFF)
|
|
option(AURORA_CACHE_USE_ZSTD "Compress WebGPU cache entries with zstd" ON)
|
|
|
|
# Dependency versions
|
|
set(AURORA_DAWN_VERSION "v20260423.175430" CACHE STRING "Dawn version tag (https://github.com/encounter/dawn-build/releases)")
|
|
set(AURORA_SDL3_VERSION "3.4.4" CACHE STRING "SDL3 version tag (https://github.com/libsdl-org/SDL/releases)")
|
|
set(AURORA_NOD_VERSION "v2.0.0-alpha.8" CACHE STRING "nod version tag (https://github.com/encounter/nod/releases)")
|
|
|
|
# Platform-specific defaults
|
|
if (CMAKE_CROSSCOMPILING OR EMSCRIPTEN)
|
|
# Cross-compiling: vendor everything, don't use system packages
|
|
set(_default_provider "vendor")
|
|
set(_default_linkage "static")
|
|
else ()
|
|
set(_default_provider "auto")
|
|
if (WIN32)
|
|
set(_default_linkage "shared")
|
|
else ()
|
|
set(_default_linkage "static")
|
|
endif ()
|
|
endif ()
|
|
|
|
# Dawn/WebGPU (if AURORA_ENABLE_GX)
|
|
set(AURORA_DAWN_PROVIDER "${_default_provider}" CACHE STRING
|
|
"How to provide Dawn: auto, vendor (build from source), system (find_package/imported), package (download prebuilt)")
|
|
set_property(CACHE AURORA_DAWN_PROVIDER PROPERTY STRINGS auto vendor system package)
|
|
set(AURORA_DAWN_LINKAGE "${_default_linkage}" CACHE STRING "Dawn linkage type preference")
|
|
set_property(CACHE AURORA_DAWN_LINKAGE PROPERTY STRINGS shared static)
|
|
|
|
# SDL3
|
|
set(AURORA_SDL3_PROVIDER "${_default_provider}" CACHE STRING
|
|
"How to provide SDL3: auto, vendor (build from source), system (find_package/imported), or package (download prebuilt)")
|
|
set_property(CACHE AURORA_SDL3_PROVIDER PROPERTY STRINGS auto vendor system package)
|
|
set(AURORA_SDL3_LINKAGE "${_default_linkage}" CACHE STRING "SDL3 linkage type preference")
|
|
set_property(CACHE AURORA_SDL3_LINKAGE PROPERTY STRINGS shared static)
|
|
|
|
# nod (if AURORA_ENABLE_DVD)
|
|
set(AURORA_NOD_PROVIDER "${_default_provider}" CACHE STRING
|
|
"How to provide nod: auto, vendor (build from source), system (find_package/imported), package (download prebuilt)")
|
|
set_property(CACHE AURORA_NOD_PROVIDER PROPERTY STRINGS auto vendor system package)
|
|
set(AURORA_NOD_LINKAGE "${_default_linkage}" CACHE STRING "nod linkage type preference")
|
|
set_property(CACHE AURORA_NOD_LINKAGE PROPERTY STRINGS shared static)
|
|
|
|
add_subdirectory(extern)
|
|
|
|
include(cmake/aurora_core.cmake)
|
|
include(cmake/aurora_os.cmake)
|
|
if (AURORA_ENABLE_GX)
|
|
include(cmake/aurora_gx.cmake)
|
|
include(cmake/aurora_gd.cmake)
|
|
endif ()
|
|
include(cmake/aurora_pad.cmake)
|
|
include(cmake/aurora_ms.cmake)
|
|
include(cmake/aurora_si.cmake)
|
|
include(cmake/aurora_main.cmake)
|
|
include(cmake/aurora_mtx.cmake)
|
|
include(cmake/aurora_vi.cmake)
|
|
if(AURORA_ENABLE_CARD)
|
|
include(cmake/aurora_card.cmake)
|
|
endif()
|
|
if (AURORA_ENABLE_DVD)
|
|
include(cmake/aurora_dvd.cmake)
|
|
endif ()
|
|
|
|
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
add_subdirectory(examples)
|
|
endif ()
|
|
|
|
if (NOT CMAKE_CROSSCOMPILING)
|
|
enable_testing()
|
|
add_subdirectory(tests)
|
|
endif ()
|