# Copyright 2018 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")
import("//build_overrides/spirv_tools.gni")
if (build_with_chromium) {
  import("//testing/test.gni")
}

spirv_headers = spirv_tools_spirv_headers_dir

template("spvtools_core_tables") {
  assert(defined(invoker.version), "Need version in $target_name generation.")

  action("spvtools_core_tables_" + target_name) {
    script = "utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file =
        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
    core_insts_file = "${target_gen_dir}/core.insts-$version.inc"
    operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc"
    debuginfo_insts_file = "source/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "source/extinst.opencl.debuginfo.100.grammar.json"

    sources = [
      core_json_file,
    ]
    outputs = [
      core_insts_file,
      operand_kinds_file,
    ]
    args = [
      "--spirv-core-grammar",
      rebase_path(core_json_file, root_build_dir),
      "--core-insts-output",
      rebase_path(core_insts_file, root_build_dir),
      "--extinst-debuginfo-grammar",
      rebase_path(debuginfo_insts_file, root_build_dir),
      "--extinst-cldebuginfo100-grammar",
      rebase_path(cldebuginfo100_insts_file, root_build_dir),
      "--operand-kinds-output",
      rebase_path(operand_kinds_file, root_build_dir),
    ]
  }
}

template("spvtools_core_enums") {
  assert(defined(invoker.version), "Need version in $target_name generation.")

  action("spvtools_core_enums_" + target_name) {
    script = "utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file =
        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
    debuginfo_insts_file = "source/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "source/extinst.opencl.debuginfo.100.grammar.json"

    extension_enum_file = "${target_gen_dir}/extension_enum.inc"
    extension_map_file = "${target_gen_dir}/enum_string_mapping.inc"

    args = [
      "--spirv-core-grammar",
      rebase_path(core_json_file, root_build_dir),
      "--extinst-debuginfo-grammar",
      rebase_path(debuginfo_insts_file, root_build_dir),
      "--extinst-cldebuginfo100-grammar",
      rebase_path(cldebuginfo100_insts_file, root_build_dir),
      "--extension-enum-output",
      rebase_path(extension_enum_file, root_build_dir),
      "--enum-string-mapping-output",
      rebase_path(extension_map_file, root_build_dir),
    ]
    inputs = [
      core_json_file,
      debuginfo_insts_file,
      cldebuginfo100_insts_file,
    ]
    outputs = [
      extension_enum_file,
      extension_map_file,
    ]
  }
}

template("spvtools_glsl_tables") {
  assert(defined(invoker.version), "Need version in $target_name generation.")

  action("spvtools_glsl_tables_" + target_name) {
    script = "utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file =
        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
    glsl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.glsl.std.450.grammar.json"
    debuginfo_insts_file = "source/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "source/extinst.opencl.debuginfo.100.grammar.json"

    glsl_insts_file = "${target_gen_dir}/glsl.std.450.insts.inc"

    args = [
      "--spirv-core-grammar",
      rebase_path(core_json_file, root_build_dir),
      "--extinst-debuginfo-grammar",
      rebase_path(debuginfo_insts_file, root_build_dir),
      "--extinst-cldebuginfo100-grammar",
      rebase_path(cldebuginfo100_insts_file, root_build_dir),
      "--extinst-glsl-grammar",
      rebase_path(glsl_json_file, root_build_dir),
      "--glsl-insts-output",
      rebase_path(glsl_insts_file, root_build_dir),
    ]
    inputs = [
      core_json_file,
      glsl_json_file,
      debuginfo_insts_file,
      cldebuginfo100_insts_file,
    ]
    outputs = [
      glsl_insts_file,
    ]
  }
}

template("spvtools_opencl_tables") {
  assert(defined(invoker.version), "Need version in $target_name generation.")

  action("spvtools_opencl_tables_" + target_name) {
    script = "utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file =
        "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json"
    opencl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.opencl.std.100.grammar.json"
    debuginfo_insts_file = "source/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "source/extinst.opencl.debuginfo.100.grammar.json"

    opencl_insts_file = "${target_gen_dir}/opencl.std.insts.inc"

    args = [
      "--spirv-core-grammar",
      rebase_path(core_json_file, root_build_dir),
      "--extinst-debuginfo-grammar",
      rebase_path(debuginfo_insts_file, root_build_dir),
      "--extinst-cldebuginfo100-grammar",
      rebase_path(cldebuginfo100_insts_file, root_build_dir),
      "--extinst-opencl-grammar",
      rebase_path(opencl_json_file, root_build_dir),
      "--opencl-insts-output",
      rebase_path(opencl_insts_file, root_build_dir),
    ]
    inputs = [
      core_json_file,
      opencl_json_file,
      debuginfo_insts_file,
      cldebuginfo100_insts_file,
    ]
    outputs = [
      opencl_insts_file,
    ]
  }
}

