blob: 19ee77ac3cdcaa6e05eada11965eb492486ae9d2 [file] [log] [blame]
Dan Sinclaira114e1f2018-07-17 13:53:15 -04001# Copyright 2018 Google Inc. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Dan Sinclaira114e1f2018-07-17 13:53:15 -040015import("//build_overrides/build.gni")
David Turner50815122019-07-10 22:37:10 +020016import("//build_overrides/spirv_tools.gni")
David Turnera6bfc262019-07-03 22:26:06 +020017if (build_with_chromium) {
18 import("//testing/test.gni")
19}
Dan Sinclaira114e1f2018-07-17 13:53:15 -040020
Corentin Wallez2d9a3252018-08-02 18:48:03 +020021spirv_headers = spirv_tools_spirv_headers_dir
Shahbaz Youssefiae6a1e12021-04-12 13:17:44 -040022spirv_is_winuwp = is_win && target_os == "winuwp"
Dan Sinclaira114e1f2018-07-17 13:53:15 -040023
24template("spvtools_core_tables") {
25 assert(defined(invoker.version), "Need version in $target_name generation.")
26
27 action("spvtools_core_tables_" + target_name) {
28 script = "utils/generate_grammar_tables.py"
29
30 version = invoker.version
31
32 core_json_file =
33 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
34 core_insts_file = "${target_gen_dir}/core.insts-$version.inc"
35 operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc"
Corentin Wallez77eb2b62021-03-10 20:19:24 +000036 debuginfo_insts_file =
37 "${spirv_headers}/include/spirv/unified1/extinst.debuginfo.grammar.json"
alan-baker50300452020-07-30 12:08:53 -040038 cldebuginfo100_insts_file = "${spirv_headers}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
Dan Sinclaira114e1f2018-07-17 13:53:15 -040039
40 sources = [
Corentin Wallez77eb2b62021-03-10 20:19:24 +000041 cldebuginfo100_insts_file,
Dan Sinclaira114e1f2018-07-17 13:53:15 -040042 core_json_file,
Geoff Langc316fb12020-02-21 17:23:42 -050043 debuginfo_insts_file,
Dan Sinclaira114e1f2018-07-17 13:53:15 -040044 ]
45 outputs = [
46 core_insts_file,
47 operand_kinds_file,
48 ]
49 args = [
50 "--spirv-core-grammar",
51 rebase_path(core_json_file, root_build_dir),
52 "--core-insts-output",
53 rebase_path(core_insts_file, root_build_dir),
54 "--extinst-debuginfo-grammar",
David Neto64f36ea2019-12-19 17:16:26 -050055 rebase_path(debuginfo_insts_file, root_build_dir),
56 "--extinst-cldebuginfo100-grammar",
57 rebase_path(cldebuginfo100_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -040058 "--operand-kinds-output",
59 rebase_path(operand_kinds_file, root_build_dir),
60 ]
61 }
62}
63
64template("spvtools_core_enums") {
65 assert(defined(invoker.version), "Need version in $target_name generation.")
66
67 action("spvtools_core_enums_" + target_name) {
68 script = "utils/generate_grammar_tables.py"
69
70 version = invoker.version
71
72 core_json_file =
73 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
Corentin Wallez77eb2b62021-03-10 20:19:24 +000074 debuginfo_insts_file =
75 "${spirv_headers}/include/spirv/unified1/extinst.debuginfo.grammar.json"
alan-baker50300452020-07-30 12:08:53 -040076 cldebuginfo100_insts_file = "${spirv_headers}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
David Netofb2e8192020-01-08 17:27:38 -050077
Dan Sinclaira114e1f2018-07-17 13:53:15 -040078 extension_enum_file = "${target_gen_dir}/extension_enum.inc"
79 extension_map_file = "${target_gen_dir}/enum_string_mapping.inc"
80
81 args = [
82 "--spirv-core-grammar",
83 rebase_path(core_json_file, root_build_dir),
84 "--extinst-debuginfo-grammar",
David Neto64f36ea2019-12-19 17:16:26 -050085 rebase_path(debuginfo_insts_file, root_build_dir),
86 "--extinst-cldebuginfo100-grammar",
87 rebase_path(cldebuginfo100_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -040088 "--extension-enum-output",
89 rebase_path(extension_enum_file, root_build_dir),
90 "--enum-string-mapping-output",
91 rebase_path(extension_map_file, root_build_dir),
92 ]
93 inputs = [
94 core_json_file,
David Netofb2e8192020-01-08 17:27:38 -050095 debuginfo_insts_file,
96 cldebuginfo100_insts_file,
Dan Sinclaira114e1f2018-07-17 13:53:15 -040097 ]
98 outputs = [
99 extension_enum_file,
100 extension_map_file,
101 ]
102 }
103}
104
105template("spvtools_glsl_tables") {
106 assert(defined(invoker.version), "Need version in $target_name generation.")
107
108 action("spvtools_glsl_tables_" + target_name) {
109 script = "utils/generate_grammar_tables.py"
110
111 version = invoker.version
112
113 core_json_file =
114 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
115 glsl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.glsl.std.450.grammar.json"
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000116 debuginfo_insts_file =
117 "${spirv_headers}/include/spirv/unified1/extinst.debuginfo.grammar.json"
alan-baker50300452020-07-30 12:08:53 -0400118 cldebuginfo100_insts_file = "${spirv_headers}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
David Netofb2e8192020-01-08 17:27:38 -0500119
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400120 glsl_insts_file = "${target_gen_dir}/glsl.std.450.insts.inc"
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400121
122 args = [
123 "--spirv-core-grammar",
124 rebase_path(core_json_file, root_build_dir),
David Netofb2e8192020-01-08 17:27:38 -0500125 "--extinst-debuginfo-grammar",
126 rebase_path(debuginfo_insts_file, root_build_dir),
127 "--extinst-cldebuginfo100-grammar",
128 rebase_path(cldebuginfo100_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400129 "--extinst-glsl-grammar",
130 rebase_path(glsl_json_file, root_build_dir),
131 "--glsl-insts-output",
132 rebase_path(glsl_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400133 ]
134 inputs = [
135 core_json_file,
136 glsl_json_file,
David Netofb2e8192020-01-08 17:27:38 -0500137 debuginfo_insts_file,
138 cldebuginfo100_insts_file,
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400139 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000140 outputs = [ glsl_insts_file ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400141 }
142}
143
144template("spvtools_opencl_tables") {
145 assert(defined(invoker.version), "Need version in $target_name generation.")
146
147 action("spvtools_opencl_tables_" + target_name) {
148 script = "utils/generate_grammar_tables.py"
149
150 version = invoker.version
151
152 core_json_file =
153 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
David Netofb2e8192020-01-08 17:27:38 -0500154 opencl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.opencl.std.100.grammar.json"
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000155 debuginfo_insts_file =
156 "${spirv_headers}/include/spirv/unified1/extinst.debuginfo.grammar.json"
alan-baker50300452020-07-30 12:08:53 -0400157 cldebuginfo100_insts_file = "${spirv_headers}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
David Netofb2e8192020-01-08 17:27:38 -0500158
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400159 opencl_insts_file = "${target_gen_dir}/opencl.std.insts.inc"
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400160
161 args = [
162 "--spirv-core-grammar",
163 rebase_path(core_json_file, root_build_dir),
David Netofb2e8192020-01-08 17:27:38 -0500164 "--extinst-debuginfo-grammar",
165 rebase_path(debuginfo_insts_file, root_build_dir),
166 "--extinst-cldebuginfo100-grammar",
167 rebase_path(cldebuginfo100_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400168 "--extinst-opencl-grammar",
David Netofb2e8192020-01-08 17:27:38 -0500169 rebase_path(opencl_json_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400170 "--opencl-insts-output",
171 rebase_path(opencl_insts_file, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400172 ]
173 inputs = [
174 core_json_file,
David Netofb2e8192020-01-08 17:27:38 -0500175 opencl_json_file,
176 debuginfo_insts_file,
177 cldebuginfo100_insts_file,
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400178 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000179 outputs = [ opencl_insts_file ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400180 }
181}
182
183template("spvtools_language_header") {
184 assert(defined(invoker.name), "Need name in $target_name generation.")
185
186 action("spvtools_language_header_" + target_name) {
187 script = "utils/generate_language_headers.py"
188
189 name = invoker.name
Geoff Langfb6e3e42020-02-25 00:46:52 -0500190 extinst_output_path = "${target_gen_dir}/${name}.h"
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400191
192 args = [
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400193 "--extinst-grammar",
David Neto64f36ea2019-12-19 17:16:26 -0500194 rebase_path(invoker.grammar_file, root_build_dir),
Geoff Langfb6e3e42020-02-25 00:46:52 -0500195 "--extinst-output-path",
196 rebase_path(extinst_output_path, root_build_dir),
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400197 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000198 inputs = [ invoker.grammar_file ]
199 outputs = [ "${extinst_output_path}" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400200 }
201}
202
203template("spvtools_vendor_table") {
204 assert(defined(invoker.name), "Need name in $target_name generation.")
205
206 action("spvtools_vendor_tables_" + target_name) {
207 script = "utils/generate_grammar_tables.py"
208
209 name = invoker.name
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000210 extinst_vendor_grammar =
211 "${spirv_headers}/include/spirv/unified1/extinst.${name}.grammar.json"
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400212 extinst_file = "${target_gen_dir}/${name}.insts.inc"
213
214 args = [
215 "--extinst-vendor-grammar",
216 rebase_path(extinst_vendor_grammar, root_build_dir),
217 "--vendor-insts-output",
218 rebase_path(extinst_file, root_build_dir),
David Neto64f36ea2019-12-19 17:16:26 -0500219 "--vendor-operand-kind-prefix",
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000220 invoker.operand_kind_prefix,
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400221 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000222 inputs = [ extinst_vendor_grammar ]
223 outputs = [ extinst_file ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400224 }
225}
226
227action("spvtools_generators_inc") {
228 script = "utils/generate_registry_tables.py"
229
230 # TODO(dsinclair): Make work for chrome
231 xml_file = "${spirv_headers}/include/spirv/spir-v.xml"
232 inc_file = "${target_gen_dir}/generators.inc"
233
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000234 sources = [ xml_file ]
235 outputs = [ inc_file ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400236 args = [
237 "--xml",
238 rebase_path(xml_file, root_build_dir),
239 "--generator",
240 rebase_path(inc_file, root_build_dir),
241 ]
242}
243
dan sinclair1bdade72018-08-15 15:26:28 -0400244action("spvtools_build_version") {
245 script = "utils/update_build_version.py"
246
247 src_dir = "."
248 inc_file = "${target_gen_dir}/build-version.inc"
249
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000250 outputs = [ inc_file ]
dan sinclair1bdade72018-08-15 15:26:28 -0400251 args = [
252 rebase_path(src_dir, root_build_dir),
253 rebase_path(inc_file, root_build_dir),
254 ]
255}
256
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400257spvtools_core_tables("unified1") {
258 version = "unified1"
259}
260spvtools_core_enums("unified1") {
261 version = "unified1"
262}
263spvtools_glsl_tables("glsl1-0") {
264 version = "1.0"
265}
266spvtools_opencl_tables("opencl1-0") {
267 version = "1.0"
268}
David Neto64f36ea2019-12-19 17:16:26 -0500269spvtools_language_header("debuginfo") {
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400270 name = "DebugInfo"
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000271 grammar_file =
272 "${spirv_headers}/include/spirv/unified1/extinst.debuginfo.grammar.json"
David Neto64f36ea2019-12-19 17:16:26 -0500273}
274spvtools_language_header("cldebuginfo100") {
275 name = "OpenCLDebugInfo100"
alan-baker50300452020-07-30 12:08:53 -0400276 grammar_file = "${spirv_headers}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400277}
278
279spvtools_vendor_tables = [
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000280 [
281 "spv-amd-shader-explicit-vertex-parameter",
282 "...nil...",
283 ],
284 [
285 "spv-amd-shader-trinary-minmax",
286 "...nil...",
287 ],
288 [
289 "spv-amd-gcn-shader",
290 "...nil...",
291 ],
292 [
293 "spv-amd-shader-ballot",
294 "...nil...",
295 ],
296 [
297 "debuginfo",
298 "...nil...",
299 ],
300 [
301 "opencl.debuginfo.100",
302 "CLDEBUG100_",
303 ],
304 [
305 "nonsemantic.clspvreflection",
306 "...nil...",
307 ],
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400308]
309
David Neto64f36ea2019-12-19 17:16:26 -0500310foreach(table_def, spvtools_vendor_tables) {
David Netofb2e8192020-01-08 17:27:38 -0500311 spvtools_vendor_table(table_def[0]) {
David Neto64f36ea2019-12-19 17:16:26 -0500312 name = table_def[0]
313 operand_kind_prefix = table_def[1]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400314 }
315}
316
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400317config("spvtools_public_config") {
318 include_dirs = [ "include" ]
319}
320
321config("spvtools_internal_config") {
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400322 include_dirs = [
323 ".",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400324 "$target_gen_dir",
325 "${spirv_headers}/include",
326 ]
327
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400328 configs = [ ":spvtools_public_config" ]
329
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000330 cflags = []
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400331 if (is_clang) {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000332 cflags += [
David Turner36c1c0e2019-09-17 21:57:15 +0200333 "-Wno-implicit-fallthrough",
334 "-Wno-newline-eof",
335 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000336 } else if (!is_win) {
337 # Work around a false-positive on a Skia GCC 10 builder.
Corentin Wallez5d8c4032021-03-11 10:08:33 +0000338 cflags += [ "-Wno-format-truncation" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400339 }
340}
341
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400342source_set("spvtools_headers") {
343 sources = [
David Turner50815122019-07-10 22:37:10 +0200344 "include/spirv-tools/instrument.hpp",
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400345 "include/spirv-tools/libspirv.h",
346 "include/spirv-tools/libspirv.hpp",
347 "include/spirv-tools/linker.hpp",
348 "include/spirv-tools/optimizer.hpp",
349 ]
350
351 public_configs = [ ":spvtools_public_config" ]
352}
353
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400354static_library("spvtools") {
355 deps = [
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400356 ":spvtools_core_tables_unified1",
357 ":spvtools_generators_inc",
358 ":spvtools_glsl_tables_glsl1-0",
David Neto64f36ea2019-12-19 17:16:26 -0500359 ":spvtools_language_header_cldebuginfo100",
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000360 ":spvtools_language_header_debuginfo",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400361 ":spvtools_opencl_tables_opencl1-0",
362 ]
David Neto64f36ea2019-12-19 17:16:26 -0500363 foreach(table_def, spvtools_vendor_tables) {
364 target_name = table_def[0]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400365 deps += [ ":spvtools_vendor_tables_$target_name" ]
366 }
367
368 sources = [
369 "source/assembly_grammar.cpp",
370 "source/assembly_grammar.h",
371 "source/binary.cpp",
372 "source/binary.h",
Jamie Madille0d55442019-11-04 21:01:57 -0500373 "source/cfa.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400374 "source/diagnostic.cpp",
375 "source/diagnostic.h",
376 "source/disassemble.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500377 "source/disassemble.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400378 "source/enum_set.h",
379 "source/enum_string_mapping.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500380 "source/enum_string_mapping.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400381 "source/ext_inst.cpp",
382 "source/ext_inst.h",
383 "source/extensions.cpp",
384 "source/extensions.h",
385 "source/instruction.h",
Jamie Madille0d55442019-11-04 21:01:57 -0500386 "source/latest_version_glsl_std_450_header.h",
387 "source/latest_version_opencl_std_header.h",
388 "source/latest_version_spirv_header.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400389 "source/libspirv.cpp",
390 "source/macro.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400391 "source/name_mapper.cpp",
392 "source/name_mapper.h",
393 "source/opcode.cpp",
394 "source/opcode.h",
395 "source/operand.cpp",
396 "source/operand.h",
397 "source/parsed_operand.cpp",
398 "source/parsed_operand.h",
399 "source/print.cpp",
400 "source/print.h",
401 "source/spirv_constant.h",
402 "source/spirv_definition.h",
403 "source/spirv_endian.cpp",
404 "source/spirv_endian.h",
dan sinclair324be762018-09-11 09:34:42 -0400405 "source/spirv_optimizer_options.cpp",
406 "source/spirv_optimizer_options.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400407 "source/spirv_target_env.cpp",
408 "source/spirv_target_env.h",
409 "source/spirv_validator_options.cpp",
410 "source/spirv_validator_options.h",
411 "source/table.cpp",
412 "source/table.h",
413 "source/text.cpp",
414 "source/text.h",
415 "source/text_handler.cpp",
416 "source/text_handler.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400417 "source/util/bit_vector.cpp",
418 "source/util/bit_vector.h",
419 "source/util/bitutils.h",
420 "source/util/hex_float.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400421 "source/util/ilist.h",
422 "source/util/ilist_node.h",
dan sinclair15530252018-08-14 12:44:54 -0400423 "source/util/make_unique.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400424 "source/util/parse_number.cpp",
425 "source/util/parse_number.h",
426 "source/util/small_vector.h",
427 "source/util/string_utils.cpp",
428 "source/util/string_utils.h",
429 "source/util/timer.cpp",
430 "source/util/timer.h",
431 ]
432
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400433 public_deps = [
Takuto Ikuta0187c192019-02-14 00:24:06 +0900434 ":spvtools_core_enums_unified1",
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400435 ":spvtools_headers",
Shahbaz Youssefib97057e2020-01-23 13:40:13 -0500436 "${spirv_headers}:spv_headers",
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400437 ]
438
David Turnera6bfc262019-07-03 22:26:06 +0200439 if (build_with_chromium) {
440 configs -= [ "//build/config/compiler:chromium_code" ]
441 configs += [ "//build/config/compiler:no_chromium_code" ]
442 }
David Turner50815122019-07-10 22:37:10 +0200443 configs += [ ":spvtools_internal_config" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400444}
445
446static_library("spvtools_val") {
447 sources = [
448 "source/val/basic_block.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500449 "source/val/basic_block.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400450 "source/val/construct.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500451 "source/val/construct.h",
452 "source/val/decoration.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400453 "source/val/function.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500454 "source/val/function.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400455 "source/val/instruction.cpp",
456 "source/val/validate.cpp",
457 "source/val/validate.h",
458 "source/val/validate_adjacency.cpp",
Alan Baker7d4b0462018-08-08 14:21:27 -0400459 "source/val/validate_annotation.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400460 "source/val/validate_arithmetics.cpp",
461 "source/val/validate_atomics.cpp",
462 "source/val/validate_barriers.cpp",
463 "source/val/validate_bitwise.cpp",
464 "source/val/validate_builtins.cpp",
465 "source/val/validate_capability.cpp",
466 "source/val/validate_cfg.cpp",
467 "source/val/validate_composites.cpp",
Alan Bakerc5b38062018-08-17 11:20:55 -0400468 "source/val/validate_constants.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400469 "source/val/validate_conversion.cpp",
Alan Bakerca7278c2018-08-08 13:47:09 -0400470 "source/val/validate_debug.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400471 "source/val/validate_decorations.cpp",
472 "source/val/validate_derivatives.cpp",
Alan Bakere7fdcdb2018-08-10 09:53:17 -0400473 "source/val/validate_execution_limitations.cpp",
dan sinclair703305b2018-11-28 09:17:13 -0500474 "source/val/validate_extensions.cpp",
Alan Bakere7fdcdb2018-08-10 09:53:17 -0400475 "source/val/validate_function.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400476 "source/val/validate_id.cpp",
477 "source/val/validate_image.cpp",
478 "source/val/validate_instruction.cpp",
479 "source/val/validate_interfaces.cpp",
480 "source/val/validate_layout.cpp",
481 "source/val/validate_literals.cpp",
482 "source/val/validate_logicals.cpp",
Alan Bakerd49bedc2018-08-01 14:44:56 -0400483 "source/val/validate_memory.cpp",
Ryan Harrisoncf37ab72018-12-06 14:38:15 -0500484 "source/val/validate_memory_semantics.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500485 "source/val/validate_memory_semantics.h",
Jeff Bolz2c0111e2019-06-03 09:55:07 -0500486 "source/val/validate_misc.cpp",
Alan Baker714bf842018-08-08 14:49:59 -0400487 "source/val/validate_mode_setting.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400488 "source/val/validate_non_uniform.cpp",
489 "source/val/validate_primitives.cpp",
Ryan Harrison8ce3dba2018-11-29 13:48:42 -0500490 "source/val/validate_scopes.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500491 "source/val/validate_scopes.h",
alan-baker1a2de482019-07-11 13:05:14 -0400492 "source/val/validate_small_type_uses.cpp",
Alan Bakerf2a99002018-08-03 11:38:51 -0400493 "source/val/validate_type.cpp",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400494 "source/val/validation_state.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500495 "source/val/validation_state.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400496 ]
497
498 deps = [
499 ":spvtools",
Shahbaz Youssefi1b344102020-01-24 17:14:16 -0500500 ":spvtools_language_header_cldebuginfo100",
501 ":spvtools_language_header_debuginfo",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400502 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000503 public_deps = [ ":spvtools_headers" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400504
David Turnera6bfc262019-07-03 22:26:06 +0200505 if (build_with_chromium) {
506 configs -= [ "//build/config/compiler:chromium_code" ]
507 configs += [ "//build/config/compiler:no_chromium_code" ]
508 }
David Turner50815122019-07-10 22:37:10 +0200509 configs += [ ":spvtools_internal_config" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400510}
511
512static_library("spvtools_opt") {
513 sources = [
514 "source/opt/aggressive_dead_code_elim_pass.cpp",
515 "source/opt/aggressive_dead_code_elim_pass.h",
Steven Perron35d98be2019-08-29 12:48:17 -0400516 "source/opt/amd_ext_to_khr.cpp",
517 "source/opt/amd_ext_to_khr.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400518 "source/opt/basic_block.cpp",
519 "source/opt/basic_block.h",
520 "source/opt/block_merge_pass.cpp",
521 "source/opt/block_merge_pass.h",
David Netocf783462019-01-28 18:42:35 -0800522 "source/opt/block_merge_util.cpp",
523 "source/opt/block_merge_util.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400524 "source/opt/build_module.cpp",
525 "source/opt/build_module.h",
526 "source/opt/ccp_pass.cpp",
527 "source/opt/ccp_pass.h",
528 "source/opt/cfg.cpp",
529 "source/opt/cfg.h",
530 "source/opt/cfg_cleanup_pass.cpp",
531 "source/opt/cfg_cleanup_pass.h",
Steven Perrondd4157d2019-01-17 15:56:36 -0500532 "source/opt/code_sink.cpp",
533 "source/opt/code_sink.h",
dan sinclairde9496e2018-08-02 14:36:43 -0400534 "source/opt/combine_access_chains.cpp",
535 "source/opt/combine_access_chains.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400536 "source/opt/compact_ids_pass.cpp",
537 "source/opt/compact_ids_pass.h",
538 "source/opt/composite.cpp",
539 "source/opt/composite.h",
540 "source/opt/const_folding_rules.cpp",
541 "source/opt/const_folding_rules.h",
542 "source/opt/constants.cpp",
543 "source/opt/constants.h",
greg-lunargd11725b2019-09-03 11:22:13 -0600544 "source/opt/convert_to_half_pass.cpp",
545 "source/opt/convert_to_half_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400546 "source/opt/copy_prop_arrays.cpp",
547 "source/opt/copy_prop_arrays.h",
548 "source/opt/dead_branch_elim_pass.cpp",
549 "source/opt/dead_branch_elim_pass.h",
550 "source/opt/dead_insert_elim_pass.cpp",
551 "source/opt/dead_insert_elim_pass.h",
552 "source/opt/dead_variable_elimination.cpp",
553 "source/opt/dead_variable_elimination.h",
Jaebaek Seo42268742020-04-27 15:18:55 -0400554 "source/opt/debug_info_manager.cpp",
555 "source/opt/debug_info_manager.h",
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000556 "source/opt/decoration_manager.cpp",
557 "source/opt/decoration_manager.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400558 "source/opt/def_use_manager.cpp",
559 "source/opt/def_use_manager.h",
Steven Perron4b64beb2019-08-08 10:53:19 -0400560 "source/opt/desc_sroa.cpp",
561 "source/opt/desc_sroa.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400562 "source/opt/dominator_analysis.cpp",
563 "source/opt/dominator_analysis.h",
564 "source/opt/dominator_tree.cpp",
565 "source/opt/dominator_tree.h",
566 "source/opt/eliminate_dead_constant_pass.cpp",
567 "source/opt/eliminate_dead_constant_pass.h",
568 "source/opt/eliminate_dead_functions_pass.cpp",
569 "source/opt/eliminate_dead_functions_pass.h",
Alastair Donaldson34c5ac62019-02-08 16:20:29 +0000570 "source/opt/eliminate_dead_functions_util.cpp",
571 "source/opt/eliminate_dead_functions_util.h",
Steven Perron1b0047f2019-02-14 13:42:35 -0500572 "source/opt/eliminate_dead_members_pass.cpp",
573 "source/opt/eliminate_dead_members_pass.h",
Jaebaek Seof7da5272020-10-30 18:03:56 -0400574 "source/opt/empty_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400575 "source/opt/feature_manager.cpp",
576 "source/opt/feature_manager.h",
Steven Perron3a0bc9e2019-04-05 13:12:08 -0400577 "source/opt/fix_storage_class.cpp",
578 "source/opt/fix_storage_class.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400579 "source/opt/flatten_decoration_pass.cpp",
580 "source/opt/flatten_decoration_pass.h",
581 "source/opt/fold.cpp",
582 "source/opt/fold.h",
583 "source/opt/fold_spec_constant_op_and_composite_pass.cpp",
584 "source/opt/fold_spec_constant_op_and_composite_pass.h",
585 "source/opt/folding_rules.cpp",
586 "source/opt/folding_rules.h",
587 "source/opt/freeze_spec_constant_value_pass.cpp",
588 "source/opt/freeze_spec_constant_value_pass.h",
589 "source/opt/function.cpp",
590 "source/opt/function.h",
David Neto31590102019-07-30 19:52:46 -0400591 "source/opt/graphics_robust_access_pass.cpp",
592 "source/opt/graphics_robust_access_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400593 "source/opt/if_conversion.cpp",
594 "source/opt/if_conversion.h",
595 "source/opt/inline_exhaustive_pass.cpp",
596 "source/opt/inline_exhaustive_pass.h",
597 "source/opt/inline_opaque_pass.cpp",
598 "source/opt/inline_opaque_pass.h",
599 "source/opt/inline_pass.cpp",
600 "source/opt/inline_pass.h",
greg-lunarg1e9fc1a2018-11-08 11:54:54 -0700601 "source/opt/inst_bindless_check_pass.cpp",
602 "source/opt/inst_bindless_check_pass.h",
greg-lunarg06407252019-08-16 07:18:34 -0600603 "source/opt/inst_buff_addr_check_pass.cpp",
604 "source/opt/inst_buff_addr_check_pass.h",
greg-lunarg1fe9bcc2020-03-12 07:19:52 -0600605 "source/opt/inst_debug_printf_pass.cpp",
606 "source/opt/inst_debug_printf_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400607 "source/opt/instruction.cpp",
608 "source/opt/instruction.h",
609 "source/opt/instruction_list.cpp",
610 "source/opt/instruction_list.h",
greg-lunarg1e9fc1a2018-11-08 11:54:54 -0700611 "source/opt/instrument_pass.cpp",
612 "source/opt/instrument_pass.h",
Greg Fischer48007a52021-03-31 12:26:36 -0600613 "source/opt/interp_fixup_pass.cpp",
614 "source/opt/interp_fixup_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400615 "source/opt/ir_builder.h",
616 "source/opt/ir_context.cpp",
617 "source/opt/ir_context.h",
618 "source/opt/ir_loader.cpp",
619 "source/opt/ir_loader.h",
620 "source/opt/iterator.h",
621 "source/opt/licm_pass.cpp",
622 "source/opt/licm_pass.h",
623 "source/opt/local_access_chain_convert_pass.cpp",
624 "source/opt/local_access_chain_convert_pass.h",
625 "source/opt/local_redundancy_elimination.cpp",
626 "source/opt/local_redundancy_elimination.h",
627 "source/opt/local_single_block_elim_pass.cpp",
628 "source/opt/local_single_block_elim_pass.h",
629 "source/opt/local_single_store_elim_pass.cpp",
630 "source/opt/local_single_store_elim_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400631 "source/opt/log.h",
632 "source/opt/loop_dependence.cpp",
633 "source/opt/loop_dependence.h",
634 "source/opt/loop_dependence_helpers.cpp",
635 "source/opt/loop_descriptor.cpp",
636 "source/opt/loop_descriptor.h",
637 "source/opt/loop_fission.cpp",
638 "source/opt/loop_fission.h",
639 "source/opt/loop_fusion.cpp",
640 "source/opt/loop_fusion.h",
641 "source/opt/loop_fusion_pass.cpp",
642 "source/opt/loop_fusion_pass.h",
643 "source/opt/loop_peeling.cpp",
644 "source/opt/loop_peeling.h",
645 "source/opt/loop_unroller.cpp",
646 "source/opt/loop_unroller.h",
647 "source/opt/loop_unswitch_pass.cpp",
648 "source/opt/loop_unswitch_pass.h",
649 "source/opt/loop_utils.cpp",
650 "source/opt/loop_utils.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400651 "source/opt/mem_pass.cpp",
652 "source/opt/mem_pass.h",
653 "source/opt/merge_return_pass.cpp",
654 "source/opt/merge_return_pass.h",
655 "source/opt/module.cpp",
656 "source/opt/module.h",
657 "source/opt/null_pass.h",
658 "source/opt/optimizer.cpp",
659 "source/opt/pass.cpp",
660 "source/opt/pass.h",
661 "source/opt/pass_manager.cpp",
662 "source/opt/pass_manager.h",
663 "source/opt/passes.h",
664 "source/opt/private_to_local_pass.cpp",
665 "source/opt/private_to_local_pass.h",
666 "source/opt/propagator.cpp",
667 "source/opt/propagator.h",
668 "source/opt/reduce_load_size.cpp",
669 "source/opt/reduce_load_size.h",
670 "source/opt/redundancy_elimination.cpp",
671 "source/opt/redundancy_elimination.h",
672 "source/opt/reflect.h",
673 "source/opt/register_pressure.cpp",
674 "source/opt/register_pressure.h",
greg-lunargd11725b2019-09-03 11:22:13 -0600675 "source/opt/relax_float_ops_pass.cpp",
676 "source/opt/relax_float_ops_pass.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400677 "source/opt/remove_duplicates_pass.cpp",
678 "source/opt/remove_duplicates_pass.h",
679 "source/opt/replace_invalid_opc.cpp",
680 "source/opt/replace_invalid_opc.h",
681 "source/opt/scalar_analysis.cpp",
682 "source/opt/scalar_analysis.h",
683 "source/opt/scalar_analysis_nodes.h",
684 "source/opt/scalar_analysis_simplification.cpp",
685 "source/opt/scalar_replacement_pass.cpp",
686 "source/opt/scalar_replacement_pass.h",
687 "source/opt/set_spec_constant_default_value_pass.cpp",
688 "source/opt/set_spec_constant_default_value_pass.h",
689 "source/opt/simplification_pass.cpp",
690 "source/opt/simplification_pass.h",
691 "source/opt/ssa_rewrite_pass.cpp",
692 "source/opt/ssa_rewrite_pass.h",
693 "source/opt/strength_reduction_pass.cpp",
694 "source/opt/strength_reduction_pass.h",
695 "source/opt/strip_debug_info_pass.cpp",
696 "source/opt/strip_debug_info_pass.h",
697 "source/opt/strip_reflect_info_pass.cpp",
698 "source/opt/strip_reflect_info_pass.h",
Steven Perron5f599e72018-09-17 13:00:24 -0400699 "source/opt/struct_cfg_analysis.cpp",
700 "source/opt/struct_cfg_analysis.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400701 "source/opt/tree_iterator.h",
702 "source/opt/type_manager.cpp",
703 "source/opt/type_manager.h",
704 "source/opt/types.cpp",
705 "source/opt/types.h",
706 "source/opt/unify_const_pass.cpp",
707 "source/opt/unify_const_pass.h",
dan sinclair67b2e152018-12-03 09:11:56 -0500708 "source/opt/upgrade_memory_model.cpp",
709 "source/opt/upgrade_memory_model.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400710 "source/opt/value_number_table.cpp",
711 "source/opt/value_number_table.h",
712 "source/opt/vector_dce.cpp",
713 "source/opt/vector_dce.h",
714 "source/opt/workaround1209.cpp",
715 "source/opt/workaround1209.h",
Steven Perron60043ed2019-08-14 09:27:12 -0400716 "source/opt/wrap_opkill.cpp",
717 "source/opt/wrap_opkill.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400718 ]
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400719
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400720 deps = [
721 ":spvtools",
Shahbaz Youssefi1b344102020-01-24 17:14:16 -0500722 ":spvtools_language_header_cldebuginfo100",
723 ":spvtools_language_header_debuginfo",
Corentin Wallez4ae9b712019-08-30 15:09:34 +0200724 ":spvtools_vendor_tables_spv-amd-shader-ballot",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400725 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000726 public_deps = [ ":spvtools_headers" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400727
David Turnera6bfc262019-07-03 22:26:06 +0200728 if (build_with_chromium) {
729 configs -= [ "//build/config/compiler:chromium_code" ]
730 configs += [ "//build/config/compiler:no_chromium_code" ]
731 }
David Turner50815122019-07-10 22:37:10 +0200732 configs += [ ":spvtools_internal_config" ]
733}
734
735static_library("spvtools_link") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000736 sources = [ "source/link/linker.cpp" ]
David Turner50815122019-07-10 22:37:10 +0200737 deps = [
738 ":spvtools",
Corentin Wallez59de04a2019-07-12 16:35:59 +0200739 ":spvtools_opt",
David Turner50815122019-07-10 22:37:10 +0200740 ":spvtools_val",
741 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000742 public_deps = [ ":spvtools_headers" ]
David Turner50815122019-07-10 22:37:10 +0200743 if (build_with_chromium) {
744 configs -= [ "//build/config/compiler:chromium_code" ]
745 configs += [ "//build/config/compiler:no_chromium_code" ]
746 }
747 configs += [ ":spvtools_internal_config" ]
748}
749
750static_library("spvtools_reduce") {
751 sources = [
752 "source/reduce/change_operand_reduction_opportunity.cpp",
753 "source/reduce/change_operand_reduction_opportunity.h",
754 "source/reduce/change_operand_to_undef_reduction_opportunity.cpp",
755 "source/reduce/change_operand_to_undef_reduction_opportunity.h",
756 "source/reduce/conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp",
757 "source/reduce/conditional_branch_to_simple_conditional_branch_opportunity_finder.h",
758 "source/reduce/conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp",
759 "source/reduce/conditional_branch_to_simple_conditional_branch_reduction_opportunity.h",
760 "source/reduce/merge_blocks_reduction_opportunity.cpp",
761 "source/reduce/merge_blocks_reduction_opportunity.h",
762 "source/reduce/merge_blocks_reduction_opportunity_finder.cpp",
763 "source/reduce/merge_blocks_reduction_opportunity_finder.h",
764 "source/reduce/operand_to_const_reduction_opportunity_finder.cpp",
765 "source/reduce/operand_to_const_reduction_opportunity_finder.h",
766 "source/reduce/operand_to_dominating_id_reduction_opportunity_finder.cpp",
767 "source/reduce/operand_to_dominating_id_reduction_opportunity_finder.h",
768 "source/reduce/operand_to_undef_reduction_opportunity_finder.cpp",
769 "source/reduce/operand_to_undef_reduction_opportunity_finder.h",
770 "source/reduce/reducer.cpp",
771 "source/reduce/reducer.h",
772 "source/reduce/reduction_opportunity.cpp",
773 "source/reduce/reduction_opportunity.h",
Alastair Donaldson726af6f2020-09-11 22:20:58 +0100774 "source/reduce/reduction_opportunity_finder.cpp",
Jamie Madille0d55442019-11-04 21:01:57 -0500775 "source/reduce/reduction_opportunity_finder.h",
David Turner50815122019-07-10 22:37:10 +0200776 "source/reduce/reduction_pass.cpp",
777 "source/reduce/reduction_pass.h",
778 "source/reduce/reduction_util.cpp",
779 "source/reduce/reduction_util.h",
780 "source/reduce/remove_block_reduction_opportunity.cpp",
781 "source/reduce/remove_block_reduction_opportunity.h",
782 "source/reduce/remove_block_reduction_opportunity_finder.cpp",
783 "source/reduce/remove_block_reduction_opportunity_finder.h",
784 "source/reduce/remove_function_reduction_opportunity.cpp",
785 "source/reduce/remove_function_reduction_opportunity.h",
786 "source/reduce/remove_function_reduction_opportunity_finder.cpp",
787 "source/reduce/remove_function_reduction_opportunity_finder.h",
788 "source/reduce/remove_instruction_reduction_opportunity.cpp",
789 "source/reduce/remove_instruction_reduction_opportunity.h",
David Turner50815122019-07-10 22:37:10 +0200790 "source/reduce/remove_selection_reduction_opportunity.cpp",
791 "source/reduce/remove_selection_reduction_opportunity.h",
792 "source/reduce/remove_selection_reduction_opportunity_finder.cpp",
793 "source/reduce/remove_selection_reduction_opportunity_finder.h",
Ryan Harrison95df4c92020-05-19 15:17:58 -0400794 "source/reduce/remove_struct_member_reduction_opportunity.cpp",
795 "source/reduce/remove_struct_member_reduction_opportunity.h",
796 "source/reduce/remove_unused_instruction_reduction_opportunity_finder.cpp",
797 "source/reduce/remove_unused_instruction_reduction_opportunity_finder.h",
798 "source/reduce/remove_unused_struct_member_reduction_opportunity_finder.cpp",
799 "source/reduce/remove_unused_struct_member_reduction_opportunity_finder.h",
David Turner50815122019-07-10 22:37:10 +0200800 "source/reduce/simple_conditional_branch_to_branch_opportunity_finder.cpp",
801 "source/reduce/simple_conditional_branch_to_branch_opportunity_finder.h",
802 "source/reduce/simple_conditional_branch_to_branch_reduction_opportunity.cpp",
803 "source/reduce/simple_conditional_branch_to_branch_reduction_opportunity.h",
804 "source/reduce/structured_loop_to_selection_reduction_opportunity.cpp",
805 "source/reduce/structured_loop_to_selection_reduction_opportunity.h",
806 "source/reduce/structured_loop_to_selection_reduction_opportunity_finder.cpp",
807 "source/reduce/structured_loop_to_selection_reduction_opportunity_finder.h",
Corentin Wallez59de04a2019-07-12 16:35:59 +0200808 "source/spirv_reducer_options.cpp",
809 "source/spirv_reducer_options.h",
David Turner50815122019-07-10 22:37:10 +0200810 ]
811 deps = [
812 ":spvtools",
813 ":spvtools_opt",
814 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000815 public_deps = [ ":spvtools_headers" ]
David Turner50815122019-07-10 22:37:10 +0200816 if (build_with_chromium) {
817 configs -= [ "//build/config/compiler:chromium_code" ]
818 configs += [ "//build/config/compiler:no_chromium_code" ]
819 }
820 configs += [ ":spvtools_internal_config" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400821}
822
dan sinclaira97c1d92018-08-01 14:28:10 -0400823group("SPIRV-Tools") {
Jamie Madill1c9ca422019-09-03 12:57:32 -0400824 public_deps = [
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400825 ":spvtools",
David Turner50815122019-07-10 22:37:10 +0200826 ":spvtools_link",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400827 ":spvtools_opt",
David Turner50815122019-07-10 22:37:10 +0200828 ":spvtools_reduce",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400829 ":spvtools_val",
830 ]
831}
832
Jamie Madill4b42cd12019-02-19 10:38:38 -0500833# The tests are scoped to Chromium to avoid needing to write gtest integration.
834# See Chromium's third_party/googletest/BUILD.gn for a complete integration.
835if (build_with_chromium) {
836 test("spvtools_test") {
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400837 sources = [
Jamie Madill4b42cd12019-02-19 10:38:38 -0500838 "test/assembly_context_test.cpp",
839 "test/assembly_format_test.cpp",
840 "test/binary_destroy_test.cpp",
841 "test/binary_endianness_test.cpp",
842 "test/binary_header_get_test.cpp",
843 "test/binary_parse_test.cpp",
844 "test/binary_strnlen_s_test.cpp",
845 "test/binary_to_text.literal_test.cpp",
846 "test/binary_to_text_test.cpp",
847 "test/comment_test.cpp",
848 "test/enum_set_test.cpp",
849 "test/enum_string_mapping_test.cpp",
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000850 "test/ext_inst.cldebug100_test.cpp",
Jamie Madill4b42cd12019-02-19 10:38:38 -0500851 "test/ext_inst.debuginfo_test.cpp",
852 "test/ext_inst.glsl_test.cpp",
853 "test/ext_inst.opencl_test.cpp",
854 "test/fix_word_test.cpp",
855 "test/generator_magic_number_test.cpp",
856 "test/hex_float_test.cpp",
857 "test/immediate_int_test.cpp",
858 "test/libspirv_macros_test.cpp",
859 "test/name_mapper_test.cpp",
860 "test/named_id_test.cpp",
861 "test/opcode_make_test.cpp",
862 "test/opcode_require_capabilities_test.cpp",
863 "test/opcode_split_test.cpp",
864 "test/opcode_table_get_test.cpp",
865 "test/operand_capabilities_test.cpp",
866 "test/operand_pattern_test.cpp",
867 "test/operand_test.cpp",
868 "test/target_env_test.cpp",
869 "test/test_fixture.h",
870 "test/text_advance_test.cpp",
871 "test/text_destroy_test.cpp",
872 "test/text_literal_test.cpp",
873 "test/text_start_new_inst_test.cpp",
874 "test/text_to_binary.annotation_test.cpp",
875 "test/text_to_binary.barrier_test.cpp",
876 "test/text_to_binary.constant_test.cpp",
877 "test/text_to_binary.control_flow_test.cpp",
878 "test/text_to_binary.debug_test.cpp",
879 "test/text_to_binary.device_side_enqueue_test.cpp",
880 "test/text_to_binary.extension_test.cpp",
881 "test/text_to_binary.function_test.cpp",
882 "test/text_to_binary.group_test.cpp",
883 "test/text_to_binary.image_test.cpp",
884 "test/text_to_binary.literal_test.cpp",
885 "test/text_to_binary.memory_test.cpp",
886 "test/text_to_binary.misc_test.cpp",
887 "test/text_to_binary.mode_setting_test.cpp",
888 "test/text_to_binary.pipe_storage_test.cpp",
889 "test/text_to_binary.reserved_sampling_test.cpp",
890 "test/text_to_binary.subgroup_dispatch_test.cpp",
891 "test/text_to_binary.type_declaration_test.cpp",
892 "test/text_to_binary_test.cpp",
893 "test/text_word_get_test.cpp",
894 "test/unit_spirv.cpp",
895 "test/unit_spirv.h",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400896 ]
897
Jamie Madill4b42cd12019-02-19 10:38:38 -0500898 deps = [
Jamie Madill4b42cd12019-02-19 10:38:38 -0500899 ":spvtools",
David Neto64f36ea2019-12-19 17:16:26 -0500900 ":spvtools_language_header_cldebuginfo100",
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000901 ":spvtools_language_header_debuginfo",
Jamie Madill4b42cd12019-02-19 10:38:38 -0500902 ":spvtools_val",
David Turner50815122019-07-10 22:37:10 +0200903 "//testing/gmock",
904 "//testing/gtest",
905 "//testing/gtest:gtest_main",
Jamie Madill635b5832019-09-04 12:43:26 -0400906 "//third_party/googletest:gmock",
907 "//third_party/googletest:gtest",
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400908 ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400909
Jamie Madill4b42cd12019-02-19 10:38:38 -0500910 if (is_clang) {
911 cflags_cc = [ "-Wno-self-assign" ]
912 }
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400913
Jamie Madill4b42cd12019-02-19 10:38:38 -0500914 configs += [ ":spvtools_internal_config" ]
915 }
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400916}
917
Corentin Wallez2d9a3252018-08-02 18:48:03 +0200918if (spirv_tools_standalone) {
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400919 group("fuzzers") {
920 testonly = true
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000921 deps = [ "test/fuzzers" ]
Dan Sinclaira114e1f2018-07-17 13:53:15 -0400922 }
923}
dan sinclair1bdade72018-08-15 15:26:28 -0400924
David Turner50815122019-07-10 22:37:10 +0200925source_set("spvtools_util_cli_consumer") {
926 sources = [
927 "tools/util/cli_consumer.cpp",
928 "tools/util/cli_consumer.h",
929 ]
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000930 deps = [ ":spvtools_headers" ]
David Turner50815122019-07-10 22:37:10 +0200931 configs += [ ":spvtools_internal_config" ]
932}
933
934source_set("spvtools_software_version") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000935 sources = [ "source/software_version.cpp" ]
David Turner50815122019-07-10 22:37:10 +0200936 deps = [
937 ":spvtools_build_version",
Corentin Wallez59de04a2019-07-12 16:35:59 +0200938 ":spvtools_headers",
David Turner50815122019-07-10 22:37:10 +0200939 ]
940 configs += [ ":spvtools_internal_config" ]
941}
942
943executable("spirv-as") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000944 sources = [ "tools/as/as.cpp" ]
dan sinclair1bdade72018-08-15 15:26:28 -0400945 deps = [
946 ":spvtools",
David Turner50815122019-07-10 22:37:10 +0200947 ":spvtools_software_version",
948 ]
949 configs += [ ":spvtools_internal_config" ]
950}
951
952executable("spirv-dis") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000953 sources = [ "tools/dis/dis.cpp" ]
David Turner50815122019-07-10 22:37:10 +0200954 deps = [
955 ":spvtools",
956 ":spvtools_software_version",
957 ]
958 configs += [ ":spvtools_internal_config" ]
959}
960
961executable("spirv-val") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000962 sources = [ "tools/val/val.cpp" ]
David Turner50815122019-07-10 22:37:10 +0200963 deps = [
964 ":spvtools",
965 ":spvtools_software_version",
966 ":spvtools_util_cli_consumer",
967 ":spvtools_val",
968 ]
969 configs += [ ":spvtools_internal_config" ]
970}
971
972executable("spirv-cfg") {
973 sources = [
974 "tools/cfg/bin_to_dot.cpp",
975 "tools/cfg/bin_to_dot.h",
976 "tools/cfg/cfg.cpp",
977 ]
978 deps = [
979 ":spvtools",
980 ":spvtools_software_version",
dan sinclair1bdade72018-08-15 15:26:28 -0400981 ]
Corentin Wallez21bcb9d2018-09-06 10:50:27 -0400982 configs += [ ":spvtools_internal_config" ]
dan sinclair1bdade72018-08-15 15:26:28 -0400983}
David Turnera6bfc262019-07-03 22:26:06 +0200984
985executable("spirv-opt") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000986 sources = [ "tools/opt/opt.cpp" ]
David Turnera6bfc262019-07-03 22:26:06 +0200987 deps = [
988 ":spvtools",
989 ":spvtools_opt",
David Turner50815122019-07-10 22:37:10 +0200990 ":spvtools_software_version",
991 ":spvtools_util_cli_consumer",
David Turnera6bfc262019-07-03 22:26:06 +0200992 ":spvtools_val",
David Turnera6bfc262019-07-03 22:26:06 +0200993 ]
994 configs += [ ":spvtools_internal_config" ]
995}
David Turner50815122019-07-10 22:37:10 +0200996
997executable("spirv-link") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +0000998 sources = [ "tools/link/linker.cpp" ]
David Turner50815122019-07-10 22:37:10 +0200999 deps = [
1000 ":spvtools",
1001 ":spvtools_link",
1002 ":spvtools_opt",
1003 ":spvtools_software_version",
1004 ":spvtools_val",
1005 ]
1006 configs += [ ":spvtools_internal_config" ]
1007}
1008
Shahbaz Youssefiae6a1e12021-04-12 13:17:44 -04001009if (!is_ios && !spirv_is_winuwp) {
1010 # iOS and UWP do not allow std::system calls which spirv-reduce requires
David Turner50815122019-07-10 22:37:10 +02001011 executable("spirv-reduce") {
Corentin Wallez77eb2b62021-03-10 20:19:24 +00001012 sources = [ "tools/reduce/reduce.cpp" ]
David Turner50815122019-07-10 22:37:10 +02001013 deps = [
1014 ":spvtools",
Corentin Wallez59de04a2019-07-12 16:35:59 +02001015 ":spvtools_opt",
David Turner50815122019-07-10 22:37:10 +02001016 ":spvtools_reduce",
1017 ":spvtools_software_version",
1018 ":spvtools_util_cli_consumer",
1019 ":spvtools_val",
1020 ]
1021 configs += [ ":spvtools_internal_config" ]
1022 }
1023}
1024
1025group("all_spirv_tools") {
1026 deps = [
1027 ":spirv-as",
1028 ":spirv-cfg",
1029 ":spirv-dis",
1030 ":spirv-link",
1031 ":spirv-opt",
1032 ":spirv-val",
1033 ]
Shahbaz Youssefiae6a1e12021-04-12 13:17:44 -04001034 if (!is_ios && !spirv_is_winuwp) {
David Turner50815122019-07-10 22:37:10 +02001035 deps += [ ":spirv-reduce" ]
1036 }
1037}