Upload upstream chromium 73.0.3683.0
[platform/framework/web/chromium-efl.git] / printing / BUILD.gn
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import("//build/config/features.gni")
6 import("//build/config/sysroot.gni")
7 import("//build/config/ui.gni")
8 import("//pdf/features.gni")
9 import("//printing/buildflags/buildflags.gni")
10 import("//testing/test.gni")
11 if (is_mac) {
12   import("//build/config/mac/mac_sdk.gni")
13 }
14 if (is_android) {
15   import("//build/config/android/rules.gni")
16 }
17
18 if ((enable_basic_printing && is_win) || enable_print_preview) {
19   # Windows basic printing or print preview requires pdf enabled.
20   assert(enable_pdf,
21          "Windows basic printing or print preview needs pdf: " +
22              "set enable_pdf=true.")
23 }
24
25 component("printing") {
26   sources = [
27     "backend/print_backend.cc",
28     "backend/print_backend.h",
29     "backend/print_backend_consts.cc",
30     "backend/print_backend_consts.h",
31     "backend/print_backend_dummy.cc",
32     "backend/printing_info_win.cc",
33     "backend/printing_info_win.h",
34     "emf_win.cc",
35     "emf_win.h",
36     "metafile.cc",
37     "metafile.h",
38     "metafile_skia.cc",
39     "metafile_skia.h",
40     "metafile_skia_wrapper.cc",
41     "metafile_skia_wrapper.h",
42     "native_drawing_context.h",
43     "nup_parameters.cc",
44     "nup_parameters.h",
45     "page_number.cc",
46     "page_number.h",
47     "page_range.cc",
48     "page_range.h",
49     "page_setup.cc",
50     "page_setup.h",
51     "page_size_margins.h",
52     "pdf_metafile_cg_mac.cc",
53     "pdf_metafile_cg_mac.h",
54     "pdf_render_settings.h",
55     "print_dialog_gtk_interface.h",
56     "print_job_constants.cc",
57     "print_job_constants.h",
58     "print_settings.cc",
59     "print_settings.h",
60     "print_settings_conversion.cc",
61     "print_settings_conversion.h",
62     "print_settings_initializer_mac.cc",
63     "print_settings_initializer_mac.h",
64     "print_settings_initializer_win.cc",
65     "print_settings_initializer_win.h",
66     "printed_document.cc",
67     "printed_document.h",
68     "printed_document_mac.cc",
69     "printed_document_win.cc",
70     "printing_context.cc",
71     "printing_context.h",
72     "printing_export.h",
73     "printing_utils.cc",
74     "printing_utils.h",
75     "pwg_raster_settings.h",
76     "units.cc",
77     "units.h",
78   ]
79
80   cflags = []
81   defines = [ "PRINTING_IMPLEMENTATION" ]
82
83   public_deps = [
84     "//printing/buildflags",
85   ]
86   deps = [
87     "//base",
88     "//base:i18n",
89     "//base/third_party/dynamic_annotations",
90     "//cc/paint",
91     "//printing/common",
92     "//skia",
93     "//third_party/icu",
94     "//ui/gfx",
95     "//ui/gfx/geometry",
96     "//url",
97   ]
98
99   if (use_aura) {
100     deps += [ "//ui/aura" ]
101   }
102
103   if (is_mac) {
104     # Mac-Aura does not support printing.
105     if (use_aura) {
106       sources -= [ "printed_document_mac.cc" ]
107     } else {
108       sources += [
109         "printing_context_mac.h",
110         "printing_context_mac.mm",
111       ]
112     }
113     libs = [
114       "AppKit.framework",
115       "QuartzCore.framework",
116       "ApplicationServices.framework",
117       "CoreFoundation.framework",
118       "CoreGraphics.framework",
119     ]
120   }
121
122   if (is_win) {
123     # PRINT_BACKEND_AVAILABLE disables the default dummy implementation of the
124     # print backend and enables a custom implementation instead.
125     defines += [ "PRINT_BACKEND_AVAILABLE" ]
126     sources += [
127       "backend/print_backend_win.cc",
128       "backend/win_helper.cc",
129       "backend/win_helper.h",
130       "printed_page_win.cc",
131       "printed_page_win.h",
132       "printing_context_system_dialog_win.cc",
133       "printing_context_system_dialog_win.h",
134       "printing_context_win.cc",
135       "printing_context_win.h",
136     ]
137   }
138
139   if (use_cups) {
140     configs += [ ":cups" ]
141
142     if (is_linux) {
143       # rebase_path does not accept an empty string
144       if (use_sysroot) {
145         cups_sysroot = rebase_path(sysroot)
146       } else {
147         cups_sysroot = ""
148       }
149       cups_version = exec_script("cups_config_helper.py",
150                                  [
151                                    "--api-version",
152                                    cups_sysroot,
153                                  ],
154                                  "trim string")
155
156       if (cups_version == "1.6" || cups_version == "1.7") {
157         cflags += [
158           # CUPS 1.6 deprecated the PPD APIs, but we will stay with this
159           # API for now as supported Linux and Mac OS'es are still using
160           # older versions of CUPS. More info: crbug.com/226176
161           "-Wno-deprecated-declarations",
162           # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section
163           # below.
164         ]
165       }
166     }
167
168     if (is_mac) {
169       # The 10.9 SDK includes cups 1.7, which deprecates
170       # httpConnectEncrypt() in favor of httpConnect2(). hhttpConnect2()
171       # is new in 1.7, so it doesn't exist on OS X 10.6-10.8 and we
172       # can't use it until 10.9 is our minimum system version.
173       # (cups_version isn't reliable on OS X, so key the check off of
174       # mac_sdk).
175       # With a 10.8 deployment target, several other APIs are deprecated.
176       # We're still on CUPS 1.4 until Linux no longer needs to support it, see
177       # comment above.
178       cflags += [ "-Wno-deprecated-declarations" ]
179     }
180
181     # PRINT_BACKEND_AVAILABLE disables the default dummy implementation
182     # of the print backend and enables a custom implementation instead.
183     defines += [ "PRINT_BACKEND_AVAILABLE" ]
184
185     if (is_chromeos) {
186       sources += [
187         "backend/cups_connection.cc",
188         "backend/cups_connection.h",
189         "backend/cups_deleters.cc",
190         "backend/cups_deleters.h",
191         "backend/cups_ipp_util.cc",
192         "backend/cups_ipp_util.h",
193         "backend/cups_jobs.cc",
194         "backend/cups_jobs.h",
195         "backend/cups_printer.cc",
196         "backend/cups_printer.h",
197         "backend/print_backend_cups_ipp.cc",
198         "backend/print_backend_cups_ipp.h",
199         "printing_context_chromeos.cc",
200         "printing_context_chromeos.h",
201       ]
202     } else {
203       sources += [
204         "backend/cups_helper.cc",
205         "backend/cups_helper.h",
206         "backend/print_backend_cups.cc",
207         "backend/print_backend_cups.h",
208       ]
209     }
210   }
211
212   if (is_chromeos) {
213     defines += [ "PRINT_BACKEND_AVAILABLE" ]
214
215     sources += [
216       "backend/print_backend_chromeos.cc",
217       "backend/printing_restrictions.cc",
218       "backend/printing_restrictions.h",
219       "printed_document_chromeos.cc",
220       "printing_context_no_system_dialog.cc",
221       "printing_context_no_system_dialog.h",
222     ]
223   } else if (is_linux) {  # Non-ChromeOS Linux.
224     sources += [
225       "printed_document_linux.cc",
226       "printing_context_linux.cc",
227       "printing_context_linux.h",
228     ]
229   } else if (is_tizen) {
230     set_sources_assignment_filter([])
231     sources += [
232       "image_linux.cc",
233       "printing_context_linux.cc",
234       "printing_context_linux.h",
235     ]
236     set_sources_assignment_filter(sources_assignment_filter)
237   } else if (is_android) {
238     sources += [
239       "printed_document_android.cc",
240       "printing_context_android.cc",
241       "printing_context_android.h",
242     ]
243
244     deps += [ ":printing_jni_headers" ]
245   } else if (is_linux) {  # Desktop Linux.
246     sources += [
247       "printed_document_linux.cc",
248       "printing_context_linux.cc",
249       "printing_context_linux.h",
250     ]
251   }
252 }
253
254 static_library("test_support") {
255   testonly = true
256   sources = [
257     "backend/test_print_backend.cc",
258     "backend/test_print_backend.h",
259     "image.cc",
260     "image.h",
261     "image_android.cc",
262     "image_linux.cc",
263     "image_mac.cc",
264     "image_win.cc",
265   ]
266   if (is_fuchsia) {
267     sources += [ "image_fuchsia.cc" ]
268   }
269
270   public_deps = [
271     "//printing",
272     "//ui/gfx/geometry",
273   ]
274   deps = [
275     "//base",
276     "//skia",
277     "//ui/gfx",
278   ]
279 }
280
281 test("printing_unittests") {
282   sources = [
283     "emf_win_unittest.cc",
284     "metafile_skia_unittest.cc",
285     "nup_parameters_unittest.cc",
286     "page_number_unittest.cc",
287     "page_range_unittest.cc",
288     "page_setup_unittest.cc",
289     "pdf_metafile_cg_mac_unittest.cc",
290     "printing_context_win_unittest.cc",
291     "printing_test.h",
292     "printing_utils_unittest.cc",
293     "units_unittest.cc",
294   ]
295
296   deps = [
297     ":printing",
298     "//base/test:run_all_unittests",
299     "//base/test:test_support",
300     "//printing/common",
301     "//testing/gmock",
302     "//testing/gtest",
303     "//ui/base",
304     "//ui/gfx",
305     "//ui/gfx:test_support",
306     "//ui/gfx/geometry",
307   ]
308
309   if (is_win || is_mac) {
310     sources += [ "printed_document_unittest.cc" ]
311   }
312
313   if (is_win) {
314     sources += [ "printed_page_win_unittest.cc" ]
315   }
316
317   if (use_cups) {
318     configs += [ ":cups" ]
319
320     if (is_chromeos) {
321       sources += [ "backend/cups_ipp_util_unittest.cc" ]
322     } else {
323       sources += [ "backend/cups_helper_unittest.cc" ]
324     }
325   }
326 }
327
328 if (use_cups) {
329   config("cups") {
330     defines = [ "USE_CUPS" ]
331
332     if (is_mac) {
333       libs = [ "cups" ]
334       lib_dirs = [ "$mac_sdk_path/usr/lib" ]
335     } else {
336       # rebase_path does not accept an empty string
337       if (use_sysroot) {
338         cups_sysroot = rebase_path(sysroot)
339       } else {
340         cups_sysroot = ""
341       }
342       libs = exec_script("cups_config_helper.py",
343                          [
344                            "--libs-for-gn",
345                            cups_sysroot,
346                          ],
347                          "value")
348     }
349   }
350 }
351
352 if (is_android) {
353   generate_jni("printing_jni_headers") {
354     sources = [
355       "android/java/src/org/chromium/printing/PrintingContext.java",
356     ]
357     jni_package = "printing"
358   }
359
360   android_library("printing_java") {
361     deps = [
362       "//base:base_java",
363     ]
364     java_files = [
365       "android/java/src/org/chromium/printing/PrintDocumentAdapterWrapper.java",
366       "android/java/src/org/chromium/printing/PrintManagerDelegate.java",
367       "android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java",
368       "android/java/src/org/chromium/printing/Printable.java",
369       "android/java/src/org/chromium/printing/PrintingContext.java",
370       "android/java/src/org/chromium/printing/PrintingController.java",
371       "android/java/src/org/chromium/printing/PrintingControllerImpl.java",
372     ]
373   }
374 }