summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang-core-module/CMakeLists.txt24
-rw-r--r--source/slang-glsl-module/CMakeLists.txt21
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