# chrony NTP daemon
#
# From the chrony website (https://chrony.tuxfamily.org/):
#
# chrony is a versatile implementation of the Network Time
# Protocol (NTP). It can synchronise the system clock with NTP servers,
# reference clocks (e.g. GPS receiver), and manual input using
# wristwatch and keyboard. It can also operate as an NTPv4 (RFC 5905)
# server and peer to provide a time service to other computers in the
# network.

# config.h created with ./configure --without-readline \
# --without-editline --without-libcap --without-nss

licenses(["restricted"])  # GPLv2

package(default_visibility = ["//third_party/chrony:internal"])

cc_library(
    name = "chrony_headers",
    textual_hdrs = glob(["*.h"]) + ["md5.c"],
)

cc_binary(
    name = "chronyd",
    srcs = [
        "addrfilt.c",
        "array.c",
        "clientlog.c",
        "cmdmon.c",
        "cmdparse.c",
        "conf.c",
        "hash_intmd5.c",
        "hwclock.c",
        "keys.c",
        "local.c",
        "logging.c",
        "main.c",
        "manual.c",
        "memory.c",
        "nameserv.c",
        "nameserv_async.c",
        "ntp_core.c",
        "ntp_io.c",
        "ntp_io_linux.c",
        "ntp_sources.c",
        "pktlength.c",
        "refclock.c",
        "refclock_phc.c",
        "refclock_pps.c",
        "refclock_shm.c",
        "refclock_sock.c",
        "reference.c",
        "regress.c",
        "rtc.c",
        "rtc_linux.c",
        "sched.c",
        "smooth.c",
        "sources.c",
        "sourcestats.c",
        "stubs.c",
        "sys.c",
        "sys_generic.c",
        "sys_linux.c",
        "sys_null.c",
        "sys_timex.c",
        "tempcomp.c",
        "util.c",
    ],
    copts = [
        # all instances are of the form
        # default: assert(0)
        "-Wno-error",
    ],
    defines = select({
        "//tools/cc_target_os:loonix": [],
        "//conditions:default": ["HAVE_LONG_TIME_T"],
    }),
    deps = [
        ":chrony_headers",
    ],
)

cc_binary(
    name = "chronyc",
    srcs = [
        "array.c",
        "client.c",
        "cmdparse.c",
        "getdate.c",
        "hash_intmd5.c",
        "memory.c",
        "nameserv.c",
        "pktlength.c",
        "util.c",
    ],
    defines = select({
        "//tools/cc_target_os:loonix": [],
        "//conditions:default": ["HAVE_LONG_TIME_T"],
    }),
    deps = [
        ":chrony_headers",
    ],
)