template("spvtools_language_header") {
  assert(defined(invoker.name), "Need name in $target_name generation.")

  action("spvtools_language_header_" + target_name) {
    script = "utils/generate_language_headers.py"

    name = invoker.name
    extinst_output_base = "${target_gen_dir}/${name}"

    args = [
      "--extinst-name",
      "${name}",
      "--extinst-grammar",
      rebase_path(invoker.grammar_file, root_build_dir),
      "--extinst-output-base",
      rebase_path(extinst_output_base, root_build_dir),
    ]
    inputs = [
      invoker.grammar_file,
    ]
    outputs = [
      "${extinst_output_base}.h",
    ]
  }
}

template("spvtools_vendor_table") {
  assert(defined(invoker.name), "Need name in $target_name generation.")

  action("spvtools_vendor_tables_" + target_name) {
    script = "utils/generate_grammar_tables.py"

    name = invoker.name
    extinst_vendor_grammar = "source/extinst.${name}.grammar.json"
    extinst_file = "${target_gen_dir}/${name}.insts.inc"

    args = [
      "--extinst-vendor-grammar",
      rebase_path(extinst_vendor_grammar, root_build_dir),
      "--vendor-insts-output",
      rebase_path(extinst_file, root_build_dir),
      "--vendor-operand-kind-prefix",
      invoker.operand_kind_prefix
    ]
    inputs = [
      extinst_vendor_grammar,
    ]
    outputs = [
      extinst_file,
    ]
  }
}

action("spvtools_generators_inc") {
  script = "utils/generate_registry_tables.py"

  # TODO(dsinclair): Make work for chrome
  xml_file = "${spirv_headers}/include/spirv/spir-v.xml"
  inc_file = "${target_gen_dir}/generators.inc"

  sources = [
    xml_file,
  ]
  outputs = [
    inc_file,
  ]
  args = [
    "--xml",
    rebase_path(xml_file, root_build_dir),
    "--generator",
    rebase_path(inc_file, root_build_dir),
  ]
}

action("spvtools_build_version") {
  script = "utils/update_build_version.py"

  src_dir = "."
  inc_file = "${target_gen_dir}/build-version.inc"

  outputs = [
    inc_file,
  ]
  args = [
    rebase_path(src_dir, root_build_dir),
    rebase_path(inc_file, root_build_dir),
  ]
}

spvtools_core_tables("unified1") {
  version = "unified1"
}
spvtools_core_enums("unified1") {
  version = "unified1"
}
spvtools_glsl_tables("glsl1-0") {
  version = "1.0"
}
spvtools_opencl_tables("opencl1-0") {
  version = "1.0"
}
spvtools_language_header("debuginfo") {
  name = "DebugInfo"
  grammar_file = "source/extinst.debuginfo.grammar.json"
}
spvtools_language_header("cldebuginfo100") {
  name = "OpenCLDebugInfo100"
  grammar_file = "source/extinst.opencl.debuginfo.100.grammar.json"
}

spvtools_vendor_tables = [
  ["spv-amd-shader-explicit-vertex-parameter", "...nil..."],
  ["spv-amd-shader-trinary-minmax", "...nil..."],
  ["spv-amd-gcn-shader", "...nil..."],
  ["spv-amd-shader-ballot", "...nil..."],
  ["debuginfo", "...nil..."],
  ["opencl.debuginfo.100", "CLDEBUG100_"],
]

foreach(table_def, spvtools_vendor_tables) {
  spvtools_vendor_table(table_def[0]) {
    name = table_def[0]
    operand_kind_prefix = table_def[1]
  }
}

config("spvtools_public_config") {
  include_dirs = [ "include" ]
}

config("spvtools_internal_config") {
  include_dirs = [
    ".",
    "$target_gen_dir",
    "${spirv_headers}/include",
  ]

  configs = [ ":spvtools_public_config" ]

  if (is_clang) {
    cflags = [
      "-Wno-implicit-fallthrough",
      "-Wno-newline-eof",
    ]
  }
}

