# 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/gvisor_syscall_tests/*",
  "//third_party/tink/*",
]

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

  public = [ "internal/atomic_hook.h" ]

  deps = [
    ":config",
    ":core_headers",
  ]
}

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

  public = [ "internal/errno_saver.h" ]

  deps = [ ":config" ]
}

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

  sources = [ "log_severity.cc" ]
  public = [ "log_severity.h" ]

  deps = [
    ":config",
    ":core_headers",
  ]
}

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

  sources = [ "internal/raw_logging.cc" ]
  public = [ "internal/raw_logging.h" ]

  deps = [
    ":atomic_hook",
    ":config",
    ":core_headers",
    ":log_severity",
  ]
}

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

  sources = [
    "internal/spinlock_akaros.inc",
    "internal/spinlock_linux.inc",
    "internal/spinlock_posix.inc",
    "internal/spinlock_wait.cc",
    "internal/spinlock_win32.inc",
  ]
  public = [ "internal/spinlock_wait.h" ]

  deps = [
    ":base_internal",
    ":core_headers",
    ":errno_saver",
  ]
}

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

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

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

  sources = [ "internal/dynamic_annotations.h" ]
  public = [ "dynamic_annotations.h" ]

  deps = [
    ":config",
    ":core_headers",
  ]
}

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

  sources = [ "internal/thread_annotations.h" ]
  public = [
    "attributes.h",
    "const_init.h",
    "macros.h",
    "optimization.h",
    "port.h",
    "thread_annotations.h",
  ]

  deps = [ ":config" ]
}

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",
    ":base_internal",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":raw_logging_internal",
  ]
}

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",
    "internal/scheduling_mode.h",
  ]

  deps = [
    ":config",
    "../meta:type_traits",
  ]
}

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

  sources = [
    "internal/cycleclock.cc",
    "internal/spinlock.cc",
    "internal/sysinfo.cc",
    "internal/thread_identity.cc",
    "internal/unscaledcycleclock.cc",
  ]
  public = [
    "call_once.h",
    "casts.h",
    "internal/cycleclock.h",
    "internal/low_level_scheduling.h",
    "internal/per_thread_tls.h",
    "internal/spinlock.h",
    "internal/sysinfo.h",
    "internal/thread_identity.h",
    "internal/tsan_mutex_interface.h",
    "internal/unscaledcycleclock.h",
  ]

  deps = [
    ":atomic_hook",
    ":base_internal",
    ":config",
    ":core_headers",
    ":dynamic_annotations",
    ":log_severity",
    ":raw_logging_internal",
    ":spinlock_wait",
    "../meta:type_traits",
  ]
}

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

  sources = [ "internal/throw_delegate.cc" ]
  public = [ "internal/throw_delegate.h" ]

  deps = [
    ":config",
    ":raw_logging_internal",
  ]
}

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

  public = [ "internal/pretty_function.h" ]
}

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

  public = [
    "internal/endian.h",
    "internal/unaligned_access.h",
  ]

  deps = [
    ":base",
    ":config",
    ":core_headers",
  ]
}

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

  sources = [ "internal/exponential_biased.cc" ]
  public = [ "internal/exponential_biased.h" ]

  deps = [
    ":config",
    ":core_headers",
  ]
}

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

  sources = [ "internal/periodic_sampler.cc" ]
  public = [ "internal/periodic_sampler.h" ]

  deps = [
    ":core_headers",
    ":exponential_biased",
  ]
}

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

  sources = [ "internal/strerror.cc" ]
  public = [ "internal/strerror.h" ]

  deps = [
    ":config",
    ":core_headers",
    ":errno_saver",
  ]
}

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

  public = [ "internal/fast_type_id.h" ]

  deps = [ ":config" ]
}
