• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2020 Google LLC
2#
3# Permission is hereby granted, free of charge, to any person obtaining a copy
4# of this software and/or associated documentation files (the "Materials"),
5# to deal in the Materials without restriction, including without limitation
6# the rights to use, copy, modify, merge, publish, distribute, sublicense,
7# and/or sell copies of the Materials, and to permit persons to whom the
8# Materials are furnished to do so, subject to the following conditions:
9#
10# The above copyright notice and this permission notice shall be included in
11# all copies or substantial portions of the Materials.
12#
13# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
16#
17# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23# IN THE MATERIALS.
24
25import("//build/ohos.gni")
26import("//third_party/vk-gl-cts/vk_gl_cts.gni")
27if (build_with_chromium) {
28  import("//testing/test.gni")
29}
30
31# SPIRV-Tools may be part of multiple projects in the Chromium tree.
32# Only enable building executables if this is the main copy.
33abspath = get_path_info(".", "abspath")
34spvtools_chromium_third_party =
35    abspath == "//third_party/vulkan-deps/spirv-tools/src/"
36spvtools_build_executables =
37    build_with_chromium && spvtools_chromium_third_party
38
39# Fuchsia also requires building the executables.
40# TODO(b/158002593): Avoid the use of dependent-specific variables.
41if (defined(is_fuchsia_tree) && is_fuchsia_tree) {
42  spvtools_build_executables = true
43}
44
45spirv_is_winuwp = is_win && target_os == "winuwp"
46
47config("spv_headers_public_config") {
48  include_dirs = [ "include" ]
49}
50
51ohos_source_set("spv_headers") {
52  sources = [
53    "include/spirv/1.2/GLSL.std.450.h",
54    "include/spirv/1.2/OpenCL.std.h",
55    "include/spirv/1.2/spirv.h",
56    "include/spirv/1.2/spirv.hpp",
57    "include/spirv/unified1/GLSL.std.450.h",
58    "include/spirv/unified1/NonSemanticClspvReflection.h",
59    "include/spirv/unified1/NonSemanticDebugPrintf.h",
60    "include/spirv/unified1/OpenCL.std.h",
61    "include/spirv/unified1/spirv.h",
62    "include/spirv/unified1/spirv.hpp",
63  ]
64
65  public_configs = [ ":spv_headers_public_config" ]
66}
67
68config("deqp_spirvtool_config") {
69  cflags_cc = deqp_common_cflags_cc
70  cflags_cc += [
71    "-ftemplate-depth=1024",
72    "-Wno-switch",
73  ]
74  defines = deqp_common_defines
75  defines += [
76    "SPIRV_CHECK_CONTEXT",
77    "SPIRV_COLOR_TERMINAL",
78    "SPIRV_LINUX",
79    "SPIRV_TIMER_ENABLED",
80    "SPIRV_TOOLS_SHAREDLIB",
81    "SPIRV_Tools_shared_EXPORTS",
82  ]
83}
84
85template("spvtools_core_tables") {
86  assert(defined(invoker.version), "Need version in $target_name generation.")
87
88  action("spvtools_core_tables_" + target_name) {
89    script = "utils/generate_grammar_tables.py"
90
91    version = invoker.version
92
93    core_json_file = "//third_party/spirv-headers/include/spirv/$version/spirv.core.grammar.json"
94    core_insts_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/core.insts-$version.inc"
95    operand_kinds_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/operand.kinds-$version.inc"
96    debuginfo_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.debuginfo.grammar.json"
97    cldebuginfo100_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
98
99    sources = [
100      cldebuginfo100_insts_file,
101      core_json_file,
102      debuginfo_insts_file,
103    ]
104    outputs = [
105      core_insts_file,
106      operand_kinds_file,
107    ]
108    args = [
109      "--spirv-core-grammar",
110      rebase_path(core_json_file, root_build_dir),
111      "--core-insts-output",
112      rebase_path(core_insts_file, root_build_dir),
113      "--extinst-debuginfo-grammar",
114      rebase_path(debuginfo_insts_file, root_build_dir),
115      "--extinst-cldebuginfo100-grammar",
116      rebase_path(cldebuginfo100_insts_file, root_build_dir),
117      "--operand-kinds-output",
118      rebase_path(operand_kinds_file, root_build_dir),
119      "--output-language",
120      "c++",
121    ]
122  }
123}
124
125template("spvtools_core_enums") {
126  assert(defined(invoker.version), "Need version in $target_name generation.")
127
128  action("spvtools_core_enums_" + target_name) {
129    script = "utils/generate_grammar_tables.py"
130
131    version = invoker.version
132
133    core_json_file = "//third_party/spirv-headers/include/spirv/$version/spirv.core.grammar.json"
134    debuginfo_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.debuginfo.grammar.json"
135    cldebuginfo100_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
136
137    extension_enum_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/extension_enum.inc"
138    extension_map_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/enum_string_mapping.inc"
139
140    args = [
141      "--spirv-core-grammar",
142      rebase_path(core_json_file, root_build_dir),
143      "--extinst-debuginfo-grammar",
144      rebase_path(debuginfo_insts_file, root_build_dir),
145      "--extinst-cldebuginfo100-grammar",
146      rebase_path(cldebuginfo100_insts_file, root_build_dir),
147      "--extension-enum-output",
148      rebase_path(extension_enum_file, root_build_dir),
149      "--enum-string-mapping-output",
150      rebase_path(extension_map_file, root_build_dir),
151      "--output-language",
152      "c++",
153    ]
154    inputs = [
155      core_json_file,
156      debuginfo_insts_file,
157      cldebuginfo100_insts_file,
158    ]
159    outputs = [
160      extension_enum_file,
161      extension_map_file,
162    ]
163  }
164}
165
166template("spvtools_glsl_tables") {
167  assert(defined(invoker.version), "Need version in $target_name generation.")
168
169  action("spvtools_glsl_tables_" + target_name) {
170    script = "utils/generate_grammar_tables.py"
171
172    version = invoker.version
173
174    core_json_file = "//third_party/spirv-headers/include/spirv/$version/spirv.core.grammar.json"
175    glsl_json_file = "//third_party/spirv-headers/include/spirv/${version}/extinst.glsl.std.450.grammar.json"
176    debuginfo_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.debuginfo.grammar.json"
177    cldebuginfo100_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
178
179    glsl_insts_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/glsl.std.450.insts.inc"
180
181    args = [
182      "--spirv-core-grammar",
183      rebase_path(core_json_file, root_build_dir),
184      "--extinst-debuginfo-grammar",
185      rebase_path(debuginfo_insts_file, root_build_dir),
186      "--extinst-cldebuginfo100-grammar",
187      rebase_path(cldebuginfo100_insts_file, root_build_dir),
188      "--extinst-glsl-grammar",
189      rebase_path(glsl_json_file, root_build_dir),
190      "--glsl-insts-output",
191      rebase_path(glsl_insts_file, root_build_dir),
192      "--output-language",
193      "c++",
194    ]
195    inputs = [
196      core_json_file,
197      glsl_json_file,
198      debuginfo_insts_file,
199      cldebuginfo100_insts_file,
200    ]
201    outputs = [ glsl_insts_file ]
202  }
203}
204
205template("spvtools_opencl_tables") {
206  assert(defined(invoker.version), "Need version in $target_name generation.")
207
208  action("spvtools_opencl_tables_" + target_name) {
209    script = "utils/generate_grammar_tables.py"
210
211    version = invoker.version
212
213    core_json_file = "//third_party/spirv-headers/include/spirv/$version/spirv.core.grammar.json"
214    opencl_json_file = "//third_party/spirv-headers/include/spirv/${version}/extinst.opencl.std.100.grammar.json"
215    debuginfo_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.debuginfo.grammar.json"
216    cldebuginfo100_insts_file = "//third_party/spirv-headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
217
218    opencl_insts_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/opencl.std.insts.inc"
219
220    args = [
221      "--spirv-core-grammar",
222      rebase_path(core_json_file, root_build_dir),
223      "--extinst-debuginfo-grammar",
224      rebase_path(debuginfo_insts_file, root_build_dir),
225      "--extinst-cldebuginfo100-grammar",
226      rebase_path(cldebuginfo100_insts_file, root_build_dir),
227      "--extinst-opencl-grammar",
228      rebase_path(opencl_json_file, root_build_dir),
229      "--opencl-insts-output",
230      rebase_path(opencl_insts_file, root_build_dir),
231    ]
232    inputs = [
233      core_json_file,
234      opencl_json_file,
235      debuginfo_insts_file,
236      cldebuginfo100_insts_file,
237    ]
238    outputs = [ opencl_insts_file ]
239  }
240}
241
242template("spvtools_language_header") {
243  assert(defined(invoker.name), "Need name in $target_name generation.")
244
245  action("spvtools_language_header_" + target_name) {
246    script = "utils/generate_language_headers.py"
247
248    name = invoker.name
249    extinst_output_path = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/${name}.h"
250
251    args = [
252      "--extinst-grammar",
253      rebase_path(invoker.grammar_file, root_build_dir),
254      "--extinst-output-path",
255      rebase_path(extinst_output_path, root_build_dir),
256    ]
257    inputs = [ invoker.grammar_file ]
258    outputs = [ "${extinst_output_path}" ]
259  }
260}
261
262template("spvtools_vendor_table") {
263  assert(defined(invoker.name), "Need name in $target_name generation.")
264
265  action("spvtools_vendor_tables_" + target_name) {
266    script = "utils/generate_grammar_tables.py"
267
268    name = invoker.name
269    extinst_vendor_grammar = "//third_party/spirv-headers/include/spirv/unified1/extinst.${name}.grammar.json"
270    extinst_file = "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools/${name}.insts.inc"
271
272    args = [
273      "--extinst-vendor-grammar",
274      rebase_path(extinst_vendor_grammar, root_build_dir),
275      "--vendor-insts-output",
276      rebase_path(extinst_file, root_build_dir),
277      "--vendor-operand-kind-prefix",
278      invoker.operand_kind_prefix,
279    ]
280    inputs = [ extinst_vendor_grammar ]
281    outputs = [ extinst_file ]
282  }
283}
284
285config("spvtools_include_gen_dirs") {
286  include_dirs =
287      [ "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools" ]
288}
289
290config("spvtools_internal_config") {
291  include_dirs = [
292    ".",
293    "//third_party/spirv-headers/include",
294  ]
295
296  configs = [
297    ":spv_headers_public_config",
298    ":spvtools_include_gen_dirs",
299  ]
300
301  cflags = []
302  if (is_clang) {
303    cflags += [
304      "-Wno-implicit-fallthrough",
305      "-Wno-newline-eof",
306      "-Wno-unreachable-code-break",
307      "-Wno-unreachable-code-return",
308    ]
309  } else if (!is_win) {
310    # Work around a false-positive on a Skia GCC 10 builder.
311    cflags += [ "-Wno-format-truncation" ]
312  } else {
313    # Make MSVC report the correct value for __cplusplus
314    cflags += [ "/Zc:__cplusplus" ]
315  }
316
317  if (!is_win) {
318    cflags += [ "-std=c++17" ]
319  } else {
320    cflags += [ "/std:c++17" ]
321  }
322}
323
324ohos_source_set("spvtools_headers") {
325  sources = [
326    "include/spirv-tools/instrument.hpp",
327    "include/spirv-tools/libspirv.h",
328    "include/spirv-tools/libspirv.hpp",
329    "include/spirv-tools/linker.hpp",
330    "include/spirv-tools/optimizer.hpp",
331  ]
332
333  public_configs = [ ":spv_headers_public_config" ]
334}
335
336ohos_source_set("deqp_spirvtool_source") {
337  sources = [
338    "include/spirv-tools/instrument.hpp",
339    "include/spirv-tools/libspirv.h",
340    "include/spirv-tools/libspirv.hpp",
341    "include/spirv-tools/linker.hpp",
342    "include/spirv-tools/optimizer.hpp",
343    "include/spirv/1.2/GLSL.std.450.h",
344    "include/spirv/1.2/OpenCL.std.h",
345    "include/spirv/1.2/spirv.h",
346    "include/spirv/1.2/spirv.hpp",
347    "include/spirv/unified1/GLSL.std.450.h",
348    "include/spirv/unified1/NonSemanticClspvReflection.h",
349    "include/spirv/unified1/NonSemanticDebugPrintf.h",
350    "include/spirv/unified1/OpenCL.std.h",
351    "include/spirv/unified1/spirv.h",
352    "include/spirv/unified1/spirv.hpp",
353    "source/assembly_grammar.cpp",
354    "source/assembly_grammar.h",
355    "source/binary.cpp",
356    "source/binary.h",
357    "source/cfa.h",
358    "source/common_debug_info.h",
359    "source/diagnostic.cpp",
360    "source/diagnostic.h",
361    "source/disassemble.cpp",
362    "source/disassemble.h",
363    "source/enum_set.h",
364    "source/enum_string_mapping.cpp",
365    "source/enum_string_mapping.h",
366    "source/ext_inst.cpp",
367    "source/ext_inst.h",
368    "source/extensions.cpp",
369    "source/extensions.h",
370    "source/instruction.h",
371    "source/latest_version_glsl_std_450_header.h",
372    "source/latest_version_opencl_std_header.h",
373    "source/latest_version_spirv_header.h",
374    "source/libspirv.cpp",
375    "source/macro.h",
376    "source/name_mapper.cpp",
377    "source/name_mapper.h",
378    "source/opcode.cpp",
379    "source/opcode.h",
380    "source/operand.cpp",
381    "source/operand.h",
382    "source/parsed_operand.cpp",
383    "source/parsed_operand.h",
384    "source/print.cpp",
385    "source/print.h",
386    "source/spirv_constant.h",
387    "source/spirv_definition.h",
388    "source/spirv_endian.cpp",
389    "source/spirv_endian.h",
390    "source/spirv_fuzzer_options.cpp",
391    "source/spirv_fuzzer_options.h",
392    "source/spirv_optimizer_options.cpp",
393    "source/spirv_optimizer_options.h",
394    "source/spirv_reducer_options.cpp",
395    "source/spirv_reducer_options.h",
396    "source/spirv_target_env.cpp",
397    "source/spirv_target_env.h",
398    "source/spirv_validator_options.cpp",
399    "source/spirv_validator_options.h",
400    "source/table.cpp",
401    "source/table.h",
402    "source/text.cpp",
403    "source/text.h",
404    "source/text_handler.cpp",
405    "source/text_handler.h",
406    "source/util/bit_vector.cpp",
407    "source/util/bit_vector.h",
408    "source/util/bitutils.h",
409    "source/util/hash_combine.h",
410    "source/util/hex_float.h",
411    "source/util/ilist.h",
412    "source/util/ilist_node.h",
413    "source/util/make_unique.h",
414    "source/util/parse_number.cpp",
415    "source/util/parse_number.h",
416    "source/util/small_vector.h",
417    "source/util/string_utils.cpp",
418    "source/util/string_utils.h",
419    "source/util/timer.cpp",
420    "source/util/timer.h",
421  ]
422
423  include_dirs = deqp_common_include_dirs
424  include_dirs += [
425    "//third_party/spirv-tools",
426    "//third_party/vk-gl-cts/build/external/spirv-tools/spirv-tools",
427    "//third_party/spirv-headers/include",
428    "//third_party/spirv-tools/include",
429  ]
430
431  if (build_with_chromium) {
432    configs -= [ "//build/config/compiler:chromium_code" ]
433    configs += [ "//build/config/compiler:no_chromium_code" ]
434  }
435
436  configs = [ ":spvtools_internal_config" ]
437  configs += [ ":spv_headers_public_config" ]
438}
439
440ohos_static_library("libdeqp_spirvtools") {
441  deps = [ ":deqp_spirvtool_source" ]
442  part_name = "graphic_2d"
443  subsystem_name = "graphic"
444}
445
446if (build_with_chromium && spvtools_build_executables) {
447  # The spirv-fuzz library is only built when in a Chromium checkout
448  # due to its dependency on protobuf.
449
450  proto_library("spvtools_fuzz_proto") {
451    sources = [ "source/fuzz/protobufs/spvtoolsfuzz.proto" ]
452    generate_python = false
453    use_protobuf_full = true
454  }
455
456  ohos_static_library("spvtools_fuzz") {
457    sources = [
458      "source/fuzz/added_function_reducer.cpp",
459      "source/fuzz/added_function_reducer.h",
460      "source/fuzz/available_instructions.cpp",
461      "source/fuzz/available_instructions.h",
462      "source/fuzz/call_graph.cpp",
463      "source/fuzz/call_graph.h",
464      "source/fuzz/comparator_deep_blocks_first.h",
465      "source/fuzz/counter_overflow_id_source.cpp",
466      "source/fuzz/counter_overflow_id_source.h",
467      "source/fuzz/data_descriptor.cpp",
468      "source/fuzz/data_descriptor.h",
469      "source/fuzz/equivalence_relation.h",
470      "source/fuzz/fact_manager/constant_uniform_facts.cpp",
471      "source/fuzz/fact_manager/constant_uniform_facts.h",
472      "source/fuzz/fact_manager/data_synonym_and_id_equation_facts.cpp",
473      "source/fuzz/fact_manager/data_synonym_and_id_equation_facts.h",
474      "source/fuzz/fact_manager/dead_block_facts.cpp",
475      "source/fuzz/fact_manager/dead_block_facts.h",
476      "source/fuzz/fact_manager/fact_manager.cpp",
477      "source/fuzz/fact_manager/fact_manager.h",
478      "source/fuzz/fact_manager/irrelevant_value_facts.cpp",
479      "source/fuzz/fact_manager/irrelevant_value_facts.h",
480      "source/fuzz/fact_manager/livesafe_function_facts.cpp",
481      "source/fuzz/fact_manager/livesafe_function_facts.h",
482      "source/fuzz/force_render_red.cpp",
483      "source/fuzz/force_render_red.h",
484      "source/fuzz/fuzzer.cpp",
485      "source/fuzz/fuzzer.h",
486      "source/fuzz/fuzzer_context.cpp",
487      "source/fuzz/fuzzer_context.h",
488      "source/fuzz/fuzzer_pass.cpp",
489      "source/fuzz/fuzzer_pass.h",
490      "source/fuzz/fuzzer_pass_add_access_chains.cpp",
491      "source/fuzz/fuzzer_pass_add_access_chains.h",
492      "source/fuzz/fuzzer_pass_add_bit_instruction_synonyms.cpp",
493      "source/fuzz/fuzzer_pass_add_bit_instruction_synonyms.h",
494      "source/fuzz/fuzzer_pass_add_composite_extract.cpp",
495      "source/fuzz/fuzzer_pass_add_composite_extract.h",
496      "source/fuzz/fuzzer_pass_add_composite_inserts.cpp",
497      "source/fuzz/fuzzer_pass_add_composite_inserts.h",
498      "source/fuzz/fuzzer_pass_add_composite_types.cpp",
499      "source/fuzz/fuzzer_pass_add_composite_types.h",
500      "source/fuzz/fuzzer_pass_add_copy_memory.cpp",
501      "source/fuzz/fuzzer_pass_add_copy_memory.h",
502      "source/fuzz/fuzzer_pass_add_dead_blocks.cpp",
503      "source/fuzz/fuzzer_pass_add_dead_blocks.h",
504      "source/fuzz/fuzzer_pass_add_dead_breaks.cpp",
505      "source/fuzz/fuzzer_pass_add_dead_breaks.h",
506      "source/fuzz/fuzzer_pass_add_dead_continues.cpp",
507      "source/fuzz/fuzzer_pass_add_dead_continues.h",
508      "source/fuzz/fuzzer_pass_add_equation_instructions.cpp",
509      "source/fuzz/fuzzer_pass_add_equation_instructions.h",
510      "source/fuzz/fuzzer_pass_add_function_calls.cpp",
511      "source/fuzz/fuzzer_pass_add_function_calls.h",
512      "source/fuzz/fuzzer_pass_add_global_variables.cpp",
513      "source/fuzz/fuzzer_pass_add_global_variables.h",
514      "source/fuzz/fuzzer_pass_add_image_sample_unused_components.cpp",
515      "source/fuzz/fuzzer_pass_add_image_sample_unused_components.h",
516      "source/fuzz/fuzzer_pass_add_loads.cpp",
517      "source/fuzz/fuzzer_pass_add_loads.h",
518      "source/fuzz/fuzzer_pass_add_local_variables.cpp",
519      "source/fuzz/fuzzer_pass_add_local_variables.h",
520      "source/fuzz/fuzzer_pass_add_loop_preheaders.cpp",
521      "source/fuzz/fuzzer_pass_add_loop_preheaders.h",
522      "source/fuzz/fuzzer_pass_add_loops_to_create_int_constant_synonyms.cpp",
523      "source/fuzz/fuzzer_pass_add_loops_to_create_int_constant_synonyms.h",
524      "source/fuzz/fuzzer_pass_add_no_contraction_decorations.cpp",
525      "source/fuzz/fuzzer_pass_add_no_contraction_decorations.h",
526      "source/fuzz/fuzzer_pass_add_opphi_synonyms.cpp",
527      "source/fuzz/fuzzer_pass_add_opphi_synonyms.h",
528      "source/fuzz/fuzzer_pass_add_parameters.cpp",
529      "source/fuzz/fuzzer_pass_add_parameters.h",
530      "source/fuzz/fuzzer_pass_add_relaxed_decorations.cpp",
531      "source/fuzz/fuzzer_pass_add_relaxed_decorations.h",
532      "source/fuzz/fuzzer_pass_add_stores.cpp",
533      "source/fuzz/fuzzer_pass_add_stores.h",
534      "source/fuzz/fuzzer_pass_add_synonyms.cpp",
535      "source/fuzz/fuzzer_pass_add_synonyms.h",
536      "source/fuzz/fuzzer_pass_add_vector_shuffle_instructions.cpp",
537      "source/fuzz/fuzzer_pass_add_vector_shuffle_instructions.h",
538      "source/fuzz/fuzzer_pass_adjust_branch_weights.cpp",
539      "source/fuzz/fuzzer_pass_adjust_branch_weights.h",
540      "source/fuzz/fuzzer_pass_adjust_function_controls.cpp",
541      "source/fuzz/fuzzer_pass_adjust_function_controls.h",
542      "source/fuzz/fuzzer_pass_adjust_loop_controls.cpp",
543      "source/fuzz/fuzzer_pass_adjust_loop_controls.h",
544      "source/fuzz/fuzzer_pass_adjust_memory_operands_masks.cpp",
545      "source/fuzz/fuzzer_pass_adjust_memory_operands_masks.h",
546      "source/fuzz/fuzzer_pass_adjust_selection_controls.cpp",
547      "source/fuzz/fuzzer_pass_adjust_selection_controls.h",
548      "source/fuzz/fuzzer_pass_apply_id_synonyms.cpp",
549      "source/fuzz/fuzzer_pass_apply_id_synonyms.h",
550      "source/fuzz/fuzzer_pass_construct_composites.cpp",
551      "source/fuzz/fuzzer_pass_construct_composites.h",
552      "source/fuzz/fuzzer_pass_copy_objects.cpp",
553      "source/fuzz/fuzzer_pass_copy_objects.h",
554      "source/fuzz/fuzzer_pass_donate_modules.cpp",
555      "source/fuzz/fuzzer_pass_donate_modules.h",
556      "source/fuzz/fuzzer_pass_duplicate_regions_with_selections.cpp",
557      "source/fuzz/fuzzer_pass_duplicate_regions_with_selections.h",
558      "source/fuzz/fuzzer_pass_expand_vector_reductions.cpp",
559      "source/fuzz/fuzzer_pass_expand_vector_reductions.h",
560      "source/fuzz/fuzzer_pass_flatten_conditional_branches.cpp",
561      "source/fuzz/fuzzer_pass_flatten_conditional_branches.h",
562      "source/fuzz/fuzzer_pass_inline_functions.cpp",
563      "source/fuzz/fuzzer_pass_inline_functions.h",
564      "source/fuzz/fuzzer_pass_interchange_signedness_of_integer_operands.cpp",
565      "source/fuzz/fuzzer_pass_interchange_signedness_of_integer_operands.h",
566      "source/fuzz/fuzzer_pass_interchange_zero_like_constants.cpp",
567      "source/fuzz/fuzzer_pass_interchange_zero_like_constants.h",
568      "source/fuzz/fuzzer_pass_invert_comparison_operators.cpp",
569      "source/fuzz/fuzzer_pass_invert_comparison_operators.h",
570      "source/fuzz/fuzzer_pass_make_vector_operations_dynamic.cpp",
571      "source/fuzz/fuzzer_pass_make_vector_operations_dynamic.h",
572      "source/fuzz/fuzzer_pass_merge_blocks.cpp",
573      "source/fuzz/fuzzer_pass_merge_blocks.h",
574      "source/fuzz/fuzzer_pass_merge_function_returns.cpp",
575      "source/fuzz/fuzzer_pass_merge_function_returns.h",
576      "source/fuzz/fuzzer_pass_mutate_pointers.cpp",
577      "source/fuzz/fuzzer_pass_mutate_pointers.h",
578      "source/fuzz/fuzzer_pass_obfuscate_constants.cpp",
579      "source/fuzz/fuzzer_pass_obfuscate_constants.h",
580      "source/fuzz/fuzzer_pass_outline_functions.cpp",
581      "source/fuzz/fuzzer_pass_outline_functions.h",
582      "source/fuzz/fuzzer_pass_permute_blocks.cpp",
583      "source/fuzz/fuzzer_pass_permute_blocks.h",
584      "source/fuzz/fuzzer_pass_permute_function_parameters.cpp",
585      "source/fuzz/fuzzer_pass_permute_function_parameters.h",
586      "source/fuzz/fuzzer_pass_permute_function_variables.cpp",
587      "source/fuzz/fuzzer_pass_permute_function_variables.h",
588      "source/fuzz/fuzzer_pass_permute_instructions.cpp",
589      "source/fuzz/fuzzer_pass_permute_instructions.h",
590      "source/fuzz/fuzzer_pass_permute_phi_operands.cpp",
591      "source/fuzz/fuzzer_pass_permute_phi_operands.h",
592      "source/fuzz/fuzzer_pass_propagate_instructions_down.cpp",
593      "source/fuzz/fuzzer_pass_propagate_instructions_down.h",
594      "source/fuzz/fuzzer_pass_propagate_instructions_up.cpp",
595      "source/fuzz/fuzzer_pass_propagate_instructions_up.h",
596      "source/fuzz/fuzzer_pass_push_ids_through_variables.cpp",
597      "source/fuzz/fuzzer_pass_push_ids_through_variables.h",
598      "source/fuzz/fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.cpp",
599      "source/fuzz/fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.h",
600      "source/fuzz/fuzzer_pass_replace_branches_from_dead_blocks_with_exits.cpp",
601      "source/fuzz/fuzzer_pass_replace_branches_from_dead_blocks_with_exits.h",
602      "source/fuzz/fuzzer_pass_replace_copy_memories_with_loads_stores.cpp",
603      "source/fuzz/fuzzer_pass_replace_copy_memories_with_loads_stores.h",
604      "source/fuzz/fuzzer_pass_replace_copy_objects_with_stores_loads.cpp",
605      "source/fuzz/fuzzer_pass_replace_copy_objects_with_stores_loads.h",
606      "source/fuzz/fuzzer_pass_replace_irrelevant_ids.cpp",
607      "source/fuzz/fuzzer_pass_replace_irrelevant_ids.h",
608      "source/fuzz/fuzzer_pass_replace_linear_algebra_instructions.cpp",
609      "source/fuzz/fuzzer_pass_replace_linear_algebra_instructions.h",
610      "source/fuzz/fuzzer_pass_replace_loads_stores_with_copy_memories.cpp",
611      "source/fuzz/fuzzer_pass_replace_loads_stores_with_copy_memories.h",
612      "source/fuzz/fuzzer_pass_replace_opphi_ids_from_dead_predecessors.cpp",
613      "source/fuzz/fuzzer_pass_replace_opphi_ids_from_dead_predecessors.h",
614      "source/fuzz/fuzzer_pass_replace_opselects_with_conditional_branches.cpp",
615      "source/fuzz/fuzzer_pass_replace_opselects_with_conditional_branches.h",
616      "source/fuzz/fuzzer_pass_replace_parameter_with_global.cpp",
617      "source/fuzz/fuzzer_pass_replace_parameter_with_global.h",
618      "source/fuzz/fuzzer_pass_replace_params_with_struct.cpp",
619      "source/fuzz/fuzzer_pass_replace_params_with_struct.h",
620      "source/fuzz/fuzzer_pass_split_blocks.cpp",
621      "source/fuzz/fuzzer_pass_split_blocks.h",
622      "source/fuzz/fuzzer_pass_swap_commutable_operands.cpp",
623      "source/fuzz/fuzzer_pass_swap_commutable_operands.h",
624      "source/fuzz/fuzzer_pass_swap_conditional_branch_operands.cpp",
625      "source/fuzz/fuzzer_pass_swap_conditional_branch_operands.h",
626      "source/fuzz/fuzzer_pass_swap_functions.cpp",
627      "source/fuzz/fuzzer_pass_swap_functions.h",
628      "source/fuzz/fuzzer_pass_toggle_access_chain_instruction.cpp",
629      "source/fuzz/fuzzer_pass_toggle_access_chain_instruction.h",
630      "source/fuzz/fuzzer_pass_wrap_regions_in_selections.cpp",
631      "source/fuzz/fuzzer_pass_wrap_regions_in_selections.h",
632      "source/fuzz/fuzzer_pass_wrap_vector_synonym.cpp",
633      "source/fuzz/fuzzer_pass_wrap_vector_synonym.h",
634      "source/fuzz/fuzzer_util.cpp",
635      "source/fuzz/fuzzer_util.h",
636      "source/fuzz/id_use_descriptor.cpp",
637      "source/fuzz/id_use_descriptor.h",
638      "source/fuzz/instruction_descriptor.cpp",
639      "source/fuzz/instruction_descriptor.h",
640      "source/fuzz/instruction_message.cpp",
641      "source/fuzz/instruction_message.h",
642      "source/fuzz/overflow_id_source.cpp",
643      "source/fuzz/overflow_id_source.h",
644      "source/fuzz/pass_management/repeated_pass_instances.h",
645      "source/fuzz/pass_management/repeated_pass_manager.cpp",
646      "source/fuzz/pass_management/repeated_pass_manager.h",
647      "source/fuzz/pass_management/repeated_pass_manager_looped_with_recommendations.cpp",
648      "source/fuzz/pass_management/repeated_pass_manager_looped_with_recommendations.h",
649      "source/fuzz/pass_management/repeated_pass_manager_random_with_recommendations.cpp",
650      "source/fuzz/pass_management/repeated_pass_manager_random_with_recommendations.h",
651      "source/fuzz/pass_management/repeated_pass_manager_simple.cpp",
652      "source/fuzz/pass_management/repeated_pass_manager_simple.h",
653      "source/fuzz/pass_management/repeated_pass_recommender.cpp",
654      "source/fuzz/pass_management/repeated_pass_recommender.h",
655      "source/fuzz/pass_management/repeated_pass_recommender_standard.cpp",
656      "source/fuzz/pass_management/repeated_pass_recommender_standard.h",
657      "source/fuzz/protobufs/spirvfuzz_protobufs.h",
658      "source/fuzz/pseudo_random_generator.cpp",
659      "source/fuzz/pseudo_random_generator.h",
660      "source/fuzz/random_generator.cpp",
661      "source/fuzz/random_generator.h",
662      "source/fuzz/replayer.cpp",
663      "source/fuzz/replayer.h",
664      "source/fuzz/shrinker.cpp",
665      "source/fuzz/shrinker.h",
666      "source/fuzz/transformation.cpp",
667      "source/fuzz/transformation.h",
668      "source/fuzz/transformation_access_chain.cpp",
669      "source/fuzz/transformation_access_chain.h",
670      "source/fuzz/transformation_add_bit_instruction_synonym.cpp",
671      "source/fuzz/transformation_add_bit_instruction_synonym.h",
672      "source/fuzz/transformation_add_constant_boolean.cpp",
673      "source/fuzz/transformation_add_constant_boolean.h",
674      "source/fuzz/transformation_add_constant_composite.cpp",
675      "source/fuzz/transformation_add_constant_composite.h",
676      "source/fuzz/transformation_add_constant_null.cpp",
677      "source/fuzz/transformation_add_constant_null.h",
678      "source/fuzz/transformation_add_constant_scalar.cpp",
679      "source/fuzz/transformation_add_constant_scalar.h",
680      "source/fuzz/transformation_add_copy_memory.cpp",
681      "source/fuzz/transformation_add_copy_memory.h",
682      "source/fuzz/transformation_add_dead_block.cpp",
683      "source/fuzz/transformation_add_dead_block.h",
684      "source/fuzz/transformation_add_dead_break.cpp",
685      "source/fuzz/transformation_add_dead_break.h",
686      "source/fuzz/transformation_add_dead_continue.cpp",
687      "source/fuzz/transformation_add_dead_continue.h",
688      "source/fuzz/transformation_add_early_terminator_wrapper.cpp",
689      "source/fuzz/transformation_add_early_terminator_wrapper.h",
690      "source/fuzz/transformation_add_function.cpp",
691      "source/fuzz/transformation_add_function.h",
692      "source/fuzz/transformation_add_global_undef.cpp",
693      "source/fuzz/transformation_add_global_undef.h",
694      "source/fuzz/transformation_add_global_variable.cpp",
695      "source/fuzz/transformation_add_global_variable.h",
696      "source/fuzz/transformation_add_image_sample_unused_components.cpp",
697      "source/fuzz/transformation_add_image_sample_unused_components.h",
698      "source/fuzz/transformation_add_local_variable.cpp",
699      "source/fuzz/transformation_add_local_variable.h",
700      "source/fuzz/transformation_add_loop_preheader.cpp",
701      "source/fuzz/transformation_add_loop_preheader.h",
702      "source/fuzz/transformation_add_loop_to_create_int_constant_synonym.cpp",
703      "source/fuzz/transformation_add_loop_to_create_int_constant_synonym.h",
704      "source/fuzz/transformation_add_no_contraction_decoration.cpp",
705      "source/fuzz/transformation_add_no_contraction_decoration.h",
706      "source/fuzz/transformation_add_opphi_synonym.cpp",
707      "source/fuzz/transformation_add_opphi_synonym.h",
708      "source/fuzz/transformation_add_parameter.cpp",
709      "source/fuzz/transformation_add_parameter.h",
710      "source/fuzz/transformation_add_relaxed_decoration.cpp",
711      "source/fuzz/transformation_add_relaxed_decoration.h",
712      "source/fuzz/transformation_add_spec_constant_op.cpp",
713      "source/fuzz/transformation_add_spec_constant_op.h",
714      "source/fuzz/transformation_add_synonym.cpp",
715      "source/fuzz/transformation_add_synonym.h",
716      "source/fuzz/transformation_add_type_array.cpp",
717      "source/fuzz/transformation_add_type_array.h",
718      "source/fuzz/transformation_add_type_boolean.cpp",
719      "source/fuzz/transformation_add_type_boolean.h",
720      "source/fuzz/transformation_add_type_float.cpp",
721      "source/fuzz/transformation_add_type_float.h",
722      "source/fuzz/transformation_add_type_function.cpp",
723      "source/fuzz/transformation_add_type_function.h",
724      "source/fuzz/transformation_add_type_int.cpp",
725      "source/fuzz/transformation_add_type_int.h",
726      "source/fuzz/transformation_add_type_matrix.cpp",
727      "source/fuzz/transformation_add_type_matrix.h",
728      "source/fuzz/transformation_add_type_pointer.cpp",
729      "source/fuzz/transformation_add_type_pointer.h",
730      "source/fuzz/transformation_add_type_struct.cpp",
731      "source/fuzz/transformation_add_type_struct.h",
732      "source/fuzz/transformation_add_type_vector.cpp",
733      "source/fuzz/transformation_add_type_vector.h",
734      "source/fuzz/transformation_adjust_branch_weights.cpp",
735      "source/fuzz/transformation_adjust_branch_weights.h",
736      "source/fuzz/transformation_composite_construct.cpp",
737      "source/fuzz/transformation_composite_construct.h",
738      "source/fuzz/transformation_composite_extract.cpp",
739      "source/fuzz/transformation_composite_extract.h",
740      "source/fuzz/transformation_composite_insert.cpp",
741      "source/fuzz/transformation_composite_insert.h",
742      "source/fuzz/transformation_compute_data_synonym_fact_closure.cpp",
743      "source/fuzz/transformation_compute_data_synonym_fact_closure.h",
744      "source/fuzz/transformation_context.cpp",
745      "source/fuzz/transformation_context.h",
746      "source/fuzz/transformation_duplicate_region_with_selection.cpp",
747      "source/fuzz/transformation_duplicate_region_with_selection.h",
748      "source/fuzz/transformation_equation_instruction.cpp",
749      "source/fuzz/transformation_equation_instruction.h",
750      "source/fuzz/transformation_expand_vector_reduction.cpp",
751      "source/fuzz/transformation_expand_vector_reduction.h",
752      "source/fuzz/transformation_flatten_conditional_branch.cpp",
753      "source/fuzz/transformation_flatten_conditional_branch.h",
754      "source/fuzz/transformation_function_call.cpp",
755      "source/fuzz/transformation_function_call.h",
756      "source/fuzz/transformation_inline_function.cpp",
757      "source/fuzz/transformation_inline_function.h",
758      "source/fuzz/transformation_invert_comparison_operator.cpp",
759      "source/fuzz/transformation_invert_comparison_operator.h",
760      "source/fuzz/transformation_load.cpp",
761      "source/fuzz/transformation_load.h",
762      "source/fuzz/transformation_make_vector_operation_dynamic.cpp",
763      "source/fuzz/transformation_make_vector_operation_dynamic.h",
764      "source/fuzz/transformation_merge_blocks.cpp",
765      "source/fuzz/transformation_merge_blocks.h",
766      "source/fuzz/transformation_merge_function_returns.cpp",
767      "source/fuzz/transformation_merge_function_returns.h",
768      "source/fuzz/transformation_move_block_down.cpp",
769      "source/fuzz/transformation_move_block_down.h",
770      "source/fuzz/transformation_move_instruction_down.cpp",
771      "source/fuzz/transformation_move_instruction_down.h",
772      "source/fuzz/transformation_mutate_pointer.cpp",
773      "source/fuzz/transformation_mutate_pointer.h",
774      "source/fuzz/transformation_outline_function.cpp",
775      "source/fuzz/transformation_outline_function.h",
776      "source/fuzz/transformation_permute_function_parameters.cpp",
777      "source/fuzz/transformation_permute_function_parameters.h",
778      "source/fuzz/transformation_permute_phi_operands.cpp",
779      "source/fuzz/transformation_permute_phi_operands.h",
780      "source/fuzz/transformation_propagate_instruction_down.cpp",
781      "source/fuzz/transformation_propagate_instruction_down.h",
782      "source/fuzz/transformation_propagate_instruction_up.cpp",
783      "source/fuzz/transformation_propagate_instruction_up.h",
784      "source/fuzz/transformation_push_id_through_variable.cpp",
785      "source/fuzz/transformation_push_id_through_variable.h",
786      "source/fuzz/transformation_record_synonymous_constants.cpp",
787      "source/fuzz/transformation_record_synonymous_constants.h",
788      "source/fuzz/transformation_replace_add_sub_mul_with_carrying_extended.cpp",
789      "source/fuzz/transformation_replace_add_sub_mul_with_carrying_extended.h",
790      "source/fuzz/transformation_replace_boolean_constant_with_constant_binary.cpp",
791      "source/fuzz/transformation_replace_boolean_constant_with_constant_binary.h",
792      "source/fuzz/transformation_replace_branch_from_dead_block_with_exit.cpp",
793      "source/fuzz/transformation_replace_branch_from_dead_block_with_exit.h",
794      "source/fuzz/transformation_replace_constant_with_uniform.cpp",
795      "source/fuzz/transformation_replace_constant_with_uniform.h",
796      "source/fuzz/transformation_replace_copy_memory_with_load_store.cpp",
797      "source/fuzz/transformation_replace_copy_memory_with_load_store.h",
798      "source/fuzz/transformation_replace_copy_object_with_store_load.cpp",
799      "source/fuzz/transformation_replace_copy_object_with_store_load.h",
800      "source/fuzz/transformation_replace_id_with_synonym.cpp",
801      "source/fuzz/transformation_replace_id_with_synonym.h",
802      "source/fuzz/transformation_replace_irrelevant_id.cpp",
803      "source/fuzz/transformation_replace_irrelevant_id.h",
804      "source/fuzz/transformation_replace_linear_algebra_instruction.cpp",
805      "source/fuzz/transformation_replace_linear_algebra_instruction.h",
806      "source/fuzz/transformation_replace_load_store_with_copy_memory.cpp",
807      "source/fuzz/transformation_replace_load_store_with_copy_memory.h",
808      "source/fuzz/transformation_replace_opphi_id_from_dead_predecessor.cpp",
809      "source/fuzz/transformation_replace_opphi_id_from_dead_predecessor.h",
810      "source/fuzz/transformation_replace_opselect_with_conditional_branch.cpp",
811      "source/fuzz/transformation_replace_opselect_with_conditional_branch.h",
812      "source/fuzz/transformation_replace_parameter_with_global.cpp",
813      "source/fuzz/transformation_replace_parameter_with_global.h",
814      "source/fuzz/transformation_replace_params_with_struct.cpp",
815      "source/fuzz/transformation_replace_params_with_struct.h",
816      "source/fuzz/transformation_set_function_control.cpp",
817      "source/fuzz/transformation_set_function_control.h",
818      "source/fuzz/transformation_set_loop_control.cpp",
819      "source/fuzz/transformation_set_loop_control.h",
820      "source/fuzz/transformation_set_memory_operands_mask.cpp",
821      "source/fuzz/transformation_set_memory_operands_mask.h",
822      "source/fuzz/transformation_set_selection_control.cpp",
823      "source/fuzz/transformation_set_selection_control.h",
824      "source/fuzz/transformation_split_block.cpp",
825      "source/fuzz/transformation_split_block.h",
826      "source/fuzz/transformation_store.cpp",
827      "source/fuzz/transformation_store.h",
828      "source/fuzz/transformation_swap_commutable_operands.cpp",
829      "source/fuzz/transformation_swap_commutable_operands.h",
830      "source/fuzz/transformation_swap_conditional_branch_operands.cpp",
831      "source/fuzz/transformation_swap_conditional_branch_operands.h",
832      "source/fuzz/transformation_swap_function_variables.cpp",
833      "source/fuzz/transformation_swap_function_variables.h",
834      "source/fuzz/transformation_swap_two_functions.cpp",
835      "source/fuzz/transformation_swap_two_functions.h",
836      "source/fuzz/transformation_toggle_access_chain_instruction.cpp",
837      "source/fuzz/transformation_toggle_access_chain_instruction.h",
838      "source/fuzz/transformation_vector_shuffle.cpp",
839      "source/fuzz/transformation_vector_shuffle.h",
840      "source/fuzz/transformation_wrap_early_terminator_in_function.cpp",
841      "source/fuzz/transformation_wrap_early_terminator_in_function.h",
842      "source/fuzz/transformation_wrap_region_in_selection.cpp",
843      "source/fuzz/transformation_wrap_region_in_selection.h",
844      "source/fuzz/transformation_wrap_vector_synonym.cpp",
845      "source/fuzz/transformation_wrap_vector_synonym.h",
846      "source/fuzz/uniform_buffer_element_descriptor.cpp",
847      "source/fuzz/uniform_buffer_element_descriptor.h",
848    ]
849    deps = [
850      ":libdeqp_spirvtools",
851      ":spvtools_fuzz_proto",
852      "//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt",
853      "//third_party/spirv-tools/source/reduce:libdeqp_spirvtools-reduce",
854    ]
855    external_deps = [ "protobuf:protobuf_full" ]
856    public_deps = [ ":spvtools_headers" ]
857    configs -= [ "//build/config/compiler:chromium_code" ]
858    configs += [ "//build/config/compiler:no_chromium_code" ]
859    configs += [ ":spvtools_internal_config" ]
860  }
861}
862
863ohos_source_set("spvtools_software_version") {
864  sources = [ "source/software_version.cpp" ]
865  deps = [ ":spvtools_headers" ]
866  configs = [ ":spvtools_internal_config" ]
867}
868
869ohos_source_set("spvtools_tools_util") {
870  sources = [
871    "tools/util/cli_consumer.cpp",
872    "tools/util/cli_consumer.h",
873    "tools/util/flags.cpp",
874  ]
875  deps = [ ":spvtools_headers" ]
876  configs = [ ":spvtools_internal_config" ]
877}
878
879if (spvtools_build_executables) {
880  executable("spirv-as") {
881    sources = [ "tools/as/as.cpp" ]
882    deps = [
883      ":libdeqp_spirvtools",
884      ":spvtools_software_version",
885      ":spvtools_tools_util",
886    ]
887    configs += [ ":spvtools_internal_config" ]
888  }
889
890  executable("spirv-dis") {
891    sources = [ "tools/dis/dis.cpp" ]
892    deps = [
893      ":libdeqp_spirvtools",
894      ":spvtools_software_version",
895      ":spvtools_tools_util",
896    ]
897    configs += [ ":spvtools_internal_config" ]
898  }
899
900  executable("spirv-val") {
901    sources = [ "tools/val/val.cpp" ]
902    deps = [
903      ":libdeqp_spirvtools",
904      ":spvtools_software_version",
905      ":spvtools_tools_util",
906      "//third_party/spirv-tools/source/val:libdeqp_spirvtools-val",
907    ]
908    configs += [ ":spvtools_internal_config" ]
909  }
910
911  executable("spirv-cfg") {
912    sources = [
913      "tools/cfg/bin_to_dot.cpp",
914      "tools/cfg/bin_to_dot.h",
915      "tools/cfg/cfg.cpp",
916    ]
917    deps = [
918      ":libdeqp_spirvtools",
919      ":spvtools_software_version",
920      ":spvtools_tools_util",
921    ]
922    configs += [ ":spvtools_internal_config" ]
923  }
924
925  executable("spirv-opt") {
926    sources = [ "tools/opt/opt.cpp" ]
927    deps = [
928      ":libdeqp_spirvtools",
929      ":spvtools_software_version",
930      ":spvtools_tools_util",
931      "//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt",
932      "//third_party/spirv-tools/source/val:libdeqp_spirvtools-val",
933    ]
934    configs += [ ":spvtools_internal_config" ]
935  }
936
937  executable("spirv-link") {
938    sources = [ "tools/link/linker.cpp" ]
939    deps = [
940      ":libdeqp_spirvtools",
941      ":spvtools_software_version",
942      ":spvtools_tools_util",
943      "//third_party/spirv-tools/source/link:libdeqp_spirvtools-link",
944      "//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt",
945      "//third_party/spirv-tools/source/val:libdeqp_spirvtools-val",
946    ]
947    configs += [ ":spvtools_internal_config" ]
948  }
949}
950
951if (!is_ios && !spirv_is_winuwp && build_with_chromium &&
952    spvtools_build_executables) {
953  # iOS and UWP do not allow std::system calls which spirv-fuzz
954  # requires. Additionally, spirv-fuzz is only built when in a
955  # Chromium checkout due to its dependency on protobuf.
956
957  executable("spirv-fuzz") {
958    sources = [ "tools/fuzz/fuzz.cpp" ]
959    deps = [
960      ":libdeqp_spirvtools",
961      ":spvtools_fuzz",
962      ":spvtools_software_version",
963      ":spvtools_tools_util",
964      "//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt",
965      "//third_party/spirv-tools/source/reduce:libdeqp_spirvtools-reduce",
966      "//third_party/spirv-tools/source/val:libdeqp_spirvtools-val",
967    ]
968    external_deps = [ "protobuf:protobuf_full" ]
969    configs += [ ":spvtools_internal_config" ]
970  }
971}
972
973if (!is_ios && !spirv_is_winuwp && spvtools_build_executables) {
974  # iOS and UWP do not allow std::system calls which spirv-reduce
975  # requires.
976
977  executable("spirv-reduce") {
978    sources = [ "tools/reduce/reduce.cpp" ]
979    deps = [
980      ":libdeqp_spirvtools",
981      ":spvtools_software_version",
982      ":spvtools_tools_util",
983      "//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt",
984      "//third_party/spirv-tools/source/reduce:libdeqp_spirvtools-reduce",
985      "//third_party/spirv-tools/source/val:libdeqp_spirvtools-val",
986    ]
987    configs += [ ":spvtools_internal_config" ]
988  }
989}
990
991if (spvtools_build_executables) {
992  group("all_spirv_tools") {
993    deps = [
994      ":spirv-as",
995      ":spirv-cfg",
996      ":spirv-dis",
997      ":spirv-link",
998      ":spirv-opt",
999      ":spirv-val",
1000    ]
1001    if (!is_ios && !spirv_is_winuwp && build_with_chromium) {
1002      deps += [ ":spirv-fuzz" ]
1003    }
1004    if (!is_ios && !spirv_is_winuwp) {
1005      deps += [ ":spirv-reduce" ]
1006    }
1007  }
1008}
1009