# 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") {
  sources = [
    "daemon.cc",
    "mhd_http_request.cc",
    "mhd_util.cc",
    "mojo_handler.cc",
  ]
  all_dependent_configs = [ ":cups_proxy_common_pkg_deps" ]
  deps = [ ":cups_proxy_mojo_bindings" ]
}

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