# 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",
    "libchrome",
    "libmicrohttpd",
    "libmojo",
  ]
}

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