# 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")
import("//printing/features/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_message_handler.cc",
    "cloud_print/cloud_print_message_handler.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",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  deps = [
    "//base",
    "//chrome:strings",
    "//chrome/common",
    "//components/cloud_devices/common",
    "//components/data_use_measurement/core",
    "//google_apis",
    "//jingle:notifier",
    "//mojo/edk/system",
    "//net",
    "//printing",
    "//skia",
    "//third_party/webrtc_overrides",
  ]

  if (use_cups && !is_chromeos) {
    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" ]
  }
}
