Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
prism/cmake/Findglslang.cmake
2020-08-11 12:07:21 -04:00

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