Skip to content

Commit ee99bec

Browse files
authored
Correct dependencies on core module source (shader-slang#6340)
* Publicly link core module sources Closes shader-slang#6037 * format * format * remove unnecessary conditional * comments * neaten * Only build embedded core modules when necessary * Make dependencies on core module source more precise * more precice dependencies on core module source * Neaten
1 parent 6f42676 commit ee99bec

File tree

4 files changed

+68
-80
lines changed

4 files changed

+68
-80
lines changed

source/slang-core-module/CMakeLists.txt

+54-59
Original file line numberDiff line numberDiff line change
@@ -8,53 +8,6 @@
88
# and just not link it if we didn't want the embed...
99
#
1010

11-
#
12-
# Generate an embeddable core module
13-
#
14-
15-
set(core_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR})
16-
set(core_module_generated_header
17-
${core_module_generated_header_dir}/slang-core-module-generated.h
18-
)
19-
add_custom_command(
20-
OUTPUT ${core_module_generated_header}
21-
COMMAND
22-
slang-bootstrap -archive-type riff-lz4 -save-core-module-bin-source
23-
${core_module_generated_header}
24-
DEPENDS slang-bootstrap
25-
VERBATIM
26-
)
27-
28-
set(core_module_common_args
29-
.
30-
OBJECT
31-
EXCLUDE_FROM_ALL
32-
EXPORT_MACRO_PREFIX
33-
SLANG
34-
EXPORT_TYPE_AS
35-
${SLANG_LIB_TYPE}
36-
FOLDER
37-
generated
38-
LINK_WITH_PRIVATE
39-
core
40-
USE_EXTRA_WARNINGS
41-
EXPLICIT_SOURCE
42-
./slang-embedded-core-module.cpp
43-
)
44-
45-
slang_add_target(
46-
${core_module_common_args}
47-
TARGET_NAME slang-embedded-core-module
48-
EXPLICIT_SOURCE ${core_module_generated_header}
49-
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE
50-
INCLUDE_DIRECTORIES_PRIVATE ${core_module_generated_header_dir}
51-
)
52-
53-
slang_add_target(
54-
${core_module_common_args}
55-
TARGET_NAME slang-no-embedded-core-module
56-
)
57-
5811
#
5912
# Compiling the meta.slang files
6013
#
@@ -95,14 +48,8 @@ add_custom_command(
9548
VERBATIM
9649
)
9750

98-
add_custom_target(
99-
generate-core-module-headers
100-
DEPENDS ${core_module_meta_generated_headers}
101-
)
102-
set_target_properties(generate-core-module-headers PROPERTIES FOLDER generated)
103-
10451
#
105-
# Generate embedded core module source
52+
# Generate embedded core module source library (or a dummy library with just nullptrs)
10653
#
10754

