summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/compiler-core/CMakeLists.txt16
-rw-r--r--source/core/CMakeLists.txt10
-rw-r--r--source/slang-glslang/CMakeLists.txt16
-rw-r--r--source/slang-rt/CMakeLists.txt15
-rw-r--r--source/slang-stdlib/CMakeLists.txt5
-rw-r--r--source/slang-wasm/CMakeLists.txt17
-rw-r--r--source/slangc/CMakeLists.txt10
7 files changed, 87 insertions, 2 deletions
diff --git a/source/compiler-core/CMakeLists.txt b/source/compiler-core/CMakeLists.txt
new file mode 100644
index 000000000..4d1bff17b
--- /dev/null
+++ b/source/compiler-core/CMakeLists.txt
@@ -0,0 +1,16 @@
+slang_add_target(
+ .
+ STATIC
+ EXCLUDE_FROM_ALL
+ USE_EXTRA_WARNINGS
+ LINK_WITH_PRIVATE core
+ INCLUDE_FROM_PUBLIC SPIRV-Headers
+)
+if(NOT MSVC)
+ # This is necessary to compile the DXC headers
+ set_source_files_properties(
+ slang-dxc-compiler.cpp
+ PROPERTIES COMPILE_OPTIONS "-fms-extensions"
+ DIRECTORY ${slang_SOURCE_DIR}
+ )
+endif()
diff --git a/source/core/CMakeLists.txt b/source/core/CMakeLists.txt
new file mode 100644
index 000000000..15da2abfb
--- /dev/null
+++ b/source/core/CMakeLists.txt
@@ -0,0 +1,10 @@
+slang_add_target(
+ .
+ STATIC
+ EXCLUDE_FROM_ALL
+ USE_EXTRA_WARNINGS
+ LINK_WITH_PRIVATE
+ miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS}
+ LINK_WITH_PUBLIC unordered_dense::unordered_dense
+ INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/source ${slang_SOURCE_DIR}/include
+)
diff --git a/source/slang-glslang/CMakeLists.txt b/source/slang-glslang/CMakeLists.txt
new file mode 100644
index 000000000..37bb93ca0
--- /dev/null
+++ b/source/slang-glslang/CMakeLists.txt
@@ -0,0 +1,16 @@
+#
+# Our wrapper for glslang
+#
+if(SLANG_ENABLE_SLANG_GLSLANG)
+ slang_add_target(
+ .
+ MODULE
+ USE_FEWER_WARNINGS
+ LINK_WITH_PRIVATE glslang SPIRV SPIRV-Tools-opt
+ INCLUDE_DIRECTORIES_PRIVATE ${slang_SOURCE_DIR}/include
+ INSTALL
+ )
+ # Our only interface is through what we define in source/slang-glslang, in the
+ # interests of hygiene, hide anything else we link in.
+ add_supported_cxx_linker_flags(slang-glslang PRIVATE "-Wl,--exclude-libs,ALL")
+endif()
diff --git a/source/slang-rt/CMakeLists.txt b/source/slang-rt/CMakeLists.txt
new file mode 100644
index 000000000..fc37237cd
--- /dev/null
+++ b/source/slang-rt/CMakeLists.txt
@@ -0,0 +1,15 @@
+if(SLANG_ENABLE_SLANGRT)
+ slang_add_target(
+ .
+ SHARED
+ # This compiles 'core' again with the SLANG_RT_DYNAMIC_EXPORT macro defined
+ EXTRA_SOURCE_DIRS ${slang_SOURCE_DIR}/source/core
+ USE_EXTRA_WARNINGS
+ LINK_WITH_PRIVATE
+ miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS}
+ LINK_WITH_PUBLIC unordered_dense::unordered_dense
+ EXPORT_MACRO_PREFIX SLANG_RT
+ INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/include
+ INSTALL
+ )
+endif()
diff --git a/source/slang-stdlib/CMakeLists.txt b/source/slang-stdlib/CMakeLists.txt
index 6303bc1b9..a6d646cf3 100644
--- a/source/slang-stdlib/CMakeLists.txt
+++ b/source/slang-stdlib/CMakeLists.txt
@@ -87,7 +87,8 @@ add_custom_command(
VERBATIM
)
-add_custom_target(generate_stdlib_headers DEPENDS ${stdlib_meta_generated_headers})
+add_custom_target(generate-stdlib-headers DEPENDS ${stdlib_meta_generated_headers})
+set_target_properties(generate-stdlib-headers PROPERTIES FOLDER generated)
#
# Generate embedded stdlib source
@@ -108,7 +109,7 @@ set(stdlib_source_common_args
EXPLICIT_SOURCE
./slang-embedded-stdlib-source.cpp
${stdlib_meta_generated_headers}
- REQUIRES generate_stdlib_headers
+ REQUIRES generate-stdlib-headers
EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_EMBED_STDLIB_SOURCE
INCLUDE_DIRECTORIES_PRIVATE
${stdlib_meta_output_dir}
diff --git a/source/slang-wasm/CMakeLists.txt b/source/slang-wasm/CMakeLists.txt
new file mode 100644
index 000000000..d821415e7
--- /dev/null
+++ b/source/slang-wasm/CMakeLists.txt
@@ -0,0 +1,17 @@
+#
+# WebAssembly bindings for Slang
+#
+# This is an executable target because emcmake produces .a files without bindings if you just create a static library
+# https://stackoverflow.com/questions/63622009/static-library-built-with-cmake-as-a-with-emscripten-instead-of-wasm-js
+if (EMSCRIPTEN)
+ slang_add_target(
+ .
+ EXECUTABLE
+ EXCLUDE_FROM_ALL
+ USE_FEWER_WARNINGS
+ LINK_WITH_PRIVATE miniz lz4_static slang core compiler-core
+ INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}/include .
+ )
+ # To generate binding code
+ target_link_options(slang-wasm PUBLIC "--bind")
+endif()
diff --git a/source/slangc/CMakeLists.txt b/source/slangc/CMakeLists.txt
new file mode 100644
index 000000000..fba390b31
--- /dev/null
+++ b/source/slangc/CMakeLists.txt
@@ -0,0 +1,10 @@
+if(SLANG_ENABLE_SLANGC)
+ slang_add_target(
+ .
+ EXECUTABLE
+ USE_FEWER_WARNINGS
+ DEBUG_DIR ${slang_SOURCE_DIR}
+ LINK_WITH_PRIVATE core slang Threads::Threads
+ INSTALL
+ )
+endif()