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