8
8
# and just not link it if we didn't want the embed...
9
9
#
10
10
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
-
58
11
#
59
12
# Compiling the meta.slang files
60
13
#
@@ -95,14 +48,8 @@ add_custom_command(
95
48
VERBATIM
96
49
)
97
50
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
-
104
51
#
105
- # Generate embedded core module source
52
+ # Generate embedded core module source library (or a dummy library with just nullptrs)
106
53
#
107
54
108
55
set (core_module_source_common_args
@@ -117,17 +64,13 @@ set(core_module_source_common_args
117
64
SPIRV-Headers
118
65
INCLUDE_DIRECTORIES_PRIVATE
119
66
../slang
67
+ ${core_module_meta_output_dir}
120
68
FOLDER
121
69
generated
122
70
EXPLICIT_SOURCE
123
71
./slang-embedded-core-module-source .cpp
124
- ${core_module_meta_generated_headers}
125
- REQUIRES
126
- generate-core-module-headers
127
72
EXTRA_COMPILE_DEFINITIONS_PRIVATE
128
73
SLANG_EMBED_CORE_MODULE_SOURCE
129
- INCLUDE_DIRECTORIES_PRIVATE
130
- ${core_module_meta_output_dir}
131
74
EXPORT_MACRO_PREFIX
132
75
SLANG
133
76
EXPORT_TYPE_AS
@@ -138,9 +81,61 @@ slang_add_target(
138
81
${core_module_source_common_args}
139
82
TARGET_NAME slang-embedded-core-module-source
140
83
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE_SOURCE
84
+ EXPLICIT_SOURCE ${core_module_meta_generated_headers}
85
+ EXCLUDE_FROM_ALL
141
86
)
142
87
143
88
slang_add_target(
144
89
${core_module_source_common_args}
145
90
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
146
141
)
0 commit comments