summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang-core-module/CMakeLists.txt113
-rw-r--r--source/slang-glsl-module/CMakeLists.txt21
-rw-r--r--source/slangc/CMakeLists.txt11
-rw-r--r--tools/CMakeLists.txt3
4 files changed, 68 insertions, 80 deletions
diff --git a/source/slang-core-module/CMakeLists.txt b/source/slang-core-module/CMakeLists.txt
index 96a874d08..d02301dc2 100644
--- a/source/slang-core-module/CMakeLists.txt
+++ b/source/slang-core-module/CMakeLists.txt
@@ -9,53 +9,6 @@
#
#
-# Generate an embeddable core module
-#
-
-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
-)
-add_custom_command(
- OUTPUT ${core_module_generated_header}
- COMMAND
- slang-bootstrap -archive-type riff-lz4 -save-core-module-bin-source
- ${core_module_generated_header}
- DEPENDS slang-bootstrap
- VERBATIM
-)
-
-set(core_module_common_args
- .
- OBJECT
- EXCLUDE_FROM_ALL
- EXPORT_MACRO_PREFIX
- SLANG
- EXPORT_TYPE_AS
- ${SLANG_LIB_TYPE}
- FOLDER
- generated
- LINK_WITH_PRIVATE
- core
- USE_EXTRA_WARNINGS
- EXPLICIT_SOURCE
- ./slang-embedded-core-module.cpp
-)
-
-slang_add_target(
- ${core_module_common_args}
- TARGET_NAME slang-embedded-core-module
- EXPLICIT_SOURCE ${core_module_generated_header}
- EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE
- INCLUDE_DIRECTORIES_PRIVATE ${core_module_generated_header_dir}
-)
-
-slang_add_target(
- ${core_module_common_args}
- TARGET_NAME slang-no-embedded-core-module
-)
-
-#
# Compiling the meta.slang files
#
@@ -95,14 +48,8 @@ add_custom_command(
VERBATIM
)
-add_custom_target(
- generate-core-module-headers
- DEPENDS ${core_module_meta_generated_headers}
-)
-set_target_properties(generate-core-module-headers PROPERTIES FOLDER generated)
-
#
-# Generate embedded core module source
+# Generate embedded core module source library (or a dummy library with just nullptrs)
#
set(core_module_source_common_args
@@ -117,17 +64,13 @@ set(core_module_source_common_args
SPIRV-Headers
INCLUDE_DIRECTORIES_PRIVATE
../slang
+ ${core_module_meta_output_dir}
FOLDER
generated
EXPLICIT_SOURCE
./slang-embedded-core-module-source.cpp
- ${core_module_meta_generated_headers}
- REQUIRES
- generate-core-module-headers
EXTRA_COMPILE_DEFINITIONS_PRIVATE
SLANG_EMBED_CORE_MODULE_SOURCE
- INCLUDE_DIRECTORIES_PRIVATE
- ${core_module_meta_output_dir}
EXPORT_MACRO_PREFIX
SLANG
EXPORT_TYPE_AS
@@ -138,9 +81,61 @@ slang_add_target(
${core_module_source_common_args}
TARGET_NAME slang-embedded-core-module-source
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE_SOURCE
+ EXPLICIT_SOURCE ${core_module_meta_generated_headers}
+ EXCLUDE_FROM_ALL
)
slang_add_target(
${core_module_source_common_args}
TARGET_NAME slang-no-embedded-core-module-source
+ EXCLUDE_FROM_ALL
+)
+
+#
+# Use that source to generate an embeddable core module, this uses
+# slang-bootstrap which will include the embedded source we have above
+#
+
+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
+)
+
+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}
+ DEPENDS slang-bootstrap
+ VERBATIM
+)
+
+set(core_module_common_args
+ .
+ OBJECT
+ EXCLUDE_FROM_ALL
+ EXPORT_MACRO_PREFIX
+ SLANG
+ EXPORT_TYPE_AS
+ ${SLANG_LIB_TYPE}
+ FOLDER
+ generated
+ LINK_WITH_PRIVATE
+ core
+ USE_EXTRA_WARNINGS
+ EXPLICIT_SOURCE
+ ./slang-embedded-core-module.cpp
+)
+
+slang_add_target(
+ ${core_module_common_args}
+ TARGET_NAME slang-embedded-core-module
+ EXPLICIT_SOURCE ${core_module_generated_header}
+ EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_CORE_MODULE
+ INCLUDE_DIRECTORIES_PRIVATE ${core_module_generated_header_dir}
+)
+
+slang_add_target(
+ ${core_module_common_args}
+ TARGET_NAME slang-no-embedded-core-module
)
diff --git a/source/slang-glsl-module/CMakeLists.txt b/source/slang-glsl-module/CMakeLists.txt
index 40e88a4ed..95787f01d 100644
--- a/source/slang-glsl-module/CMakeLists.txt
+++ b/source/slang-glsl-module/CMakeLists.txt
@@ -1,8 +1,6 @@
#
# Generate an embeddable glsl module
#
-if (${SLANG_EMBED_CORE_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
@@ -16,27 +14,18 @@ add_custom_command(
VERBATIM
)
-set(glsl_module_common_args
+slang_add_target(
.
MODULE
- FOLDER
- generated
- LINK_WITH_PRIVATE
- core
+ FOLDER generated
+ LINK_WITH_PRIVATE core
USE_EXTRA_WARNINGS
EXPLICIT_SOURCE
- ./slang-embedded-glsl-module.cpp
-)
-
-slang_add_target(
- ${glsl_module_common_args}
- TARGET_NAME slang-glsl-module
+ ./slang-embedded-glsl-module.cpp
+ ${glsl_module_generated_header}
EXCLUDE_FROM_ALL
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
EXPORT_SET_NAME SlangTargets
- EXPLICIT_SOURCE ${glsl_module_generated_header}
INCLUDE_DIRECTORIES_PRIVATE ${glsl_module_generated_header_dir}
INSTALL
)
-
-endif() \ No newline at end of file
diff --git a/source/slangc/CMakeLists.txt b/source/slangc/CMakeLists.txt
index 22547b686..6692385ba 100644
--- a/source/slangc/CMakeLists.txt
+++ b/source/slangc/CMakeLists.txt
@@ -1,7 +1,7 @@
-if (SLANG_EMBED_CORE_MODULE)
+if(SLANG_EMBED_CORE_MODULE)
set(SLANG_GLSL_MODULE_DEPENDENCY REQUIRES slang-glsl-module)
else()
- set(SLANG_GLSL_MODULE_DEPENDENCY )
+ set(SLANG_GLSL_MODULE_DEPENDENCY)
endif()
if(SLANG_ENABLE_SLANGC)
@@ -10,8 +10,11 @@ if(SLANG_ENABLE_SLANGC)
EXECUTABLE
USE_FEWER_WARNINGS
DEBUG_DIR ${slang_SOURCE_DIR}
- LINK_WITH_PRIVATE core slang Threads::Threads
- ${SLANG_GLSL_MODULE_DEPENDENCY}
+ LINK_WITH_PRIVATE
+ core
+ slang
+ Threads::Threads
+ ${SLANG_GLSL_MODULE_DEPENDENCY}
INSTALL
EXPORT_SET_NAME SlangTargets
)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 540c9e0f4..9968d7ca8 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -62,9 +62,10 @@ generator(
TARGET_NAME
slang-bootstrap
USE_FEWER_WARNINGS
+ LINK_WITH_PUBLIC
+ slang-without-embedded-core-module
LINK_WITH_PRIVATE
prelude
- slang-without-embedded-core-module
slang-capability-lookup
slang-lookup-tables
Threads::Threads