Upgrade to 13.1.1(vulkan-sdk-1.3.268.0)
[platform/upstream/glslang.git] / SPIRV / CMakeLists.txt
1 # Copyright (C) 2020 The Khronos Group Inc.
2 #
3 # All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 #
9 #    Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 #
12 #    Redistributions in binary form must reproduce the above
13 #    copyright notice, this list of conditions and the following
14 #    disclaimer in the documentation and/or other materials provided
15 #    with the distribution.
16 #
17 #    Neither the name of The Khronos Group Inc. nor the names of its
18 #    contributors may be used to endorse or promote products derived
19 #    from this software without specific prior written permission.
20 #
21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 # POSSIBILITY OF SUCH DAMAGE.
33
34 set(SOURCES
35     GlslangToSpv.cpp
36     InReadableOrder.cpp
37     Logger.cpp
38     SpvBuilder.cpp
39     SpvPostProcess.cpp
40     doc.cpp
41     SpvTools.cpp
42     disassemble.cpp
43     CInterface/spirv_c_interface.cpp)
44
45 set(SPVREMAP_SOURCES
46     SPVRemapper.cpp
47     doc.cpp)
48
49 set(HEADERS
50     bitutils.h
51     spirv.hpp
52     GLSL.std.450.h
53     GLSL.ext.EXT.h
54     GLSL.ext.KHR.h
55     GlslangToSpv.h
56     hex_float.h
57     Logger.h
58     SpvBuilder.h
59     spvIR.h
60     doc.h
61     SpvTools.h
62     disassemble.h
63     GLSL.ext.AMD.h
64     GLSL.ext.NV.h
65     GLSL.ext.ARM.h
66     NonSemanticDebugPrintf.h
67     NonSemanticShaderDebugInfo100.h)
68
69 set(SPVREMAP_HEADERS
70     SPVRemapper.h
71     doc.h)
72
73 add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
74 set_target_properties(SPIRV PROPERTIES
75     FOLDER glslang
76     POSITION_INDEPENDENT_CODE ON
77     VERSION   "${GLSLANG_VERSION}"
78     SOVERSION "${GLSLANG_VERSION_MAJOR}")
79 target_include_directories(SPIRV PUBLIC
80     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
81     $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
82
83 glslang_add_build_info_dependency(SPIRV)
84
85 if (ENABLE_SPVREMAPPER)
86     add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
87     set_target_properties(SPVRemapper PROPERTIES
88         FOLDER glslang
89         POSITION_INDEPENDENT_CODE ON
90         VERSION   "${GLSLANG_VERSION}"
91         SOVERSION "${GLSLANG_VERSION_MAJOR}")
92 endif()
93
94 if(WIN32 AND BUILD_SHARED_LIBS)
95     set_target_properties(SPIRV PROPERTIES PREFIX "")
96     if (ENABLE_SPVREMAPPER)
97         set_target_properties(SPVRemapper PROPERTIES PREFIX "")
98     endif()
99 endif()
100
101 if(ENABLE_OPT)
102     target_include_directories(SPIRV
103         PRIVATE ${spirv-tools_SOURCE_DIR}/include
104         PRIVATE ${spirv-tools_SOURCE_DIR}/source
105     )
106     target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt)
107     target_include_directories(SPIRV PUBLIC
108         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
109         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
110 else()
111     target_link_libraries(SPIRV PRIVATE MachineIndependent)
112 endif()
113
114 if(WIN32)
115     source_group("Source" FILES ${SOURCES} ${HEADERS})
116     source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
117 endif()
118
119 if(ENABLE_GLSLANG_INSTALL)
120     if (ENABLE_SPVREMAPPER)
121         install(TARGETS SPVRemapper EXPORT glslang-targets)
122     endif()
123
124     install(TARGETS SPIRV EXPORT glslang-targets)
125
126     # Backward compatibility
127     if (ENABLE_SPVREMAPPER)
128         file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" "
129             message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
130
131             if (NOT TARGET glslang::SPVRemapper)
132                 include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
133             endif()
134
135             add_library(SPVRemapper ALIAS glslang::SPVRemapper)
136         ")
137         install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
138     endif()
139
140     file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" "
141         message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\")
142
143         if (NOT TARGET glslang::SPIRV)
144             include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\")
145         endif()
146
147         add_library(SPIRV ALIAS glslang::SPIRV)
148     ")
149     install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
150
151     install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
152 endif()