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

# Please do not add more entries to this list. We plan to remove
# abseil-cpp from the Fuchsia platform source tree once cobalt
# moves out-of-tree.
visibility = [
  "//third_party/abseil-cpp/*",
  "$cobalt_root/*",
  "//third_party/tink/*",
]

source_set("graphcycles_internal") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  sources = [
    "internal/graphcycles.cc",
  ]
  public = [
    "internal/graphcycles.h",
  ]
  deps = [
    "../base",
    "../base:base_internal",
    "../base:core_headers",
    "../base:malloc_internal",
  ]
  visibility = []
  visibility += [ "../*" ]
}

source_set("synchronization") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  sources = [
    "barrier.cc",
    "barrier.h",
    "blocking_counter.cc",
    "blocking_counter.h",
    "internal/create_thread_identity.cc",
    "internal/create_thread_identity.h",
    "internal/kernel_timeout.h",
    "internal/mutex_nonprod.inc",
    "internal/per_thread_sem.cc",
    "internal/per_thread_sem.h",
    "internal/waiter.cc",
    "internal/waiter.h",
    "mutex.cc",
    "mutex.h",
    "notification.cc",
    "notification.h",
  ]
  deps = [
    ":graphcycles_internal",
    "../base",
    "../base:base_internal",
    "../base:config",
    "../base:core_headers",
    "../base:dynamic_annotations",
    "../base:malloc_internal",
    "../debugging:stacktrace",
    "../debugging:symbolize",
    "../time",
  ]
}
