# Copyright 2017 The Roughtime 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.

config("client_config") {
  visibility = [ ":*" ]
  include_dirs = [ "." ]
}

executable("simple_server") {
  sources = [
    "clock_linux.cc",
    "simple_server_main.cc",
    "sys_time.cc",
  ]
  defines = [
    "USE_GLOG",
    "ROUGHTIME_OPEN_SOURCE",
  ]
  include_dirs = [ "." ]
  deps = [
    ":simple_server_lib",
    "//third_party/boringssl",
    "//third_party/glog",
  ]
  # TODO(fxb/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

static_library("simple_server_lib") {
  sources = [
    "protocol.cc",
    "server.cc",
    "simple_server.cc",
    "simple_server.h",
    "udp_processor.cc",
    "udp_processor.h",
  ]
  defines = [
    "USE_GLOG",
    "ROUGHTIME_OPEN_SOURCE",
  ]
  include_dirs = [ "." ]
  public_configs = [ ":client_config" ]
  deps = [
    "//third_party/boringssl",
    "//third_party/glog",
  ]

  # TODO(fxb/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

static_library("client_lib") {
  sources = [
    "client.cc",
    "clock_linux.cc",
    "protocol.cc",
  ]
  defines = [ "USE_GLOG" ]
  public_configs = [ ":client_config" ]
  deps = [
    "//third_party/boringssl",
    "//third_party/glog",
  ]

  # TODO(fxb/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}