source_set("spv_headers") {
  sources = [
    "$spirv_headers/include/spirv/1.2/GLSL.std.450.h",
    "$spirv_headers/include/spirv/unified1/OpenCL.std.h",
    "$spirv_headers/include/spirv/unified1/spirv.h",
  ]
}

source_set("spvtools_headers") {
  sources = [
    "include/spirv-tools/instrument.hpp",
    "include/spirv-tools/libspirv.h",
    "include/spirv-tools/libspirv.hpp",
    "include/spirv-tools/linker.hpp",
    "include/spirv-tools/optimizer.hpp",
  ]

  public_configs = [ ":spvtools_public_config" ]
}

static_library("spvtools") {
  deps = [
    ":spvtools_core_tables_unified1",
    ":spvtools_generators_inc",
    ":spvtools_glsl_tables_glsl1-0",
    ":spvtools_language_header_debuginfo",
    ":spvtools_language_header_cldebuginfo100",
    ":spvtools_opencl_tables_opencl1-0",
  ]
  foreach(table_def, spvtools_vendor_tables) {
    target_name = table_def[0]
    deps += [ ":spvtools_vendor_tables_$target_name" ]
  }

  sources = [
    "source/assembly_grammar.cpp",
    "source/assembly_grammar.h",
    "source/binary.cpp",
    "source/binary.h",
    "source/cfa.h",
    "source/diagnostic.cpp",
    "source/diagnostic.h",
    "source/disassemble.cpp",
    "source/disassemble.h",
    "source/enum_set.h",
    "source/enum_string_mapping.cpp",
    "source/enum_string_mapping.h",
    "source/ext_inst.cpp",
    "source/ext_inst.h",
    "source/extensions.cpp",
    "source/extensions.h",
    "source/instruction.h",
    "source/latest_version_glsl_std_450_header.h",
    "source/latest_version_opencl_std_header.h",
    "source/latest_version_spirv_header.h",
    "source/libspirv.cpp",
    "source/macro.h",
    "source/name_mapper.cpp",
    "source/name_mapper.h",
    "source/opcode.cpp",
    "source/opcode.h",
    "source/operand.cpp",
    "source/operand.h",
    "source/parsed_operand.cpp",
    "source/parsed_operand.h",
    "source/print.cpp",
    "source/print.h",
    "source/spirv_constant.h",
    "source/spirv_definition.h",
    "source/spirv_endian.cpp",
    "source/spirv_endian.h",
    "source/spirv_optimizer_options.cpp",
    "source/spirv_optimizer_options.h",
    "source/spirv_target_env.cpp",
    "source/spirv_target_env.h",
    "source/spirv_validator_options.cpp",
    "source/spirv_validator_options.h",
    "source/table.cpp",
    "source/table.h",
    "source/text.cpp",
    "source/text.h",
    "source/text_handler.cpp",
    "source/text_handler.h",
    "source/util/bit_vector.cpp",
    "source/util/bit_vector.h",
    "source/util/bitutils.h",
    "source/util/hex_float.h",
    "source/util/ilist.h",
    "source/util/ilist_node.h",
    "source/util/make_unique.h",
    "source/util/parse_number.cpp",
    "source/util/parse_number.h",
    "source/util/small_vector.h",
    "source/util/string_utils.cpp",
    "source/util/string_utils.h",
    "source/util/timer.cpp",
    "source/util/timer.h",
  ]

  public_deps = [
    ":spv_headers",
    ":spvtools_core_enums_unified1",
    ":spvtools_headers",
  ]

  if (build_with_chromium) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
  configs += [ ":spvtools_internal_config" ]
}

