#
# 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.
#

list(APPEND TIME_PUBLIC_HEADERS
  "clock.h"
  "time.h"
)


list(APPEND TIME_INTERNAL_HEADERS
  "internal/test_util.h"
  "internal/cctz/include/cctz/civil_time.h"
  "internal/cctz/include/cctz/civil_time_detail.h"
  "internal/cctz/include/cctz/time_zone.h"
  "internal/cctz/include/cctz/zone_info_source.h"
)

list(APPEND TIME_SRC
  "time.cc"
  "clock.cc"
  "duration.cc"
  "format.cc"
  "internal/cctz/src/civil_time_detail.cc"
  "internal/cctz/src/time_zone_fixed.cc"
  "internal/cctz/src/time_zone_fixed.h"
  "internal/cctz/src/time_zone_format.cc"
  "internal/cctz/src/time_zone_if.cc"
  "internal/cctz/src/time_zone_if.h"
  "internal/cctz/src/time_zone_impl.cc"
  "internal/cctz/src/time_zone_impl.h"
  "internal/cctz/src/time_zone_info.cc"
  "internal/cctz/src/time_zone_info.h"
  "internal/cctz/src/time_zone_libc.cc"
  "internal/cctz/src/time_zone_libc.h"
  "internal/cctz/src/time_zone_lookup.cc"
  "internal/cctz/src/time_zone_posix.cc"
  "internal/cctz/src/time_zone_posix.h"
  "internal/cctz/src/tzfile.h"
  "internal/cctz/src/zone_info_source.cc"
  ${TIME_PUBLIC_HEADERS}
  ${TIME_INTERNAL_HEADERS}
)
set(TIME_PUBLIC_LIBRARIES absl::base absl::stacktrace absl::int128)

absl_library(
  TARGET
    absl_time
  SOURCES
    ${TIME_SRC}
  PUBLIC_LIBRARIES
    ${TIME_PUBLIC_LIBRARIES}
  EXPORT_NAME
    time
)



#
## TESTS
#

# test time_test
list(APPEND TIME_TEST_SRC
  "time_test.cc"
  "clock_test.cc"
  "duration_test.cc"
  "format_test.cc"
  "time_norm_test.cc"
  "time_test.cc"
  "time_zone_test.cc"
  "internal/test_util.cc"
)
set(TIME_TEST_PUBLIC_LIBRARIES absl::time)

absl_test(
  TARGET
    time_test
  SOURCES
    ${TIME_TEST_SRC}
  PUBLIC_LIBRARIES
    ${TIME_TEST_PUBLIC_LIBRARIES}
)

