summaryrefslogtreecommitdiff
path: root/source/slang-glsl-module
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-01-31 05:02:26 -0800
committerGitHub <noreply@github.com>2025-01-31 21:02:26 +0800
commiteebe849075c21d163739cbc5e976e7b5b6837e7f (patch)
treeec3fd562da49385fbd5d4a6deebac78b9fe74c09 /source/slang-glsl-module
parentae778e3424b39cbeb1f367339f654560de416d30 (diff)
Distribute slang-glsl-module.bin in release packages. (#6233)
* Distribute slang-glsl-module.bin in release packages. * Fix. * fix2. * Build glsl modlue into a dll.
Diffstat (limited to 'source/slang-glsl-module')
-rw-r--r--source/slang-glsl-module/CMakeLists.txt39
-rw-r--r--source/slang-glsl-module/slang-embedded-glsl-module.cpp17
2 files changed, 56 insertions, 0 deletions
diff --git a/source/slang-glsl-module/CMakeLists.txt b/source/slang-glsl-module/CMakeLists.txt
new file mode 100644
index 000000000..d42b31ee6
--- /dev/null
+++ b/source/slang-glsl-module/CMakeLists.txt
@@ -0,0 +1,39 @@
+#
+# Generate an embeddable glsl 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
+)
+add_custom_command(
+ OUTPUT ${glsl_module_generated_header}
+ COMMAND
+ slang-bootstrap -archive-type riff-lz4 -save-glsl-module-bin-source
+ ${glsl_module_generated_header}
+ DEPENDS slang-bootstrap
+ VERBATIM
+)
+
+set(glsl_module_common_args
+ .
+ MODULE
+ 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
+ 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
+)
diff --git a/source/slang-glsl-module/slang-embedded-glsl-module.cpp b/source/slang-glsl-module/slang-embedded-glsl-module.cpp
new file mode 100644
index 000000000..7435f1edb
--- /dev/null
+++ b/source/slang-glsl-module/slang-embedded-glsl-module.cpp
@@ -0,0 +1,17 @@
+#include "../core/slang-array-view.h"
+#include "../core/slang-basic.h"
+#include "../core/slang-blob.h"
+
+static const uint8_t g_glslModule[] = {
+#include "slang-glsl-module-generated.h"
+};
+
+static Slang::StaticBlob g_glslModuleBlob((const void*)g_glslModule, sizeof(g_glslModule));
+
+extern "C"
+{
+ SLANG_DLL_EXPORT ISlangBlob* slang_getEmbeddedModule()
+ {
+ return &g_glslModuleBlob;
+ }
+}