cmake: only install public headers

Only the headers that are part of glslang's public interface are
installed. Previously, all of its headers were installed, which exposed
a lot of internal implementation details and made it difficult to
maintain backward compatiblity. This reduces the API surface somewhat
and will make it easier to maintain API and ABI compatibility.
This commit is contained in:
Arcady Goldmints-Orlov 2023-11-08 16:35:41 -07:00 committed by arcady-lunarg
parent 806d9abbad
commit 1dcb072cda
2 changed files with 18 additions and 7 deletions

View file

@ -70,6 +70,13 @@ set(SPVREMAP_HEADERS
SPVRemapper.h
doc.h)
set(PUBLIC_HEADERS
GlslangToSpv.h
disassemble.h
Logger.h
spirv.hpp
SPVRemapper.h)
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
set_target_properties(SPIRV PROPERTIES
FOLDER glslang
@ -148,5 +155,5 @@ if(ENABLE_GLSLANG_INSTALL)
")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
endif()

View file

@ -163,7 +163,7 @@ set(GLSLANG_HEADERS
Include/SpirvIntrinsics.h
Include/Types.h)
add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS})
add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS})
set_target_properties(glslang PROPERTIES
FOLDER glslang
POSITION_INDEPENDENT_CODE ON
@ -247,12 +247,16 @@ if(ENABLE_GLSLANG_INSTALL)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
endif()
set(ALL_HEADERS
${GLSLANG_HEADERS}
${MACHINEINDEPENDENT_HEADERS}
${RESOURCELIMITS_HEADERS})
set(PUBLIC_HEADERS
Public/ResourceLimits.h
Public/ShaderLang.h
Public/resource_limits_c.h
Include/glslang_c_interface.h
Include/glslang_c_shader_types.h
Include/ResourceLimits.h
MachineIndependent/Versions.h)
foreach(file ${ALL_HEADERS})
foreach(file ${PUBLIC_HEADERS})
get_filename_component(dir ${file} DIRECTORY)
install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir})
endforeach()