1# Copyright (c) 2012 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{
6  'variables': {
7    'chromium_code': 1,
8  },
9  'targets': [
10    {
11      'target_name': 'printing',
12      'type': '<(component)',
13      'dependencies': [
14        '../base/base.gyp:base',
15        '../base/base.gyp:base_i18n',
16        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
17        '../skia/skia.gyp:skia',
18        '../third_party/icu/icu.gyp:icui18n',
19        '../third_party/icu/icu.gyp:icuuc',
20        '../ui/gfx/gfx.gyp:gfx',
21        '../ui/gfx/gfx.gyp:gfx_geometry',
22        '../url/url.gyp:url_lib',
23      ],
24      'defines': [
25        'PRINTING_IMPLEMENTATION',
26      ],
27      'include_dirs': [
28        '..',
29      ],
30      'sources': [
31        'backend/print_backend.cc',
32        'backend/print_backend.h',
33        'backend/print_backend_consts.cc',
34        'backend/print_backend_consts.h',
35        'backend/print_backend_dummy.cc',
36        'backend/print_backend_win.cc',
37        'backend/printing_info_win.cc',
38        'backend/printing_info_win.h',
39        'emf_win.cc',
40        'emf_win.h',
41        'image.cc',
42        'image.h',
43        'image_android.cc',
44        'image_linux.cc',
45        'image_mac.cc',
46        'image_win.cc',
47        'metafile.cc',
48        'metafile.h',
49        'metafile_skia_wrapper.cc',
50        'metafile_skia_wrapper.h',
51        'page_number.cc',
52        'page_number.h',
53        'page_range.cc',
54        'page_range.h',
55        'page_setup.cc',
56        'page_setup.h',
57        'page_size_margins.h',
58        'pdf_metafile_cg_mac.cc',
59        'pdf_metafile_cg_mac.h',
60        'pdf_metafile_skia.cc',
61        'pdf_metafile_skia.h',
62        'print_dialog_gtk_interface.h',
63        'print_job_constants.cc',
64        'print_job_constants.h',
65        'print_settings.cc',
66        'print_settings.h',
67        'print_settings_conversion.cc',
68        'print_settings_conversion.h',
69        'print_settings_initializer_mac.cc',
70        'print_settings_initializer_mac.h',
71        'print_settings_initializer_win.cc',
72        'print_settings_initializer_win.h',
73        'printed_document.cc',
74        'printed_document.h',
75        'printed_document_linux.cc',
76        'printed_document_mac.cc',
77        'printed_document_win.cc',
78        'printed_page.cc',
79        'printed_page.h',
80        'printed_pages_source.h',
81        'printing_context.cc',
82        'printing_context.h',
83        'printing_context_system_dialog_win.cc',
84        'printing_context_system_dialog_win.h',
85        'printing_context_win.cc',
86        'printing_context_win.h',
87        'printing_utils.cc',
88        'printing_utils.h',
89        'units.cc',
90        'units.h',
91      ],
92      'direct_dependent_settings': {
93        'include_dirs': [
94          '..',
95        ],
96      },
97      'conditions': [
98        ['use_aura==1', {
99          'dependencies': [
100            '<(DEPTH)/ui/aura/aura.gyp:aura',
101          ],
102        }],
103        # Mac-Aura does not support printing.
104        ['OS=="mac" and use_aura==1',{
105          'sources!': [
106            'printed_document_mac.cc',
107            'printing_context_mac.mm',
108            'printing_context_mac.h',
109          ],
110        }],
111        ['OS=="mac" and use_aura==0',{
112          'sources': [
113            'printing_context_mac.mm',
114            'printing_context_mac.h',
115          ],
116        }],
117        ['OS=="win"', {
118          'dependencies': [
119            '<(DEPTH)/ui/aura/aura.gyp:aura',
120          ],
121          'defines': [
122            # PRINT_BACKEND_AVAILABLE disables the default dummy implementation
123            # of the print backend and enables a custom implementation instead.
124            'PRINT_BACKEND_AVAILABLE',
125          ],
126          'sources': [
127            'backend/win_helper.cc',
128            'backend/win_helper.h',
129          ],
130        }],
131        ['chromeos==1',{
132          'sources': [
133            'printing_context_no_system_dialog.cc',
134            'printing_context_no_system_dialog.h',
135          ],
136        }],
137        ['use_cups==1', {
138          'dependencies': [
139            'cups',
140          ],
141          'variables': {
142            'cups_version': '<!(cups-config --api-version)',
143          },
144          'conditions': [
145            ['cups_version in ["1.6", "1.7"]', {
146              'cflags': [
147                # CUPS 1.6 deprecated the PPD APIs, but we will stay with this
148                # API for now as supported Linux and Mac OS'es are still using
149                # older versions of CUPS. More info: crbug.com/226176
150                '-Wno-deprecated-declarations',
151                # CUPS 1.7 deprecates httpConnectEncrypt(), see the mac section
152                # below.
153              ],
154            }],
155            ['OS=="mac" and mac_sdk=="10.9"', {
156              # The 10.9 SDK includes cups 1.7, which deprecates
157              # httpConnectEncrypt() in favor of httpConnect2(). hhttpConnect2()
158              # is new in 1.7, so it doesn't exist on OS X 10.6-10.8 and we
159              # can't use it until 10.9 is our minimum system version.
160              # (cups_version isn't reliable on OS X, so key the check off of
161              # mac_sdk).
162              'xcode_settings': {
163                'WARNING_CFLAGS':  [
164                  '-Wno-deprecated-declarations',
165                ],
166              },
167            }],
168          ],
169          'defines': [
170            # PRINT_BACKEND_AVAILABLE disables the default dummy implementation
171            # of the print backend and enables a custom implementation instead.
172            'PRINT_BACKEND_AVAILABLE',
173          ],
174          'sources': [
175            'backend/cups_helper.cc',
176            'backend/cups_helper.h',
177            'backend/print_backend_cups.cc',
178          ],
179        }],
180        ['OS=="linux" and chromeos==1', {
181          'defines': [
182            # PRINT_BACKEND_AVAILABLE disables the default dummy implementation
183            # of the print backend and enables a custom implementation instead.
184            'PRINT_BACKEND_AVAILABLE',
185          ],
186          'sources': [
187            'backend/print_backend_chromeos.cc',
188          ],
189        }],
190        ['OS=="linux" and chromeos==0', {
191          'sources': [
192            'printing_context_linux.cc',
193            'printing_context_linux.h',
194          ],
195        }],
196        ['OS=="android"', {
197          'sources': [
198            'printing_context_android.cc',
199            'printing_context_android.h',
200          ],
201          'dependencies': [
202            'printing_jni_headers',
203          ],
204        }],
205      ],
206    },
207    {
208      'target_name': 'printing_unittests',
209      'type': 'executable',
210      'dependencies': [
211        '../base/base.gyp:run_all_unittests',
212        '../base/base.gyp:test_support_base',
213        '../testing/gtest.gyp:gtest',
214        '../ui/base/ui_base.gyp:ui_base',
215        '../ui/gfx/gfx.gyp:gfx',
216        '../ui/gfx/gfx.gyp:gfx_geometry',
217        '../ui/gfx/gfx.gyp:gfx_test_support',
218        'printing',
219      ],
220      'sources': [
221        'emf_win_unittest.cc',
222        'page_number_unittest.cc',
223        'page_range_unittest.cc',
224        'page_setup_unittest.cc',
225        'pdf_metafile_cg_mac_unittest.cc',
226        'printed_page_unittest.cc',
227        'printing_context_win_unittest.cc',
228        'printing_test.h',
229        'printing_utils_unittest.cc',
230        'units_unittest.cc',
231      ],
232      'conditions': [
233        ['OS!="mac"', {'sources/': [['exclude', '_mac_unittest\\.(cc|mm?)$']]}],
234        ['OS!="win"', {'sources/': [['exclude', '_win_unittest\\.cc$']]}],
235        ['use_cups==1', {
236          'defines': [
237            'USE_CUPS',
238          ],
239          'sources': [
240            'backend/cups_helper_unittest.cc',
241          ],
242        }],
243        [ 'os_posix == 1 and OS != "mac" and OS != "android" and OS != "ios"', {
244          'conditions': [
245            ['use_allocator!="none"', {
246              'dependencies': [
247                '../base/allocator/allocator.gyp:allocator',
248              ],
249            }],
250          ],
251        }],
252      ],
253      # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
254      'msvs_disabled_warnings': [ 4267, ],
255    },
256    {
257      # GN version: //printing:cups (config, not a target).
258      'target_name': 'cups',
259      'type': 'none',
260      'conditions': [
261        ['use_cups==1', {
262          'direct_dependent_settings': {
263            'defines': [
264              'USE_CUPS',
265            ],
266            'conditions': [
267              ['OS=="mac"', {
268                'link_settings': {
269                  'libraries': [
270                    '$(SDKROOT)/usr/lib/libcups.dylib',
271                  ]
272                },
273              }, {
274                'link_settings': {
275                  'libraries': [
276                    '<!@(python cups_config_helper.py --libs)',
277                  ],
278                },
279              }],
280              ['os_bsd==1', {
281                'cflags': [
282                  '<!@(python cups_config_helper.py --cflags)',
283                ],
284              }],
285            ],
286          },
287        }],
288      ],
289    },
290  ],
291  'conditions': [
292    ['OS == "android"', {
293      'targets': [
294        {
295          'target_name': 'printing_jni_headers',
296          'type': 'none',
297          'sources': [
298            'android/java/src/org/chromium/printing/PrintingContext.java',
299          ],
300          'variables': {
301            'jni_gen_package': 'printing',
302          },
303          'includes': [ '../build/jni_generator.gypi' ],
304        },
305	{
306	  'target_name': 'printing_java',
307          'type': 'none',
308          'variables': {
309            'java_in_dir': '../printing/android/java',
310          },
311          'dependencies': [
312            '../base/base.gyp:base_java',
313          ],
314          'includes': [ '../build/java.gypi'  ],
315	}
316      ]
317    }],
318  ]
319}
320