summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt36
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