Support flat_hash_set in dawn/native
Bug: dawn:1513
Change-Id: Ica69476380b039039a42f57802e425ea72474f64
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/167121
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/src/dawn/native/BUILD.gn b/src/dawn/native/BUILD.gn
index 4069852..f57e377 100644
--- a/src/dawn/native/BUILD.gn
+++ b/src/dawn/native/BUILD.gn
@@ -62,6 +62,7 @@
public_deps = [ "$dawn_abseil_dir:absl" ]
} else {
public_deps = [
+ "${dawn_root}/third_party/gn/abseil-cpp:flat_hash_set",
"${dawn_root}/third_party/gn/abseil-cpp:str_format",
"${dawn_root}/third_party/gn/abseil-cpp:strings",
]
diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt
index e078602..31d2438 100644
--- a/src/dawn/native/CMakeLists.txt
+++ b/src/dawn/native/CMakeLists.txt
@@ -255,6 +255,7 @@
SPIRV-Tools-opt
absl_strings
absl_str_format_internal
+ absl_flat_hash_set
)
target_include_directories(dawn_native PRIVATE ${DAWN_ABSEIL_DIR})
diff --git a/src/dawn/native/Device.h b/src/dawn/native/Device.h
index ccdea13..b8e0592 100644
--- a/src/dawn/native/Device.h
+++ b/src/dawn/native/Device.h
@@ -30,10 +30,10 @@
#include <memory>
#include <string>
-#include <unordered_set>
#include <utility>
#include <vector>
+#include "absl/container/flat_hash_set.h"
#include "dawn/common/ContentLessObjectCache.h"
#include "dawn/common/Mutex.h"
#include "dawn/native/CacheKey.h"
@@ -592,7 +592,7 @@
struct DeprecationWarnings;
std::unique_ptr<DeprecationWarnings> mDeprecationWarnings;
- std::unordered_set<std::string> mWarnings;
+ absl::flat_hash_set<std::string> mWarnings;
State mState = State::BeingCreated;
diff --git a/third_party/gn/abseil-cpp/BUILD.gn b/third_party/gn/abseil-cpp/BUILD.gn
index c6ca4da..87b30d1 100644
--- a/third_party/gn/abseil-cpp/BUILD.gn
+++ b/third_party/gn/abseil-cpp/BUILD.gn
@@ -34,6 +34,7 @@
cflags = [
# Allow the use of enable_if()
"-Wno-gcc-compat",
+ "-Wno-unreachable-code-break",
]
}
@@ -52,14 +53,164 @@
}
#
+# absl/algorithm
+#
+
+absl_source_set("algorithm") {
+ public = [ "${dawn_abseil_dir}/absl/algorithm/algorithm.h" ]
+ deps = [ ":config" ]
+}
+
+#
# 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",
+ ":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/internal/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" ]
}
+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("prefetch") {
+ public = [
+ "${dawn_abseil_dir}/absl/base/internal/prefetch.h",
+ "${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" ]
@@ -67,6 +218,22 @@
visibility = [ ":*" ]
}
+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" ]
@@ -75,9 +242,315 @@
}
#
+# 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") {
+ public = [ "${dawn_abseil_dir}/absl/container/container.h" ]
+ deps = [
+ ":algorithm",
+ ":core_headers",
+ ":type_traits",
+ ]
+}
+
+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_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 = [
+ ":config",
+ ":hash",
+ ":string_view",
+ ":strings",
+ ]
+}
+
+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("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" ]
+ public = [ "${dawn_abseil_dir}/absl/debugging/internal/demangle.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",
@@ -88,6 +561,30 @@
}
#
+# 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
#
@@ -152,6 +649,17 @@
deps = [ ":raw_logging_internal" ]
}
+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 = [ ":str_format_internal" ]
@@ -181,3 +689,256 @@
":strings",
]
}
+
+#
+# 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 = [
+ "include/cctz/time_zone.h",
+ "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("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",
+ ]
+}