diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index acae668..c35695f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ option(DEMO_BUILD_TOOLS "Build tools" OFF) option(DEMO_ENABLE_COVERAGE "Enable code coverage generation (macOS only)" OFF) option(DEMO_ENABLE_DEBUG_LOGS "Enable all debug logging (for pre-commit checks)" OFF) option(DEMO_ALL_OPTIONS "Activate all options at once" OFF) +set(DEMO_WORKSPACE "main" CACHE STRING "Active workspace (main, test, etc.)") if (DEMO_ALL_OPTIONS) set(DEMO_SIZE_OPT ON) @@ -55,6 +56,15 @@ if (DEMO_ENABLE_DEBUG_LOGS) add_definitions(-DDEBUG_LOG_ALL) endif() +#-- - Workspace Configuration -- - +include(cmake/ParseWorkspace.cmake) +set(WORKSPACE_DIR "${CMAKE_SOURCE_DIR}/workspaces/${DEMO_WORKSPACE}") +if(NOT EXISTS "${WORKSPACE_DIR}/workspace.cfg") + message(FATAL_ERROR "Workspace not found: ${DEMO_WORKSPACE} (${WORKSPACE_DIR})") +endif() +parse_workspace_config("${WORKSPACE_DIR}") +message(STATUS "Using workspace: ${DEMO_WORKSPACE}") + #-- - Platform Detection and Core Setup -- - if(APPLE) add_definitions(-DGLFW_EXPOSE_NATIVE_COCOA) @@ -228,6 +238,9 @@ endif() function(parse_asset_list INPUT_TXT OUT_FILE_LIST) set(ASSET_FILES "") if(EXISTS ${INPUT_TXT}) + # Get directory of INPUT_TXT for relative path resolution + get_filename_component(INPUT_DIR ${INPUT_TXT} DIRECTORY) + file(STRINGS ${INPUT_TXT} LINES) foreach(LINE ${LINES}) # Skip comments and empty lines @@ -236,8 +249,14 @@ function(parse_asset_list INPUT_TXT OUT_FILE_LIST) # Extract filename (third field: ASSET_NAME, COMPRESSION, FILENAME, DESC) string(REGEX REPLACE "^[^,]+,[^,]+,[ ]*([^,]+).*" "\\1" FILENAME "${LINE}") string(STRIP "${FILENAME}" FILENAME) - # Build full path - set(FULL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/assets/final/${FILENAME}") + + # Try workspace-relative path first + set(FULL_PATH "${INPUT_DIR}/${FILENAME}") + if(NOT EXISTS ${FULL_PATH}) + # Fall back to legacy path for compatibility + set(FULL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/assets/final/${FILENAME}") + endif() + if(EXISTS ${FULL_PATH}) list(APPEND ASSET_FILES ${FULL_PATH}) endif() @@ -297,8 +316,9 @@ macro(add_demo_test NAME TEST_NAME) add_test(NAME ${TEST_NAME} COMMAND ${NAME}) endmacro() -#-- - Generation Targets -- - -set(DEMO_SEQ_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/demo.seq) +#-- - Generation Targets -- - +# Use workspace-configured paths +set(DEMO_SEQ_PATH ${WORKSPACE_TIMELINE}) set(GENERATED_TIMELINE_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/timeline.cc) add_custom_command( OUTPUT ${GENERATED_TIMELINE_CC} @@ -306,22 +326,22 @@ add_custom_command( COMMAND ${SEQ_COMPILER_CMD} ${DEMO_SEQ_PATH} ${GENERATED_TIMELINE_CC} DEPENDS ${SEQ_COMPILER_DEPENDS} ${DEMO_SEQ_PATH} src/gpu/demo_effects.h - COMMENT "Compiling demo sequence..." + COMMENT "Compiling demo sequence from workspace ${DEMO_WORKSPACE}..." ) add_custom_target(generate_timeline ALL DEPENDS ${GENERATED_TIMELINE_CC}) -set(TRACKER_MUSIC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/music.track) +set(TRACKER_MUSIC_PATH ${WORKSPACE_MUSIC}) set(GENERATED_MUSIC_DATA_CC ${CMAKE_CURRENT_SOURCE_DIR}/src/generated/music_data.cc) add_custom_command( OUTPUT ${GENERATED_MUSIC_DATA_CC} COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/src/generated COMMAND ${TRACKER_COMPILER_FINAL_CMD} ${TRACKER_MUSIC_PATH} ${GENERATED_MUSIC_DATA_CC} DEPENDS ${TRACKER_COMPILER_FINAL_DEPENDS} ${TRACKER_MUSIC_PATH} tracker_compiler_host - COMMENT "Compiling tracker music..." + COMMENT "Compiling tracker music from workspace ${DEMO_WORKSPACE}..." ) add_custom_target(generate_tracker_music ALL DEPENDS ${GENERATED_MUSIC_DATA_CC}) -pack_assets(assets ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/demo_assets.txt GEN_DEMO_H GEN_DEMO_CC generate_demo_assets) +pack_assets(assets ${WORKSPACE_ASSETS} GEN_DEMO_H GEN_DEMO_CC generate_demo_assets) pack_test_assets(test_assets ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/test_assets_list.txt GEN_TEST_H GEN_TEST_CC generate_test_assets) # Mark generated files so CMake always checks if they need rebuilding |
