# Copyright 2020 The Tint Authors
#
# 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("//testing/test.gni")
import("tint_overrides_with_defaults.gni")

###############################################################################
# Common - Configs, etc. shared across targets
###############################################################################

config("tint_common_config") {
  include_dirs = [
    "${target_gen_dir}",
    "${tint_root_dir}/",
    "${tint_spirv_headers_dir}/include",
    "${tint_spirv_tools_dir}/",
    "${tint_spirv_tools_dir}/include",
  ]
}

config("tint_public_config") {
  defines = []
  if (tint_build_spv_reader) {
    defines += [ "TINT_BUILD_SPV_READER=1" ]
  } else {
    defines += [ "TINT_BUILD_SPV_READER=0" ]
  }

  if (tint_build_spv_writer) {
    defines += [ "TINT_BUILD_SPV_WRITER=1" ]
  } else {
    defines += [ "TINT_BUILD_SPV_WRITER=0" ]
  }

  if (tint_build_wgsl_reader) {
    defines += [ "TINT_BUILD_WGSL_READER=1" ]
  } else {
    defines += [ "TINT_BUILD_WGSL_READER=0" ]
  }

  if (tint_build_wgsl_writer) {
    defines += [ "TINT_BUILD_WGSL_WRITER=1" ]
  } else {
    defines += [ "TINT_BUILD_WGSL_WRITER=0" ]
  }

  if (tint_build_msl_writer) {
    defines += [ "TINT_BUILD_MSL_WRITER=1" ]
  } else {
    defines += [ "TINT_BUILD_MSL_WRITER=0" ]
  }

  if (tint_build_hlsl_writer) {
    defines += [ "TINT_BUILD_HLSL_WRITER=1" ]
  } else {
    defines += [ "TINT_BUILD_HLSL_WRITER=0" ]
  }

  include_dirs = [
    "${tint_root_dir}/",
    "${tint_root_dir}/include/",
    "${tint_spirv_headers_dir}/include",
  ]
}

