#
# Copyright 2017 The Abseil Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

load(
    "//absl:copts.bzl",
    "ABSL_DEFAULT_COPTS",
    "ABSL_TEST_COPTS",
)

package(default_visibility = ["//visibility:public"])

licenses(["notice"])  # Apache 2.0

cc_library(
    name = "time",
    srcs = [
        "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",
    ],
    hdrs = [
        "clock.h",
        "time.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    deps = [
        "//absl/base",
        "//absl/base:core_headers",
        "//absl/numeric:int128",
        "//absl/time/internal/cctz:civil_time",
        "//absl/time/internal/cctz:time_zone",
    ],
)

cc_library(
    name = "test_util",
    testonly = 1,
    srcs = [
        "internal/test_util.cc",
        "internal/zoneinfo.inc",
    ],
    hdrs = ["internal/test_util.h"],
    copts = ABSL_DEFAULT_COPTS,
    visibility = [
        "//absl/time:__pkg__",
    ],
    deps = [
        ":time",
        "//absl/base",
        "//absl/time/internal/cctz:time_zone",
        "@com_google_googletest//:gtest",
    ],
)

cc_test(
    name = "time_test",
    srcs = [
        "clock_test.cc",
        "duration_test.cc",
        "format_test.cc",
        "time_norm_test.cc",
        "time_test.cc",
        "time_zone_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    tags = [
        "no_test_loonix",
    ],
    deps = [
        ":test_util",
        ":time",
        "//absl/base",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/time/internal/cctz:time_zone",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "time_benchmark",
    srcs = [
        "clock_benchmark.cc",
        "duration_benchmark.cc",
        "format_benchmark.cc",
        "time_benchmark.cc",
    ],
    copts = ABSL_TEST_COPTS,
    tags = [
        "benchmark",
    ],
    deps = [
        ":test_util",
        ":time",
        "//absl/base",
        "@com_github_google_benchmark//:benchmark_main",
    ],
)
