# Copyright 2017 The Fuchsia 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/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

package("network_time") {
  deps = [
    ":bin",
  ]

  binary = "network_time"

  resources = [
    {
      path = rebase_path("roughtime-servers.json")
      dest = "roughtime-servers.json"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/network_time.cmx")
      dest = "network_time.cmx"
    },
  ]
}

test_package("network_time_tests") {
  deps = [
    ":tests",
  ]

  tests = [
    {
      name = "network_time_tests"
      environments = basic_envs
    },
  ]
}

source_set("lib") {
  sources = [
    "roughtime_server.cc",
    "roughtime_server.h",
    "time_server_config.cc",
    "time_server_config.h",
    "timezone.cc",
    "timezone.h",
  ]

  deps = [
    ":time_util_lib",
    "//garnet/public/lib/syslog/cpp",
    "//src/lib/fxl",
    "//third_party/boringssl",
    "//third_party/rapidjson",
    "//third_party/roughtime:client_lib",
    "//zircon/public/fidl/fuchsia-hardware-rtc",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]
}

executable("bin") {
  output_name = "network_time"

  sources = [
    "main.cc",
  ]

  deps = [
    ":lib",
    "//garnet/public/lib/fsl",
    "//src/lib/fxl",
  ]
}

static_library("time_util_lib") {
  output_name = "time_util_lib"
  sources = [
    "time_util.cc",
    "time_util.h",
  ]
  deps = [
    "//zircon/public/fidl/fuchsia-hardware-rtc",
  ]
}

executable("tests") {
  output_name = "network_time_tests"

  testonly = true

  sources = [
    "roughtime_server_test.cc",
    "time_server_config_test.cc",
  ]

  deps = [
    ":lib",
    "//src/lib/files",
    "//src/lib/fxl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/boringssl",
    "//third_party/roughtime:client_lib",
    "//zircon/public/lib/zx",
  ]
}