###############################################################################
# Generated - Generated source files
###############################################################################
# These are copies of rules from SPIRV-Tools with the names tweaked to be Tint
# specific. They are needed here because referencing generated files in sibling
# packages is difficult/impossible in Chromium. Parts of Tint's SPIRV handling
# code depend on internal parts of SPIRV-Tools. This causes issues because when
# Tint references the internal headers, since it causes a dependency on these
# generated files, but they are not visible in the context building Tint. Thus
# Tint generates its own copy of the generated files. Since they come from the
# same source of truth, they should not vary.

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

  action("tint_core_tables_" + target_name) {
    script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file = "${tint_spirv_headers_dir}/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 = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"

    sources = [
      cldebuginfo100_insts_file,
      core_json_file,
      debuginfo_insts_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("tint_core_enums") {
  assert(defined(invoker.version), "Need version in $target_name generation.")

  action("tint_core_enums_" + target_name) {
    script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"

    version = invoker.version

    core_json_file = "${tint_spirv_headers_dir}/include/spirv/$version/spirv.core.grammar.json"
    debuginfo_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
    cldebuginfo100_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/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("tint_language_header") {
  assert(defined(invoker.name), "Need name in $target_name generation.")

  action("tint_language_header_" + target_name) {
    script = "${tint_spirv_tools_dir}/utils/generate_language_headers.py"

    name = invoker.name
    extinst_output_path = "${target_gen_dir}/${name}.h"

    args = [
      "--extinst-grammar",
      rebase_path(invoker.grammar_file, root_build_dir),
      "--extinst-output-path",
      rebase_path(extinst_output_path, root_build_dir),
    ]
    inputs = [ invoker.grammar_file ]
    outputs = [ "${extinst_output_path}" ]
  }
}

tint_core_tables("unified1") {
  version = "unified1"
}

tint_core_enums("unified1") {
  version = "unified1"
}

tint_language_header("debuginfo") {
  name = "DebugInfo"
  grammar_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
}

tint_language_header("cldebuginfo100") {
  name = "OpenCLDebugInfo100"
  grammar_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
}

###############################################################################
# Library - Tint core and optional modules of libtint
###############################################################################
# libtint source sets are divided into a non-optional core in :libtint_core_src
# and optional :libtint_*_src subsets, because ninja does not like having
# multiple source files with the same name, like function.cc, in the same
# source set
# target.
#
# Targets that want to use tint as a library should depend on ":libtint" and
# use the build flags to control what is included, instead of trying to specify
# the subsets that they want.

source_set("libtint_core_src") {
  sources = [
    "src/ast/access_control.cc",
    "src/ast/access_control.h",
    "src/ast/access_decoration.cc",
    "src/ast/access_decoration.h",
    "src/ast/array_accessor_expression.cc",
    "src/ast/array_accessor_expression.h",
    "src/ast/array_decoration.cc",
    "src/ast/array_decoration.h",
    "src/ast/assignment_statement.cc",
    "src/ast/assignment_statement.h",
    "src/ast/binary_expression.cc",
    "src/ast/binary_expression.h",
    "src/ast/binding_decoration.cc",
    "src/ast/binding_decoration.h",
    "src/ast/bitcast_expression.cc",
    "src/ast/bitcast_expression.h",
    "src/ast/block_statement.cc",
    "src/ast/block_statement.h",
    "src/ast/bool_literal.cc",
    "src/ast/bool_literal.h",
    "src/ast/break_statement.cc",
    "src/ast/break_statement.h",
    "src/ast/builder.cc",
    "src/ast/builder.h",
    "src/ast/builtin.cc",
    "src/ast/builtin.h",
    "src/ast/builtin_decoration.cc",
    "src/ast/builtin_decoration.h",
    "src/ast/call_expression.cc",
    "src/ast/call_expression.h",
    "src/ast/call_statement.cc",
    "src/ast/call_statement.h",
    "src/ast/case_statement.cc",
    "src/ast/case_statement.h",
    "src/ast/clone_context.cc",
    "src/ast/clone_context.h",
    "src/ast/constant_id_decoration.cc",
    "src/ast/constant_id_decoration.h",
    "src/ast/constructor_expression.cc",
    "src/ast/constructor_expression.h",
    "src/ast/continue_statement.cc",
    "src/ast/continue_statement.h",
    "src/ast/decoration.cc",
    "src/ast/decoration.h",
    "src/ast/discard_statement.cc",
    "src/ast/discard_statement.h",
    "src/ast/else_statement.cc",
    "src/ast/else_statement.h",
    "src/ast/expression.cc",
    "src/ast/expression.h",
    "src/ast/fallthrough_statement.cc",
    "src/ast/fallthrough_statement.h",
    "src/ast/float_literal.cc",
    "src/ast/float_literal.h",
    "src/ast/function.cc",
    "src/ast/function.h",
    "src/ast/function_decoration.cc",
    "src/ast/function_decoration.h",
    "src/ast/identifier_expression.cc",
    "src/ast/identifier_expression.h",
    "src/ast/if_statement.cc",
    "src/ast/if_statement.h",
    "src/ast/int_literal.cc",
    "src/ast/int_literal.h",
    "src/ast/intrinsic.cc",
    "src/ast/intrinsic.h",
    "src/ast/literal.cc",
    "src/ast/literal.h",
    "src/ast/location_decoration.cc",
    "src/ast/location_decoration.h",
    "src/ast/loop_statement.cc",
    "src/ast/loop_statement.h",
    "src/ast/member_accessor_expression.cc",
    "src/ast/member_accessor_expression.h",
    "src/ast/module.cc",
    "src/ast/module.h",
    "src/ast/node.cc",
    "src/ast/node.h",
    "src/ast/null_literal.cc",
    "src/ast/null_literal.h",
    "src/ast/pipeline_stage.cc",
    "src/ast/pipeline_stage.h",
    "src/ast/return_statement.cc",
    "src/ast/return_statement.h",
    "src/ast/scalar_constructor_expression.cc",
    "src/ast/scalar_constructor_expression.h",
    "src/ast/set_decoration.cc",
    "src/ast/set_decoration.h",
    "src/ast/sint_literal.cc",
    "src/ast/sint_literal.h",
    "src/ast/stage_decoration.cc",
    "src/ast/stage_decoration.h",
    "src/ast/statement.cc",
    "src/ast/statement.h",
    "src/ast/storage_class.cc",
    "src/ast/storage_class.h",
    "src/ast/stride_decoration.cc",
    "src/ast/stride_decoration.h",
    "src/ast/struct.cc",
    "src/ast/struct.h",
    "src/ast/struct_block_decoration.cc",
    "src/ast/struct_block_decoration.h",
    "src/ast/struct_decoration.cc",
    "src/ast/struct_decoration.h",
    "src/ast/struct_member.cc",
    "src/ast/struct_member.h",
    "src/ast/struct_member_decoration.cc",
    "src/ast/struct_member_decoration.h",
    "src/ast/struct_member_offset_decoration.cc",
    "src/ast/struct_member_offset_decoration.h",
    "src/ast/switch_statement.cc",
    "src/ast/switch_statement.h",
    "src/ast/traits.h",
    "src/ast/type/access_control_type.cc",
    "src/ast/type/access_control_type.h",
    "src/ast/type/alias_type.cc",
    "src/ast/type/alias_type.h",
    "src/ast/type/array_type.cc",
    "src/ast/type/array_type.h",
    "src/ast/type/bool_type.cc",
    "src/ast/type/bool_type.h",
    "src/ast/type/depth_texture_type.cc",
    "src/ast/type/depth_texture_type.h",
    "src/ast/type/f32_type.cc",
    "src/ast/type/f32_type.h",
    "src/ast/type/i32_type.cc",
    "src/ast/type/i32_type.h",
    "src/ast/type/matrix_type.cc",
    "src/ast/type/matrix_type.h",
    "src/ast/type/multisampled_texture_type.cc",
    "src/ast/type/multisampled_texture_type.h",
    "src/ast/type/pointer_type.cc",
    "src/ast/type/pointer_type.h",
    "src/ast/type/sampled_texture_type.cc",
    "src/ast/type/sampled_texture_type.h",
    "src/ast/type/sampler_type.cc",
    "src/ast/type/sampler_type.h",
    "src/ast/type/storage_texture_type.cc",
    "src/ast/type/storage_texture_type.h",
    "src/ast/type/struct_type.cc",
    "src/ast/type/struct_type.h",
    "src/ast/type/texture_type.cc",
    "src/ast/type/texture_type.h",
    "src/ast/type/type.cc",
    "src/ast/type/type.h",
    "src/ast/type/u32_type.cc",
    "src/ast/type/u32_type.h",
    "src/ast/type/vector_type.cc",
    "src/ast/type/vector_type.h",
    "src/ast/type/void_type.cc",
    "src/ast/type/void_type.h",
    "src/ast/type_constructor_expression.cc",
    "src/ast/type_constructor_expression.h",
    "src/ast/type_decoration.cc",
    "src/ast/type_decoration.h",
    "src/ast/type_manager.cc",
    "src/ast/type_manager.h",
    "src/ast/uint_literal.cc",
    "src/ast/uint_literal.h",
    "src/ast/unary_op.cc",
    "src/ast/unary_op.h",
    "src/ast/unary_op_expression.cc",
    "src/ast/unary_op_expression.h",
    "src/ast/variable.cc",
    "src/ast/variable.h",
    "src/ast/variable_decl_statement.cc",
    "src/ast/variable_decl_statement.h",
    "src/ast/variable_decoration.cc",
    "src/ast/variable_decoration.h",
    "src/ast/workgroup_decoration.cc",
    "src/ast/workgroup_decoration.h",
    "src/castable.cc",
    "src/castable.h",
    "src/demangler.cc",
    "src/demangler.h",
    "src/diagnostic/diagnostic.cc",
    "src/diagnostic/diagnostic.h",
    "src/diagnostic/formatter.cc",
    "src/diagnostic/formatter.h",
    "src/diagnostic/printer.cc",
    "src/diagnostic/printer.h",
    "src/inspector/entry_point.cc",
    "src/inspector/entry_point.h",
    "src/inspector/inspector.cc",
    "src/inspector/inspector.h",
    "src/inspector/scalar.cc",
    "src/inspector/scalar.h",
    "src/namer.cc",
    "src/namer.h",
    "src/reader/reader.cc",
    "src/reader/reader.h",
    "src/scope_stack.h",
    "src/source.cc",
    "src/source.h",
    "src/symbol.cc",
    "src/symbol.h",
    "src/symbol_table.cc",
    "src/symbol_table.h",
    "src/transform/bound_array_accessors.cc",
    "src/transform/bound_array_accessors.h",
    "src/transform/emit_vertex_point_size.cc",
    "src/transform/emit_vertex_point_size.h",
    "src/transform/first_index_offset.cc",
    "src/transform/first_index_offset.h",
    "src/transform/manager.cc",
    "src/transform/manager.h",
    "src/transform/transform.cc",
    "src/transform/transform.h",
    "src/transform/vertex_pulling.cc",
    "src/transform/vertex_pulling.h",
    "src/type_determiner.cc",
    "src/type_determiner.h",
    "src/validator/validator.cc",
    "src/validator/validator.h",
    "src/validator/validator_impl.cc",
    "src/validator/validator_impl.h",
    "src/validator/validator_test_helper.cc",
    "src/validator/validator_test_helper.h",
    "src/writer/append_vector.cc",
    "src/writer/append_vector.h",
    "src/writer/float_to_string.cc",
    "src/writer/float_to_string.h",
    "src/writer/text.cc",
    "src/writer/text.h",
    "src/writer/text_generator.cc",
    "src/writer/text_generator.h",
    "src/writer/writer.cc",
    "src/writer/writer.h",
  ]

  if (is_linux) {
    sources += [ "src/diagnostic/printer_linux.cc" ]
  } else if (is_win) {
    sources += [ "src/diagnostic/printer_windows.cc" ]
  } else {
    sources += [ "src/diagnostic/printer_other.cc" ]
  }

  public_deps = [
    ":tint_core_enums_unified1",
    ":tint_core_tables_unified1",
    ":tint_language_header_cldebuginfo100",
    ":tint_language_header_debuginfo",
    "${tint_spirv_headers_dir}:spv_headers",
    "${tint_spirv_tools_dir}:spvtools_headers",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

source_set("libtint_spv_reader_src") {
  sources = [
    "src/reader/spirv/construct.cc",
    "src/reader/spirv/construct.h",
    "src/reader/spirv/entry_point_info.h",
    "src/reader/spirv/enum_converter.cc",
    "src/reader/spirv/enum_converter.h",
    "src/reader/spirv/fail_stream.h",
    "src/reader/spirv/function.cc",
    "src/reader/spirv/function.h",
    "src/reader/spirv/namer.cc",
    "src/reader/spirv/namer.h",
    "src/reader/spirv/parser.cc",
    "src/reader/spirv/parser.h",
    "src/reader/spirv/parser_impl.cc",
    "src/reader/spirv/parser_impl.h",
    "src/reader/spirv/usage.cc",
    "src/reader/spirv/usage.h",
  ]

  deps = [
    ":tint_core_enums_unified1",
    ":tint_core_tables_unified1",
    ":tint_language_header_cldebuginfo100",
    ":tint_language_header_debuginfo",
    "${tint_spirv_tools_dir}/:spvtools",
    "${tint_spirv_tools_dir}/:spvtools_opt",
    "${tint_spirv_tools_dir}/:spvtools_val",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint_spv_writer_src") {
  sources = [
    "src/writer/spirv/binary_writer.cc",
    "src/writer/spirv/binary_writer.h",
    "src/writer/spirv/builder.cc",
    "src/writer/spirv/builder.h",
    "src/writer/spirv/function.cc",
    "src/writer/spirv/function.h",
    "src/writer/spirv/generator.cc",
    "src/writer/spirv/generator.h",
    "src/writer/spirv/instruction.cc",
    "src/writer/spirv/instruction.h",
    "src/writer/spirv/operand.cc",
    "src/writer/spirv/operand.h",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint_wgsl_reader_src") {
  sources = [
    "src/reader/wgsl/lexer.cc",
    "src/reader/wgsl/lexer.h",
    "src/reader/wgsl/parser.cc",
    "src/reader/wgsl/parser.h",
    "src/reader/wgsl/parser_impl.cc",
    "src/reader/wgsl/parser_impl.h",
    "src/reader/wgsl/parser_impl_detail.h",
    "src/reader/wgsl/token.cc",
    "src/reader/wgsl/token.h",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint_wgsl_writer_src") {
  sources = [
    "src/writer/wgsl/generator.cc",
    "src/writer/wgsl/generator.h",
    "src/writer/wgsl/generator_impl.cc",
    "src/writer/wgsl/generator_impl.h",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint_msl_writer_src") {
  sources = [
    "src/writer/msl/generator.cc",
    "src/writer/msl/generator.h",
    "src/writer/msl/generator_impl.cc",
    "src/writer/msl/generator_impl.h",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint_hlsl_writer_src") {
  sources = [
    "src/writer/hlsl/generator.cc",
    "src/writer/hlsl/generator.h",
    "src/writer/hlsl/generator_impl.cc",
    "src/writer/hlsl/generator_impl.h",
  ]

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

  public_deps = [ ":libtint_core_src" ]
}

source_set("libtint") {
  deps = [ ":libtint_core_src" ]

  if (tint_build_spv_reader) {
    deps += [ ":libtint_spv_reader_src" ]
  }

  if (tint_build_spv_writer) {
    deps += [ ":libtint_spv_writer_src" ]
  }

  if (tint_build_wgsl_reader) {
    deps += [ ":libtint_wgsl_reader_src" ]
  }

  if (tint_build_wgsl_writer) {
    deps += [ ":libtint_wgsl_writer_src" ]
  }

  if (tint_build_msl_writer) {
    deps += [ ":libtint_msl_writer_src" ]
  }

  if (tint_build_hlsl_writer) {
    deps += [ ":libtint_hlsl_writer_src" ]
  }

  configs += [ ":tint_common_config" ]
  public_configs = [ ":tint_public_config" ]

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

###############################################################################
# Gtest Gmock - Handle building inside and outside of Chromium.
###############################################################################
# When building outside of Chromium we need to define our own targets for GTest
# and GMock. However when compiling inside of Chromium we need to reuse the
# existing targets, both because Chromium has a special harness for swarming
# and because otherwise the "gn check" fails.

if (!build_with_chromium) {
  # When we aren't in Chromium we define out own targets based on the location
  # of the googletest repo.
  config("gtest_config") {
    include_dirs = [
      "${tint_googletest_dir}/googletest",
      "${tint_googletest_dir}/googletest/include",
    ]
  }
  static_library("gtest") {
    testonly = true
    sources = [ "${tint_googletest_dir}/googletest/src/gtest-all.cc" ]
    public_configs = [ ":gtest_config" ]
  }

  config("gmock_config") {
    include_dirs = [
      "${tint_googletest_dir}/googlemock",
      "${tint_googletest_dir}/googlemock/include",
      "${tint_googletest_dir}/googletest/include",
    ]
  }

  static_library("gmock") {
    testonly = true
    sources = [
      "${tint_googletest_dir}/googlemock/src/gmock-all.cc",
      "${tint_googletest_dir}/googlemock/src/gmock_main.cc",
    ]
    public_configs = [ ":gmock_config" ]
  }

  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      ":gmock",
      ":gtest",
    ]
  }
} else {
  # When we are in Chromium we reuse its targets, and also add some deps that
  # are needed to launch the test in swarming mode.
  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      "//base",
      "//base/test:test_support",
      "//testing/gmock",
      "//testing/gtest",
      "//third_party/googletest:gmock",
    ]
  }
}

###############################################################################
# Wrapping of Chromium targets
###############################################################################
# These targets are separated because they are Chromium sources files that
# can't use the tint_internal config, otherwise Tint's warning flags get
# applied while compiling a bunch of Chromium's //base (via header inclusion)
if (build_with_chromium) {
  source_set("tint_unittests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/tint_unittests_main.cc" ]
  }
}

###############################################################################
# Tests - For libtint core and optional modules
###############################################################################
config("tint_unittests_config") {
  include_dirs = [
    "${tint_googletest_dir}/googlemock/include",
    "${tint_googletest_dir}/googletest/include",
  ]
}

source_set("tint_unittests_core_src") {
  sources = [
    "src/ast/access_decoration_test.cc",
    "src/ast/array_accessor_expression_test.cc",
    "src/ast/assignment_statement_test.cc",
    "src/ast/binary_expression_test.cc",
    "src/ast/binding_decoration_test.cc",
    "src/ast/bitcast_expression_test.cc",
    "src/ast/block_statement_test.cc",
    "src/ast/bool_literal_test.cc",
    "src/ast/break_statement_test.cc",
    "src/ast/builtin_decoration_test.cc",
    "src/ast/call_expression_test.cc",
    "src/ast/call_statement_test.cc",
    "src/ast/case_statement_test.cc",
    "src/ast/clone_context_test.cc",
    "src/ast/constant_id_decoration_test.cc",
    "src/ast/continue_statement_test.cc",
    "src/ast/decoration_test.cc",
    "src/ast/discard_statement_test.cc",
    "src/ast/else_statement_test.cc",
    "src/ast/expression_test.cc",
    "src/ast/fallthrough_statement_test.cc",
    "src/ast/float_literal_test.cc",
    "src/ast/function_test.cc",
    "src/ast/identifier_expression_test.cc",
    "src/ast/if_statement_test.cc",
    "src/ast/int_literal_test.cc",
    "src/ast/intrinsic_texture_helper_test.cc",
    "src/ast/intrinsic_texture_helper_test.h",
    "src/ast/location_decoration_test.cc",
    "src/ast/loop_statement_test.cc",
    "src/ast/member_accessor_expression_test.cc",
    "src/ast/module_clone_test.cc",
    "src/ast/module_test.cc",
    "src/ast/null_literal_test.cc",
    "src/ast/return_statement_test.cc",
    "src/ast/scalar_constructor_expression_test.cc",
    "src/ast/set_decoration_test.cc",
    "src/ast/sint_literal_test.cc",
    "src/ast/stage_decoration_test.cc",
    "src/ast/stride_decoration_test.cc",
    "src/ast/struct_member_offset_decoration_test.cc",
    "src/ast/struct_member_test.cc",
    "src/ast/struct_test.cc",
    "src/ast/switch_statement_test.cc",
    "src/ast/test_helper.h",
    "src/ast/traits_test.cc",
    "src/ast/type/access_control_type_test.cc",
    "src/ast/type/alias_type_test.cc",
    "src/ast/type/array_type_test.cc",
    "src/ast/type/bool_type_test.cc",
    "src/ast/type/depth_texture_type_test.cc",
    "src/ast/type/f32_type_test.cc",
    "src/ast/type/i32_type_test.cc",
    "src/ast/type/matrix_type_test.cc",
    "src/ast/type/multisampled_texture_type_test.cc",
    "src/ast/type/pointer_type_test.cc",
    "src/ast/type/sampled_texture_type_test.cc",
    "src/ast/type/sampler_type_test.cc",
    "src/ast/type/storage_texture_type_test.cc",
    "src/ast/type/struct_type_test.cc",
    "src/ast/type/u32_type_test.cc",
    "src/ast/type/vector_type_test.cc",
    "src/ast/type_constructor_expression_test.cc",
    "src/ast/type_manager_test.cc",
    "src/ast/uint_literal_test.cc",
    "src/ast/unary_op_expression_test.cc",
    "src/ast/variable_decl_statement_test.cc",
    "src/ast/variable_test.cc",
    "src/ast/workgroup_decoration_test.cc",
    "src/castable_test.cc",
    "src/demangler_test.cc",
    "src/diagnostic/formatter_test.cc",
    "src/diagnostic/printer_test.cc",
    "src/inspector/inspector_test.cc",
    "src/namer_test.cc",
    "src/scope_stack_test.cc",
    "src/symbol_table_test.cc",
    "src/symbol_test.cc",
    "src/transform/bound_array_accessors_test.cc",
    "src/transform/emit_vertex_point_size_test.cc",
    "src/transform/first_index_offset_test.cc",
    "src/transform/test_helper.h",
    "src/transform/vertex_pulling_test.cc",
    "src/type_determiner_test.cc",
    "src/validator/validator_control_block_test.cc",
    "src/validator/validator_function_test.cc",
    "src/validator/validator_test.cc",
    "src/writer/float_to_string_test.cc",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_core_src",
    ":libtint_wgsl_reader_src",
    ":libtint_wgsl_writer_src",
  ]
}

source_set("tint_unittests_spv_reader_src") {
  sources = [
    "src/reader/spirv/enum_converter_test.cc",
    "src/reader/spirv/fail_stream_test.cc",
    "src/reader/spirv/function_arithmetic_test.cc",
    "src/reader/spirv/function_bit_test.cc",
    "src/reader/spirv/function_call_test.cc",
    "src/reader/spirv/function_cfg_test.cc",
    "src/reader/spirv/function_composite_test.cc",
    "src/reader/spirv/function_conversion_test.cc",
    "src/reader/spirv/function_decl_test.cc",
    "src/reader/spirv/function_glsl_std_450_test.cc",
    "src/reader/spirv/function_logical_test.cc",
    "src/reader/spirv/function_memory_test.cc",
    "src/reader/spirv/function_misc_test.cc",
    "src/reader/spirv/function_var_test.cc",
    "src/reader/spirv/namer_test.cc",
    "src/reader/spirv/parser_impl_convert_member_decoration_test.cc",
    "src/reader/spirv/parser_impl_convert_type_test.cc",
    "src/reader/spirv/parser_impl_function_decl_test.cc",
    "src/reader/spirv/parser_impl_get_decorations_test.cc",
    "src/reader/spirv/parser_impl_handle_test.cc",
    "src/reader/spirv/parser_impl_import_test.cc",
    "src/reader/spirv/parser_impl_module_var_test.cc",
    "src/reader/spirv/parser_impl_named_types_test.cc",
    "src/reader/spirv/parser_impl_test.cc",
    "src/reader/spirv/parser_impl_user_name_test.cc",
    "src/reader/spirv/parser_test.cc",
    "src/reader/spirv/spirv_tools_helpers_test.cc",
    "src/reader/spirv/spirv_tools_helpers_test.h",
    "src/reader/spirv/usage_test.cc",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_spv_reader_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_spv_writer_src") {
  sources = [
    "src/writer/spirv/binary_writer_test.cc",
    "src/writer/spirv/builder_accessor_expression_test.cc",
    "src/writer/spirv/builder_assign_test.cc",
    "src/writer/spirv/builder_binary_expression_test.cc",
    "src/writer/spirv/builder_bitcast_expression_test.cc",
    "src/writer/spirv/builder_block_test.cc",
    "src/writer/spirv/builder_call_test.cc",
    "src/writer/spirv/builder_constructor_expression_test.cc",
    "src/writer/spirv/builder_discard_test.cc",
    "src/writer/spirv/builder_format_conversion_test.cc",
    "src/writer/spirv/builder_function_decoration_test.cc",
    "src/writer/spirv/builder_function_test.cc",
    "src/writer/spirv/builder_function_variable_test.cc",
    "src/writer/spirv/builder_global_variable_test.cc",
    "src/writer/spirv/builder_ident_expression_test.cc",
    "src/writer/spirv/builder_if_test.cc",
    "src/writer/spirv/builder_intrinsic_test.cc",
    "src/writer/spirv/builder_intrinsic_texture_test.cc",
    "src/writer/spirv/builder_literal_test.cc",
    "src/writer/spirv/builder_loop_test.cc",
    "src/writer/spirv/builder_return_test.cc",
    "src/writer/spirv/builder_switch_test.cc",
    "src/writer/spirv/builder_test.cc",
    "src/writer/spirv/builder_type_test.cc",
    "src/writer/spirv/builder_unary_op_expression_test.cc",
    "src/writer/spirv/instruction_test.cc",
    "src/writer/spirv/operand_test.cc",
    "src/writer/spirv/spv_dump.cc",
    "src/writer/spirv/spv_dump.h",
    "src/writer/spirv/test_helper.h",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_spv_writer_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_wgsl_reader_src") {
  sources = [
    "src/reader/wgsl/lexer_test.cc",
    "src/reader/wgsl/parser_impl_additive_expression_test.cc",
    "src/reader/wgsl/parser_impl_and_expression_test.cc",
    "src/reader/wgsl/parser_impl_argument_expression_list_test.cc",
    "src/reader/wgsl/parser_impl_assignment_stmt_test.cc",
    "src/reader/wgsl/parser_impl_body_stmt_test.cc",
    "src/reader/wgsl/parser_impl_break_stmt_test.cc",
    "src/reader/wgsl/parser_impl_call_stmt_test.cc",
    "src/reader/wgsl/parser_impl_case_body_test.cc",
    "src/reader/wgsl/parser_impl_const_expr_test.cc",
    "src/reader/wgsl/parser_impl_const_literal_test.cc",
    "src/reader/wgsl/parser_impl_continue_stmt_test.cc",
    "src/reader/wgsl/parser_impl_continuing_stmt_test.cc",
    "src/reader/wgsl/parser_impl_depth_texture_type_test.cc",
    "src/reader/wgsl/parser_impl_else_stmt_test.cc",
    "src/reader/wgsl/parser_impl_elseif_stmt_test.cc",
    "src/reader/wgsl/parser_impl_equality_expression_test.cc",
    "src/reader/wgsl/parser_impl_error_msg_test.cc",
    "src/reader/wgsl/parser_impl_error_resync_test.cc",
    "src/reader/wgsl/parser_impl_exclusive_or_expression_test.cc",
    "src/reader/wgsl/parser_impl_for_stmt_test.cc",
    "src/reader/wgsl/parser_impl_function_decl_test.cc",
    "src/reader/wgsl/parser_impl_function_decoration_list_test.cc",
    "src/reader/wgsl/parser_impl_function_decoration_test.cc",
    "src/reader/wgsl/parser_impl_function_header_test.cc",
    "src/reader/wgsl/parser_impl_function_type_decl_test.cc",
    "src/reader/wgsl/parser_impl_global_constant_decl_test.cc",
    "src/reader/wgsl/parser_impl_global_decl_test.cc",
    "src/reader/wgsl/parser_impl_global_variable_decl_test.cc",
    "src/reader/wgsl/parser_impl_if_stmt_test.cc",
    "src/reader/wgsl/parser_impl_image_storage_type_test.cc",
    "src/reader/wgsl/parser_impl_inclusive_or_expression_test.cc",
    "src/reader/wgsl/parser_impl_logical_and_expression_test.cc",
    "src/reader/wgsl/parser_impl_logical_or_expression_test.cc",
    "src/reader/wgsl/parser_impl_loop_stmt_test.cc",
    "src/reader/wgsl/parser_impl_multiplicative_expression_test.cc",
    "src/reader/wgsl/parser_impl_param_list_test.cc",
    "src/reader/wgsl/parser_impl_paren_rhs_stmt_test.cc",
    "src/reader/wgsl/parser_impl_pipeline_stage_test.cc",
    "src/reader/wgsl/parser_impl_postfix_expression_test.cc",
    "src/reader/wgsl/parser_impl_primary_expression_test.cc",
    "src/reader/wgsl/parser_impl_relational_expression_test.cc",
    "src/reader/wgsl/parser_impl_sampled_texture_type_test.cc",
    "src/reader/wgsl/parser_impl_sampler_type_test.cc",
    "src/reader/wgsl/parser_impl_shift_expression_test.cc",
    "src/reader/wgsl/parser_impl_statement_test.cc",
    "src/reader/wgsl/parser_impl_statements_test.cc",
    "src/reader/wgsl/parser_impl_storage_class_test.cc",
    "src/reader/wgsl/parser_impl_storage_texture_type_test.cc",
    "src/reader/wgsl/parser_impl_struct_body_decl_test.cc",
    "src/reader/wgsl/parser_impl_struct_decl_test.cc",
    "src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc",
    "src/reader/wgsl/parser_impl_struct_decoration_test.cc",
    "src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc",
    "src/reader/wgsl/parser_impl_struct_member_decoration_test.cc",
    "src/reader/wgsl/parser_impl_struct_member_test.cc",
    "src/reader/wgsl/parser_impl_switch_body_test.cc",
    "src/reader/wgsl/parser_impl_switch_stmt_test.cc",
    "src/reader/wgsl/parser_impl_test.cc",
    "src/reader/wgsl/parser_impl_test_helper.cc",
    "src/reader/wgsl/parser_impl_test_helper.h",
    "src/reader/wgsl/parser_impl_texture_sampler_types_test.cc",
    "src/reader/wgsl/parser_impl_type_alias_test.cc",
    "src/reader/wgsl/parser_impl_type_decl_test.cc",
    "src/reader/wgsl/parser_impl_unary_expression_test.cc",
    "src/reader/wgsl/parser_impl_variable_decl_test.cc",
    "src/reader/wgsl/parser_impl_variable_decoration_list_test.cc",
    "src/reader/wgsl/parser_impl_variable_decoration_test.cc",
    "src/reader/wgsl/parser_impl_variable_ident_decl_test.cc",
    "src/reader/wgsl/parser_impl_variable_stmt_test.cc",
    "src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc",
    "src/reader/wgsl/parser_test.cc",
    "src/reader/wgsl/token_test.cc",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_wgsl_reader_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_wgsl_writer_src") {
  sources = [
    "src/writer/wgsl/generator_impl_alias_type_test.cc",
    "src/writer/wgsl/generator_impl_array_accessor_test.cc",
    "src/writer/wgsl/generator_impl_assign_test.cc",
    "src/writer/wgsl/generator_impl_binary_test.cc",
    "src/writer/wgsl/generator_impl_bitcast_test.cc",
    "src/writer/wgsl/generator_impl_block_test.cc",
    "src/writer/wgsl/generator_impl_break_test.cc",
    "src/writer/wgsl/generator_impl_call_test.cc",
    "src/writer/wgsl/generator_impl_case_test.cc",
    "src/writer/wgsl/generator_impl_cast_test.cc",
    "src/writer/wgsl/generator_impl_constructor_test.cc",
    "src/writer/wgsl/generator_impl_continue_test.cc",
    "src/writer/wgsl/generator_impl_discard_test.cc",
    "src/writer/wgsl/generator_impl_fallthrough_test.cc",
    "src/writer/wgsl/generator_impl_function_test.cc",
    "src/writer/wgsl/generator_impl_identifier_test.cc",
    "src/writer/wgsl/generator_impl_if_test.cc",
    "src/writer/wgsl/generator_impl_loop_test.cc",
    "src/writer/wgsl/generator_impl_member_accessor_test.cc",
    "src/writer/wgsl/generator_impl_return_test.cc",
    "src/writer/wgsl/generator_impl_switch_test.cc",
    "src/writer/wgsl/generator_impl_test.cc",
    "src/writer/wgsl/generator_impl_type_test.cc",
    "src/writer/wgsl/generator_impl_unary_op_test.cc",
    "src/writer/wgsl/generator_impl_variable_decl_statement_test.cc",
    "src/writer/wgsl/generator_impl_variable_test.cc",
    "src/writer/wgsl/test_helper.h",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_wgsl_writer_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_msl_writer_src") {
  sources = [
    "src/writer/msl/generator_impl_alias_type_test.cc",
    "src/writer/msl/generator_impl_array_accessor_test.cc",
    "src/writer/msl/generator_impl_assign_test.cc",
    "src/writer/msl/generator_impl_binary_test.cc",
    "src/writer/msl/generator_impl_bitcast_test.cc",
    "src/writer/msl/generator_impl_block_test.cc",
    "src/writer/msl/generator_impl_break_test.cc",
    "src/writer/msl/generator_impl_call_test.cc",
    "src/writer/msl/generator_impl_case_test.cc",
    "src/writer/msl/generator_impl_cast_test.cc",
    "src/writer/msl/generator_impl_constructor_test.cc",
    "src/writer/msl/generator_impl_continue_test.cc",
    "src/writer/msl/generator_impl_discard_test.cc",
    "src/writer/msl/generator_impl_function_entry_point_data_test.cc",
    "src/writer/msl/generator_impl_function_test.cc",
    "src/writer/msl/generator_impl_identifier_test.cc",
    "src/writer/msl/generator_impl_if_test.cc",
    "src/writer/msl/generator_impl_import_test.cc",
    "src/writer/msl/generator_impl_intrinsic_test.cc",
    "src/writer/msl/generator_impl_intrinsic_texture_test.cc",
    "src/writer/msl/generator_impl_loop_test.cc",
    "src/writer/msl/generator_impl_member_accessor_test.cc",
    "src/writer/msl/generator_impl_module_constant_test.cc",
    "src/writer/msl/generator_impl_return_test.cc",
    "src/writer/msl/generator_impl_switch_test.cc",
    "src/writer/msl/generator_impl_test.cc",
    "src/writer/msl/generator_impl_type_test.cc",
    "src/writer/msl/generator_impl_unary_op_test.cc",
    "src/writer/msl/generator_impl_variable_decl_statement_test.cc",
    "src/writer/msl/test_helper.h",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_msl_writer_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_hlsl_writer_src") {
  sources = [
    "src/writer/hlsl/generator_impl_alias_type_test.cc",
    "src/writer/hlsl/generator_impl_array_accessor_test.cc",
    "src/writer/hlsl/generator_impl_assign_test.cc",
    "src/writer/hlsl/generator_impl_binary_test.cc",
    "src/writer/hlsl/generator_impl_bitcast_test.cc",
    "src/writer/hlsl/generator_impl_block_test.cc",
    "src/writer/hlsl/generator_impl_break_test.cc",
    "src/writer/hlsl/generator_impl_call_test.cc",
    "src/writer/hlsl/generator_impl_case_test.cc",
    "src/writer/hlsl/generator_impl_cast_test.cc",
    "src/writer/hlsl/generator_impl_constructor_test.cc",
    "src/writer/hlsl/generator_impl_continue_test.cc",
    "src/writer/hlsl/generator_impl_discard_test.cc",
    "src/writer/hlsl/generator_impl_function_entry_point_data_test.cc",
    "src/writer/hlsl/generator_impl_function_test.cc",
    "src/writer/hlsl/generator_impl_identifier_test.cc",
    "src/writer/hlsl/generator_impl_if_test.cc",
    "src/writer/hlsl/generator_impl_import_test.cc",
    "src/writer/hlsl/generator_impl_intrinsic_test.cc",
    "src/writer/hlsl/generator_impl_intrinsic_texture_test.cc",
    "src/writer/hlsl/generator_impl_loop_test.cc",
    "src/writer/hlsl/generator_impl_member_accessor_test.cc",
    "src/writer/hlsl/generator_impl_module_constant_test.cc",
    "src/writer/hlsl/generator_impl_return_test.cc",
    "src/writer/hlsl/generator_impl_switch_test.cc",
    "src/writer/hlsl/generator_impl_test.cc",
    "src/writer/hlsl/generator_impl_type_test.cc",
    "src/writer/hlsl/generator_impl_unary_op_test.cc",
    "src/writer/hlsl/generator_impl_variable_decl_statement_test.cc",
    "src/writer/hlsl/test_helper.h",
  ]

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true

  deps = [
    ":gmock_and_gtest",
    ":libtint_hlsl_writer_src",
    ":tint_unittests_core_src",
  ]
}

source_set("tint_unittests_src") {
  testonly = true

  deps = [ ":tint_unittests_core_src" ]

  if (tint_build_spv_reader) {
    deps += [ ":tint_unittests_spv_reader_src" ]
  }

  if (tint_build_spv_writer) {
    deps += [ ":tint_unittests_spv_writer_src" ]
  }

  if (tint_build_wgsl_reader) {
    deps += [ ":tint_unittests_wgsl_reader_src" ]
  }

  if (tint_build_wgsl_writer) {
    deps += [ ":tint_unittests_wgsl_writer_src" ]
  }

  if (tint_build_msl_writer) {
    deps += [ ":tint_unittests_msl_writer_src" ]
  }

  if (tint_build_hlsl_writer) {
    deps += [ ":tint_unittests_hlsl_writer_src" ]
  }

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

test("tint_unittests") {
  deps = [
    ":gmock_and_gtest",
    ":tint_unittests_src",
    "${tint_spirv_tools_dir}/:spvtools",
    "${tint_spirv_tools_dir}/:spvtools_opt",
    "${tint_spirv_tools_dir}/:spvtools_val",
  ]

  if (build_with_chromium) {
    deps += [ ":tint_unittests_main" ]
  }

  configs += [
    ":tint_common_config",
    ":tint_unittests_config",
  ]
  public_configs = [ ":tint_public_config" ]

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

  testonly = true
}

###############################################################################
# Fuzzers - Libfuzzer based fuzzing targets for Chromium
###############################################################################
# To run the fuzzers outside of Chromium, use the CMake based builds.

if (build_with_chromium) {
  import("//testing/libfuzzer/fuzzer_test.gni")

  # fuzzer_test doesn't have configs members, so need to define them in an empty
  # source_set.

  source_set("tint_fuzzer_common") {
    configs += [ ":tint_common_config" ]
    public_configs = [ ":tint_public_config" ]
  }

  if (tint_build_wgsl_reader) {
    fuzzer_test("tint_wgsl_reader_fuzzer") {
      sources = [ "fuzzers/tint_wgsl_reader_fuzzer.cc" ]
      deps = [
        ":libtint_wgsl_reader_src",
        ":tint_fuzzer_common",
      ]
    }
  }

  if (tint_build_spv_reader) {
    fuzzer_test("tint_spv_reader_fuzzer") {
      sources = [ "fuzzers/tint_spv_reader_fuzzer.cc" ]
      deps = [
        ":libtint_spv_reader_src",
        ":tint_fuzzer_common",
      ]
    }
  }

  if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
    fuzzer_test("tint_ast_clone_fuzzer") {
      sources = [ "fuzzers/tint_ast_clone_fuzzer.cc" ]
      deps = [
        ":libtint_wgsl_reader_src",
        ":libtint_wgsl_writer_src",
        ":tint_fuzzer_common",
      ]
    }
  }
}

###############################################################################
# Samples - Executables exposing command line functionality
###############################################################################

config("tint_config") {
  include_dirs = []
  if (tint_build_spv_reader || tint_build_spv_writer) {
    include_dirs += [ "${tint_spirv_tools_dir}/include/" ]
  }
}

executable("tint") {
  sources = [ "samples/main.cc" ]
  deps = [
    ":libtint",
    "${tint_spirv_tools_dir}/:spvtools",
    "${tint_spirv_tools_dir}/:spvtools_opt",
    "${tint_spirv_tools_dir}/:spvtools_val",
  ]

  configs += [
    ":tint_common_config",
    ":tint_config",
  ]
  public_configs = [ ":tint_public_config" ]

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