# 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",
  ]
}

config("tint_config") {
  include_dirs = []
  if (tint_build_spv_reader || tint_build_spv_writer) {
    include_dirs += [ "${tint_spirv_tools_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",
    "src/writer/msl/namer.cc",
    "src/writer/msl/namer.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",
    "src/writer/hlsl/namer.cc",
    "src/writer/hlsl/namer.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") {
  public_deps = [ ":libtint_core_src" ]

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

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

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

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

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

  if (tint_build_hlsl_writer) {
    public_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/namer_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/namer_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") {
    public_configs = [
      ":tint_config",
      ":tint_common_config",
      ":tint_public_config",
    ]

    public_deps = [ ":libtint" ]

    sources = [
      "fuzzers/tint_common_fuzzer.cc",
      "fuzzers/tint_common_fuzzer.h",
    ]
  }

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

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

  if (tint_build_wgsl_reader && tint_build_spv_writer) {
    fuzzer_test("tint_wgsl_reader_spv_writer_fuzzer") {
      sources = [ "fuzzers/tint_wgsl_reader_spv_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }

    fuzzer_test("tint_all_transforms_fuzzer") {
      sources = [ "fuzzers/tint_all_transforms_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }

    fuzzer_test("tint_bound_array_accessors_fuzzer") {
      sources = [ "fuzzers/tint_bound_array_accessors_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }

    fuzzer_test("tint_emit_vertex_point_size_fuzzer") {
      sources = [ "fuzzers/tint_emit_vertex_point_size_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }

    fuzzer_test("tint_first_index_offset_fuzzer") {
      sources = [ "fuzzers/tint_first_index_offset_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }

    fuzzer_test("tint_inspector_fuzzer") {
      sources = [ "fuzzers/tint_inspector_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

  if (tint_build_wgsl_reader && tint_build_hlsl_writer) {
    fuzzer_test("tint_wgsl_reader_hlsl_writer_fuzzer") {
      sources = [ "fuzzers/tint_wgsl_reader_hlsl_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

  if (tint_build_wgsl_reader && tint_build_msl_writer) {
    fuzzer_test("tint_wgsl_reader_msl_writer_fuzzer") {
      sources = [ "fuzzers/tint_wgsl_reader_msl_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

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

  if (tint_build_spv_reader && tint_build_wgsl_writer) {
    fuzzer_test("tint_spv_reader_wgsl_writer_fuzzer") {
      sources = [ "fuzzers/tint_spv_reader_wgsl_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

  if (tint_build_spv_reader && tint_build_spv_writer) {
    fuzzer_test("tint_spv_reader_spv_writer_fuzzer") {
      sources = [ "fuzzers/tint_spv_reader_spv_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

  if (tint_build_spv_reader && tint_build_hlsl_writer) {
    fuzzer_test("tint_spv_reader_hlsl_writer_fuzzer") {
      sources = [ "fuzzers/tint_spv_reader_hlsl_writer_fuzzer.cc" ]
      deps = [ ":tint_fuzzer_common" ]
    }
  }

  if (tint_build_spv_reader && tint_build_msl_writer) {
    fuzzer_test("tint_spv_reader_msl_writer_fuzzer") {
      sources = [ "fuzzers/tint_spv_reader_msl_writer_fuzzer.cc" ]
      deps = [ ":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 = [ ":tint_fuzzer_common" ]
    }
  }
}

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

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" ]
  }
}
