# Configuration Implications and Platform Detection # Processes build options and sets up platform-specific definitions # Option hierarchy: ALL_OPTIONS → FINAL_STRIP → STRIP_ALL → SIZE_OPT if(DEMO_ALL_OPTIONS) set(DEMO_SIZE_OPT ON) set(DEMO_STRIP_ALL ON) set(DEMO_BUILD_TESTS ON) set(DEMO_BUILD_TOOLS ON) # NOTE: DEMO_FINAL_STRIP is NOT included here (too dangerous for testing) endif() # FINAL_STRIP: Most aggressive stripping (removes ALL error checking) # Implies STRIP_ALL (stricter superset) if(DEMO_FINAL_STRIP) add_definitions(-DFINAL_STRIP) set(DEMO_STRIP_ALL ON) message(STATUS "FINAL_STRIP enabled - all error checking will be removed") endif() if(DEMO_STRIP_ALL) add_definitions(-DSTRIP_ALL) set(DEMO_SIZE_OPT ON) endif() if(DEMO_STRIP_EXTERNAL_LIBS) add_definitions(-DSTRIP_EXTERNAL_LIBS) # Audio: Use miniaudio null backend add_definitions(-DMA_ENABLE_ONLY_SPECIFIC_BACKENDS -DMA_ENABLE_NULL) message(STATUS "STRIP_EXTERNAL_LIBS enabled - binary will compile but NOT run (size measurement only)") endif() if(DEMO_ENABLE_COVERAGE AND APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") # Coverage requires debug info set(CMAKE_BUILD_TYPE Debug) endif() if(DEMO_ENABLE_DEBUG_LOGS) add_definitions(-DDEBUG_LOG_ALL) endif() if(DEMO_HEADLESS) add_definitions(-DDEMO_HEADLESS) add_definitions(-DMA_ENABLE_ONLY_SPECIFIC_BACKENDS -DMA_ENABLE_NULL) message(STATUS "DEMO_HEADLESS enabled - functional stubs (audio works, no GPU)") endif() # Platform-specific definitions if(APPLE) add_definitions(-DGLFW_EXPOSE_NATIVE_COCOA) elseif(WIN32) add_definitions(-DGLFW_EXPOSE_NATIVE_WIN32) elseif(UNIX) if(DEFINED CMAKE_USE_WAYLAND) add_definitions(-DGLFW_EXPOSE_NATIVE_WAYLAND) else() add_definitions(-DGLFW_EXPOSE_NATIVE_X11) endif() endif() # Configuration summary message(STATUS "") message(STATUS "Build Configuration:") message(STATUS " DEMO_SIZE_OPT: ${DEMO_SIZE_OPT}") message(STATUS " DEMO_STRIP_ALL: ${DEMO_STRIP_ALL}") message(STATUS " DEMO_FINAL_STRIP: ${DEMO_FINAL_STRIP}") message(STATUS " DEMO_STRIP_EXTERNAL_LIBS: ${DEMO_STRIP_EXTERNAL_LIBS}") message(STATUS " DEMO_BUILD_TESTS: ${DEMO_BUILD_TESTS}") message(STATUS " DEMO_BUILD_TOOLS: ${DEMO_BUILD_TOOLS}") message(STATUS " DEMO_ENABLE_COVERAGE: ${DEMO_ENABLE_COVERAGE}") message(STATUS " DEMO_ENABLE_DEBUG_LOGS: ${DEMO_ENABLE_DEBUG_LOGS}") message(STATUS " DEMO_HEADLESS: ${DEMO_HEADLESS}") message(STATUS " DEMO_WORKSPACE: ${DEMO_WORKSPACE}") message(STATUS "")