summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt86
1 files changed, 61 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 38486b699..b505cbf53 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,8 +81,8 @@ auto_option(
Aftermath
"Enable Aftermath in GFX, and add aftermath crash example to project"
)
-option(SLANG_ENABLE_DX_ON_VK "Use dxvk and vkd3d-proton for DirectX support")
-mark_as_advanced(SLANG_ENABLE_DX_ON_VK)
+advanced_option(SLANG_ENABLE_DX_ON_VK "Use dxvk and vkd3d-proton for DirectX support" OFF)
+advanced_option(SLANG_ENABLE_SLANG_RHI "Use slang-rhi as dependency" ON)
option(SLANG_EMBED_STDLIB_SOURCE "Embed stdlib source in the binary" ON)
option(SLANG_EMBED_STDLIB "Build slang with an embedded version of the stdlib")
@@ -103,6 +103,27 @@ option(SLANG_ENABLE_REPLAYER "Enable slang-replay tool" ON)
option(SLANG_GITHUB_TOKEN "Use a given token value for accessing Github REST API" "")
+advanced_option(SLANG_USE_SYSTEM_MINIZ "Build using system Miniz library" OFF)
+advanced_option(SLANG_USE_SYSTEM_LZ4 "Build using system LZ4 library" OFF)
+advanced_option(SLANG_USE_SYSTEM_VULKAN_HEADERS "Build using system Vulkan headers" OFF)
+advanced_option(SLANG_USE_SYSTEM_SPIRV_HEADERS "Build using system SPIR-V headers" OFF)
+advanced_option(SLANG_USE_SYSTEM_UNORDERED_DENSE "Build using system unordered dense" OFF)
+
+option(SLANG_SPIRV_HEADERS_INCLUDE_DIR "Provide a specific path for the SPIR-V headers and grammar files")
+mark_as_advanced(SLANG_SPIRV_HEADERS_INCLUDE_DIR)
+
+if (${SLANG_USE_SYSTEM_LZ4})
+ add_compile_definitions(SLANG_USE_SYSTEM_LZ4_HEADER)
+endif()
+
+if (${SLANG_USE_SYSTEM_SPIRV_HEADERS})
+ add_compile_definitions(SLANG_USE_SYSTEM_SPIRV_HEADER)
+endif()
+
+if (${SLANG_USE_SYSTEM_UNORDERED_DENSE})
+ add_compile_definitions(SLANG_USE_SYSTEM_UNORDERED_DENSE_HEADER)
+endif()
+
enum_option(
SLANG_LIB_TYPE
# Default
@@ -200,8 +221,15 @@ if(SLANG_SLANG_LLVM_FLAVOR STREQUAL "USE_SYSTEM_LLVM")
find_package(Clang REQUIRED CONFIG)
endif()
+if (${SLANG_USE_SYSTEM_UNORDERED_DENSE})
+ find_package(unordered_dense CONFIG QUIET)
+endif()
+
add_subdirectory(external)
+set(SLANG_CORE_LIBRARIES "")
+list(APPEND SLANG_CORE_LIBRARIES miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS})
+
#
# Our targets
#
@@ -211,7 +239,8 @@ slang_add_target(
STATIC
EXCLUDE_FROM_ALL
USE_EXTRA_WARNINGS
- LINK_WITH_PRIVATE miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS}
+ LINK_WITH_PRIVATE ${SLANG_CORE_LIBRARIES}
+ LINK_WITH_PUBLIC unordered_dense::unordered_dense
INCLUDE_DIRECTORIES_PUBLIC source include
)
@@ -222,7 +251,8 @@ if(SLANG_ENABLE_SLANGRT)
# This compiles 'core' again with the SLANG_RT_DYNAMIC_EXPORT macro defined
EXTRA_SOURCE_DIRS source/core
USE_EXTRA_WARNINGS
- LINK_WITH_PRIVATE miniz lz4_static Threads::Threads ${CMAKE_DL_LIBS}
+ LINK_WITH_PRIVATE ${SLANG_CORE_LIBRARIES}
+ LINK_WITH_PUBLIC unordered_dense::unordered_dense
EXPORT_MACRO_PREFIX SLANG_RT
INCLUDE_DIRECTORIES_PUBLIC include
INSTALL
@@ -235,6 +265,7 @@ slang_add_target(
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
@@ -291,12 +322,14 @@ function(generator dir)
)
endif()
endfunction()
+
generator(tools/slang-cpp-extractor USE_FEWER_WARNINGS LINK_WITH_PRIVATE compiler-core)
generator(tools/slang-embed)
generator(tools/slang-generate USE_FEWER_WARNINGS)
generator(tools/slang-lookup-generator LINK_WITH_PRIVATE compiler-core)
generator(tools/slang-capability-generator LINK_WITH_PRIVATE compiler-core)
generator(tools/slang-spirv-embed-generator LINK_WITH_PRIVATE compiler-core)
+
generator(
source/slangc
TARGET_NAME slang-bootstrap
@@ -319,6 +352,7 @@ if(SLANG_ENABLE_SLANGD)
EXECUTABLE
LINK_WITH_PRIVATE
core
+ compiler-core
slang
slang-reflect-headers
slang-capability-defs
@@ -618,7 +652,7 @@ if(SLANG_ENABLE_TESTS)
tools/unit-test
OBJECT
EXCLUDE_FROM_ALL
- INCLUDE_FROM_PRIVATE slang
+ INCLUDE_FROM_PRIVATE slang core
INCLUDE_DIRECTORIES_PRIVATE include
FOLDER test
)
@@ -636,26 +670,28 @@ if(SLANG_ENABLE_TESTS)
REQUIRED_BY slang-test
FOLDER test/tools
)
- slang_add_target(
- tools/render-test
- MODULE
- EXCLUDE_FROM_ALL
- EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
- USE_FEWER_WARNINGS
- LINK_WITH_PRIVATE
- core
- compiler-core
- slang
- slang-rhi
- platform
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
- EXTRA_COMPILE_DEFINITIONS_PRIVATE
- $<$<BOOL:${SLANG_ENABLE_CUDA}>:RENDER_TEST_CUDA>
- $<$<BOOL:${SLANG_ENABLE_OPTIX}>:RENDER_TEST_OPTIX>
- OUTPUT_NAME render-test-tool
- REQUIRED_BY slang-test
- FOLDER test/tools
- )
+ if(SLANG_ENABLE_SLANG_RHI)
+ slang_add_target(
+ tools/render-test
+ MODULE
+ EXCLUDE_FROM_ALL
+ EXTRA_COMPILE_DEFINITIONS_PRIVATE SLANG_SHARED_LIBRARY_TOOL
+ USE_FEWER_WARNINGS
+ LINK_WITH_PRIVATE
+ core
+ compiler-core
+ slang
+ slang-rhi
+ platform
+ $<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cuda_driver>
+ EXTRA_COMPILE_DEFINITIONS_PRIVATE
+ $<$<BOOL:${SLANG_ENABLE_CUDA}>:RENDER_TEST_CUDA>
+ $<$<BOOL:${SLANG_ENABLE_OPTIX}>:RENDER_TEST_OPTIX>
+ OUTPUT_NAME render-test-tool
+ REQUIRED_BY slang-test
+ FOLDER test/tools
+ )
+ endif()
endif()
slang_add_target(
tools/slang-unit-test