# 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("//build/config/sysroot.gni") import("//build/config/ui.gni") import("//pdf/features.gni") import("//printing/features/features.gni") import("//testing/test.gni") if (is_mac) { import("//build/config/mac/mac_sdk.gni") } if (is_android) { import("//build/config/android/rules.gni") } if ((enable_basic_printing && is_win) || enable_print_preview) { # Windows basic printing or print preview requires pdf enabled. assert(enable_pdf, "Windows basic printing or print preview needs pdf: " + "set enable_pdf=true.") } component("printing") { sources = [ "backend/print_backend.cc", "backend/print_backend.h", "backend/print_backend_consts.cc", "backend/print_backend_consts.h", "backend/print_backend_dummy.cc", "backend/printing_info_win.cc", "backend/printing_info_win.h", "emf_win.cc", "emf_win.h", "image.cc", "image.h", "image_android.cc", "image_linux.cc", "image_mac.cc", "image_win.cc", "metafile.cc", "metafile.h", "metafile_skia_wrapper.cc", "metafile_skia_wrapper.h", "native_drawing_context.h", "page_number.cc", "page_number.h", "page_range.cc", "page_range.h", "page_setup.cc", "page_setup.h", "page_size_margins.h", "pdf_metafile_cg_mac.cc", "pdf_metafile_cg_mac.h", "pdf_metafile_skia.cc", "pdf_metafile_skia.h", "pdf_render_settings.h", "print_dialog_gtk_interface.h", "print_job_constants.cc", "print_job_constants.h", "print_settings.cc", "print_settings.h", "print_settings_conversion.cc", "print_settings_conversion.h", "print_settings_initializer_mac.cc", "print_settings_initializer_mac.h", "print_settings_initializer_win.cc", "print_settings_initializer_win.h", "printed_document.cc", "printed_document.h", "printed_document_mac.cc", "printed_document_win.cc", "printed_page.cc", "printed_page.h", "printing_context.cc", "printing_context.h", "printing_export.h", "printing_utils.cc", "printing_utils.h", "pwg_raster_settings.h", "units.cc", "units.h", ] cflags = [] defines = [ "PRINTING_IMPLEMENTATION" ] public_deps = [ "//build/config/linux/pangocairo:features", "//printing/features", ] deps = [ "//base", "//base:i18n", "//base/third_party/dynamic_annotations", "//cc/paint", "//printing/common", "//skia", "//third_party/icu", "//ui/gfx", "//ui/gfx/geometry", "//url", ] if (use_aura) { deps += [ "//ui/aura" ] } if (is_mac) { # Mac-Aura does not support printing. if (use_aura) { sources -= [ "printed_document_mac.cc" ] } else { sources += [ "printing_context_mac.h", "printing_context_mac.mm", ] } libs = [ "AppKit.framework", "ApplicationServices.framework", "CoreFoundation.framework", "CoreGraphics.framework", ] } if (is_win) { # PRINT_BACKEND_AVAILABLE disables the default dummy implementation of the # print backend and enables a custom implementation instead. defines += [ "PRINT_BACKEND_AVAILABLE" ] sources += [ "backend/print_backend_win.cc", "backend/win_helper.cc", "backend/win_helper.h", "printing_context_system_dialog_win.cc", "printing_context_system_dialog_win.h", "printing_context_win.cc", "printing_context_win.h", ] } if (use_cups) { configs += [ ":cups" ] if (is_linux) { # rebase_path does not accept an empty string if (use_sysroot) { cups_sysroot = rebase_path(sysroot) } else { cups_sysroot = "" } cups_version = exec_script("cups_config_helper.py", [ "--api-version", cups_sysroot, ], "trim string") if (cups_version == "1.6" || cups_version == "1.7") { cflags += [ # CUPS 1.6 deprecated the PPD APIs, but we will stay with this # API for now as supported Linux and Mac OS'es are still using # older versions of CUPS. More info: crbug.com/226176 "-Wno-deprecated-declarations", # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section # below. ] } } if (is_mac) { # The 10.9 SDK includes cups 1.7, which deprecates # httpConnectEncrypt() in favor of httpConnect2(). hhttpConnect2() # is new in 1.7, so it doesn't exist on OS X 10.6-10.8 and we # can't use it until 10.9 is our minimum system version. # (cups_version isn't reliable on OS X, so key the check off of # mac_sdk). # With a 10.8 deployment target, several other APIs are deprecated. # We're still on CUPS 1.4 until Linux no longer needs to support it, see # comment above. cflags += [ "-Wno-deprecated-declarations" ] } # PRINT_BACKEND_AVAILABLE disables the default dummy implementation # of the print backend and enables a custom implementation instead. defines += [ "PRINT_BACKEND_AVAILABLE" ] if (is_chromeos) { sources += [ "backend/cups_connection.cc", "backend/cups_connection.h", "backend/cups_deleters.cc", "backend/cups_deleters.h", "backend/cups_ipp_util.cc", "backend/cups_ipp_util.h", "backend/cups_jobs.cc", "backend/cups_jobs.h", "backend/cups_printer.cc", "backend/cups_printer.h", "backend/print_backend_cups_ipp.cc", "backend/print_backend_cups_ipp.h", "printing_context_chromeos.cc", "printing_context_chromeos.h", ] } else { sources += [ "backend/cups_helper.cc", "backend/cups_helper.h", "backend/print_backend_cups.cc", "backend/print_backend_cups.h", ] } } if (is_chromeos) { defines += [ "PRINT_BACKEND_AVAILABLE" ] sources += [ "backend/print_backend_chromeos.cc", "printed_document_chromeos.cc", "printing_context_no_system_dialog.cc", "printing_context_no_system_dialog.h", ] } else if (is_linux) { # Non-ChromeOS Linux. sources += [ "printed_document_linux.cc", "printing_context_linux.cc", "printing_context_linux.h", ] } if (is_android) { sources += [ "printing_context_android.cc", "printing_context_android.h", ] deps += [ ":printing_jni_headers" ] } else { sources += [ "pdf_transform.cc", "pdf_transform.h", ] } } static_library("test_support") { testonly = true sources = [ "backend/test_print_backend.cc", "backend/test_print_backend.h", ] public_deps = [ "//printing", ] deps = [ "//base", ] } test("printing_unittests") { sources = [ "emf_win_unittest.cc", "page_number_unittest.cc", "page_range_unittest.cc", "page_setup_unittest.cc", "pdf_metafile_cg_mac_unittest.cc", "printed_page_unittest.cc", "printing_context_win_unittest.cc", "printing_test.h", "printing_utils_unittest.cc", "units_unittest.cc", ] deps = [ ":printing", "//base/test:run_all_unittests", "//base/test:test_support", "//testing/gtest", "//ui/base", "//ui/gfx", "//ui/gfx:test_support", "//ui/gfx/geometry", ] if (!is_android) { sources += [ "pdf_transform_unittest.cc" ] } if (use_cups) { configs += [ ":cups" ] if (is_chromeos) { sources += [ "backend/cups_ipp_util_unittest.cc" ] } else { sources += [ "backend/cups_helper_unittest.cc" ] } } } if (use_cups) { config("cups") { defines = [ "USE_CUPS" ] if (is_mac) { libs = [ "cups" ] lib_dirs = [ "$mac_sdk_path/usr/lib" ] } else { # rebase_path does not accept an empty string if (use_sysroot) { cups_sysroot = rebase_path(sysroot) } else { cups_sysroot = "" } libs = exec_script("cups_config_helper.py", [ "--libs-for-gn", cups_sysroot, ], "value") } } } if (is_android) { generate_jni("printing_jni_headers") { sources = [ "android/java/src/org/chromium/printing/PrintingContext.java", ] jni_package = "printing" } android_library("printing_java") { deps = [ "//base:base_java", ] java_files = [ "android/java/src/org/chromium/printing/PrintDocumentAdapterWrapper.java", "android/java/src/org/chromium/printing/PrintManagerDelegate.java", "android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java", "android/java/src/org/chromium/printing/Printable.java", "android/java/src/org/chromium/printing/PrintingContext.java", "android/java/src/org/chromium/printing/PrintingContextInterface.java", "android/java/src/org/chromium/printing/PrintingController.java", "android/java/src/org/chromium/printing/PrintingControllerImpl.java", ] } }