Add CMake options for dependency exclusions.

This commit is contained in:
squidbus
2025-10-20 16:02:40 -07:00
parent 1ae2e891e6
commit 8f1fabee51
3 changed files with 15 additions and 4 deletions

View File

@@ -65,6 +65,8 @@ project(MoltenVK
set(MVK_CONFIG_LOG_LEVEL "info" CACHE STRING "Set the default log level for MoltenVK. Options are: debug, info, warn, error, off. Default is 'info'.")
set_property(CACHE MVK_CONFIG_LOG_LEVEL PROPERTY STRINGS "debug" "info" "warn" "error" "off")
option(MVK_EXCLUDE_SPIRV_TOOLS "Exclude the SPIRV-Tools dependency. If excluded, disables printing debug SPIR-V disassembly." OFF)
option(MVK_EXCLUDE_CEREAL "Exclude the cereal dependency. If excluded, disables reading and writing pipeline caches." OFF)
option(MVK_USE_METAL_PRIVATE_API "If enabled, MoltenVK will use private interfaces exposed by Metal to implement Vulkan features that are difficult to support otherwise." OFF)
option(MVK_BUILD_SHADER_CONVERTER_TOOL "If enabled, the MoltenVKShaderConverter executable will be built." OFF)
@@ -81,6 +83,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/MoltenVK/")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/recipes/")
# General CMake utils
set(CPM_USE_NAMED_CACHE_DIRECTORIES 1)
include(MoltenVK_CPM_Cache)
# Generate position-independent code by default

View File

@@ -53,8 +53,12 @@ set_target_properties(MoltenVK PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
target_link_libraries(MoltenVK PUBLIC MoltenVK::ShaderConverter)
include(cereal)
target_link_libraries(MoltenVK PRIVATE cereal::cereal)
if (NOT MVK_EXCLUDE_CEREAL)
include(cereal)
target_link_libraries(MoltenVK PRIVATE cereal::cereal)
else()
target_compile_definitions(MoltenVK PUBLIC MVK_USE_CEREAL=0)
endif()
include(Vulkan-Headers)
target_link_libraries(MoltenVK PUBLIC Vulkan::Headers)

View File

@@ -20,5 +20,9 @@ target_link_libraries(MoltenVK_ShaderConverter PUBLIC MoltenVK::Common)
include(SPIRV-Cross)
target_link_libraries(MoltenVK_ShaderConverter PUBLIC SPRIV-Cross::SPRIV-Cross)
include(SPIRV-Tools)
target_link_libraries(MoltenVK_ShaderConverter PUBLIC SPIRV-Tools::SPIRV-Tools)
if (NOT MVK_EXCLUDE_SPIRV_TOOLS)
include(SPIRV-Tools)
target_link_libraries(MoltenVK_ShaderConverter PUBLIC SPIRV-Tools::SPIRV-Tools)
else()
target_compile_definitions(MoltenVK_ShaderConverter PUBLIC MVK_EXCLUDE_SPIRV_TOOLS=1)
endif()