10855
set(core_module_source_common_args
@@ -117,17 +64,13 @@ set(core_module_source_common_args
11764
SPIRV-Headers
11865
INCLUDE_DIRECTORIES_PRIVATE
11966
../slang
67+
${core_module_meta_output_dir}
12068
FOLDER
12169
generated
12270
EXPLICIT_SOURCE
12371
./slang-embedded-core-module-source.cpp
124-
${core_module_meta_generated_headers}
125-
REQUIRES
126-
generate-core-module-headers
12772
EXTRA_COMPILE_DEFINITIONS_PRIVATE
12873
SLANG_EMBED_CORE_MODULE_SOURCE
129-
INCLUDE_DIRECTORIES_PRIVATE
130-
${core_module_meta_output_dir}
13174
EXPORT_MACRO_PREFIX
13275
SLANG
13376
EXPORT_TYPE_AS
@@ -138,9 +81,61 @@ slang_add_target(
13881
${core_module_source_common_args}
13982
TARGET_NAME slang-embedded-core-module-source
14083
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE_SOURCE
84+
EXPLICIT_SOURCE ${core_module_meta_generated_headers}
85+
EXCLUDE_FROM_ALL
14186
)
14287

14388
slang_add_target(
14489
${core_module_source_common_args}
14590
TARGET_NAME slang-no-embedded-core-module-source
91+
EXCLUDE_FROM_ALL
92+
)
93+
94+
#
95+
# Use that source to generate an embeddable core module, this uses
96+
# slang-bootstrap which will include the embedded source we have above
97+
#
98+
99+
set(core_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR})
100+
set(core_module_generated_header
101+
${core_module_generated_header_dir}/slang-core-module-generated.h
102+
)
103+
104+
add_custom_command(
105+
OUTPUT ${core_module_generated_header} ${glsl_module_generated_header}
106+
COMMAND
107+
slang-bootstrap -archive-type riff-lz4 -save-core-module-bin-source
108+
${core_module_generated_header}
109+
DEPENDS slang-bootstrap
110+
VERBATIM
111+
)
112+
113+
set(core_module_common_args
114+
.
115+
OBJECT
116+
EXCLUDE_FROM_ALL
117+
EXPORT_MACRO_PREFIX
118+
SLANG
119+
EXPORT_TYPE_AS
120+
${SLANG_LIB_TYPE}
121+
FOLDER
122+
generated
123+
LINK_WITH_PRIVATE
124+
core
125+
USE_EXTRA_WARNINGS
126+
EXPLICIT_SOURCE
127+
./slang-embedded-core-module.cpp
128+
)
129+
130+
slang_add_target(
131+
${core_module_common_args}
132+
TARGET_NAME slang-embedded-core-module
133+
EXPLICIT_SOURCE ${core_module_generated_header}
134+
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE
135+
INCLUDE_DIRECTORIES_PRIVATE ${core_module_generated_header_dir}
136+
)
137+
138+
slang_add_target(
139+
${core_module_common_args}
140+
TARGET_NAME slang-no-embedded-core-module
146141
)
+5-16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#
22
# Generate an embeddable glsl module
33
#
4-
if (${SLANG_EMBED_CORE_MODULE})
5-
64
set(glsl_module_generated_header_dir ${CMAKE_CURRENT_BINARY_DIR})
75
set(glsl_module_generated_header
86
${glsl_module_generated_header_dir}/slang-glsl-module-generated.h
@@ -16,27 +14,18 @@ add_custom_command(
1614
VERBATIM
1715
)
1816

19-
set(glsl_module_common_args
17+
slang_add_target(
2018
.
2119
MODULE
22-
FOLDER
23-
generated
24-
LINK_WITH_PRIVATE
25-
core
20+
FOLDER generated
21+
LINK_WITH_PRIVATE core
2622
USE_EXTRA_WARNINGS
2723
EXPLICIT_SOURCE
28-
./slang-embedded-glsl-module.cpp
29-
)
30-
31-
slang_add_target(
32-
${glsl_module_common_args}
33-
TARGET_NAME slang-glsl-module
24+
./slang-embedded-glsl-module.cpp
25+
${glsl_module_generated_header}
3426
EXCLUDE_FROM_ALL
3527
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
3628
EXPORT_SET_NAME SlangTargets
37-
EXPLICIT_SOURCE ${glsl_module_generated_header}
3829
INCLUDE_DIRECTORIES_PRIVATE ${glsl_module_generated_header_dir}
3930
INSTALL
4031
)
41-
42-
endif()

source/slangc/CMakeLists.txt

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
if (SLANG_EMBED_CORE_MODULE)
1+
if(SLANG_EMBED_CORE_MODULE)
22
set(SLANG_GLSL_MODULE_DEPENDENCY REQUIRES slang-glsl-module)
33
else()
4-
set(SLANG_GLSL_MODULE_DEPENDENCY )
4+
set(SLANG_GLSL_MODULE_DEPENDENCY)
55
endif()
66

77
if(SLANG_ENABLE_SLANGC)
@@ -10,8 +10,11 @@ if(SLANG_ENABLE_SLANGC)
1010
EXECUTABLE
1111
USE_FEWER_WARNINGS
1212
DEBUG_DIR ${slang_SOURCE_DIR}
13-
LINK_WITH_PRIVATE core slang Threads::Threads
14-
${SLANG_GLSL_MODULE_DEPENDENCY}
13+
LINK_WITH_PRIVATE
14+
core
15+
slang
16+
Threads::Threads
17+
${SLANG_GLSL_MODULE_DEPENDENCY}
1518
INSTALL
1619
EXPORT_SET_NAME SlangTargets
1720
)

tools/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ generator(
6262
TARGET_NAME
6363
slang-bootstrap
6464
USE_FEWER_WARNINGS
65+
LINK_WITH_PUBLIC
66+
slang-without-embedded-core-module
6567
LINK_WITH_PRIVATE
6668
prelude
67-
slang-without-embedded-core-module
6869
slang-capability-lookup
6970
slang-lookup-tables
7071
Threads::Threads

0 commit comments

Comments
 (0)