diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2025-02-12 12:43:47 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-12 12:43:47 +0800 |
| commit | ee99becbf02b91635338203e44b79c3814bddc2c (patch) | |
| tree | 44e2756d87314f2645d14f26f8493c6cdc4474ac /source/slang-core-module | |
| parent | 6f4267671d7a5c4fa9441c83cf34853f63119f6b (diff) | |
Correct dependencies on core module source (#6340)
* Publicly link core module sources
Closes https://github.com/shader-slang/slang/issues/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
Diffstat (limited to 'source/slang-core-module')
| -rw-r--r-- | source/slang-core-module/CMakeLists.txt | 113 |
1 files changed, 54 insertions, 59 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 ) |
