# 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")

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"
    },
  ]
}

package("network_time_tests") {
  testonly = true

  deps = [
    ":tests",
  ]

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

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/fxl",
    "//garnet/public/lib/syslog/cpp",
    "//third_party/boringssl",
    "//third_party/rapidjson",
    "//third_party/roughtime:client_lib",
    "//zircon/public/fidl/fuchsia-hardware-rtc:fuchsia-hardware-rtc_c_client",
    "//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",
    "//garnet/public/lib/fxl",
  ]
}

static_library("time_util_lib") {
  output_name = "time_util_lib"
  sources = [
    "time_util.cc",
    "time_util.h",
  ]
}

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

  testonly = true

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

  deps = [
    ":lib",
    "//garnet/public/lib/fxl",
    "//third_party/boringssl",
    "//third_party/googletest:gtest_main",
    "//third_party/roughtime:client_lib",
    "//zircon/public/lib/zx",
  ]
}
