# Copyright 2019 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/mojom_bindings_generator.gni")
import("//common-mk/pkg_config.gni")

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

generate_mojom_bindings("cups_proxy_mojo_bindings") {
  mojo_root = "${platform2_root}"
  sources = [
    "mojom/proxy.mojom",
  ]
}

pkg_config("cups_proxy_common_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
    "libmicrohttpd",
    "libmojo-${libbase_ver}",
  ]
}

static_library("cups_proxy_common") {
  deps = [
    ":cups_proxy_mojo_bindings",
  ]
  all_dependent_configs = [ ":cups_proxy_common_pkg_deps" ]
  sources = [
    "daemon.cc",
    "mhd_http_request.cc",
    "mhd_util.cc",
    "mojo_handler.cc",
  ]
}

executable("cups_proxy") {
  deps = [
    ":cups_proxy_common",
  ]
  sources = [
    "main.cc",
  ]
}
