Skip to content

Commit 0fee8c1

Browse files
authored
build core and glsl modules in the same slang-bootstrap invocation (shader-slang#6341)
Closes shader-slang#6339
1 parent ee99bec commit 0fee8c1

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

source/slang-core-module/CMakeLists.txt

+23-1
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,37 @@ set(core_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR})
100100
set(core_module_generated_header
101101
${core_module_generated_header_dir}/slang-core-module-generated.h
102102
)
103+
set(glsl_module_generated_header_dir
104+
${CMAKE_CURRENT_BINARY_DIR}/../slang-glsl-module
105+
)
106+
set(glsl_module_generated_header
107+
${glsl_module_generated_header_dir}/slang-glsl-module-generated.h
108+
)
109+
110+
# Propagate to parent directory scope, so they're visible to
111+
# slang-glsl-module/CMakeLists.txt
112+
set(glsl_module_generated_header_dir
113+
${glsl_module_generated_header_dir}
114+
PARENT_SCOPE
115+
)
116+
set(glsl_module_generated_header ${glsl_module_generated_header} PARENT_SCOPE)
103117

104118
add_custom_command(
105119
OUTPUT ${core_module_generated_header} ${glsl_module_generated_header}
106120
COMMAND
107121
slang-bootstrap -archive-type riff-lz4 -save-core-module-bin-source
108-
${core_module_generated_header}
122+
${core_module_generated_header} -save-glsl-module-bin-source
123+
${glsl_module_generated_header}
109124
DEPENDS slang-bootstrap
110125
VERBATIM
111126
)
127+
# Add a target so that we can depend on the above step when we create the glsl
128+
# module
129+
add_custom_target(
130+
generate_core_module_headers
131+
DEPENDS ${core_module_generated_header} ${glsl_module_generated_header}
132+
)
133+
set_target_properties(generate_core_module_headers PROPERTIES FOLDER generated)
112134

113135
set(core_module_common_args
114136
.

source/slang-glsl-module/CMakeLists.txt

+9-12
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
#
22
# Generate an embeddable glsl module
33
#
4-
set(glsl_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR})
5-
set(glsl_module_generated_header
6-
${glsl_module_generated_header_dir}/slang-glsl-module-generated.h
7-
)
8-
add_custom_command(
9-
OUTPUT ${glsl_module_generated_header}
10-
COMMAND
11-
slang-bootstrap -archive-type riff-lz4 -save-glsl-module-bin-source
12-
${glsl_module_generated_header}
13-
DEPENDS slang-bootstrap
14-
VERBATIM
15-
)
164

5+
# This header is generated in the same call to slang-bootstrap that generates
6+
# the core module embed, which can be found in
7+
# ../slang-core-module/CMakeLists.txt
8+
# The target to look for is generate_core_module_headers
9+
10+
# CMake doesn't allow creating an implicit dependency across directory scopes,
11+
# see https://cmake.org/cmake/help/v3.31/prop_sf/GENERATED.html. Because of
12+
# this we add the explicit REQUIRES
1713
slang_add_target(
1814
.
1915
MODULE
@@ -23,6 +19,7 @@ slang_add_target(
2319
EXPLICIT_SOURCE
2420
./slang-embedded-glsl-module.cpp
2521
${glsl_module_generated_header}
22+
REQUIRES generate_core_module_headers
2623
EXCLUDE_FROM_ALL
2724
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
2825
EXPORT_SET_NAME SlangTargets

0 commit comments

Comments
 (0)