202 lines
6.1 KiB
CMake
202 lines
6.1 KiB
CMake
#.rst:
|
|
# Findglslang
|
|
# ----------
|
|
#
|
|
# Try to find glslang in the VulkanSDK
|
|
#
|
|
# IMPORTED Targets
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module defines :prop_tgt:`IMPORTED` target ``glslang::glslang``, if
|
|
# glslang has been found.
|
|
#
|
|
# Result Variables
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module defines the following variables::
|
|
#
|
|
# glslang_FOUND - True if glslang was found
|
|
# glslang_INCLUDE_DIRS - include directories for glslang
|
|
# glslang_LIBRARIES - link against this library to use glslang
|
|
#
|
|
# The module will also define two cache variables::
|
|
#
|
|
# glslang_INCLUDE_DIR - the glslang include directory
|
|
# glslang_LIBRARY - the path to the glslang library
|
|
#
|
|
|
|
if (DEFINED ENV{VULKAN_SDK})
|
|
if(WIN32)
|
|
set(ADDITIONAL_PATHS_INCLUDE "$ENV{VULKAN_SDK}/Include")
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(ADDITIONAL_PATHS_LIBS
|
|
"$ENV{VULKAN_SDK}/Lib"
|
|
"$ENV{VULKAN_SDK}/Bin"
|
|
)
|
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
set(ADDITIONAL_PATHS_LIBS
|
|
"$ENV{VULKAN_SDK}/Lib32"
|
|
"$ENV{VULKAN_SDK}/Bin32"
|
|
)
|
|
endif()
|
|
else()
|
|
set(ADDITIONAL_PATHS_INCLUDE "$ENV{VULKAN_SDK}/include")
|
|
set(ADDITIONAL_PATHS_LIBS "$ENV{VULKAN_SDK}/lib")
|
|
endif()
|
|
endif()
|
|
|
|
find_path(glslang_INCLUDE_DIR
|
|
NAMES glslang/Public/ShaderLang.h
|
|
PATHS ${ADDITIONAL_PATHS_INCLUDE}
|
|
)
|
|
|
|
find_path(spirv_INCLUDE_DIR
|
|
NAMES SPIRV/GlslangToSpv.h
|
|
PATHS ${ADDITIONAL_PATHS_INCLUDE}
|
|
)
|
|
|
|
|
|
find_library(glslang_LIBRARY
|
|
NAMES glslang
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(OSDependent_LIBRARY
|
|
NAMES OSDependent
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV_LIBRARY
|
|
NAMES SPIRV
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV-Tools_LIBRARY
|
|
NAMES SPIRV-Tools
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV-Tools-opt_LIBRARY
|
|
NAMES SPIRV-Tools-opt
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(OGLCompiler_LIBRARY
|
|
NAMES OGLCompiler
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(HLSL_LIBRARY
|
|
NAMES HLSL
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
if(WIN32)
|
|
|
|
find_library(glslang_LIBRARY_debug
|
|
NAMES glslangd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(OSDependent_LIBRARY_debug
|
|
NAMES OSDependentd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV_LIBRARY_debug
|
|
NAMES SPIRVd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV-Tools_LIBRARY_debug
|
|
NAMES SPIRV-Toolsd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(SPIRV-Tools-opt_LIBRARY_debug
|
|
NAMES SPIRV-Tools-optd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(OGLCompiler_LIBRARY_debug
|
|
NAMES OGLCompilerd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
|
|
find_library(HLSL_LIBRARY_debug
|
|
NAMES HLSLd
|
|
PATHS ${ADDITIONAL_PATHS_LIBS}
|
|
)
|
|
endif()
|
|
|
|
|
|
set(glslang_LIBRARIES ${glslang_LIBRARY})
|
|
set(glslang_INCLUDE_DIRS ${glslang_INCLUDE_DIR})
|
|
|
|
mark_as_advanced(glslang_INCLUDE_DIR glslang_LIBRARY)
|
|
|
|
if(glslang_LIBRARY AND glslang_INCLUDE_DIR)
|
|
set(glslang_FOUND "YES")
|
|
message(STATUS "Found glslang: ${glslang_LIBRARY}")
|
|
else()
|
|
set(glslang_FOUND "NO")
|
|
message(STATUS "Failed to find glslang")
|
|
endif()
|
|
|
|
if(glslang_FOUND AND NOT TARGET glslang::glslang)
|
|
add_library(glslang::glslang UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::glslang PROPERTIES IMPORTED_LOCATION "${glslang_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${glslang_INCLUDE_DIRS}")
|
|
|
|
add_library(glslang::OSDependent UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::OSDependent PROPERTIES IMPORTED_LOCATION "${OSDependent_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${OSDependent_INCLUDE_DIRS}")
|
|
|
|
add_library(glslang::SPIRV UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::SPIRV PROPERTIES IMPORTED_LOCATION "${SPIRV_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${spirv_INCLUDE_DIR}")
|
|
|
|
if (SPIRV-Tools_LIBRARY)
|
|
add_library(glslang::SPIRV-Tools UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::SPIRV-Tools PROPERTIES IMPORTED_LOCATION "${SPIRV-Tools_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SPIRV-Tools__INCLUDE_DIR}")
|
|
endif()
|
|
|
|
if (SPIRV-Tools-opt_LIBRARY)
|
|
add_library(glslang::SPIRV-Tools-opt UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::SPIRV-Tools-opt PROPERTIES IMPORTED_LOCATION "${SPIRV-Tools-opt_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SPIRV-Tools-opt_INCLUDE_DIR}")
|
|
endif()
|
|
|
|
add_library(glslang::OGLCompiler UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::OGLCompiler PROPERTIES IMPORTED_LOCATION "${OGLCompiler_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${glslang_INCLUDE_DIRS}")
|
|
|
|
add_library(glslang::HLSL UNKNOWN IMPORTED)
|
|
set_target_properties(glslang::HLSL PROPERTIES IMPORTED_LOCATION "${HLSL_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${glslang_INCLUDE_DIRS}")
|
|
|
|
if(WIN32)
|
|
set_target_properties(glslang::glslang PROPERTIES IMPORTED_LOCATION_DEBUG "${glslang_LIBRARY_debug}")
|
|
set_target_properties(glslang::OSDependent PROPERTIES IMPORTED_LOCATION_DEBUG "${OSDependent_LIBRARY_debug}")
|
|
set_target_properties(glslang::SPIRV PROPERTIES IMPORTED_LOCATION_DEBUG "${SPIRV_LIBRARY_debug}")
|
|
if (SPIRV-Tools_LIBRARY_debug)
|
|
set_target_properties(glslang::SPIRV-Tools PROPERTIES IMPORTED_LOCATION_DEBUG "${SPIRV-Tools_LIBRARY_debug}")
|
|
endif()
|
|
if (SPIRV-Tools-opt_LIBRARY_debug)
|
|
set_target_properties(glslang::SPIRV-Tools-opt PROPERTIES IMPORTED_LOCATION_DEBUG "${SPIRV-Tools-opt_LIBRARY_debug}")
|
|
endif()
|
|
set_target_properties(glslang::OGLCompiler PROPERTIES IMPORTED_LOCATION_DEBUG "${OGLCompiler_LIBRARY_debug}")
|
|
set_target_properties(glslang::HLSL PROPERTIES IMPORTED_LOCATION_DEBUG "${HLSL_LIBRARY_debug}")
|
|
endif()
|
|
|
|
set(GLSLANG
|
|
glslang::glslang
|
|
glslang::OSDependent
|
|
glslang::SPIRV
|
|
glslang::OGLCompiler
|
|
glslang::HLSL
|
|
)
|
|
|
|
if (SPIRV-Tools-opt_LIBRARY)
|
|
list(APPEND GLSLANG glslang::SPIRV-Tools-opt)
|
|
endif()
|
|
if (SPIRV-Tools_LIBRARY)
|
|
list(APPEND GLSLANG glslang::SPIRV-Tools)
|
|
endif()
|
|
|
|
endif()
|
|
|