1
|
1
|
--- a/CMakeLists.txt
|
2
|
2
|
+++ b/CMakeLists.txt
|
3
|
|
-@@ -130,6 +130,13 @@ if(ENABLE_SPIRV)
|
4
|
|
- add_compile_definitions(ENABLE_SPIRV)
|
5
|
|
- endif()
|
|
3
|
+@@ -126,6 +126,13 @@ endif()
|
|
4
|
+
|
|
5
|
+ option(ENABLE_PCH "Enables Precompiled header" ON)
|
6
|
6
|
|
7
|
7
|
+# using pkg-config to configure include paths and link libraries
|
8
|
8
|
+include(FindPkgConfig)
|
... |
... |
@@ -11,12 +11,51 @@ |
11
|
11
|
+ pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared>=2019.2.1)
|
12
|
12
|
+endif(BUILD_SHARED_LIBS)
|
13
|
13
|
+
|
14
|
|
- if(ENABLE_HLSL)
|
15
|
|
- add_compile_definitions(ENABLE_HLSL)
|
|
14
|
+ if(ENABLE_SPIRV)
|
|
15
|
+ add_compile_definitions(ENABLE_SPIRV)
|
|
16
|
+ endif()
|
|
17
|
+@@ -289,27 +296,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMA
|
|
18
|
+ add_subdirectory(External)
|
16
|
19
|
endif()
|
|
20
|
+
|
|
21
|
+-option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt. This is unsupported if the commit isn't the one in known_good.json")
|
|
22
|
+-if(NOT TARGET SPIRV-Tools-opt)
|
|
23
|
+- if(ALLOW_EXTERNAL_SPIRV_TOOLS)
|
|
24
|
+- # Look for external SPIR-V Tools build, if not building in-tree
|
|
25
|
+- message(STATUS "Trying to find local SPIR-V tools")
|
|
26
|
+- find_package(SPIRV-Tools-opt)
|
|
27
|
+- if(NOT TARGET SPIRV-Tools-opt)
|
|
28
|
+- if(ENABLE_OPT)
|
|
29
|
+- message(WARNING "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.")
|
|
30
|
+- endif()
|
|
31
|
+- set(ENABLE_OPT OFF)
|
|
32
|
+- endif()
|
|
33
|
+- else()
|
|
34
|
+- if(ENABLE_OPT)
|
|
35
|
+- message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, "
|
|
36
|
+- "set the ALLOW_EXTERNAL_SPIRV_TOOLS option to use a local install of SPIRV-Tools, or set ENABLE_OPT=0.")
|
|
37
|
+- endif()
|
|
38
|
+- endif()
|
|
39
|
+-endif()
|
|
40
|
+-
|
|
41
|
+-if(ENABLE_OPT)
|
|
42
|
++if(${SPIRV_TOOLS_FOUND} EQUAL 1)
|
|
43
|
+ message(STATUS "optimizer enabled")
|
|
44
|
+ add_definitions(-DENABLE_OPT=1)
|
|
45
|
+ else()
|
|
46
|
+@@ -364,9 +351,6 @@ if (GLSLANG_ENABLE_INSTALL)
|
|
47
|
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
|
|
48
|
+ @PACKAGE_INIT@
|
|
49
|
+ include(CMakeFindDependencyMacro)
|
|
50
|
+- if(@ENABLE_OPT@)
|
|
51
|
+- find_dependency(SPIRV-Tools-opt)
|
|
52
|
+- endif()
|
|
53
|
+ @INSTALL_CONFIG_UNIX@
|
|
54
|
+ include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
|
55
|
+ ]=])
|
17
|
56
|
--- a/External/CMakeLists.txt
|
18
|
57
|
+++ b/External/CMakeLists.txt
|
19
|
|
-@@ -68,10 +68,3 @@ if(GLSLANG_TESTS)
|
|
58
|
+@@ -68,10 +68,4 @@ if(GLSLANG_TESTS)
|
20
|
59
|
endif()
|
21
|
60
|
endif()
|
22
|
61
|
|
... |
... |
@@ -26,47 +65,46 @@ |
26
|
65
|
- add_subdirectory(spirv-tools)
|
27
|
66
|
- endif()
|
28
|
67
|
-endif()
|
29
|
|
--
|
|
68
|
+
|
30
|
69
|
--- a/glslang/CMakeLists.txt
|
31
|
70
|
+++ b/glslang/CMakeLists.txt
|
32
|
|
-@@ -256,6 +256,9 @@ if(GLSLANG_ENABLE_INSTALL)
|
|
71
|
+@@ -254,6 +254,8 @@ if(GLSLANG_ENABLE_INSTALL)
|
|
72
|
+ if(NOT BUILD_SHARED_LIBS)
|
|
73
|
+ install(TARGETS MachineIndependent EXPORT glslang-targets)
|
33
|
74
|
install(TARGETS GenericCodeGen EXPORT glslang-targets)
|
|
75
|
++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
|
|
76
|
++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
34
|
77
|
endif()
|
35
|
78
|
|
36
|
|
-+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
|
37
|
|
-+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
38
|
|
-+
|
39
|
79
|
set(PUBLIC_HEADERS
|
40
|
|
- Public/ResourceLimits.h
|
41
|
|
- Public/ShaderLang.h
|
42
|
80
|
--- /dev/null
|
43
|
81
|
+++ b/glslang/glslang.pc.cmake.in
|
44
|
82
|
@@ -0,0 +1,11 @@
|
45
|
|
-+prefix=@CMAKE_INSTALL_PREFIX@
|
46
|
|
-+exec_prefix=@CMAKE_INSTALL_PREFIX@
|
47
|
|
-+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
48
|
|
-+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
49
|
|
-+
|
50
|
|
-+Name: @PROJECT_NAME@
|
51
|
|
-+Description: OpenGL and OpenGL ES shader front end and validator
|
52
|
|
-+Requires:
|
53
|
|
-+Version: @VERSION@
|
54
|
|
-+Libs: -L${libdir} -lglslang -lOSDependent -lSPVRemapper
|
55
|
|
-+Cflags: -I${includedir}
|
|
83
|
++ prefix=@CMAKE_INSTALL_PREFIX@
|
|
84
|
++ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
|
85
|
++ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
86
|
++ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
|
87
|
++
|
|
88
|
++ Name: @PROJECT_NAME@
|
|
89
|
++ Description: OpenGL and OpenGL ES shader front end and validator
|
|
90
|
++ Requires:
|
|
91
|
++ Version: @VERSION@
|
|
92
|
++ Libs: -L${libdir} -lglslang -lOSDependent -lSPVRemapper
|
|
93
|
++ Cflags: -I${includedir}
|
|
94
|
+\ No newline at end of file
|
56
|
95
|
--- a/SPIRV/CMakeLists.txt
|
57
|
96
|
+++ b/SPIRV/CMakeLists.txt
|
58
|
|
-@@ -92,6 +92,10 @@ target_include_directories(SPIRV PUBLIC
|
|
97
|
+@@ -92,6 +92,9 @@ target_include_directories(SPIRV PUBLIC
|
59
|
98
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
60
|
99
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
61
|
100
|
|
62
|
|
-+
|
63
|
101
|
+set(SPIRV_NAME spirv)
|
64
|
|
-+set(SPIRV_VERSION 1.3)
|
|
102
|
++set(SPIRV_VERSION 1.5.5)
|
65
|
103
|
+
|
66
|
104
|
if (ENABLE_SPVREMAPPER)
|
67
|
105
|
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
68
|
106
|
add_library(glslang::SPVRemapper ALIAS SPVRemapper)
|
69
|
|
-@@ -110,10 +114,17 @@ if(WIN32 AND BUILD_SHARED_LIBS)
|
|
107
|
+@@ -110,10 +113,17 @@ if(WIN32 AND BUILD_SHARED_LIBS)
|
70
|
108
|
endif()
|
71
|
109
|
endif()
|
72
|
110
|
|
... |
... |
@@ -87,7 +125,7 @@ |
87
|
125
|
else()
|
88
|
126
|
target_link_libraries(SPIRV PRIVATE glslang)
|
89
|
127
|
endif()
|
90
|
|
-@@ -130,5 +141,9 @@ if(GLSLANG_ENABLE_INSTALL)
|
|
128
|
+@@ -130,5 +140,9 @@ if(GLSLANG_ENABLE_INSTALL)
|
91
|
129
|
|
92
|
130
|
install(TARGETS SPIRV EXPORT glslang-targets)
|
93
|
131
|
|
... |
... |
@@ -100,17 +138,18 @@ |
100
|
138
|
--- /dev/null
|
101
|
139
|
+++ b/SPIRV/spirv.pc.cmake.in
|
102
|
140
|
@@ -0,0 +1,11 @@
|
103
|
|
-+prefix=@CMAKE_INSTALL_PREFIX@
|
104
|
|
-+exec_prefix=@CMAKE_INSTALL_PREFIX@
|
105
|
|
-+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
106
|
|
-+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
107
|
|
-+
|
108
|
|
-+Name: @SPIRV_NAME@
|
109
|
|
-+Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan
|
110
|
|
-+Requires:
|
111
|
|
-+Version: @SPIRV_VERSION@
|
112
|
|
-+Libs: -L${libdir} -lSPIRV
|
113
|
|
-+Cflags: -I${includedir}
|
|
141
|
++ prefix=@CMAKE_INSTALL_PREFIX@
|
|
142
|
++ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
|
143
|
++ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
144
|
++ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
|
145
|
++
|
|
146
|
++ Name: @SPIRV_NAME@
|
|
147
|
++ Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan
|
|
148
|
++ Requires:
|
|
149
|
++ Version: @SPIRV_VERSION@
|
|
150
|
++ Libs: -L${libdir} -lSPIRV
|
|
151
|
++ Cflags: -I${includedir}
|
|
152
|
+\ No newline at end of file
|
114
|
153
|
--- a/SPIRV/SpvTools.cpp
|
115
|
154
|
+++ b/SPIRV/SpvTools.cpp
|
116
|
155
|
@@ -43,7 +43,7 @@
|
... |
... |
@@ -124,27 +163,10 @@ |
124
|
163
|
namespace glslang {
|
125
|
164
|
--- a/StandAlone/CMakeLists.txt
|
126
|
165
|
+++ b/StandAlone/CMakeLists.txt
|
127
|
|
-@@ -70,8 +70,6 @@ elseif(UNIX)
|
128
|
|
- endif()
|
129
|
|
-
|
130
|
|
- target_link_libraries(glslang-standalone ${LIBRARIES})
|
131
|
|
--target_include_directories(glslang-standalone PUBLIC
|
132
|
|
-- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>)
|
133
|
|
-
|
134
|
|
- if(ENABLE_SPIRV)
|
135
|
|
- if(ENABLE_SPVREMAPPER)
|
136
|
|
-@@ -83,6 +81,22 @@ if(ENABLE_SPIRV)
|
137
|
|
- endif()
|
138
|
|
- endif()
|
|
166
|
+@@ -61,6 +61,14 @@ set(LIBRARIES
|
|
167
|
+ glslang
|
|
168
|
+ glslang-default-resource-limits)
|
139
|
169
|
|
140
|
|
-+if(BUILD_SHARED_LIBS)
|
141
|
|
-+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
142
|
|
-+ target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
143
|
|
-+else()
|
144
|
|
-+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES})
|
145
|
|
-+ target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
|
146
|
|
-+endif(BUILD_SHARED_LIBS)
|
147
|
|
-+
|
148
|
170
|
+if(BUILD_SHARED_LIBS)
|
149
|
171
|
+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
150
|
172
|
+ target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
... |
... |
@@ -154,5 +176,14 @@ |
154
|
176
|
+endif(BUILD_SHARED_LIBS)
|
155
|
177
|
+
|
156
|
178
|
if(WIN32)
|
157
|
|
- source_group("Source" FILES ${SOURCES})
|
|
179
|
+ set(LIBRARIES ${LIBRARIES} psapi)
|
|
180
|
+ elseif(UNIX)
|
|
181
|
+@@ -70,8 +78,6 @@ elseif(UNIX)
|
158
|
182
|
endif()
|
|
183
|
+
|
|
184
|
+ target_link_libraries(glslang-standalone ${LIBRARIES})
|
|
185
|
+-target_include_directories(glslang-standalone PUBLIC
|
|
186
|
+- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>)
|
|
187
|
+
|
|
188
|
+ if(ENABLE_SPIRV)
|
|
189
|
+ if(ENABLE_SPVREMAPPER) |