mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 21:58:31 +09:00
[Refactor] (buildsystem): use FindXXX.cmake to find 3rdparty libraries
This commit is contained in:
@@ -4,6 +4,9 @@ project(MobileGLTest)
|
|||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
# Add the directory containing our custom Find modules
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../buildsystem/cmake")
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
googletest
|
googletest
|
||||||
@@ -18,6 +21,11 @@ enable_testing()
|
|||||||
|
|
||||||
set(MGL_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
|
set(MGL_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
|
||||||
|
|
||||||
|
# Find the required libraries using our custom Find modules
|
||||||
|
find_package(glslang REQUIRED)
|
||||||
|
find_package(SPIRVTools REQUIRED)
|
||||||
|
find_package(SPIRVCross REQUIRED)
|
||||||
|
|
||||||
add_executable(
|
add_executable(
|
||||||
SanityTest
|
SanityTest
|
||||||
SanityTest.cpp
|
SanityTest.cpp
|
||||||
@@ -27,56 +35,16 @@ target_link_libraries(
|
|||||||
GTest::gtest_main
|
GTest::gtest_main
|
||||||
)
|
)
|
||||||
|
|
||||||
# Vulkan SDK's cmake config is fundamentally broken. Directly find libs instead
|
message(STATUS "glslang_LIBRARIES: ${glslang_LIBRARIES}")
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
message(STATUS "SPIRVTools_LIBRARIES: ${SPIRVTools_LIBRARIES}")
|
||||||
find_package(Vulkan REQUIRED)
|
message(STATUS "SPIRVCross_LIBRARIES: ${SPIRVCross_LIBRARIES}")
|
||||||
get_filename_component(VULKAN_LIB_DIR ${Vulkan_LIBRARY} PATH)
|
|
||||||
|
|
||||||
set(LINK_LIBRARIES
|
# Set the libraries to link against
|
||||||
${VULKAN_LIB_DIR}/libglslang.a
|
set(LINK_LIBRARIES
|
||||||
${VULKAN_LIB_DIR}/libspirv-cross-c-shared.dylib
|
${glslang_LIBRARIES}
|
||||||
${VULKAN_LIB_DIR}/libGenericCodeGen.a
|
${SPIRVTools_LIBRARIES}
|
||||||
${VULKAN_LIB_DIR}/libglslang-default-resource-limits.a
|
${SPIRVCross_LIBRARIES}
|
||||||
${VULKAN_LIB_DIR}/libMachineIndependent.a
|
)
|
||||||
${VULKAN_LIB_DIR}/libOSDependent.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools-diff.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools-link.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools-lint.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools-opt.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools-reduce.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV-Tools.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPIRV.a
|
|
||||||
${VULKAN_LIB_DIR}/libSPVRemapper.a)
|
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
||||||
find_package(Vulkan REQUIRED)
|
|
||||||
get_filename_component(VULKAN_LIB_DIR ${Vulkan_LIBRARY} PATH)
|
|
||||||
|
|
||||||
set(LINK_LIBRARIES
|
|
||||||
${VULKAN_LIB_DIR}/glslang$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/spirv-cross-c-shared$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/GenericCodeGen$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/glslang-default-resource-limits$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/MachineIndependent$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/OSDependent$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools-diff$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools-link$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools-lint$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools-opt$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools-reduce$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV-Tools$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPIRV$<$<CONFIG:Debug>:d>.lib
|
|
||||||
${VULKAN_LIB_DIR}/SPVRemapper$<$<CONFIG:Debug>:d>.lib)
|
|
||||||
else ()
|
|
||||||
find_package(glslang CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_core CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_glsl CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_hlsl CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_msl CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_cpp CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_reflect CONFIG REQUIRED)
|
|
||||||
find_package(spirv_cross_c CONFIG REQUIRED)
|
|
||||||
set(LINK_LIBRARIES glslang::glslang spirv-cross-c)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(GoogleTest)
|
include(GoogleTest)
|
||||||
gtest_discover_tests(SanityTest)
|
gtest_discover_tests(SanityTest)
|
||||||
|
|||||||
@@ -0,0 +1,297 @@
|
|||||||
|
# FindSPIRVCross.cmake
|
||||||
|
# --------------------
|
||||||
|
#
|
||||||
|
# Find SPIRV-Cross library
|
||||||
|
#
|
||||||
|
# This module defines the following variables:
|
||||||
|
# SPIRVCross_FOUND - True if SPIRV-Cross library is found
|
||||||
|
# SPIRVCross_INCLUDE_DIRS - Include directories for SPIRV-Cross
|
||||||
|
# SPIRVCross_LIBRARIES - Libraries for SPIRV-Cross
|
||||||
|
#
|
||||||
|
# This module reads hints about search locations from:
|
||||||
|
# SPIRVCross_ROOT - Preferred installation prefix
|
||||||
|
|
||||||
|
# First try to find SPIRV-Cross using CONFIG mode (for vcpkg, conan, etc.)
|
||||||
|
if (NOT SPIRVCross_FOUND)
|
||||||
|
find_package(spirv_cross_core CONFIG QUIET)
|
||||||
|
if (spirv_cross_core_FOUND)
|
||||||
|
message(STATUS "Found SPIRV-Cross via CONFIG mode")
|
||||||
|
# Try to find all components
|
||||||
|
find_package(spirv_cross_glsl CONFIG QUIET)
|
||||||
|
find_package(spirv_cross_hlsl CONFIG QUIET)
|
||||||
|
find_package(spirv_cross_msl CONFIG QUIET)
|
||||||
|
find_package(spirv_cross_cpp CONFIG QUIET)
|
||||||
|
find_package(spirv_cross_reflect CONFIG QUIET)
|
||||||
|
find_package(spirv_cross_c CONFIG QUIET)
|
||||||
|
|
||||||
|
# Set the libraries (using the CONFIG mode variables)
|
||||||
|
set(SPIRVCross_LIBRARIES
|
||||||
|
spirv-cross-core
|
||||||
|
spirv-cross-glsl
|
||||||
|
spirv-cross-hlsl
|
||||||
|
spirv-cross-msl
|
||||||
|
spirv-cross-cpp
|
||||||
|
spirv-cross-reflect
|
||||||
|
spirv-cross-c
|
||||||
|
)
|
||||||
|
|
||||||
|
# Set the include directories
|
||||||
|
set(SPIRVCross_INCLUDE_DIRS ${spirv_cross_core_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
# Mark as found
|
||||||
|
set(SPIRVCross_FOUND TRUE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# If CONFIG mode failed, try to find Vulkan SDK
|
||||||
|
if (NOT SPIRVCross_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(SPIRVCross_INCLUDE_DIR
|
||||||
|
NAMES spirv_cross/spirv_cross.hpp
|
||||||
|
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(SPIRVCross_c_LIBRARY
|
||||||
|
NAMES spirv-cross-cd libspirv-cross-cd spirv-cross-c-sharedd libspirv-cross-c-sharedd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_cpp_LIBRARY
|
||||||
|
NAMES spirv-cross-cppd libspirv-cross-cppd spirv-cross-cpp-sharedd libspirv-cross-cpp-sharedd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_core_LIBRARY
|
||||||
|
NAMES spirv-cross-cored libspirv-cross-cored
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_reflect_LIBRARY
|
||||||
|
NAMES spirv-cross-reflectd libspirv-cross-reflectd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_glsl_LIBRARY
|
||||||
|
NAMES spirv-cross-glsld libspirv-cross-glsld
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_hlsl_LIBRARY
|
||||||
|
NAMES spirv-cross-hlsld libspirv-cross-hlsld
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_msl_LIBRARY
|
||||||
|
NAMES spirv-cross-msld libspirv-cross-msld
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(SPIRVCross_c_LIBRARY
|
||||||
|
NAMES spirv-cross-c libspirv-cross-c spirv-cross-c-shared libspirv-cross-c-shared
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_cpp_LIBRARY
|
||||||
|
NAMES spirv-cross-cpp libspirv-cross-cpp spirv-cross-cpp-shared libspirv-cross-cpp-shared
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_core_LIBRARY
|
||||||
|
NAMES spirv-cross-core libspirv-cross-core
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_reflect_LIBRARY
|
||||||
|
NAMES spirv-cross-reflect libspirv-cross-reflect
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_glsl_LIBRARY
|
||||||
|
NAMES spirv-cross-glsl libspirv-cross-glsl
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_hlsl_LIBRARY
|
||||||
|
NAMES spirv-cross-hlsl libspirv-cross-hlsl
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_msl_LIBRARY
|
||||||
|
NAMES spirv-cross-msl libspirv-cross-msl
|
||||||
|
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 SPIRVCross_FOUND)
|
||||||
|
# Look for the header file
|
||||||
|
find_path(SPIRVCross_INCLUDE_DIR
|
||||||
|
NAMES spirv_cross/spirv_cross.hpp
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES include
|
||||||
|
)
|
||||||
|
|
||||||
|
# Look for the libraries (separate debug/release searches)
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
find_library(SPIRVCross_c_LIBRARY
|
||||||
|
NAMES spirv-cross-cd libspirv-cross-cd spirv-cross-c-sharedd libspirv-cross-c-sharedd
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_cpp_LIBRARY
|
||||||
|
NAMES spirv-cross-cppd libspirv-cross-cppd spirv-cross-cpp-sharedd libspirv-cross-cpp-sharedd
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_core_LIBRARY
|
||||||
|
NAMES spirv-cross-cored libspirv-cross-cored
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_reflect_LIBRARY
|
||||||
|
NAMES spirv-cross-reflectd libspirv-cross-reflectd
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_glsl_LIBRARY
|
||||||
|
NAMES spirv-cross-glsld libspirv-cross-glsld
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_hlsl_LIBRARY
|
||||||
|
NAMES spirv-cross-hlsld libspirv-cross-hlsld
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_msl_LIBRARY
|
||||||
|
NAMES spirv-cross-msld libspirv-cross-msld
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(SPIRVCross_c_LIBRARY
|
||||||
|
NAMES spirv-cross-c libspirv-cross-c spirv-cross-c-shared libspirv-cross-c-shared
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_core_LIBRARY
|
||||||
|
NAMES spirv-cross-core libspirv-cross-core
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_reflect_LIBRARY
|
||||||
|
NAMES spirv-cross-reflect libspirv-cross-reflect
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_glsl_LIBRARY
|
||||||
|
NAMES spirv-cross-glsl libspirv-cross-glsl
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_hlsl_LIBRARY
|
||||||
|
NAMES spirv-cross-hlsl libspirv-cross-hlsl
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(SPIRVCross_msl_LIBRARY
|
||||||
|
NAMES spirv-cross-msl libspirv-cross-msl
|
||||||
|
HINTS ${SPIRVCross_ROOT} ENV SPIRVCross_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# If we found the main library, mark as found
|
||||||
|
if (SPIRVCross_c_LIBRARY OR SPIRVCross_cpp_LIBRARY AND SPIRVCross_INCLUDE_DIR)
|
||||||
|
set(SPIRVCross_FOUND TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the include directory and libraries
|
||||||
|
if (SPIRVCross_FOUND)
|
||||||
|
# If we already found the libraries through CONFIG mode, don't override them
|
||||||
|
if (NOT SPIRVCross_LIBRARIES)
|
||||||
|
set(SPIRVCross_INCLUDE_DIRS ${SPIRVCross_INCLUDE_DIR})
|
||||||
|
set(SPIRVCross_LIBRARIES
|
||||||
|
${SPIRVCross_c_LIBRARY}
|
||||||
|
${SPIRVCross_cpp_LIBRARY}
|
||||||
|
${SPIRVCross_core_LIBRARY}
|
||||||
|
${SPIRVCross_reflect_LIBRARY}
|
||||||
|
${SPIRVCross_glsl_LIBRARY}
|
||||||
|
${SPIRVCross_hlsl_LIBRARY}
|
||||||
|
${SPIRVCross_msl_LIBRARY}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
# If we didn't find anything, set the variables from standard search
|
||||||
|
set(SPIRVCross_INCLUDE_DIRS ${SPIRVCross_INCLUDE_DIR})
|
||||||
|
set(SPIRVCross_LIBRARIES
|
||||||
|
${SPIRVCross_c_LIBRARY}
|
||||||
|
${SPIRVCross_cpp_LIBRARY}
|
||||||
|
${SPIRVCross_core_LIBRARY}
|
||||||
|
${SPIRVCross_reflect_LIBRARY}
|
||||||
|
${SPIRVCross_glsl_LIBRARY}
|
||||||
|
${SPIRVCross_hlsl_LIBRARY}
|
||||||
|
${SPIRVCross_msl_LIBRARY}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(SPIRVCross
|
||||||
|
REQUIRED_VARS SPIRVCross_INCLUDE_DIR SPIRVCross_LIBRARIES
|
||||||
|
)
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
SPIRVCross_INCLUDE_DIR
|
||||||
|
SPIRVCross_LIBRARIES
|
||||||
|
)
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
# 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
|
||||||
|
)
|
||||||
@@ -0,0 +1,237 @@
|
|||||||
|
# Findglslang.cmake
|
||||||
|
# ------------------
|
||||||
|
#
|
||||||
|
# Find glslang library
|
||||||
|
#
|
||||||
|
# This module defines the following variables:
|
||||||
|
# glslang_FOUND - True if glslang library is found
|
||||||
|
# glslang_INCLUDE_DIRS - Include directories for glslang
|
||||||
|
# glslang_LIBRARIES - Libraries for glslang
|
||||||
|
#
|
||||||
|
# This module reads hints about search locations from:
|
||||||
|
# glslang_ROOT - Preferred installation prefix
|
||||||
|
|
||||||
|
# First try to find glslang using CONFIG mode (for vcpkg, conan, etc.)
|
||||||
|
if (NOT glslang_FOUND)
|
||||||
|
find_package(glslang CONFIG QUIET)
|
||||||
|
if (glslang_FOUND)
|
||||||
|
message(STATUS "Found glslang via CONFIG mode: ${glslang_DIR}")
|
||||||
|
set(glslang_INCLUDE_DIRS ${glslang_INCLUDE_DIRS} ${glslang_INCLUDE_DIR})
|
||||||
|
set(glslang_LIBRARIES ${glslang_LIBRARIES} ${glslang_LIBRARY})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# If CONFIG mode failed, try to find Vulkan SDK
|
||||||
|
if (NOT glslang_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(glslang_INCLUDE_DIR
|
||||||
|
NAMES glslang/Public/ShaderLang.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(glslang_LIBRARY
|
||||||
|
NAMES glslangd libglslangd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_OSDependent_LIBRARY
|
||||||
|
NAMES OSDependentd libOSDependentd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_MachineIndependent_LIBRARY
|
||||||
|
NAMES MachineIndependentd libMachineIndependentd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_GenericCodeGen_LIBRARY
|
||||||
|
NAMES GenericCodeGend libGenericCodeGend
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_SPIRV_LIBRARY
|
||||||
|
NAMES SPIRVd libSPIRVd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_glslang_default_resource_limits_LIBRARY
|
||||||
|
NAMES glslang-default-resource-limitsd libglslang-default-resource-limitsd
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(glslang_LIBRARY
|
||||||
|
NAMES glslang libglslang
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_OSDependent_LIBRARY
|
||||||
|
NAMES OSDependent libOSDependent
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_MachineIndependent_LIBRARY
|
||||||
|
NAMES MachineIndependent libMachineIndependent
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_GenericCodeGen_LIBRARY
|
||||||
|
NAMES GenericCodeGen libGenericCodeGen
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_SPIRV_LIBRARY
|
||||||
|
NAMES SPIRV libSPIRV
|
||||||
|
HINTS ${VULKAN_SDK_DIR}
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_glslang_default_resource_limits_LIBRARY
|
||||||
|
NAMES glslang-default-resource-limits libglslang-default-resource-limits
|
||||||
|
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 glslang_FOUND)
|
||||||
|
# Look for the header file
|
||||||
|
find_path(glslang_INCLUDE_DIR
|
||||||
|
NAMES glslang/Public/ShaderLang.h
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES include
|
||||||
|
)
|
||||||
|
|
||||||
|
# Look for the libraries (separate debug/release searches)
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
find_library(glslang_LIBRARY
|
||||||
|
NAMES glslangd libglslangd
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_OSDependent_LIBRARY
|
||||||
|
NAMES OSDependentd libOSDependentd
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_MachineIndependent_LIBRARY
|
||||||
|
NAMES MachineIndependentd libMachineIndependentd
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_GenericCodeGen_LIBRARY
|
||||||
|
NAMES GenericCodeGend libGenericCodeGend
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_SPIRV_LIBRARY
|
||||||
|
NAMES SPIRVd libSPIRVd
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_glslang_default_resource_limits_LIBRARY
|
||||||
|
NAMES glslang-default-resource-limitsd libglslang-default-resource-limitsd
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(glslang_LIBRARY
|
||||||
|
NAMES glslang libglslang
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_OSDependent_LIBRARY
|
||||||
|
NAMES OSDependent libOSDependent
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_MachineIndependent_LIBRARY
|
||||||
|
NAMES MachineIndependent libMachineIndependent
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_GenericCodeGen_LIBRARY
|
||||||
|
NAMES GenericCodeGen libGenericCodeGen
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_SPIRV_LIBRARY
|
||||||
|
NAMES SPIRV libSPIRV
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(glslang_glslang_default_resource_limits_LIBRARY
|
||||||
|
NAMES glslang-default-resource-limits libglslang-default-resource-limits
|
||||||
|
HINTS ${glslang_ROOT} ENV glslang_ROOT
|
||||||
|
PATH_SUFFIXES lib lib64 lib/x86_64 lib/x64
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Set the include directory and libraries
|
||||||
|
set(glslang_INCLUDE_DIRS ${glslang_INCLUDE_DIR})
|
||||||
|
set(glslang_LIBRARIES
|
||||||
|
${glslang_LIBRARY}
|
||||||
|
${glslang_OSDependent_LIBRARY}
|
||||||
|
${glslang_MachineIndependent_LIBRARY}
|
||||||
|
${glslang_GenericCodeGen_LIBRARY}
|
||||||
|
${glslang_SPIRV_LIBRARY}
|
||||||
|
${glslang_glslang_default_resource_limits_LIBRARY}
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(glslang
|
||||||
|
REQUIRED_VARS glslang_INCLUDE_DIR glslang_LIBRARY
|
||||||
|
)
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
glslang_INCLUDE_DIR
|
||||||
|
glslang_LIBRARY
|
||||||
|
glslang_OSDependent_LIBRARY
|
||||||
|
glslang_MachineIndependent_LIBRARY
|
||||||
|
glslang_GenericCodeGen_LIBRARY
|
||||||
|
glslang_SPIRV_LIBRARY
|
||||||
|
glslang_glslang_default_resource_limits_LIBRARY
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user