# 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("//build_overrides/build.gni")

if (build_with_chromium) {
  visibility = [
    "//third_party/webrtc/*",
    "//third_party/abseil-cpp/*",
    "//third_party/googletest:gtest",
  ]
} else {
  visibility = [ "*" ]
}

source_set("graphcycles_internal") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_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") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  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/kernel_timeout.h",
    "internal/mutex_nonprod.inc",
    "internal/per_thread_sem.h",
    "internal/waiter.h",
    "mutex.h",
    "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",
  ]
}

source_set("thread_pool") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/thread_pool.h",
  ]
  deps = [
    ":synchronization",
    "../base:core_headers",
  ]
  visibility = []
  visibility += [ "../*" ]
}

source_set("per_thread_sem_test_common") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_test_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "internal/per_thread_sem_test.cc",
  ]
  deps = [
    ":synchronization",
    "../base",
    "../strings",
    "../time",
    "//testing/gtest",
  ]
}