static_library("spvtools_val") {
  sources = [
    "source/val/basic_block.cpp",
    "source/val/basic_block.h",
    "source/val/construct.cpp",
    "source/val/construct.h",
    "source/val/decoration.h",
    "source/val/function.cpp",
    "source/val/function.h",
    "source/val/instruction.cpp",
    "source/val/validate.cpp",
    "source/val/validate.h",
    "source/val/validate_adjacency.cpp",
    "source/val/validate_annotation.cpp",
    "source/val/validate_arithmetics.cpp",
    "source/val/validate_atomics.cpp",
    "source/val/validate_barriers.cpp",
    "source/val/validate_bitwise.cpp",
    "source/val/validate_builtins.cpp",
    "source/val/validate_capability.cpp",
    "source/val/validate_cfg.cpp",
    "source/val/validate_composites.cpp",
    "source/val/validate_constants.cpp",
    "source/val/validate_conversion.cpp",
    "source/val/validate_debug.cpp",
    "source/val/validate_decorations.cpp",
    "source/val/validate_derivatives.cpp",
    "source/val/validate_execution_limitations.cpp",
    "source/val/validate_extensions.cpp",
    "source/val/validate_function.cpp",
    "source/val/validate_id.cpp",
    "source/val/validate_image.cpp",
    "source/val/validate_instruction.cpp",
    "source/val/validate_interfaces.cpp",
    "source/val/validate_layout.cpp",
    "source/val/validate_literals.cpp",
    "source/val/validate_logicals.cpp",
    "source/val/validate_memory.cpp",
    "source/val/validate_memory_semantics.cpp",
    "source/val/validate_memory_semantics.h",
    "source/val/validate_misc.cpp",
    "source/val/validate_mode_setting.cpp",
    "source/val/validate_non_uniform.cpp",
    "source/val/validate_primitives.cpp",
    "source/val/validate_scopes.cpp",
    "source/val/validate_scopes.h",
    "source/val/validate_small_type_uses.cpp",
    "source/val/validate_type.cpp",
    "source/val/validation_state.cpp",
    "source/val/validation_state.h",
  ]

  deps = [
    ":spvtools",
  ]
  public_deps = [
    ":spvtools_headers",
  ]

  if (build_with_chromium) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
  configs += [ ":spvtools_internal_config" ]
}

