diff options
author | Brad King <brad.king@kitware.com> | 2022-07-22 14:16:14 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-07-22 14:16:23 (GMT) |
commit | 96564c5b2d84568459c2b594a7db3baccb524260 (patch) | |
tree | 30a1f127ebb02b8f7d6047e221f8c899ed3ff570 /Modules | |
parent | 55895ed4a11e96e1c3e0da55885f705584a9ada7 (diff) | |
parent | 1277b873c9fbd345925ac790da15854b7d7e0dcf (diff) | |
download | CMake-96564c5b2d84568459c2b594a7db3baccb524260.zip CMake-96564c5b2d84568459c2b594a7db3baccb524260.tar.gz CMake-96564c5b2d84568459c2b594a7db3baccb524260.tar.bz2 |
Merge topic 'FindVulkan-dxc'
1277b873c9 FindVulkan: Add `dxc` (DirectX Shader Compiler) component
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7474
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindVulkan.cmake | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Modules/FindVulkan.cmake b/Modules/FindVulkan.cmake index 78b07c4..0dcdb31 100644 --- a/Modules/FindVulkan.cmake +++ b/Modules/FindVulkan.cmake @@ -20,6 +20,10 @@ This module respects several optional COMPONENTS: ``glslc``, On macOS, an additional component ``MoltenVK`` is available. There are corresponding import targets for each of these flags. +.. versionadded:: 3.25 + +Added optional COMPONENT ``dxc`` with corresponding targets. + IMPORTED Targets ^^^^^^^^^^^^^^^^ @@ -75,6 +79,16 @@ This module defines :prop_tgt:`IMPORTED` targets if Vulkan has been found: Defined if SDK has the Vulkan meta-loader (volk). +``Vulkan::dxc_lib`` + .. versionadded:: 3.25 + + Defined if SDK has the DirectX shader compiler library. + +``Vulkan::dxc_exe`` + .. versionadded:: 3.25 + + Defined if SDK has the DirectX shader compiler CLI tool. + Result Variables ^^^^^^^^^^^^^^^^ @@ -119,6 +133,17 @@ This module defines the following variables: True, if the SDK has the volk library. +``Vulkan_dxc_lib_FOUND`` + .. versionadded:: 3.25 + + True, if the SDK has the DirectX shader compiler library. + +``Vulkan_dxc_exe_FOUND`` + .. versionadded:: 3.25 + + True, if the SDK has the DirectX shader compiler CLI tool. + + The module will also defines these cache variables: ``Vulkan_INCLUDE_DIR`` @@ -151,6 +176,16 @@ The module will also defines these cache variables: Path to the volk library. +``Vulkan_dxc_LIBRARY`` + .. versionadded:: 3.25 + + Path to the DirectX shader compiler library. + +``Vulkan_dxc_EXECUTABLE`` + .. versionadded:: 3.25 + + Path to the DirectX shader compiler CLI tool. + Hints ^^^^^ @@ -396,6 +431,20 @@ if(volk IN_LIST Vulkan_FIND_COMPONENTS) mark_as_advanced(Vulkan_Volk_LIBRARY) endif() +if (dxc IN_LIST Vulkan_FIND_COMPONENTS) + find_library(Vulkan_dxc_LIBRARY + NAMES dxcompiler + HINTS + ${_Vulkan_hint_library_search_paths}) + mark_as_advanced(Vulkan_dxc_LIBRARY) + + find_program(Vulkan_dxc_EXECUTABLE + NAMES dxc + HINTS + ${_Vulkan_hint_executable_search_paths}) + mark_as_advanced(Vulkan_dxc_EXECUTABLE) +endif() + if(Vulkan_GLSLC_EXECUTABLE) set(Vulkan_glslc_FOUND TRUE) else() @@ -408,6 +457,12 @@ else() set(Vulkan_glslangValidator_FOUND FALSE) endif() +if (Vulkan_dxc_EXECUTABLE) + set(Vulkan_dxc_exe_FOUND TRUE) +else() + set(Vulkan_dxc_exe_FOUND FALSE) +endif() + function(_Vulkan_set_library_component_found component) cmake_parse_arguments(PARSE_ARGV 1 _ARG "NO_WARNING" @@ -459,6 +514,7 @@ _Vulkan_set_library_component_found(glslang _Vulkan_set_library_component_found(shaderc_combined) _Vulkan_set_library_component_found(SPIRV-Tools) _Vulkan_set_library_component_found(volk) +_Vulkan_set_library_component_found(dxc) if(Vulkan_MoltenVK_INCLUDE_DIR AND Vulkan_MoltenVK_LIBRARY) set(Vulkan_MoltenVK_FOUND TRUE) @@ -764,6 +820,25 @@ if(Vulkan_FOUND) IMPORTED_LINK_INTERFACE_LIBRARIES dl) endif() endif() + + if (Vulkan_dxc_LIBRARY AND NOT TARGET Vulkan::dxc_lib) + add_library(Vulkan::dxc_lib STATIC IMPORTED) + set_property(TARGET Vulkan::dxc_lib + PROPERTY + INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}") + set_property(TARGET Vulkan::dxc_lib APPEND + PROPERTY + IMPORTED_CONFIGURATIONS Release) + set_property(TARGET Vulkan::dxc_lib APPEND + PROPERTY + IMPORTED_LOCATION_RELEASE "${Vulkan_dxc_LIBRARY}") + endif() + + if(Vulkan_dxc_EXECUTABLE AND NOT TARGET Vulkan::dxc_exe) + add_executable(Vulkan::dxc_exe IMPORTED) + set_property(TARGET Vulkan::dxc_exe PROPERTY IMPORTED_LOCATION "${Vulkan_dxc_EXECUTABLE}") + endif() + endif() if(Vulkan_MoltenVK_FOUND) |