diff options
| -rw-r--r-- | source/slang-core-module/CMakeLists.txt | 24 | ||||
| -rw-r--r-- | source/slang-glsl-module/CMakeLists.txt | 21 |
2 files changed, 32 insertions, 13 deletions
diff --git a/source/slang-core-module/CMakeLists.txt b/source/slang-core-module/CMakeLists.txt index d02301dc2..051890826 100644 --- a/source/slang-core-module/CMakeLists.txt +++ b/source/slang-core-module/CMakeLists.txt @@ -100,15 +100,37 @@ set(core_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR}) set(core_module_generated_header ${core_module_generated_header_dir}/slang-core-module-generated.h ) +set(glsl_module_generated_header_dir + ${CMAKE_CURRENT_BINARY_DIR}/../slang-glsl-module +) +set(glsl_module_generated_header + ${glsl_module_generated_header_dir}/slang-glsl-module-generated.h +) + +# Propagate to parent directory scope, so they're visible to +# slang-glsl-module/CMakeLists.txt +set(glsl_module_generated_header_dir + ${glsl_module_generated_header_dir} + PARENT_SCOPE +) +set(glsl_module_generated_header ${glsl_module_generated_header} PARENT_SCOPE) add_custom_command( OUTPUT ${core_module_generated_header} ${glsl_module_generated_header} COMMAND slang-bootstrap -archive-type riff-lz4 -save-core-module-bin-source - ${core_module_generated_header} + ${core_module_generated_header} -save-glsl-module-bin-source + ${glsl_module_generated_header} DEPENDS slang-bootstrap VERBATIM ) +# Add a target so that we can depend on the above step when we create the glsl +# module +add_custom_target( + generate_core_module_headers + DEPENDS ${core_module_generated_header} ${glsl_module_generated_header} +) +set_target_properties(generate_core_module_headers PROPERTIES FOLDER generated) set(core_module_common_args . diff --git a/source/slang-glsl-module/CMakeLists.txt b/source/slang-glsl-module/CMakeLists.txt index 95787f01d..21e7e0683 100644 --- a/source/slang-glsl-module/CMakeLists.txt +++ b/source/slang-glsl-module/CMakeLists.txt @@ -1,19 +1,15 @@ # # Generate an embeddable glsl module # -set(glsl_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR}) -set(glsl_module_generated_header - ${glsl_module_generated_header_dir}/slang-glsl-module-generated.h -) -add_custom_command( - OUTPUT ${glsl_module_generated_header} - COMMAND - slang-bootstrap -archive-type riff-lz4 -save-glsl-module-bin-source - ${glsl_module_generated_header} - DEPENDS slang-bootstrap - VERBATIM -) +# This header is generated in the same call to slang-bootstrap that generates +# the core module embed, which can be found in +# ../slang-core-module/CMakeLists.txt +# The target to look for is generate_core_module_headers + +# CMake doesn't allow creating an implicit dependency across directory scopes, +# see https://cmake.org/cmake/help/v3.31/prop_sf/GENERATED.html. Because of +# this we add the explicit REQUIRES slang_add_target( . MODULE @@ -23,6 +19,7 @@ slang_add_target( EXPLICIT_SOURCE ./slang-embedded-glsl-module.cpp ${glsl_module_generated_header} + REQUIRES generate_core_module_headers EXCLUDE_FROM_ALL EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL EXPORT_SET_NAME SlangTargets |