static_library("spvtools_opt") {
  sources = [
    "source/opt/aggressive_dead_code_elim_pass.cpp",
    "source/opt/aggressive_dead_code_elim_pass.h",
    "source/opt/amd_ext_to_khr.cpp",
    "source/opt/amd_ext_to_khr.h",
    "source/opt/basic_block.cpp",
    "source/opt/basic_block.h",
    "source/opt/block_merge_pass.cpp",
    "source/opt/block_merge_pass.h",
    "source/opt/block_merge_util.cpp",
    "source/opt/block_merge_util.h",
    "source/opt/build_module.cpp",
    "source/opt/build_module.h",
    "source/opt/ccp_pass.cpp",
    "source/opt/ccp_pass.h",
    "source/opt/cfg.cpp",
    "source/opt/cfg.h",
    "source/opt/cfg_cleanup_pass.cpp",
    "source/opt/cfg_cleanup_pass.h",
    "source/opt/code_sink.cpp",
    "source/opt/code_sink.h",
    "source/opt/combine_access_chains.cpp",
    "source/opt/combine_access_chains.h",
    "source/opt/compact_ids_pass.cpp",
    "source/opt/compact_ids_pass.h",
    "source/opt/composite.cpp",
    "source/opt/composite.h",
    "source/opt/const_folding_rules.cpp",
    "source/opt/const_folding_rules.h",
    "source/opt/constants.cpp",
    "source/opt/constants.h",
    "source/opt/convert_to_half_pass.cpp",
    "source/opt/convert_to_half_pass.h",
    "source/opt/copy_prop_arrays.cpp",
    "source/opt/copy_prop_arrays.h",
    "source/opt/dead_branch_elim_pass.cpp",
    "source/opt/dead_branch_elim_pass.h",
    "source/opt/dead_insert_elim_pass.cpp",
    "source/opt/dead_insert_elim_pass.h",
    "source/opt/dead_variable_elimination.cpp",
    "source/opt/dead_variable_elimination.h",
    "source/opt/decompose_initialized_variables_pass.cpp",
    "source/opt/decompose_initialized_variables_pass.h",
    "source/opt/decoration_manager.cpp",
    "source/opt/decoration_manager.h",
    "source/opt/def_use_manager.cpp",
    "source/opt/def_use_manager.h",
    "source/opt/desc_sroa.cpp",
    "source/opt/desc_sroa.h",
    "source/opt/dominator_analysis.cpp",
    "source/opt/dominator_analysis.h",
    "source/opt/dominator_tree.cpp",
    "source/opt/dominator_tree.h",
    "source/opt/eliminate_dead_constant_pass.cpp",
    "source/opt/eliminate_dead_constant_pass.h",
    "source/opt/eliminate_dead_functions_pass.cpp",
    "source/opt/eliminate_dead_functions_pass.h",
    "source/opt/eliminate_dead_functions_util.cpp",
    "source/opt/eliminate_dead_functions_util.h",
    "source/opt/eliminate_dead_members_pass.cpp",
    "source/opt/eliminate_dead_members_pass.h",
    "source/opt/feature_manager.cpp",
    "source/opt/feature_manager.h",
    "source/opt/fix_storage_class.cpp",
    "source/opt/fix_storage_class.h",
    "source/opt/flatten_decoration_pass.cpp",
    "source/opt/flatten_decoration_pass.h",
    "source/opt/fold.cpp",
    "source/opt/fold.h",
    "source/opt/fold_spec_constant_op_and_composite_pass.cpp",
    "source/opt/fold_spec_constant_op_and_composite_pass.h",
    "source/opt/folding_rules.cpp",
    "source/opt/folding_rules.h",
    "source/opt/freeze_spec_constant_value_pass.cpp",
    "source/opt/freeze_spec_constant_value_pass.h",
    "source/opt/function.cpp",
    "source/opt/function.h",
    "source/opt/generate_webgpu_initializers_pass.cpp",
    "source/opt/generate_webgpu_initializers_pass.h",
    "source/opt/graphics_robust_access_pass.cpp",
    "source/opt/graphics_robust_access_pass.h",
    "source/opt/if_conversion.cpp",
    "source/opt/if_conversion.h",
    "source/opt/inline_exhaustive_pass.cpp",
    "source/opt/inline_exhaustive_pass.h",
    "source/opt/inline_opaque_pass.cpp",
    "source/opt/inline_opaque_pass.h",
    "source/opt/inline_pass.cpp",
    "source/opt/inline_pass.h",
    "source/opt/inst_bindless_check_pass.cpp",
    "source/opt/inst_bindless_check_pass.h",
    "source/opt/inst_buff_addr_check_pass.cpp",
    "source/opt/inst_buff_addr_check_pass.h",
    "source/opt/instruction.cpp",
    "source/opt/instruction.h",
    "source/opt/instruction_list.cpp",
    "source/opt/instruction_list.h",
    "source/opt/instrument_pass.cpp",
    "source/opt/instrument_pass.h",
    "source/opt/ir_builder.h",
    "source/opt/ir_context.cpp",
    "source/opt/ir_context.h",
    "source/opt/ir_loader.cpp",
    "source/opt/ir_loader.h",
    "source/opt/iterator.h",
    "source/opt/legalize_vector_shuffle_pass.cpp",
    "source/opt/legalize_vector_shuffle_pass.h",
    "source/opt/licm_pass.cpp",
    "source/opt/licm_pass.h",
    "source/opt/local_access_chain_convert_pass.cpp",
    "source/opt/local_access_chain_convert_pass.h",
    "source/opt/local_redundancy_elimination.cpp",
    "source/opt/local_redundancy_elimination.h",
    "source/opt/local_single_block_elim_pass.cpp",
    "source/opt/local_single_block_elim_pass.h",
    "source/opt/local_single_store_elim_pass.cpp",
    "source/opt/local_single_store_elim_pass.h",
    "source/opt/log.h",
    "source/opt/loop_dependence.cpp",
    "source/opt/loop_dependence.h",
    "source/opt/loop_dependence_helpers.cpp",
    "source/opt/loop_descriptor.cpp",
    "source/opt/loop_descriptor.h",
    "source/opt/loop_fission.cpp",
    "source/opt/loop_fission.h",
    "source/opt/loop_fusion.cpp",
    "source/opt/loop_fusion.h",
    "source/opt/loop_fusion_pass.cpp",
    "source/opt/loop_fusion_pass.h",
    "source/opt/loop_peeling.cpp",
    "source/opt/loop_peeling.h",
    "source/opt/loop_unroller.cpp",
    "source/opt/loop_unroller.h",
    "source/opt/loop_unswitch_pass.cpp",
    "source/opt/loop_unswitch_pass.h",
    "source/opt/loop_utils.cpp",
    "source/opt/loop_utils.h",
    "source/opt/mem_pass.cpp",
    "source/opt/mem_pass.h",
    "source/opt/merge_return_pass.cpp",
    "source/opt/merge_return_pass.h",
    "source/opt/module.cpp",
    "source/opt/module.h",
    "source/opt/null_pass.h",
    "source/opt/optimizer.cpp",
    "source/opt/pass.cpp",
    "source/opt/pass.h",
    "source/opt/pass_manager.cpp",
    "source/opt/pass_manager.h",
    "source/opt/passes.h",
    "source/opt/private_to_local_pass.cpp",
    "source/opt/private_to_local_pass.h",
    "source/opt/process_lines_pass.cpp",
    "source/opt/process_lines_pass.h",
    "source/opt/propagator.cpp",
    "source/opt/propagator.h",
    "source/opt/reduce_load_size.cpp",
    "source/opt/reduce_load_size.h",
    "source/opt/redundancy_elimination.cpp",
    "source/opt/redundancy_elimination.h",
    "source/opt/reflect.h",
    "source/opt/register_pressure.cpp",
    "source/opt/register_pressure.h",
    "source/opt/relax_float_ops_pass.cpp",
    "source/opt/relax_float_ops_pass.h",
    "source/opt/remove_duplicates_pass.cpp",
    "source/opt/remove_duplicates_pass.h",
    "source/opt/replace_invalid_opc.cpp",
    "source/opt/replace_invalid_opc.h",
    "source/opt/scalar_analysis.cpp",
    "source/opt/scalar_analysis.h",
    "source/opt/scalar_analysis_nodes.h",
    "source/opt/scalar_analysis_simplification.cpp",
    "source/opt/scalar_replacement_pass.cpp",
    "source/opt/scalar_replacement_pass.h",
    "source/opt/set_spec_constant_default_value_pass.cpp",
    "source/opt/set_spec_constant_default_value_pass.h",
    "source/opt/simplification_pass.cpp",
    "source/opt/simplification_pass.h",
    "source/opt/split_invalid_unreachable_pass.cpp",
    "source/opt/split_invalid_unreachable_pass.h",
    "source/opt/ssa_rewrite_pass.cpp",
    "source/opt/ssa_rewrite_pass.h",
    "source/opt/strength_reduction_pass.cpp",
    "source/opt/strength_reduction_pass.h",
    "source/opt/strip_atomic_counter_memory_pass.cpp",
    "source/opt/strip_atomic_counter_memory_pass.h",
    "source/opt/strip_debug_info_pass.cpp",
    "source/opt/strip_debug_info_pass.h",
    "source/opt/strip_reflect_info_pass.cpp",
    "source/opt/strip_reflect_info_pass.h",
    "source/opt/struct_cfg_analysis.cpp",
    "source/opt/struct_cfg_analysis.h",
    "source/opt/tree_iterator.h",
    "source/opt/type_manager.cpp",
    "source/opt/type_manager.h",
    "source/opt/types.cpp",
    "source/opt/types.h",
    "source/opt/unify_const_pass.cpp",
    "source/opt/unify_const_pass.h",
    "source/opt/upgrade_memory_model.cpp",
    "source/opt/upgrade_memory_model.h",
    "source/opt/value_number_table.cpp",
    "source/opt/value_number_table.h",
    "source/opt/vector_dce.cpp",
    "source/opt/vector_dce.h",
    "source/opt/workaround1209.cpp",
    "source/opt/workaround1209.h",
    "source/opt/wrap_opkill.cpp",
    "source/opt/wrap_opkill.h",
  ]

  deps = [
    ":spvtools",
    ":spvtools_vendor_tables_spv-amd-shader-ballot",
  ]
  public_deps = [
    ":spvtools_headers",
  ]

  if (build_with_chromium) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
  configs += [ ":spvtools_internal_config" ]
}

