FindVulkan: Add component for glslc and glslangValidator

For backward compatibility with previous CMake versions they are implicitly added to the list of components
This commit is contained in:
MACHIZAUD Andréa
2022-05-14 00:34:27 +02:00
parent 998ee49779
commit acdb5fe0e8

View File

@@ -15,9 +15,9 @@ Optional COMPONENTS
.. versionadded:: 3.24 .. versionadded:: 3.24
This module respects several optional COMPONENTS: ``glslang`` ``shaderc_combined`` and This module respects several optional COMPONENTS: ``glslc``,
``SPIRV-Tools``. There are corresponding import targets for each of these ``glslangValidator``, ``glslang``, ``shaderc_combined`` and ``SPIRV-Tools``.
flags. There are corresponding import targets for each of these flags.
IMPORTED Targets IMPORTED Targets
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
@@ -78,6 +78,14 @@ This module defines the following variables:
.. versionadded:: 3.23 .. versionadded:: 3.23
value from ``vulkan/vulkan_core.h`` value from ``vulkan/vulkan_core.h``
``Vulkan_glslc_FOUND``
.. versionadded:: 3.24
True, if the SDK has the glslc executable.
``Vulkan_glslangValidator_FOUND``
.. versionadded:: 3.24
True, if the SDK has the glslangValidator executable.
``Vulkan_glslang_FOUND`` ``Vulkan_glslang_FOUND``
.. versionadded:: 3.24 .. versionadded:: 3.24
@@ -130,6 +138,15 @@ environment.
cmake_policy(PUSH) cmake_policy(PUSH)
cmake_policy(SET CMP0057 NEW) cmake_policy(SET CMP0057 NEW)
# For backward compatibility as `FindVulkan` in previous CMake versions allow to retrieve `glslc`
# and `glslangValidator` without requesting the corresponding component.
if(NOT glslc IN_LIST Vulkan_FIND_COMPONENTS)
list(APPEND Vulkan_FIND_COMPONENTS glslc)
endif()
if(NOT glslangValidator IN_LIST Vulkan_FIND_COMPONENTS)
list(APPEND Vulkan_FIND_COMPONENTS glslangValidator)
endif()
if(WIN32) if(WIN32)
set(_Vulkan_library_name vulkan-1) set(_Vulkan_library_name vulkan-1)
set(_Vulkan_hint_include_search_paths set(_Vulkan_hint_include_search_paths
@@ -179,20 +196,22 @@ find_library(Vulkan_LIBRARY
) )
mark_as_advanced(Vulkan_LIBRARY) mark_as_advanced(Vulkan_LIBRARY)
find_program(Vulkan_GLSLC_EXECUTABLE if(glslc IN_LIST Vulkan_FIND_COMPONENTS)
NAMES glslc find_program(Vulkan_GLSLC_EXECUTABLE
HINTS NAMES glslc
${_Vulkan_hint_executable_search_paths} HINTS
) ${_Vulkan_hint_executable_search_paths}
mark_as_advanced(Vulkan_GLSLC_EXECUTABLE) )
mark_as_advanced(Vulkan_GLSLC_EXECUTABLE)
find_program(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE endif()
NAMES glslangValidator if(glslangValidator IN_LIST Vulkan_FIND_COMPONENTS)
HINTS find_program(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE
${_Vulkan_hint_executable_search_paths} NAMES glslangValidator
) HINTS
mark_as_advanced(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE) ${_Vulkan_hint_executable_search_paths}
)
mark_as_advanced(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE)
endif()
if(glslang IN_LIST Vulkan_FIND_COMPONENTS) if(glslang IN_LIST Vulkan_FIND_COMPONENTS)
find_library(Vulkan_glslang-spirv_LIBRARY find_library(Vulkan_glslang-spirv_LIBRARY
NAMES SPIRV NAMES SPIRV
@@ -305,6 +324,18 @@ if(SPIRV-Tools IN_LIST Vulkan_FIND_COMPONENTS)
mark_as_advanced(Vulkan_SPIRV-Tools_DEBUG_LIBRARY) mark_as_advanced(Vulkan_SPIRV-Tools_DEBUG_LIBRARY)
endif() endif()
if(Vulkan_GLSLC_EXECUTABLE)
set(Vulkan_glslc_FOUND TRUE)
else()
set(Vulkan_glslc_FOUND FALSE)
endif()
if(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE)
set(Vulkan_glslangValidator_FOUND TRUE)
else()
set(Vulkan_glslangValidator_FOUND FALSE)
endif()
function(_Vulkan_set_library_component_found component) function(_Vulkan_set_library_component_found component)
cmake_parse_arguments(PARSE_ARGV 1 _ARG cmake_parse_arguments(PARSE_ARGV 1 _ARG
"NO_WARNING" "NO_WARNING"