summaryrefslogtreecommitdiff
path: root/absl/synchronization/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'absl/synchronization/BUILD.bazel')
-rw-r--r--absl/synchronization/BUILD.bazel178
1 files changed, 178 insertions, 0 deletions
diff --git a/absl/synchronization/BUILD.bazel b/absl/synchronization/BUILD.bazel
new file mode 100644
index 00000000..bddd2eca
--- /dev/null
+++ b/absl/synchronization/BUILD.bazel
@@ -0,0 +1,178 @@
+#
+# Copyright 2017 The Abseil 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.
+#
+
+load(
+ "//absl:copts.bzl",
+ "ABSL_DEFAULT_COPTS",
+ "ABSL_TEST_COPTS",
+)
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+# Internal data structure for efficiently detecting mutex dependency cycles
+cc_library(
+ name = "graphcycles_internal",
+ srcs = [
+ "internal/graphcycles.cc",
+ ],
+ hdrs = [
+ "internal/graphcycles.h",
+ ],
+ copts = ABSL_DEFAULT_COPTS,
+ deps = [
+ "//absl/base",
+ "//absl/base:core_headers",
+ "//absl/base:malloc_internal",
+ ],
+)
+
+cc_library(
+ name = "synchronization",
+ srcs = [
+ "barrier.cc",
+ "blocking_counter.cc",
+ "internal/create_thread_identity.cc",
+ "internal/per_thread_sem.cc",
+ "internal/waiter.cc",
+ "notification.cc",
+ ] + select({
+ "//conditions:default": ["mutex.cc"],
+ }),
+ hdrs = [
+ "barrier.h",
+ "blocking_counter.h",
+ "internal/create_thread_identity.h",
+ "internal/kernel_timeout.h",
+ "internal/mutex_nonprod.inc",
+ "internal/per_thread_sem.h",
+ "internal/waiter.h",
+ "mutex.h",
+ "notification.h",
+ ],
+ copts = ABSL_DEFAULT_COPTS,
+ deps = [
+ ":graphcycles_internal",
+ "//absl/base",
+ "//absl/base:base_internal",
+ "//absl/base:config",
+ "//absl/base:core_headers",
+ "//absl/base:dynamic_annotations",
+ "//absl/base:malloc_extension",
+ "//absl/base:malloc_internal",
+ "//absl/debugging:stacktrace",
+ "//absl/time",
+ ],
+)
+
+cc_test(
+ name = "blocking_counter_test",
+ size = "small",
+ srcs = ["blocking_counter_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":synchronization",
+ "//absl/time",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "graphcycles_test",
+ size = "medium",
+ srcs = ["internal/graphcycles_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":graphcycles_internal",
+ "//absl/base",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_library(
+ name = "thread_pool",
+ testonly = 1,
+ hdrs = ["internal/thread_pool.h"],
+ deps = [
+ ":synchronization",
+ "//absl/base:core_headers",
+ ],
+)
+
+cc_test(
+ name = "mutex_test",
+ size = "large",
+ timeout = "moderate",
+ srcs = ["mutex_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ tags = [
+ "no_test_loonix", # Too slow.
+ ],
+ deps = [
+ ":synchronization",
+ ":thread_pool",
+ "//absl/base",
+ "//absl/base:core_headers",
+ "//absl/memory",
+ "//absl/time",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "notification_test",
+ size = "small",
+ srcs = ["notification_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":synchronization",
+ "//absl/time",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_library(
+ name = "per_thread_sem_test_common",
+ testonly = 1,
+ srcs = ["internal/per_thread_sem_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":synchronization",
+ "//absl/base",
+ "//absl/base:malloc_extension",
+ "//absl/strings",
+ "//absl/time",
+ "@com_google_googletest//:gtest",
+ ],
+ alwayslink = 1,
+)
+
+cc_test(
+ name = "per_thread_sem_test",
+ size = "medium",
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":per_thread_sem_test_common",
+ ":synchronization",
+ "//absl/base",
+ "//absl/base:malloc_extension",
+ "//absl/strings",
+ "//absl/time",
+ "@com_google_googletest//:gtest_main",
+ ],
+)