# Copyright 2018 The Chromium OS 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("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")

group("all") {
  deps = [ ":ndproxyd" ]
}

pkg_config("target_defaults") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
    "system_api",
  ]
  if (use.fuzzer) {
    pkg_deps += [ "protobuf" ]
  } else {
    pkg_deps += [ "protobuf-lite" ]
  }
}

proto_library("protos") {
  configs = [ ":target_defaults" ]
  proto_in_dir = ".."
  proto_out_dir = "include/patchpanel"
  sources = [ "${proto_in_dir}/ipc.proto" ]
}

executable("ndproxyd") {
  sources = [
    "../datapath.cc",
    "../firewall.cc",
    "../minijailed_process_runner.cc",
    "../ndproxy.cc",
    "../net_util.cc",
    "../routing_service.cc",
    "../scoped_ns.cc",
    "../subnet.cc",
    "main.cc",
  ]
  configs += [ ":target_defaults" ]
  deps = [ ":protos" ]
}
