diff options
| author | Tobias Frisch <jacki@thejackimonster.de> | 2024-10-04 10:34:12 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-04 16:34:12 +0800 |
| commit | 25c17b9fcbf7a21e9fa19c4a8f08b0406437be24 (patch) | |
| tree | a85a734b32ea4f27a9cd594586a328858965893b /CMakeLists.txt | |
| parent | 9f246a43667b4893040669873400e2e3813328ff (diff) | |
Allow building using external dependencies (#5076)
* Add options to prevent usage of own submodules
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Allow using external unordered dense headers
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Link system wide installed unordered dense
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Allow external header usage for lz4 and spirv
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Add more options to disable targets
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Add option to provide explizit path for spirv headers and remove earlier options that break the build process
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Rename options to use common prefix
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Fix indentation for the cmake changes
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Add advanced_option function for cmake
* Normalize includes between system and submodule dependencies
Fix any before-accidentally-working problems
* Add option for enabling/disabling slang-rhi
Signed-off-by: Jacki <jacki@thejackimonster.de>
* Pass correct include path for cpu tests
* Correct include path
---------
Signed-off-by: Jacki <jacki@thejackimonster.de>
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 86 |
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 |
