From 7b9bb79284baa729365c25cfaf942076c8370dff Mon Sep 17 00:00:00 2001 From: jstefanelli Date: Tue, 2 Sep 2025 13:41:10 +0200 Subject: [PATCH] [CMakeLists] Generate and reference shader depfile --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8290e7..da86c23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,14 +17,16 @@ target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu) target_link_options(${CMAKE_PROJECT_NAME} PRIVATE --use-port=emdawnwebgpu -sASYNCIFY=1) target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE glm::glm) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE -DGLM_FORCE_DEPTH_ZERO_TO_ONE -DGLM_FORCE_LEFT_HANDED) +target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) function(compile_and_package_shader SHADER_NAME TARGET) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/shaders - COMMAND slangc -target wgsl -matrix-layout-column-major ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang -o ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang) + COMMAND slangc -target wgsl -matrix-layout-column-major ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang -o ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl -depfile ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl.d + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/shaders/${SHADER_NAME}.slang + DEPFILE ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl.d + ) add_custom_target(${TARGET}_shader_${SHADER_NAME} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl) - #TODO: Add deptfile generation via slang for recompilation when embedded files change add_dependencies(${TARGET} ${TARGET}_shader_${SHADER_NAME}) target_link_options(${TARGET} PRIVATE --embed-file ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl@/shaders/${SHADER_NAME}.wgsl) set_target_properties(${TARGET} PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shaders/${SHADER_NAME}.wgsl)