summaryrefslogtreecommitdiff
path: root/source/slang
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/CMakeLists.txt46
1 files changed, 46 insertions, 0 deletions
diff --git a/source/slang/CMakeLists.txt b/source/slang/CMakeLists.txt
index 9c51ed767..2adc96939 100644
--- a/source/slang/CMakeLists.txt
+++ b/source/slang/CMakeLists.txt
@@ -1,4 +1,49 @@
#
+# Invoke the "fiddle" tool to generate source
+#
+
+set(SLANG_FIDDLE_INPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+set(SLANG_FIDDLE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/fiddle")
+
+file(GLOB SLANG_FIDDLE_INPUT_FILE_NAMES
+ CONFIGURE_DEPENDS
+ RELATIVE "${SLANG_FIDDLE_INPUT_DIR}"
+ "*.h"
+ "*.cpp")
+
+list(TRANSFORM SLANG_FIDDLE_INPUT_FILE_NAMES
+ PREPEND "${SLANG_FIDDLE_INPUT_DIR}/"
+ OUTPUT_VARIABLE SLANG_FIDDLE_INPUTS)
+
+list(TRANSFORM SLANG_FIDDLE_INPUT_FILE_NAMES
+ APPEND ".fiddle"
+ OUTPUT_VARIABLE SLANG_FIDDLE_OUTPUTS)
+list(TRANSFORM SLANG_FIDDLE_OUTPUTS
+ PREPEND "${SLANG_FIDDLE_OUTPUT_DIR}/")
+
+add_custom_command(
+ OUTPUT ${SLANG_FIDDLE_OUTPUTS}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${SLANG_FIDDLE_OUTPUT_DIR}
+ COMMAND slang-fiddle
+ -i "${SLANG_FIDDLE_INPUT_DIR}/"
+ -o "${SLANG_FIDDLE_OUTPUT_DIR}/"
+ ${SLANG_FIDDLE_INPUT_FILE_NAMES}
+ DEPENDS ${SLANG_FIDDLE_INPUTS} slang-fiddle
+ VERBATIM
+)
+add_library(
+ slang-fiddle-output
+ INTERFACE
+ EXCLUDE_FROM_ALL
+ ${SLANG_FIDDLE_OUTPUTS}
+)
+set_target_properties(slang-fiddle-output PROPERTIES FOLDER generated)
+target_include_directories(
+ slang-fiddle-output
+ INTERFACE ${SLANG_FIDDLE_OUTPUT_DIR}
+)
+
+#
# generate capability files
#
glob_append(SLANG_CAPABILITY_SOURCE "*.capdef")
@@ -233,6 +278,7 @@ set(slang_link_args
compiler-core
slang-capability-defs
slang-capability-lookup
+ slang-fiddle-output
slang-reflect-headers
slang-lookup-tables
SPIRV-Headers