summaryrefslogtreecommitdiff
path: root/prelude
diff options
context:
space:
mode:
Diffstat (limited to 'prelude')
-rw-r--r--prelude/CMakeLists.txt32
1 files changed, 32 insertions, 0 deletions
diff --git a/prelude/CMakeLists.txt b/prelude/CMakeLists.txt
new file mode 100644
index 000000000..751aa9a5c
--- /dev/null
+++ b/prelude/CMakeLists.txt
@@ -0,0 +1,32 @@
+#
+# Use the slang-embed tool to generate a source file for each prelude header.
+# Construct a library called 'prelude' to be linked with by slang
+#
+
+glob_append(SLANG_PRELUDE_HEADERS "*-prelude.h")
+
+set(SLANG_PRELUDE_SOURCE)
+foreach(input ${SLANG_PRELUDE_HEADERS})
+ get_filename_component(input_name ${input} NAME)
+ set(output "${CMAKE_CURRENT_BINARY_DIR}/${input_name}.cpp")
+ add_custom_command(
+ OUTPUT ${output}
+ COMMAND slang-embed "${input}" ${output}
+ DEPENDS ${input}
+ VERBATIM
+ )
+ list(APPEND SLANG_PRELUDE_SOURCE ${output})
+endforeach()
+
+slang_add_target(
+ .
+ OBJECT
+ EXPLICIT_SOURCE ${SLANG_PRELUDE_SOURCE}
+ EXCLUDE_FROM_ALL
+ TARGET_NAME prelude
+ INCLUDE_DIRECTORIES_PUBLIC ${CMAKE_CURRENT_LIST_DIR}
+ PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/slang*.h
+ # It's an object library, so the install step only installs the headers
+ INSTALL
+ FOLDER generated
+)