# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/abseil-cpp/absl.gni")

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

absl_source_set("kernel_timeout_internal") {
  public = [ "internal/kernel_timeout.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/time",
  ]
  visibility = [ ":*" ]
}

absl_source_set("synchronization") {
  sources = [
    "barrier.cc",
    "blocking_counter.cc",
    "internal/create_thread_identity.cc",
    "internal/per_thread_sem.cc",
    "internal/waiter.cc",
    "mutex.cc",
    "notification.cc",
  ]
  public = [
    "barrier.h",
    "blocking_counter.h",
    "internal/create_thread_identity.h",
    "internal/futex.h",
    "internal/per_thread_sem.h",
    "internal/waiter.h",
    "mutex.h",
    "notification.h",
  ]
  deps = [
    ":graphcycles_internal",
    ":kernel_timeout_internal",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:atomic_hook",
    "//third_party/abseil-cpp/absl/base:base_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
    "//third_party/abseil-cpp/absl/base:malloc_internal",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/debugging:stacktrace",
    "//third_party/abseil-cpp/absl/debugging:symbolize",
    "//third_party/abseil-cpp/absl/time",
  ]
}

absl_source_set("thread_pool") {
  testonly = true
  public = [ "internal/thread_pool.h" ]
  deps = [
    ":synchronization",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
  visibility = [ "//third_party/abseil-cpp/absl/*" ]
}

absl_source_set("per_thread_sem_test_common") {
  testonly = true
  sources = [ "internal/per_thread_sem_test.cc" ]
  deps = [
    ":synchronization",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/time",
    "//third_party/googletest:gtest",
  ]
}
