# 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 = [
  "$cobalt_root/*",
  "//third_party/abseil-cpp/*",
  "//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",
  ]
}
