Files
MobileGL/buildsystem/cmake/FindSPIRVTools.cmake
T

153 lines
5.1 KiB
CMake

# FindSPIRVTools.cmake
# --------------------
#
# Find SPIRV-Tools library
#
# This module defines the following variables:
# SPIRVTools_FOUND - True if SPIRV-Tools library is found
# SPIRVTools_INCLUDE_DIRS - Include directories for SPIRV-Tools
# SPIRVTools_LIBRARIES - Libraries for SPIRV-Tools
#
# This module reads hints about search locations from:
# SPIRVTools_ROOT - Preferred installation prefix
# First try to find SPIRV-Tools using CONFIG mode (for vcpkg, conan, etc.)
if (NOT SPIRVTools_FOUND)
find_package(SPIRV-Tools CONFIG QUIET)
if (SPIRVTools_FOUND)
message(STATUS "Found SPIRV-Tools via CONFIG mode: ${SPIRV-Tools_DIR}")
set(SPIRVTools_INCLUDE_DIRS ${SPIRV-Tools_INCLUDE_DIRS})
set(SPIRVTools_LIBRARIES ${SPIRV-Tools_LIBRARIES})
endif()
endif()
# If CONFIG mode failed, try to find Vulkan SDK
if (NOT SPIRVTools_FOUND)
find_package(Vulkan QUIET)
if (Vulkan_FOUND)
get_filename_component(VULKAN_SDK_DIR ${Vulkan_INCLUDE_DIRS} DIRECTORY)
message(STATUS "Found Vulkan SDK: ${VULKAN_SDK_DIR}")
# Try to find headers in Vulkan SDK
find_path(SPIRVTools_INCLUDE_DIR
NAMES spirv-tools/libspirv.h
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES include
NO_DEFAULT_PATH
)
# Try to find libraries in Vulkan SDK (separate debug/release searches)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
find_library(SPIRVTools_LIBRARY
NAMES SPIRV-Toolsd libSPIRV-Toolsd
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
find_library(SPIRVTools_opt_LIBRARY
NAMES SPIRV-Tools-optd libSPIRV-Tools-optd
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
find_library(SPIRVTools_link_LIBRARY
NAMES SPIRV-Tools-linkd libSPIRV-Tools-linkd
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
else()
find_library(SPIRVTools_LIBRARY
NAMES SPIRV-Tools libSPIRV-Tools
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
find_library(SPIRVTools_opt_LIBRARY
NAMES SPIRV-Tools-opt libSPIRV-Tools-opt
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
find_library(SPIRVTools_link_LIBRARY
NAMES SPIRV-Tools-link libSPIRV-Tools-link
HINTS ${VULKAN_SDK_DIR}
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
NO_DEFAULT_PATH
)
endif()
endif()
endif()
# If Vulkan SDK search failed, try standard search
if (NOT SPIRVTools_FOUND)
# Look for the header file
find_path(SPIRVTools_INCLUDE_DIR
NAMES spirv-tools/libspirv.h
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES include
)
# Look for the libraries (separate debug/release searches)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
find_library(SPIRVTools_LIBRARY
NAMES SPIRV-Toolsd libSPIRV-Toolsd
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
find_library(SPIRVTools_opt_LIBRARY
NAMES SPIRV-Tools-optd libSPIRV-Tools-optd
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
find_library(SPIRVTools_link_LIBRARY
NAMES SPIRV-Tools-linkd libSPIRV-Tools-linkd
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
else()
find_library(SPIRVTools_LIBRARY
NAMES SPIRV-Tools libSPIRV-Tools
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
find_library(SPIRVTools_opt_LIBRARY
NAMES SPIRV-Tools-opt libSPIRV-Tools-opt
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
find_library(SPIRVTools_link_LIBRARY
NAMES SPIRV-Tools-link libSPIRV-Tools-link
HINTS ${SPIRVTools_ROOT} ENV SPIRVTools_ROOT
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
)
endif()
endif()
# Set the include directory and libraries
set(SPIRVTools_INCLUDE_DIRS ${SPIRVTools_INCLUDE_DIR})
set(SPIRVTools_LIBRARIES
${SPIRVTools_LIBRARY}
${SPIRVTools_opt_LIBRARY}
${SPIRVTools_link_LIBRARY}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SPIRVTools
REQUIRED_VARS SPIRVTools_INCLUDE_DIR SPIRVTools_LIBRARY
)
mark_as_advanced(
SPIRVTools_INCLUDE_DIR
SPIRVTools_LIBRARY
SPIRVTools_opt_LIBRARY
SPIRVTools_link_LIBRARY
)