|
|
@@ -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)
|