# 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 = [ "*" ]
}

config("suppress_unguarded_availability") {
  # TODO(bugs.webrtc.org/9557): Remove -Wno-unguarded-availability when
  # abseil will support Xcode 9.0+ (it currently supports Xcode 7.3.1+
  # which doesn't have -Wunguarded-availability and __builtin_available).
  cflags = [
    "-Wno-unguarded-availability",
  ]
}

source_set("time") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
    ":suppress_unguarded_availability",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "clock.cc",
    "duration.cc",
    "format.cc",
    "internal/get_current_time_ios.inc",
    "internal/get_current_time_posix.inc",
    "internal/get_current_time_windows.inc",
    "time.cc",
  ]
  public = [
    "clock.h",
    "time.h",
  ]
  deps = [
    "../base",
    "../base:core_headers",
    "../numeric:int128",
    "../strings",
    "../time/internal/cctz:civil_time",
    "../time/internal/cctz:time_zone",
  ]
}

source_set("test_util") {
  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" ]
  sources = [
    "internal/test_util.cc",
    "internal/zoneinfo.inc",
  ]
  public = [
    "internal/test_util.h",
  ]
  deps = [
    ":time",
    "../base",
    "../time/internal/cctz:time_zone",
    "//testing/gtest",
    "//testing/gmock",
  ]
  visibility = []
  visibility += [ "../time:*" ]
}