static_library("spvtools_link") {
  sources = [
    "source/link/linker.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_opt",
    ":spvtools_val",
  ]
  public_deps = [
    ":spvtools_headers",
  ]
  if (build_with_chromium) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
  configs += [ ":spvtools_internal_config" ]
}

static_library("spvtools_reduce") {
  sources = [
    "source/reduce/change_operand_reduction_opportunity.cpp",
    "source/reduce/change_operand_reduction_opportunity.h",
    "source/reduce/change_operand_to_undef_reduction_opportunity.cpp",
    "source/reduce/change_operand_to_undef_reduction_opportunity.h",
    "source/reduce/conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp",
    "source/reduce/conditional_branch_to_simple_conditional_branch_opportunity_finder.h",
    "source/reduce/conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp",
    "source/reduce/conditional_branch_to_simple_conditional_branch_reduction_opportunity.h",
    "source/reduce/merge_blocks_reduction_opportunity.cpp",
    "source/reduce/merge_blocks_reduction_opportunity.h",
    "source/reduce/merge_blocks_reduction_opportunity_finder.cpp",
    "source/reduce/merge_blocks_reduction_opportunity_finder.h",
    "source/reduce/operand_to_const_reduction_opportunity_finder.cpp",
    "source/reduce/operand_to_const_reduction_opportunity_finder.h",
    "source/reduce/operand_to_dominating_id_reduction_opportunity_finder.cpp",
    "source/reduce/operand_to_dominating_id_reduction_opportunity_finder.h",
    "source/reduce/operand_to_undef_reduction_opportunity_finder.cpp",
    "source/reduce/operand_to_undef_reduction_opportunity_finder.h",
    "source/reduce/reducer.cpp",
    "source/reduce/reducer.h",
    "source/reduce/reduction_opportunity.cpp",
    "source/reduce/reduction_opportunity.h",
    "source/reduce/reduction_opportunity_finder.h",
    "source/reduce/reduction_pass.cpp",
    "source/reduce/reduction_pass.h",
    "source/reduce/reduction_util.cpp",
    "source/reduce/reduction_util.h",
    "source/reduce/remove_block_reduction_opportunity.cpp",
    "source/reduce/remove_block_reduction_opportunity.h",
    "source/reduce/remove_block_reduction_opportunity_finder.cpp",
    "source/reduce/remove_block_reduction_opportunity_finder.h",
    "source/reduce/remove_function_reduction_opportunity.cpp",
    "source/reduce/remove_function_reduction_opportunity.h",
    "source/reduce/remove_function_reduction_opportunity_finder.cpp",
    "source/reduce/remove_function_reduction_opportunity_finder.h",
    "source/reduce/remove_instruction_reduction_opportunity.cpp",
    "source/reduce/remove_instruction_reduction_opportunity.h",
    "source/reduce/remove_selection_reduction_opportunity.cpp",
    "source/reduce/remove_selection_reduction_opportunity.h",
    "source/reduce/remove_selection_reduction_opportunity_finder.cpp",
    "source/reduce/remove_selection_reduction_opportunity_finder.h",
    "source/reduce/remove_unreferenced_instruction_reduction_opportunity_finder.cpp",
    "source/reduce/remove_unreferenced_instruction_reduction_opportunity_finder.h",
    "source/reduce/simple_conditional_branch_to_branch_opportunity_finder.cpp",
    "source/reduce/simple_conditional_branch_to_branch_opportunity_finder.h",
    "source/reduce/simple_conditional_branch_to_branch_reduction_opportunity.cpp",
    "source/reduce/simple_conditional_branch_to_branch_reduction_opportunity.h",
    "source/reduce/structured_loop_to_selection_reduction_opportunity.cpp",
    "source/reduce/structured_loop_to_selection_reduction_opportunity.h",
    "source/reduce/structured_loop_to_selection_reduction_opportunity_finder.cpp",
    "source/reduce/structured_loop_to_selection_reduction_opportunity_finder.h",
    "source/spirv_reducer_options.cpp",
    "source/spirv_reducer_options.h",
  ]
  deps = [
    ":spvtools",
    ":spvtools_opt",
  ]
  public_deps = [
    ":spvtools_headers",
  ]
  if (build_with_chromium) {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }
  configs += [ ":spvtools_internal_config" ]
}

