
Add `GenericCodeGen` and `MachineIndependent` static library targets. Privately import both of these into the `glslang` target. Privately import `MachineIndependent` into the `SPIRV` target. This is done to break the dependency of `libglslang.so` non-public APIs from `libspirv.so`, which will become problematic once `glslang` hides its non-public symbols. | File | Before | After | |---------------------------|-----------:|-----------:| | `libGenericCodeGen.a` | - | `527716` | | `libglslang.a` | `68175944` | `512938` | | `libHLSL.a` | `1428` | `1428` | | `libMachineIndependent.a` | - | `67132202` | | `libOGLCompiler.a` | `75908` | `75908` | | `libOSDependent.a` | `23768` | `23768` | | `libSPIRV.a` | `15710210` | `15710210` | | `libSPVRemapper.a` | `3250894` | `3250894` | | File | Before | After | |-----------------------------------------|-----------:|-----------:| | `libglslang-default-resource-limits.so` | `117032` | `117032` | | `libglslang.so` | `22380688` | `22368216` | | `libHLSL.so` | `7520` | `7520` | | `libOGLCompiler.a` | `75908` | `75908` | | `libOSDependent.a` | `23768` | `23768` | | `libSPIRV.so` | `7288336` | `28151016` | | `libSPVRemapper.so` | `1940208` | `1940208` | Issues: #2283, #1484
104 lines
3.1 KiB
CMake
104 lines
3.1 KiB
CMake
set(SOURCES
|
|
GlslangToSpv.cpp
|
|
InReadableOrder.cpp
|
|
Logger.cpp
|
|
SpvBuilder.cpp
|
|
SpvPostProcess.cpp
|
|
doc.cpp
|
|
SpvTools.cpp
|
|
disassemble.cpp
|
|
CInterface/spirv_c_interface.cpp)
|
|
|
|
set(SPVREMAP_SOURCES
|
|
SPVRemapper.cpp
|
|
doc.cpp)
|
|
|
|
set(HEADERS
|
|
bitutils.h
|
|
spirv.hpp
|
|
GLSL.std.450.h
|
|
GLSL.ext.EXT.h
|
|
GLSL.ext.KHR.h
|
|
GlslangToSpv.h
|
|
hex_float.h
|
|
Logger.h
|
|
SpvBuilder.h
|
|
spvIR.h
|
|
doc.h
|
|
SpvTools.h
|
|
disassemble.h
|
|
GLSL.ext.AMD.h
|
|
GLSL.ext.NV.h
|
|
NonSemanticDebugPrintf.h)
|
|
|
|
set(SPVREMAP_HEADERS
|
|
SPVRemapper.h
|
|
doc.h)
|
|
|
|
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
|
|
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
|
|
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
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})
|
|
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
|
|
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
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_include_directories(SPIRV
|
|
PRIVATE ${spirv-tools_SOURCE_DIR}/include
|
|
PRIVATE ${spirv-tools_SOURCE_DIR}/source
|
|
)
|
|
target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt)
|
|
target_include_directories(SPIRV PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
|
else()
|
|
target_link_libraries(SPIRV PRIVATE MachineIndependent)
|
|
endif(ENABLE_OPT)
|
|
|
|
if(WIN32)
|
|
source_group("Source" FILES ${SOURCES} ${HEADERS})
|
|
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
|
endif(WIN32)
|
|
|
|
if(ENABLE_GLSLANG_INSTALL)
|
|
if(BUILD_SHARED_LIBS)
|
|
if (ENABLE_SPVREMAPPER)
|
|
install(TARGETS SPVRemapper EXPORT SPVRemapperTargets
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
endif()
|
|
install(TARGETS SPIRV EXPORT SPIRVTargets
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
else()
|
|
if (ENABLE_SPVREMAPPER)
|
|
install(TARGETS SPVRemapper EXPORT SPVRemapperTargets
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
endif()
|
|
install(TARGETS SPIRV EXPORT SPIRVTargets
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
endif()
|
|
|
|
if (ENABLE_SPVREMAPPER)
|
|
install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
|
endif()
|
|
|
|
install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
|
|
|
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
|
|
endif(ENABLE_GLSLANG_INSTALL)
|