set(SPIRV_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.cpp
${CMAKE_CURRENT_SOURCE_DIR}/InReadableOrder.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Logger.cpp
${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.cpp
${CMAKE_CURRENT_SOURCE_DIR}/SpvPostProcess.cpp
${CMAKE_CURRENT_SOURCE_DIR}/doc.cpp
${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.cpp
${CMAKE_CURRENT_SOURCE_DIR}/disassemble.cpp
${CMAKE_CURRENT_SOURCE_DIR}/CInterface/spirv_c_interface.cpp
PARENT_SCOPE)
set(SPVREMAP_SOURCES
SPVRemapper.cpp
doc.cpp)
set(SPIRV_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/bitutils.h
${CMAKE_CURRENT_SOURCE_DIR}/spirv.hpp
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.std.450.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.EXT.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.KHR.h
${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.h
${CMAKE_CURRENT_SOURCE_DIR}/hex_float.h
${CMAKE_CURRENT_SOURCE_DIR}/Logger.h
${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.h
${CMAKE_CURRENT_SOURCE_DIR}/spvIR.h
${CMAKE_CURRENT_SOURCE_DIR}/doc.h
${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.h
${CMAKE_CURRENT_SOURCE_DIR}/disassemble.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.AMD.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.NV.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.ARM.h
${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.QCOM.h
${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticDebugPrintf.h
${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticShaderDebugInfo100.h
PARENT_SCOPE)
set(SPVREMAP_HEADERS
SPVRemapper.h
doc.h)
set(PUBLIC_HEADERS
GlslangToSpv.h
disassemble.h
Logger.h
spirv.hpp
SPVRemapper.h
SpvTools.h)
add_library(SPIRV ${LIB_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/../glslang/stub.cpp)
add_library(glslang::SPIRV ALIAS SPIRV)
set_target_properties(SPIRV PROPERTIES
FOLDER glslang
POSITION_INDEPENDENT_CODE ON
VERSION "${GLSLANG_VERSION}"
SOVERSION "${GLSLANG_VERSION_MAJOR}")
target_include_directories(SPIRV PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if (ENABLE_SPVREMAPPER)
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
add_library(glslang::SPVRemapper ALIAS SPVRemapper)
set_target_properties(SPVRemapper PROPERTIES
FOLDER glslang
POSITION_INDEPENDENT_CODE ON
VERSION "${GLSLANG_VERSION}"
SOVERSION "${GLSLANG_VERSION_MAJOR}")
glslang_only_export_explicit_symbols(SPVRemapper)
endif()
if(WIN32 AND BUILD_SHARED_LIBS)
set_target_properties(SPIRV PROPERTIES PREFIX "")
if (ENABLE_SPVREMAPPER)
set_target_properties(SPVRemapper PROPERTIES PREFIX "")
endif()
endif()
if(ENABLE_OPT)
target_link_libraries(SPIRV PRIVATE glslang PUBLIC SPIRV-Tools-opt)
target_include_directories(SPIRV PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>)
else()
target_link_libraries(SPIRV PRIVATE glslang)
endif()
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif()
if(GLSLANG_ENABLE_INSTALL)
if (ENABLE_SPVREMAPPER)
install(TARGETS SPVRemapper EXPORT glslang-targets)
endif()
install(TARGETS SPIRV EXPORT glslang-targets)
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
endif()