group("SPIRV-Tools") {
  public_deps = [
    ":spvtools",
    ":spvtools_link",
    ":spvtools_opt",
    ":spvtools_reduce",
    ":spvtools_val",
  ]
}

# The tests are scoped to Chromium to avoid needing to write gtest integration.
# See Chromium's third_party/googletest/BUILD.gn for a complete integration.
if (build_with_chromium) {
  test("spvtools_test") {
    sources = [
      "test/assembly_context_test.cpp",
      "test/assembly_format_test.cpp",
      "test/binary_destroy_test.cpp",
      "test/binary_endianness_test.cpp",
      "test/binary_header_get_test.cpp",
      "test/binary_parse_test.cpp",
      "test/binary_strnlen_s_test.cpp",
      "test/binary_to_text.literal_test.cpp",
      "test/binary_to_text_test.cpp",
      "test/comment_test.cpp",
      "test/enum_set_test.cpp",
      "test/enum_string_mapping_test.cpp",
      "test/ext_inst.debuginfo_test.cpp",
      "test/ext_inst.glsl_test.cpp",
      "test/ext_inst.opencl_test.cpp",
      "test/ext_inst.cldebug100_test.cpp",
      "test/fix_word_test.cpp",
      "test/generator_magic_number_test.cpp",
      "test/hex_float_test.cpp",
      "test/immediate_int_test.cpp",
      "test/libspirv_macros_test.cpp",
      "test/name_mapper_test.cpp",
      "test/named_id_test.cpp",
      "test/opcode_make_test.cpp",
      "test/opcode_require_capabilities_test.cpp",
      "test/opcode_split_test.cpp",
      "test/opcode_table_get_test.cpp",
      "test/operand_capabilities_test.cpp",
      "test/operand_pattern_test.cpp",
      "test/operand_test.cpp",
      "test/target_env_test.cpp",
      "test/test_fixture.h",
      "test/text_advance_test.cpp",
      "test/text_destroy_test.cpp",
      "test/text_literal_test.cpp",
      "test/text_start_new_inst_test.cpp",
      "test/text_to_binary.annotation_test.cpp",
      "test/text_to_binary.barrier_test.cpp",
      "test/text_to_binary.constant_test.cpp",
      "test/text_to_binary.control_flow_test.cpp",
      "test/text_to_binary.debug_test.cpp",
      "test/text_to_binary.device_side_enqueue_test.cpp",
      "test/text_to_binary.extension_test.cpp",
      "test/text_to_binary.function_test.cpp",
      "test/text_to_binary.group_test.cpp",
      "test/text_to_binary.image_test.cpp",
      "test/text_to_binary.literal_test.cpp",
      "test/text_to_binary.memory_test.cpp",
      "test/text_to_binary.misc_test.cpp",
      "test/text_to_binary.mode_setting_test.cpp",
      "test/text_to_binary.pipe_storage_test.cpp",
      "test/text_to_binary.reserved_sampling_test.cpp",
      "test/text_to_binary.subgroup_dispatch_test.cpp",
      "test/text_to_binary.type_declaration_test.cpp",
      "test/text_to_binary_test.cpp",
      "test/text_word_get_test.cpp",
      "test/unit_spirv.cpp",
      "test/unit_spirv.h",
    ]

    deps = [
      ":spvtools",
      ":spvtools_language_header_debuginfo",
      ":spvtools_language_header_cldebuginfo100",
      ":spvtools_val",
      "//testing/gmock",
      "//testing/gtest",
      "//testing/gtest:gtest_main",
      "//third_party/googletest:gmock",
      "//third_party/googletest:gtest",
    ]

    if (is_clang) {
      cflags_cc = [ "-Wno-self-assign" ]
    }

    configs += [ ":spvtools_internal_config" ]
  }
}

