# Copyright 2014 The Chromium 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("//build/config/features.gni")

static_library("service") {
  sources = [
    "cloud_print/cdd_conversion_win.cc",
    "cloud_print/cdd_conversion_win.h",
    "cloud_print/cloud_print_auth.cc",
    "cloud_print/cloud_print_auth.h",
    "cloud_print/cloud_print_connector.cc",
    "cloud_print/cloud_print_connector.h",
    "cloud_print/cloud_print_proxy.cc",
    "cloud_print/cloud_print_proxy.h",
    "cloud_print/cloud_print_proxy_backend.cc",
    "cloud_print/cloud_print_proxy_backend.h",
    "cloud_print/cloud_print_service_helpers.cc",
    "cloud_print/cloud_print_service_helpers.h",
    "cloud_print/cloud_print_token_store.cc",
    "cloud_print/cloud_print_token_store.h",
    "cloud_print/cloud_print_url_fetcher.cc",
    "cloud_print/cloud_print_url_fetcher.h",
    "cloud_print/cloud_print_wipeout.cc",
    "cloud_print/cloud_print_wipeout.h",
    "cloud_print/connector_settings.cc",
    "cloud_print/connector_settings.h",
    "cloud_print/job_status_updater.cc",
    "cloud_print/job_status_updater.h",
    "cloud_print/print_system.cc",
    "cloud_print/print_system.h",
    "cloud_print/print_system_win.cc",
    "cloud_print/printer_job_handler.cc",
    "cloud_print/printer_job_handler.h",
    "cloud_print/printer_job_queue_handler.cc",
    "cloud_print/printer_job_queue_handler.h",
    "net/service_url_request_context_getter.cc",
    "net/service_url_request_context_getter.h",
    "service_ipc_server.cc",
    "service_ipc_server.h",
    "service_main.cc",
    "service_process.cc",
    "service_process.h",
    "service_process_prefs.cc",
    "service_process_prefs.h",
  ]

  deps = [
    "//chrome:strings",
    "//chrome/common",
    "//chrome/common/net",
    "//base",
    "//components/cloud_devices/common",
    "//google_apis",
    "//jingle:notifier",
    "//net",
    "//printing",
    "//skia",
    "//third_party/libjingle"
  ]

  if (use_cups) {
    sources += [ "cloud_print/print_system_cups.cc" ]
    configs += [ "//printing:cups" ]
  } else if (is_win) {
    sources += [
      "service_utility_process_host.cc",
      "service_utility_process_host.h",
    ]
  } else {
    sources += [ "cloud_print/print_system_dummy.cc" ]
  }
}
