# 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("core_headers") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  public = [
    "attributes.h",
    "macros.h",
    "optimization.h",
    "port.h",
    "thread_annotations.h",
  ]
  deps = [
    ":config",
    ":dynamic_annotations",
  ]
}

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

  public = [
    "internal/hide_ptr.h",
    "internal/identity.h",
    "internal/inline_variable.h",
    "internal/invoke.h",
  ]
  visibility = []
  visibility += [ "../*" ]
}

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

  sources = [
    "internal/cycleclock.cc",
    "internal/raw_logging.cc",
    "internal/spinlock.cc",
    "internal/sysinfo.cc",
    "internal/thread_identity.cc",
    "internal/unscaledcycleclock.cc",
  ]
  public = [
    "call_once.h",
    "casts.h",
    "internal/atomic_hook.h",
    "internal/cycleclock.h",
    "internal/low_level_scheduling.h",
    "internal/per_thread_tls.h",
    "internal/raw_logging.h",
    "internal/spinlock.h",
    "internal/sysinfo.h",
    "internal/thread_identity.h",
    "internal/tsan_mutex_interface.h",
    "internal/unscaledcycleclock.h",
    "log_severity.h",
  ]
  deps = [
    ":base_internal",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":spinlock_wait",
  ]
}

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

  public = [
    "config.h",
    "policy_checks.h",
  ]
}

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

  sources = [
    "internal/low_level_alloc.cc",
  ]
  public = [
    "internal/direct_mmap.h",
    "internal/low_level_alloc.h",
  ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":spinlock_wait",
  ]
  visibility = []
  visibility += [ "../*" ]
}

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

  sources = [
    "dynamic_annotations.cc",
  ]
  public = [
    "dynamic_annotations.h",
  ]
}

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

  sources = [
    "internal/spinlock_akaros.inc",
    "internal/spinlock_posix.inc",
    "internal/spinlock_wait.cc",
    "internal/spinlock_win32.inc",
  ]
  public = [
    "internal/scheduling_mode.h",
    "internal/spinlock_wait.h",
  ]
  deps = [
    ":core_headers",
  ]
  visibility = []
  visibility += [ "../base:*" ]
}

source_set("endian") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  sources = [
    "internal/endian.h",
    "internal/unaligned_access.h",
  ]
  deps = [
    ":config",
    ":core_headers",
  ]
}

source_set("throw_delegate") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  sources = [
    "internal/throw_delegate.cc",
    "internal/throw_delegate.h",
  ]
  deps = [
    ":base",
    ":config",
    ":core_headers",
  ]
}

source_set("bits") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  public = [
    "internal/bits.h",
  ]
  public_deps = [
    ":core_headers",
  ]
}