if (spirv_tools_standalone) {
  group("fuzzers") {
    testonly = true
    deps = [
      "test/fuzzers",
    ]
  }
}

source_set("spvtools_util_cli_consumer") {
  sources = [
    "tools/util/cli_consumer.cpp",
    "tools/util/cli_consumer.h",
  ]
  deps = [
    ":spvtools_headers",
  ]
  configs += [ ":spvtools_internal_config" ]
}

source_set("spvtools_software_version") {
  sources = [
    "source/software_version.cpp",
  ]
  deps = [
    ":spvtools_build_version",
    ":spvtools_headers",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-as") {
  sources = [
    "tools/as/as.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_software_version",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-dis") {
  sources = [
    "tools/dis/dis.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_software_version",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-val") {
  sources = [
    "tools/val/val.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_software_version",
    ":spvtools_util_cli_consumer",
    ":spvtools_val",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-cfg") {
  sources = [
    "tools/cfg/bin_to_dot.cpp",
    "tools/cfg/bin_to_dot.h",
    "tools/cfg/cfg.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_software_version",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-opt") {
  sources = [
    "tools/opt/opt.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_opt",
    ":spvtools_software_version",
    ":spvtools_util_cli_consumer",
    ":spvtools_val",
  ]
  configs += [ ":spvtools_internal_config" ]
}

executable("spirv-link") {
  sources = [
    "tools/link/linker.cpp",
  ]
  deps = [
    ":spvtools",
    ":spvtools_link",
    ":spvtools_opt",
    ":spvtools_software_version",
    ":spvtools_val",
  ]
  configs += [ ":spvtools_internal_config" ]
}

if (!is_ios) {
  # iOS does not allow std::system calls which spirv-reduce requires
  executable("spirv-reduce") {
    sources = [
      "tools/reduce/reduce.cpp",
    ]
    deps = [
      ":spvtools",
      ":spvtools_opt",
      ":spvtools_reduce",
      ":spvtools_software_version",
      ":spvtools_util_cli_consumer",
      ":spvtools_val",
    ]
    configs += [ ":spvtools_internal_config" ]
  }
}

group("all_spirv_tools") {
  deps = [
    ":spirv-as",
    ":spirv-cfg",
    ":spirv-dis",
    ":spirv-link",
    ":spirv-opt",
    ":spirv-val",
  ]
  if (!is_ios) {
    deps += [ ":spirv-reduce" ]
  }
}
