# 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("time") {
  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 = [
    "civil_time.cc",
    "clock.cc",
    "duration.cc",
    "format.cc",
    "internal/get_current_time_chrono.inc",
    "internal/get_current_time_posix.inc",
    "time.cc",
  ]
  public = [
    "civil_time.h",
    "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/gmock",
    "//testing/gtest",
    "//third_party/googletest/:gmock",
  ]
  visibility = []
  visibility += [ "../time:*" ]
}
