summaryrefslogtreecommitdiffstats
path: root/external
diff options
context:
space:
mode:
authorTobias Frisch <jacki@thejackimonster.de>2024-10-04 10:34:12 +0200
committerGitHub <noreply@github.com>2024-10-04 16:34:12 +0800
commit25c17b9fcbf7a21e9fa19c4a8f08b0406437be24 (patch)
treea85a734b32ea4f27a9cd594586a328858965893b /external
parent9f246a43667b4893040669873400e2e3813328ff (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 'external')
-rw-r--r--external/CMakeLists.txt68
1 files changed, 41 insertions, 27 deletions
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
index ce8b76c70..dfee0a610 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -17,35 +17,47 @@ if(NOT SLANG_ENABLE_EXTERNAL_COMPILER_WARNINGS)
endif()
endif()
+if (NOT ${SLANG_USE_SYSTEM_UNORDERED_DENSE})
+ add_subdirectory(unordered_dense EXCLUDE_FROM_ALL SYSTEM)
+endif()
+
# Miniz
-add_subdirectory(miniz EXCLUDE_FROM_ALL SYSTEM)
-set_property(TARGET miniz PROPERTY POSITION_INDEPENDENT_CODE ON)
-# Work around https://github.com/richgel999/miniz/pull/292
-get_target_property(miniz_c_launcher miniz C_COMPILER_LAUNCHER)
-if(MSVC AND miniz_c_launcher MATCHES "ccache")
- set_property(TARGET miniz PROPERTY C_COMPILER_LAUNCHER)
- set_property(TARGET miniz PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
+if (NOT ${SLANG_USE_SYSTEM_MINIZ})
+ add_subdirectory(miniz EXCLUDE_FROM_ALL SYSTEM)
+ set_property(TARGET miniz PROPERTY POSITION_INDEPENDENT_CODE ON)
+ # Work around https://github.com/richgel999/miniz/pull/292
+ get_target_property(miniz_c_launcher miniz C_COMPILER_LAUNCHER)
+ if(MSVC AND miniz_c_launcher MATCHES "ccache")
+ set_property(TARGET miniz PROPERTY C_COMPILER_LAUNCHER)
+ set_property(TARGET miniz PROPERTY MSVC_DEBUG_INFORMATION_FORMAT "")
+ endif()
endif()
# LZ4
-set(LZ4_BUNDLED_MODE ON)
-add_subdirectory(lz4/build/cmake EXCLUDE_FROM_ALL SYSTEM)
-if(MSVC)
- target_compile_options(
- lz4_static
- PRIVATE /wd5045 /wd4820 /wd4711 /wd6385 /wd6262
- )
+if (NOT ${SLANG_USE_SYSTEM_LZ4})
+ set(LZ4_BUNDLED_MODE ON)
+ add_subdirectory(lz4/build/cmake EXCLUDE_FROM_ALL SYSTEM)
+ if(MSVC)
+ target_compile_options(
+ lz4_static
+ PRIVATE /wd5045 /wd4820 /wd4711 /wd6385 /wd6262
+ )
+ endif()
endif()
# Vulkan headers
-add_subdirectory(vulkan EXCLUDE_FROM_ALL SYSTEM)
+if (NOT ${SLANG_USE_SYSTEM_VULKAN_HEADERS})
+ add_subdirectory(vulkan EXCLUDE_FROM_ALL SYSTEM)
+endif()
# metal-cpp headers
add_library(metal-cpp INTERFACE)
target_include_directories(metal-cpp INTERFACE "${CMAKE_CURRENT_LIST_DIR}/metal-cpp")
# SPIRV-Headers
-add_subdirectory(spirv-headers EXCLUDE_FROM_ALL SYSTEM)
+if (NOT ${SLANG_USE_SYSTEM_SPIRV_HEADERS})
+ add_subdirectory(spirv-headers EXCLUDE_FROM_ALL SYSTEM)
+endif()
if(SLANG_ENABLE_SLANG_GLSLANG)
# SPIRV-Tools
@@ -66,18 +78,20 @@ endif()
add_library(imgui INTERFACE)
target_include_directories(imgui INTERFACE "${CMAKE_CURRENT_LIST_DIR}/imgui")
-# slang-rhi
-set(SLANG_RHI_BINARY_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>/bin)
-set(SLANG_RHI_SLANG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
-set(SLANG_RHI_SLANG_BINARY_DIR ${CMAKE_BINARY_DIR})
-set(SLANG_RHI_BUILD_TESTS OFF)
-if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(SLANG_RHI_ENABLE_WGPU OFF)
-endif()
-if(SLANG_ENABLE_DX_ON_VK)
- set(SLANG_RHI_HAS_D3D12 ON)
+if(SLANG_ENABLE_SLANG_RHI)
+ # slang-rhi
+ set(SLANG_RHI_BINARY_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>/bin)
+ set(SLANG_RHI_SLANG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
+ set(SLANG_RHI_SLANG_BINARY_DIR ${CMAKE_BINARY_DIR})
+ set(SLANG_RHI_BUILD_TESTS OFF)
+ if(SLANG_ENABLE_DX_ON_VK)
+ set(SLANG_RHI_HAS_D3D12 ON)
+ endif()
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(SLANG_RHI_ENABLE_WGPU OFF)
+ endif()
+ add_subdirectory(slang-rhi)
endif()
-add_subdirectory(slang-rhi)
# Tidy things up: