# Copyright 2021 The Dawn & Tint Authors
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
#    list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
#    contributors may be used to endorse or promote products derived from
#    this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import("../../../scripts/dawn_overrides_with_defaults.gni")

import("${dawn_root}/scripts/dawn_features.gni")

config("absl_config") {
  if (!build_with_chromium && is_clang) {
    cflags = [
      # Allow the use of enable_if()
      "-Wno-gcc-compat",
      "-Wno-unreachable-code-break",
    ]
  }

  include_dirs = [ "${dawn_abseil_dir}" ]
}

template("absl_source_set") {
  source_set(target_name) {
    forward_variables_from(invoker, "*")

    if (!defined(public_configs)) {
      public_configs = []
    }
    public_configs += [ ":absl_config" ]
  }
}

#
# absl/algorithm
#

absl_source_set("algorithm") {
  public = [ "${dawn_abseil_dir}/absl/algorithm/algorithm.h" ]
  deps = [ ":config" ]
}

absl_source_set("container") {
  public = [ "${dawn_abseil_dir}/absl/algorithm/container.h" ]
  deps = [
    ":algorithm",
    ":core_headers",
    ":nullability",
    ":type_traits",
  ]
}

#
# absl/base
#

absl_source_set("atomic_hook") {
  public = [ "${dawn_abseil_dir}/absl/base/internal/atomic_hook.h" ]
  public_deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("base") {
  sources = [
    "${dawn_abseil_dir}/absl/base/internal/cycleclock.cc",
    "${dawn_abseil_dir}/absl/base/internal/spinlock.cc",
    "${dawn_abseil_dir}/absl/base/internal/sysinfo.cc",
    "${dawn_abseil_dir}/absl/base/internal/thread_identity.cc",
    "${dawn_abseil_dir}/absl/base/internal/unscaledcycleclock.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/base/call_once.h",
    "${dawn_abseil_dir}/absl/base/casts.h",
    "${dawn_abseil_dir}/absl/base/internal/cycleclock.h",
    "${dawn_abseil_dir}/absl/base/internal/low_level_scheduling.h",
    "${dawn_abseil_dir}/absl/base/internal/per_thread_tls.h",
    "${dawn_abseil_dir}/absl/base/internal/spinlock.h",
    "${dawn_abseil_dir}/absl/base/internal/sysinfo.h",
    "${dawn_abseil_dir}/absl/base/internal/thread_identity.h",
    "${dawn_abseil_dir}/absl/base/internal/tsan_mutex_interface.h",
    "${dawn_abseil_dir}/absl/base/internal/unscaledcycleclock.h",
  ]

  public_deps = [
    ":atomic_hook",
    ":base_internal",
    ":config",
    ":core_headers",
    ":cycleclock_internal",
    ":dynamic_annotations",
    ":log_severity",
    ":nullability",
    ":raw_logging_internal",
    ":spinlock_wait",
    ":type_traits",
  ]
}

absl_source_set("base_internal") {
  public = [
    "${dawn_abseil_dir}/absl/base/internal/hide_ptr.h",
    "${dawn_abseil_dir}/absl/base/internal/identity.h",
    "${dawn_abseil_dir}/absl/base/internal/inline_variable.h",
    "${dawn_abseil_dir}/absl/base/internal/invoke.h",
    "${dawn_abseil_dir}/absl/base/internal/scheduling_mode.h",
  ]
  public_deps = [
    ":config",
    ":type_traits",
  ]
}

absl_source_set("config") {
  public = [
    "${dawn_abseil_dir}/absl/base/config.h",
    "${dawn_abseil_dir}/absl/base/options.h",
    "${dawn_abseil_dir}/absl/base/policy_checks.h",
  ]
}

absl_source_set("core_headers") {
  public = [
    "${dawn_abseil_dir}/absl/base/attributes.h",
    "${dawn_abseil_dir}/absl/base/const_init.h",
    "${dawn_abseil_dir}/absl/base/macros.h",
    "${dawn_abseil_dir}/absl/base/optimization.h",
    "${dawn_abseil_dir}/absl/base/port.h",
    "${dawn_abseil_dir}/absl/base/thread_annotations.h",
  ]
  public_deps = [ ":config" ]
}

absl_source_set("cycleclock_internal") {
  public = [
    "${dawn_abseil_dir}/absl/base/internal/cycleclock_config.h",
    "${dawn_abseil_dir}/absl/base/internal/unscaledcycleclock_config.h",
  ]
  deps = [
    ":base_internal",
    ":config",
  ]
}

absl_source_set("dynamic_annotations") {
  public = [ "${dawn_abseil_dir}/absl/base/dynamic_annotations.h" ]

  deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("endian") {
  public = [
    "${dawn_abseil_dir}/absl/base/internal/endian.h",
    "${dawn_abseil_dir}/absl/base/internal/unaligned_access.h",
  ]
  public_deps = [
    ":base",
    ":config",
    ":core_headers",
  ]
}

absl_source_set("errno_saver") {
  public = [ "${dawn_abseil_dir}/absl/base/internal/errno_saver.h" ]
  public_deps = [ ":config" ]
}

absl_source_set("log_severity") {
  sources = [ "${dawn_abseil_dir}/absl/base/log_severity.cc" ]
  public = [ "${dawn_abseil_dir}/absl/base/log_severity.h" ]
  public_deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("malloc_internal") {
  sources = [ "${dawn_abseil_dir}/absl/base/internal/low_level_alloc.cc" ]
  public = [
    "${dawn_abseil_dir}/absl/base/internal/direct_mmap.h",
    "${dawn_abseil_dir}/absl/base/internal/low_level_alloc.h",
  ]
  public_deps = [
    ":base",
    ":base_internal",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":raw_logging_internal",
  ]
}

absl_source_set("nullability") {
  sources = [ "${dawn_abseil_dir}/absl/base/internal/nullability_impl.h" ]
  public = [ "${dawn_abseil_dir}/absl/base/nullability.h" ]
  deps = [
    ":core_headers",
    ":type_traits",
  ]
}

absl_source_set("prefetch") {
  public = [ "${dawn_abseil_dir}/absl/base/prefetch.h" ]
  deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("raw_logging_internal") {
  sources = [ "${dawn_abseil_dir}/absl/base/internal/raw_logging.cc" ]
  public = [ "${dawn_abseil_dir}/absl/base/internal/raw_logging.h" ]
  public_deps = [
    ":atomic_hook",
    ":core_headers",
    ":errno_saver",
    ":log_severity",
  ]
}

absl_source_set("spinlock_wait") {
  sources = [
    "${dawn_abseil_dir}/absl/base/internal/spinlock_akaros.inc",
    "${dawn_abseil_dir}/absl/base/internal/spinlock_linux.inc",
    "${dawn_abseil_dir}/absl/base/internal/spinlock_posix.inc",
    "${dawn_abseil_dir}/absl/base/internal/spinlock_wait.cc",
    "${dawn_abseil_dir}/absl/base/internal/spinlock_win32.inc",
  ]
  public = [ "${dawn_abseil_dir}/absl/base/internal/spinlock_wait.h" ]
  deps = [
    ":base_internal",
    ":core_headers",
    ":errno_saver",
  ]
}

absl_source_set("throw_delegate") {
  sources = [ "${dawn_abseil_dir}/absl/base/internal/throw_delegate.cc" ]
  public = [ "${dawn_abseil_dir}/absl/base/internal/throw_delegate.h" ]
  public_deps = [ ":raw_logging_internal" ]
}

#
# absl/container
#

absl_source_set("common") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/common.h" ]
  deps = [
    ":optional",
    ":type_traits",
  ]
}

absl_source_set("common_policy_traits") {
  public =
      [ "${dawn_abseil_dir}/absl/container/internal/common_policy_traits.h" ]
  deps = [ ":type_traits" ]
}

absl_source_set("compressed_tuple") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/compressed_tuple.h" ]
  deps = [ ":utility" ]
}

absl_source_set("container_memory") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/container_memory.h" ]
  deps = [
    ":config",
    ":memory",
    ":type_traits",
    ":utility",
  ]
}

absl_source_set("fixed_array") {
  public = [ "${dawn_abseil_dir}/absl/container/fixed_array.h" ]
  deps = [
    ":algorithm",
    ":compressed_tuple",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":memory",
    ":throw_delegate",
  ]
}

absl_source_set("flat_hash_map") {
  public = [ "${dawn_abseil_dir}/absl/container/flat_hash_map.h" ]
  deps = [
    ":container",
    ":container_memory",
    ":core_headers",
    ":hash_function_defaults",
    ":memory",
    ":raw_hash_map",
  ]
}

absl_source_set("flat_hash_set") {
  public = [ "${dawn_abseil_dir}/absl/container/flat_hash_set.h" ]
  deps = [
    ":container",
    ":container_memory",
    ":core_headers",
    ":hash_function_defaults",
    ":memory",
    ":raw_hash_set",
  ]
}

absl_source_set("hash_function_defaults") {
  public =
      [ "${dawn_abseil_dir}/absl/container/internal/hash_function_defaults.h" ]
  deps = [
    ":common",
    ":config",
    ":hash",
    ":string_view",
    ":type_traits",
  ]
}

absl_source_set("hash_policy_traits") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/hash_policy_traits.h" ]
  deps = [
    ":common_policy_traits",
    ":type_traits",
  ]
}

absl_source_set("hashtable_debug_hooks") {
  public =
      [ "${dawn_abseil_dir}/absl/container/internal/hashtable_debug_hooks.h" ]
  deps = [ ":config" ]
}

absl_source_set("hashtablez_sampler") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/hashtablez_sampler.h" ]
  sources = [
    "${dawn_abseil_dir}/absl/container/internal/hashtablez_sampler.cc",
    "${dawn_abseil_dir}/absl/container/internal/hashtablez_sampler_force_weak_definition.cc",
  ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
    ":exponential_biased",
    ":memory",
    ":raw_logging_internal",
    ":sample_recorder",
    ":stacktrace",
    ":synchronization",
    ":time",
    ":utility",
  ]
}

absl_source_set("inlined_vector") {
  public = [ "${dawn_abseil_dir}/absl/container/inlined_vector.h" ]
  deps = [
    ":algorithm",
    ":core_headers",
    ":inlined_vector_internal",
    ":memory",
    ":throw_delegate",
    ":type_traits",
  ]
}

absl_source_set("inlined_vector_internal") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/inlined_vector.h" ]
  deps = [
    ":base_internal",
    ":compressed_tuple",
    ":config",
    ":core_headers",
    ":memory",
    ":span",
    ":type_traits",
  ]
}

absl_source_set("raw_hash_map") {
  public = [ "${dawn_abseil_dir}/absl/container/internal/raw_hash_map.h" ]
  deps = [
    ":container_memory",
    ":raw_hash_set",
    ":throw_delegate",
  ]
}

absl_source_set("raw_hash_set") {
  sources = [ "${dawn_abseil_dir}/absl/container/internal/raw_hash_set.cc" ]
  public = [ "${dawn_abseil_dir}/absl/container/internal/raw_hash_set.h" ]
  deps = [
    ":bits",
    ":common",
    ":compressed_tuple",
    ":config",
    ":container_memory",
    ":core_headers",
    ":dynamic_annotations",
    ":endian",
    ":hash",
    ":hash_policy_traits",
    ":hashtable_debug_hooks",
    ":hashtablez_sampler",
    ":memory",
    ":prefetch",
    ":raw_logging_internal",
    ":type_traits",
    ":utility",
  ]
}

#
# absl/debugging
#

absl_source_set("debugging_internal") {
  sources = [
    "${dawn_abseil_dir}/absl/debugging/internal/address_is_readable.cc",
    "${dawn_abseil_dir}/absl/debugging/internal/elf_mem_image.cc",
    "${dawn_abseil_dir}/absl/debugging/internal/vdso_support.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/debugging/internal/address_is_readable.h",
    "${dawn_abseil_dir}/absl/debugging/internal/elf_mem_image.h",
    "${dawn_abseil_dir}/absl/debugging/internal/vdso_support.h",
  ]
  deps = [
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":errno_saver",
    ":raw_logging_internal",
  ]
}

absl_source_set("demangle_internal") {
  sources = [
    "${dawn_abseil_dir}/absl/debugging/internal/demangle.cc",
    "${dawn_abseil_dir}/absl/debugging/internal/demangle_rust.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/debugging/internal/demangle.h",
    "${dawn_abseil_dir}/absl/debugging/internal/demangle_rust.h",
  ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
  ]
}

absl_source_set("stacktrace") {
  sources = [
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_aarch64-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_arm-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_config.h",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_emscripten-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_generic-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_powerpc-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_riscv-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_unimplemented-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_win32-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/internal/stacktrace_x86-inl.inc",
    "${dawn_abseil_dir}/absl/debugging/stacktrace.cc",
  ]
  public = [ "${dawn_abseil_dir}/absl/debugging/stacktrace.h" ]
  deps = [
    ":config",
    ":core_headers",
    ":debugging_internal",
    ":dynamic_annotations",
    ":raw_logging_internal",
  ]
}

#
# absl/functional
#

absl_source_set("any_invocable") {
  sources = [ "${dawn_abseil_dir}/absl/functional/internal/any_invocable.h" ]
  public = [ "${dawn_abseil_dir}/absl/functional/any_invocable.h" ]
  deps = [
    ":base_internal",
    ":config",
    ":core_headers",
    ":type_traits",
    ":utility",
  ]
}

absl_source_set("function_ref") {
  sources = [ "${dawn_abseil_dir}/absl/functional/internal/function_ref.h" ]
  public = [ "${dawn_abseil_dir}/absl/functional/function_ref.h" ]
  deps = [
    ":any_invocable",
    ":base_internal",
    ":core_headers",
    ":type_traits",
  ]
}

#
# absl/hash
#

absl_source_set("city") {
  public = [ "${dawn_abseil_dir}/absl/hash/internal/city.h" ]
  sources = [ "${dawn_abseil_dir}/absl/hash/internal/city.cc" ]
  deps = [
    ":config",
    ":core_headers",
    ":endian",
  ]
}

absl_source_set("hash") {
  sources = [
    "${dawn_abseil_dir}/absl/hash/internal/hash.cc",
    "${dawn_abseil_dir}/absl/hash/internal/hash.h",
  ]
  public = [ "${dawn_abseil_dir}/absl/hash/hash.h" ]
  deps = [
    ":bits",
    ":city",
    ":config",
    ":core_headers",
    ":endian",
    ":fixed_array",
    ":function_ref",
    ":int128",
    ":low_level_hash",
    ":optional",
    ":string_view",
    ":type_traits",
    ":utility",
    ":variant",
  ]
}

absl_source_set("low_level_hash") {
  public = [ "${dawn_abseil_dir}/absl/hash/internal/low_level_hash.h" ]
  sources = [ "${dawn_abseil_dir}/absl/hash/internal/low_level_hash.cc" ]
  deps = [
    ":config",
    ":endian",
    ":int128",
    ":prefetch",
  ]
}

#
# absl/memory
#

absl_source_set("memory") {
  public = [ "${dawn_abseil_dir}/absl/memory/memory.h" ]
  deps = [
    ":core_headers",
    ":type_traits",
  ]
}

#
# absl/meta
#

absl_source_set("type_traits") {
  public = [ "${dawn_abseil_dir}/absl/meta/type_traits.h" ]
  deps = [
    ":config",
    ":core_headers",
  ]
}

#
# absl/numeric
#

absl_source_set("bits") {
  public = [
    "${dawn_abseil_dir}/absl/numeric/bits.h",
    "${dawn_abseil_dir}/absl/numeric/internal/bits.h",
  ]
  deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("int128") {
  sources = [
    "${dawn_abseil_dir}/absl/numeric/int128.cc",
    "${dawn_abseil_dir}/absl/numeric/int128_have_intrinsic.inc",
    "${dawn_abseil_dir}/absl/numeric/int128_no_intrinsic.inc",
  ]
  public = [ "${dawn_abseil_dir}/absl/numeric/int128.h" ]
  deps = [
    ":bits",
    ":config",
    ":core_headers",
  ]
}

#
# absl/profiling
#

absl_source_set("exponential_biased") {
  sources =
      [ "${dawn_abseil_dir}/absl/profiling/internal/exponential_biased.cc" ]
  public = [ "${dawn_abseil_dir}/absl/profiling/internal/exponential_biased.h" ]
  deps = [
    ":config",
    ":core_headers",
  ]
}

absl_source_set("sample_recorder") {
  public = [ "${dawn_abseil_dir}/absl/profiling/internal/sample_recorder.h" ]
  deps = [
    ":config",
    ":core_headers",
    ":synchronization",
    ":time",
  ]
}

#
# absl/strings
#

absl_source_set("strings") {
  sources = [
    "${dawn_abseil_dir}/absl/strings/ascii.cc",
    "${dawn_abseil_dir}/absl/strings/charconv.cc",
    "${dawn_abseil_dir}/absl/strings/escaping.cc",
    "${dawn_abseil_dir}/absl/strings/internal/charconv_bigint.cc",
    "${dawn_abseil_dir}/absl/strings/internal/charconv_bigint.h",
    "${dawn_abseil_dir}/absl/strings/internal/charconv_parse.cc",
    "${dawn_abseil_dir}/absl/strings/internal/charconv_parse.h",
    "${dawn_abseil_dir}/absl/strings/internal/memutil.cc",
    "${dawn_abseil_dir}/absl/strings/internal/memutil.h",
    "${dawn_abseil_dir}/absl/strings/internal/stl_type_traits.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_join_internal.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_split_internal.h",
    "${dawn_abseil_dir}/absl/strings/match.cc",
    "${dawn_abseil_dir}/absl/strings/numbers.cc",
    "${dawn_abseil_dir}/absl/strings/str_cat.cc",
    "${dawn_abseil_dir}/absl/strings/str_replace.cc",
    "${dawn_abseil_dir}/absl/strings/str_split.cc",
    "${dawn_abseil_dir}/absl/strings/substitute.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/strings/ascii.h",
    "${dawn_abseil_dir}/absl/strings/charconv.h",
    "${dawn_abseil_dir}/absl/strings/escaping.h",
    "${dawn_abseil_dir}/absl/strings/internal/string_constant.h",
    "${dawn_abseil_dir}/absl/strings/match.h",
    "${dawn_abseil_dir}/absl/strings/numbers.h",
    "${dawn_abseil_dir}/absl/strings/str_cat.h",
    "${dawn_abseil_dir}/absl/strings/str_join.h",
    "${dawn_abseil_dir}/absl/strings/str_replace.h",
    "${dawn_abseil_dir}/absl/strings/str_split.h",
    "${dawn_abseil_dir}/absl/strings/strip.h",
    "${dawn_abseil_dir}/absl/strings/substitute.h",
  ]
  deps = [
    ":base",
    ":bits",
    ":endian",
    ":int128",
    ":raw_logging_internal",
    ":string_view",
    ":strings_internal",
    ":throw_delegate",
    ":type_traits",
  ]
}

absl_source_set("strings_internal") {
  sources = [
    "${dawn_abseil_dir}/absl/strings/internal/escaping.cc",
    "${dawn_abseil_dir}/absl/strings/internal/ostringstream.cc",
    "${dawn_abseil_dir}/absl/strings/internal/utf8.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/strings/internal/escaping.h",
    "${dawn_abseil_dir}/absl/strings/internal/ostringstream.h",
    "${dawn_abseil_dir}/absl/strings/internal/resize_uninitialized.h",
    "${dawn_abseil_dir}/absl/strings/internal/utf8.h",
  ]
  deps = [
    ":endian",
    ":raw_logging_internal",
    ":type_traits",
  ]
}

absl_source_set("string_view") {
  sources = [ "${dawn_abseil_dir}/absl/strings/string_view.cc" ]
  public = [ "${dawn_abseil_dir}/absl/strings/string_view.h" ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
    ":throw_delegate",
  ]
}

absl_source_set("str_format") {
  public = [ "${dawn_abseil_dir}/absl/strings/str_format.h" ]
  deps = [
    ":core_headers",
    ":nullability",
    ":span",
    ":str_format_internal",
    ":string_view",
  ]
}

absl_source_set("str_format_internal") {
  sources = [
    "${dawn_abseil_dir}/absl/strings/internal/str_format/arg.cc",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/bind.cc",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/extension.cc",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/float_conversion.cc",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/output.cc",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/parser.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/strings/internal/str_format/arg.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/bind.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/checker.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/extension.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/float_conversion.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/output.h",
    "${dawn_abseil_dir}/absl/strings/internal/str_format/parser.h",
  ]
  deps = [
    ":bits",
    ":config",
    ":core_headers",
    ":fixed_array",
    ":function_ref",
    ":inlined_vector",
    ":int128",
    ":span",
    ":string_view",
    ":strings",
    ":type_traits",
    ":utility",
  ]
}

#
# absl/synchronization
#

absl_source_set("graphcycles_internal") {
  sources =
      [ "${dawn_abseil_dir}/absl/synchronization/internal/graphcycles.cc" ]
  public = [ "${dawn_abseil_dir}/absl/synchronization/internal/graphcycles.h" ]
  deps = [
    ":base",
    ":base_internal",
    ":config",
    ":core_headers",
    ":malloc_internal",
    ":raw_logging_internal",
  ]
  visibility = [ ":*" ]
}

absl_source_set("kernel_timeout_internal") {
  sources =
      [ "${dawn_abseil_dir}/absl/synchronization/internal/kernel_timeout.cc" ]
  public =
      [ "${dawn_abseil_dir}/absl/synchronization/internal/kernel_timeout.h" ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
    ":raw_logging_internal",
    ":time",
  ]
}

absl_source_set("symbolize") {
  sources = [
    "${dawn_abseil_dir}/absl/debugging/symbolize.cc",
    "${dawn_abseil_dir}/absl/debugging/symbolize_darwin.inc",
    "${dawn_abseil_dir}/absl/debugging/symbolize_elf.inc",
    "${dawn_abseil_dir}/absl/debugging/symbolize_emscripten.inc",
    "${dawn_abseil_dir}/absl/debugging/symbolize_unimplemented.inc",
    "${dawn_abseil_dir}/absl/debugging/symbolize_win32.inc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/debugging/internal/symbolize.h",
    "${dawn_abseil_dir}/absl/debugging/symbolize.h",
  ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
    ":debugging_internal",
    ":demangle_internal",
    ":dynamic_annotations",
    ":malloc_internal",
    ":raw_logging_internal",
    ":string_view",
    ":strings",
  ]
}

absl_source_set("synchronization") {
  sources = [
    "${dawn_abseil_dir}/absl/synchronization/barrier.cc",
    "${dawn_abseil_dir}/absl/synchronization/blocking_counter.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/create_thread_identity.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/futex_waiter.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/per_thread_sem.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/pthread_waiter.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/sem_waiter.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/stdcpp_waiter.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/waiter_base.cc",
    "${dawn_abseil_dir}/absl/synchronization/internal/win32_waiter.cc",
    "${dawn_abseil_dir}/absl/synchronization/mutex.cc",
    "${dawn_abseil_dir}/absl/synchronization/notification.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/synchronization/barrier.h",
    "${dawn_abseil_dir}/absl/synchronization/blocking_counter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/create_thread_identity.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/futex.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/futex_waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/per_thread_sem.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/pthread_waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/sem_waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/stdcpp_waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/waiter_base.h",
    "${dawn_abseil_dir}/absl/synchronization/internal/win32_waiter.h",
    "${dawn_abseil_dir}/absl/synchronization/mutex.h",
    "${dawn_abseil_dir}/absl/synchronization/notification.h",
  ]
  deps = [
    ":atomic_hook",
    ":base",
    ":base_internal",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":graphcycles_internal",
    ":kernel_timeout_internal",
    ":malloc_internal",
    ":raw_logging_internal",
    ":stacktrace",
    ":symbolize",
    ":time",
  ]
}

#
# absl/time
#

absl_source_set("civil_time") {
  sources =
      [ "${dawn_abseil_dir}/absl/time/internal/cctz/src/civil_time_detail.cc" ]
  public = [
    "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/civil_time.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/civil_time_detail.h",
  ]
  deps = [ ":config" ]
}

absl_source_set("time") {
  sources = [
    "${dawn_abseil_dir}/absl/time/civil_time.cc",
    "${dawn_abseil_dir}/absl/time/clock.cc",
    "${dawn_abseil_dir}/absl/time/duration.cc",
    "${dawn_abseil_dir}/absl/time/format.cc",
    "${dawn_abseil_dir}/absl/time/internal/get_current_time_chrono.inc",
    "${dawn_abseil_dir}/absl/time/internal/get_current_time_posix.inc",
    "${dawn_abseil_dir}/absl/time/time.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/time/civil_time.h",
    "${dawn_abseil_dir}/absl/time/clock.h",
    "${dawn_abseil_dir}/absl/time/time.h",
  ]
  deps = [
    ":base",
    ":civil_time",
    ":config",
    ":core_headers",
    ":int128",
    ":optional",
    ":raw_logging_internal",
    ":string_view",
    ":strings",
    ":time_zone",
  ]
}

absl_source_set("time_zone") {
  sources = [
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_fixed.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_fixed.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_format.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_if.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_if.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_impl.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_impl.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_info.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_info.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_libc.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_libc.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_lookup.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_posix.cc",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/time_zone_posix.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/tzfile.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/src/zone_info_source.cc",
  ]
  public = [
    "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/time_zone.h",
    "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/zone_info_source.h",
  ]
  if (is_apple) {
    frameworks = [ "Foundation.framework" ]
  }
  deps = [
    ":civil_time",
    ":config",
  ]
  if (is_fuchsia) {
    # Remove when fixed in Fuchsia SDK:
    # https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=127301
    cflags_cc = [ "-Wno-sign-conversion" ]
    deps += [
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.intl:fuchsia.intl_hlcpp",
      "//third_party/fuchsia-sdk/sdk/pkg/async",
      "//third_party/fuchsia-sdk/sdk/pkg/async-loop-cpp",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
      "//third_party/fuchsia-sdk/sdk/pkg/zx",
    ]
  }
}

#
# absl/types
#

absl_source_set("bad_optional_access") {
  sources = [ "${dawn_abseil_dir}/absl/types/bad_optional_access.cc" ]
  public = [ "${dawn_abseil_dir}/absl/types/bad_optional_access.h" ]
  public_deps = [ ":config" ]
  deps = [ ":raw_logging_internal" ]
}

absl_source_set("bad_variant_access") {
  sources = [ "${dawn_abseil_dir}/absl/types/bad_variant_access.cc" ]
  public = [ "${dawn_abseil_dir}/absl/types/bad_variant_access.h" ]
  public_deps = [ ":config" ]
  deps = [ ":raw_logging_internal" ]
}

absl_source_set("optional") {
  sources = [ "${dawn_abseil_dir}/absl/types/internal/optional.h" ]
  public = [ "${dawn_abseil_dir}/absl/types/internal/optional.h" ]
  public_deps = [
    ":bad_optional_access",
    ":base_internal",
    ":config",
    ":core_headers",
    ":memory",
    ":type_traits",
    ":utility",
  ]
}

absl_source_set("span") {
  public = [ "${dawn_abseil_dir}/absl/types/span.h" ]
  sources = [ "${dawn_abseil_dir}/absl/types/internal/span.h" ]
  public_deps = [
    ":algorithm",
    ":core_headers",
    ":nullability",
    ":throw_delegate",
    ":type_traits",
  ]
}

absl_source_set("variant") {
  sources = [ "${dawn_abseil_dir}/absl/types/internal/variant.h" ]
  public = [ "${dawn_abseil_dir}/absl/types/variant.h" ]
  public_deps = [
    ":bad_variant_access",
    ":base_internal",
    ":config",
    ":core_headers",
    ":type_traits",
    ":utility",
  ]
}

#
# absl/utility
#

absl_source_set("utility") {
  public = [ "${dawn_abseil_dir}/absl/utility/utility.h" ]
  deps = [
    ":base_internal",
    ":config",
    ":type_traits",
  ]
}
