Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / build / linux / system.gyp
blob56b56925075636801bfd6c52c4e2f5e06dea6c13
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.
6   'variables': {
7     # If any of the linux_link_FOO below are set to 1, then the corresponding
8     # target will be linked against the FOO library (either dynamically or
9     # statically, depending on the pkg-config files), as opposed to loading the
10     # FOO library dynamically with dlopen.
11     'linux_link_libgps%': 0,
12     'linux_link_libpci%': 0,
13     'linux_link_libspeechd%': 0,
14     'linux_link_libbrlapi%': 0,
16     # Used below for the various libraries. In this scope for sharing with GN.
17     'libbrlapi_functions': [
18       'brlapi_getHandleSize',
19       'brlapi_error_location',
20       'brlapi_strerror',
21       'brlapi__acceptKeys',
22       'brlapi__openConnection',
23       'brlapi__closeConnection',
24       'brlapi__getDisplaySize',
25       'brlapi__enterTtyModeWithPath',
26       'brlapi__leaveTtyMode',
27       'brlapi__writeDots',
28       'brlapi__readKey',
29     ],
30     'libgio_functions': [
31       'g_settings_new',
32       'g_settings_get_child',
33       'g_settings_get_string',
34       'g_settings_get_boolean',
35       'g_settings_get_int',
36       'g_settings_get_strv',
37       'g_settings_list_schemas',
38     ],
39     'libpci_functions': [
40       'pci_alloc',
41       'pci_init',
42       'pci_cleanup',
43       'pci_scan_bus',
44       'pci_fill_info',
45       'pci_lookup_name',
46     ],
47     'libudev_functions': [
48       'udev_device_get_action',
49       'udev_device_get_devnode',
50       'udev_device_get_parent',
51       'udev_device_get_parent_with_subsystem_devtype',
52       'udev_device_get_property_value',
53       'udev_device_get_subsystem',
54       'udev_device_get_sysattr_value',
55       'udev_device_get_sysname',
56       'udev_device_get_syspath',
57       'udev_device_new_from_devnum',
58       'udev_device_new_from_subsystem_sysname',
59       'udev_device_new_from_syspath',
60       'udev_device_unref',
61       'udev_enumerate_add_match_subsystem',
62       'udev_enumerate_get_list_entry',
63       'udev_enumerate_new',
64       'udev_enumerate_scan_devices',
65       'udev_enumerate_unref',
66       'udev_list_entry_get_next',
67       'udev_list_entry_get_name',
68       'udev_monitor_enable_receiving',
69       'udev_monitor_filter_add_match_subsystem_devtype',
70       'udev_monitor_get_fd',
71       'udev_monitor_new_from_netlink',
72       'udev_monitor_receive_device',
73       'udev_monitor_unref',
74       'udev_new',
75       'udev_set_log_fn',
76       'udev_set_log_priority',
77       'udev_unref',
78     ],
79   },
80   'conditions': [
81     [ 'chromeos==0 and use_ozone==0', {
82       # Hide GTK and related dependencies for Chrome OS and Ozone, so they won't get
83       # added back to Chrome OS and Ozone. Don't try to use GTK on Chrome OS and Ozone.
84       'targets': [
85         {
86           'target_name': 'atk',
87           'type': 'none',
88           'conditions': [
89             ['_toolset=="target"', {
90               'direct_dependent_settings': {
91                 'cflags': [
92                   '<!@(<(pkg-config) --cflags atk)',
93                 ],
94                 'defines': [
95                   'ATK_LIB_DIR="<!@(<(pkg-config) --variable=libdir atk)"',
96                 ],
97               },
98               'link_settings': {
99                 'ldflags': [
100                   '<!@(<(pkg-config) --libs-only-L --libs-only-other atk)',
101                 ],
102                 'libraries': [
103                   '<!@(<(pkg-config) --libs-only-l atk)',
104                 ],
105               },
106             }],
107           ],
108         },
109         {
110           'target_name': 'gdk',
111           'type': 'none',
112           'conditions': [
113             ['_toolset=="target"', {
114               'direct_dependent_settings': {
115                 'cflags': [
116                   '<!@(<(pkg-config) --cflags gdk-2.0)',
117                 ],
118               },
119               'link_settings': {
120                 'ldflags': [
121                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gdk-2.0)',
122                 ],
123                 'libraries': [
124                   '<!@(<(pkg-config) --libs-only-l gdk-2.0)',
125                 ],
126               },
127             }],
128           ],
129         },
130         {
131           'target_name': 'gtk2',
132           'type': 'none',
133           'toolsets': ['host', 'target'],
134           'variables': {
135             # gtk requires gmodule, but it does not list it as a dependency
136             # in some misconfigured systems.
137             'gtk_packages': 'gmodule-2.0 gtk+-2.0 gthread-2.0',
138           },
139           'conditions': [
140             ['_toolset=="target"', {
141               'all_dependent_settings': {
142                 'cflags': [
143                   '<!@(<(pkg-config) --cflags <(gtk_packages))',
144                 ],
145               },
146               'link_settings': {
147                 'ldflags': [
148                   '<!@(<(pkg-config) --libs-only-L --libs-only-other <(gtk_packages))',
149                 ],
150                 'libraries': [
151                   '<!@(<(pkg-config) --libs-only-l <(gtk_packages))',
152                 ],
153               },
154             }, {
155               'all_dependent_settings': {
156                 'cflags': [
157                   '<!@(pkg-config --cflags <(gtk_packages))',
158                 ],
159               },
160               'link_settings': {
161                 'ldflags': [
162                   '<!@(pkg-config --libs-only-L --libs-only-other <(gtk_packages))',
163                 ],
164                 'libraries': [
165                   '<!@(pkg-config --libs-only-l <(gtk_packages))',
166                 ],
167               },
168             }],
169           ],
170         },
171         {
172           'target_name': 'gtkprint2',
173           'type': 'none',
174           'conditions': [
175             ['_toolset=="target"', {
176               'direct_dependent_settings': {
177                 'cflags': [
178                   '<!@(<(pkg-config) --cflags gtk+-unix-print-2.0)',
179                 ],
180               },
181               'link_settings': {
182                 'ldflags': [
183                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gtk+-unix-print-2.0)',
184                 ],
185                 'libraries': [
186                   '<!@(<(pkg-config) --libs-only-l gtk+-unix-print-2.0)',
187                 ],
188               },
189             }],
190           ],
191         },
192       ],  # targets
193     }],
194     [ 'use_x11==1 or ozone_platform_ozonex==1', {
195       # Hide X11 and related dependencies when use_x11=0
196       'targets': [
197         {
198           'target_name': 'x11',
199           'type': 'none',
200           'toolsets': ['host', 'target'],
201           'conditions': [
202             ['_toolset=="target"', {
203               'direct_dependent_settings': {
204                 'cflags': [
205                   '<!@(<(pkg-config) --cflags x11)',
206                 ],
207               },
208               'link_settings': {
209                 'ldflags': [
210                   '<!@(<(pkg-config) --libs-only-L --libs-only-other x11 xi)',
211                 ],
212                 'libraries': [
213                   '<!@(<(pkg-config) --libs-only-l x11 xi)',
214                 ],
215               },
216             }, {
217               'direct_dependent_settings': {
218                 'cflags': [
219                   '<!@(pkg-config --cflags x11)',
220                 ],
221               },
222               'link_settings': {
223                 'ldflags': [
224                   '<!@(pkg-config --libs-only-L --libs-only-other x11 xi)',
225                 ],
226                 'libraries': [
227                   '<!@(pkg-config --libs-only-l x11 xi)',
228                 ],
229               },
230             }],
231           ],
232         },
233         {
234           'target_name': 'xcursor',
235           'type': 'none',
236           'direct_dependent_settings': {
237             'cflags': [
238               '<!@(<(pkg-config) --cflags xcursor)',
239             ],
240           },
241           'link_settings': {
242             'ldflags': [
243               '<!@(<(pkg-config) --libs-only-L --libs-only-other xcursor)',
244             ],
245             'libraries': [
246               '<!@(<(pkg-config) --libs-only-l xcursor)',
247             ],
248           },
249         },
250         {
251           'target_name': 'xcomposite',
252           'type': 'none',
253           'direct_dependent_settings': {
254             'cflags': [
255               '<!@(<(pkg-config) --cflags xcomposite)',
256             ],
257           },
258           'link_settings': {
259             'ldflags': [
260               '<!@(<(pkg-config) --libs-only-L --libs-only-other xcomposite)',
261             ],
262             'libraries': [
263               '<!@(<(pkg-config) --libs-only-l xcomposite)',
264             ],
265           },
266         },
267         {
268           'target_name': 'xdamage',
269           'type': 'none',
270           'direct_dependent_settings': {
271             'cflags': [
272               '<!@(<(pkg-config) --cflags xdamage)',
273             ],
274           },
275           'link_settings': {
276             'ldflags': [
277               '<!@(<(pkg-config) --libs-only-L --libs-only-other xdamage)',
278             ],
279             'libraries': [
280               '<!@(<(pkg-config) --libs-only-l xdamage)',
281             ],
282           },
283         },
284         {
285           'target_name': 'xext',
286           'type': 'none',
287           'direct_dependent_settings': {
288             'cflags': [
289               '<!@(<(pkg-config) --cflags xext)',
290             ],
291           },
292           'link_settings': {
293             'ldflags': [
294               '<!@(<(pkg-config) --libs-only-L --libs-only-other xext)',
295             ],
296             'libraries': [
297               '<!@(<(pkg-config) --libs-only-l xext)',
298             ],
299           },
300         },
301         {
302           'target_name': 'xfixes',
303           'type': 'none',
304           'direct_dependent_settings': {
305             'cflags': [
306               '<!@(<(pkg-config) --cflags xfixes)',
307             ],
308           },
309           'link_settings': {
310             'ldflags': [
311               '<!@(<(pkg-config) --libs-only-L --libs-only-other xfixes)',
312             ],
313             'libraries': [
314               '<!@(<(pkg-config) --libs-only-l xfixes)',
315             ],
316           },
317         },
318         {
319           'target_name': 'xi',
320           'type': 'none',
321           'direct_dependent_settings': {
322             'cflags': [
323               '<!@(<(pkg-config) --cflags xi)',
324             ],
325           },
326           'link_settings': {
327             'ldflags': [
328               '<!@(<(pkg-config) --libs-only-L --libs-only-other xi)',
329             ],
330             'libraries': [
331               '<!@(<(pkg-config) --libs-only-l xi)',
332             ],
333           },
334         },
335         {
336           'target_name': 'xrandr',
337           'type': 'none',
338           'toolsets': ['host', 'target'],
339           'conditions': [
340             ['_toolset=="target"', {
341               'direct_dependent_settings': {
342                 'cflags': [
343                   '<!@(<(pkg-config) --cflags xrandr)',
344                 ],
345               },
346               'link_settings': {
347                 'ldflags': [
348                   '<!@(<(pkg-config) --libs-only-L --libs-only-other xrandr)',
349                 ],
350                 'libraries': [
351                   '<!@(<(pkg-config) --libs-only-l xrandr)',
352                 ],
353               },
354             }, {
355               'direct_dependent_settings': {
356                 'cflags': [
357                   '<!@(pkg-config --cflags xrandr)',
358                 ],
359               },
360               'link_settings': {
361                 'ldflags': [
362                   '<!@(pkg-config --libs-only-L --libs-only-other xrandr)',
363                 ],
364                 'libraries': [
365                   '<!@(pkg-config --libs-only-l xrandr)',
366                 ],
367               },
368             }],
369           ],
370         },
371         {
372           'target_name': 'xrender',
373           'type': 'none',
374           'direct_dependent_settings': {
375             'cflags': [
376               '<!@(<(pkg-config) --cflags xrender)',
377             ],
378           },
379           'link_settings': {
380             'ldflags': [
381               '<!@(<(pkg-config) --libs-only-L --libs-only-other xrender)',
382             ],
383             'libraries': [
384               '<!@(<(pkg-config) --libs-only-l xrender)',
385             ],
386           },
387         },
388         {
389           'target_name': 'xtst',
390           'type': 'none',
391           'toolsets': ['host', 'target'],
392           'conditions': [
393             ['_toolset=="target"', {
394               'direct_dependent_settings': {
395                 'cflags': [
396                   '<!@(<(pkg-config) --cflags xtst)',
397                 ],
398               },
399               'link_settings': {
400                 'ldflags': [
401                   '<!@(<(pkg-config) --libs-only-L --libs-only-other xtst)',
402                 ],
403                 'libraries': [
404                   '<!@(<(pkg-config) --libs-only-l xtst)',
405                 ],
406               },
407             }, {
408               'direct_dependent_settings': {
409                 'cflags': [
410                   '<!@(pkg-config --cflags xtst)',
411                 ],
412               },
413               'link_settings': {
414                 'ldflags': [
415                   '<!@(pkg-config --libs-only-L --libs-only-other xtst)',
416                 ],
417                 'libraries': [
418                   '<!@(pkg-config --libs-only-l xtst)',
419                 ],
420               },
421             }]
422           ]
423         }
424       ],  # targets
425     }],
426     ['use_gtk3==1', {
427       # Hide GTK3 and related dependencies when use_gtk3==0 because the user
428       # might not have the GTK3 headers yet.
429       'targets': [
430         {
431           'target_name': 'gtk3',
432           'type': 'none',
433           'toolsets': ['host', 'target'],
434           'variables': {
435             # gtk requires gmodule, but it does not list it as a dependency
436             # in some misconfigured systems.
437             'gtk_packages': 'gmodule-2.0 gtk+-3.0 gthread-2.0',
438           },
439           'conditions': [
440             ['_toolset=="target"', {
441               'all_dependent_settings': {
442                 'cflags': [
443                   '<!@(<(pkg-config) --cflags <(gtk_packages))',
444                 ],
445               },
446               'link_settings': {
447                 'ldflags': [
448                   '<!@(<(pkg-config) --libs-only-L --libs-only-other <(gtk_packages))',
449                 ],
450                 'libraries': [
451                   '<!@(<(pkg-config) --libs-only-l <(gtk_packages))',
452                 ],
453               },
454             }, {
455               'all_dependent_settings': {
456                 'cflags': [
457                   '<!@(pkg-config --cflags <(gtk_packages))',
458                 ],
459               },
460               'link_settings': {
461                 'ldflags': [
462                   '<!@(pkg-config --libs-only-L --libs-only-other <(gtk_packages))',
463                 ],
464                 'libraries': [
465                   '<!@(pkg-config --libs-only-l <(gtk_packages))',
466                 ],
467               },
468             }],
469           ],
470         },
471         {
472           'target_name': 'gtkprint3',
473           'type': 'none',
474           'conditions': [
475             ['_toolset=="target"', {
476               'direct_dependent_settings': {
477                 'cflags': [
478                   '<!@(<(pkg-config) --cflags gtk+-unix-print-3.0)',
479                 ],
480               },
481               'link_settings': {
482                 'ldflags': [
483                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gtk+-unix-print-3.0)',
484                 ],
485                 'libraries': [
486                   '<!@(<(pkg-config) --libs-only-l gtk+-unix-print-3.0)',
487                 ],
488               },
489             }],
490           ],
491         },
492       ],
493     }],
494     ['use_x11==1 and chromeos==0', {
495       'targets': [
496         {
497           'target_name': 'xscrnsaver',
498           'type': 'none',
499           'direct_dependent_settings': {
500             'cflags': [
501               '<!@(<(pkg-config) --cflags xscrnsaver)',
502             ],
503           },
504           'link_settings': {
505             'ldflags': [
506               '<!@(<(pkg-config) --libs-only-L --libs-only-other xscrnsaver)',
507             ],
508             'libraries': [
509               '<!@(<(pkg-config) --libs-only-l xscrnsaver)',
510             ],
511           },
512         },
513       ],  # targets
514     }],
515     ['use_evdev_gestures==1', {
516       'targets': [
517         {
518           'target_name': 'libevdev-cros',
519           'type': 'none',
520           'direct_dependent_settings': {
521             'cflags': [
522               '<!@(<(pkg-config) --cflags libevdev-cros)'
523             ],
524           },
525           'link_settings': {
526             'ldflags': [
527               '<!@(<(pkg-config) --libs-only-L --libs-only-other libevdev-cros)',
528             ],
529             'libraries': [
530               '<!@(<(pkg-config) --libs-only-l libevdev-cros)',
531             ],
532           },
533         },
534         {
535           'target_name': 'libgestures',
536           'type': 'none',
537           'direct_dependent_settings': {
538             'cflags': [
539               '<!@(<(pkg-config) --cflags libgestures)'
540             ],
541           },
542           'link_settings': {
543             'ldflags': [
544               '<!@(<(pkg-config) --libs-only-L --libs-only-other libgestures)',
545             ],
546             'libraries': [
547               '<!@(<(pkg-config) --libs-only-l libgestures)',
548             ],
549           },
550         },
551       ],
552     }],
553     ['use_xkbcommon==1', {
554       'targets': [
555         {
556           'target_name': 'xkbcommon',
557           'type': 'none',
558           'direct_dependent_settings': {
559             'cflags': [
560               '<!@(<(pkg-config) --cflags xkbcommon)'
561             ],
562           },
563           'link_settings': {
564             'ldflags': [
565               '<!@(<(pkg-config) --libs-only-L --libs-only-other xkbcommon)',
566             ],
567             'libraries': [
568               '<!@(<(pkg-config) --libs-only-l xkbcommon)',
569             ],
570           },
571         },
572       ],
573     }],
574     ['ozone_platform_gbm==1 or chromeos==1', {
575       'targets': [
576         {
577           'target_name': 'libdrm',
578           'type': 'none',
579           'direct_dependent_settings': {
580             'cflags': [
581               '<!@(<(pkg-config) --cflags libdrm)',
582             ],
583           },
584           'link_settings': {
585             'ldflags': [
586               '<!@(<(pkg-config) --libs-only-L --libs-only-other libdrm)',
587             ],
588             'libraries': [
589               '<!@(<(pkg-config) --libs-only-l libdrm)',
590             ],
591           },
592         },
593       ],
594     }],
595     ['use_udev==1', {
596       'targets': [
597         {
598           'target_name': 'udev',
599           'type': 'static_library',
600           'conditions': [
601             ['_toolset=="target"', {
602               'include_dirs': [
603                 '../..',
604               ],
605               'hard_dependency': 1,
606               'actions': [
607                 {
608                   'variables': {
609                     'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libudev0.h',
610                     'output_cc': '<(INTERMEDIATE_DIR)/libudev0_loader.cc',
611                     'generator': '../../tools/generate_library_loader/generate_library_loader.py',
612                   },
613                   'action_name': 'generate_libudev0_loader',
614                   'inputs': [
615                     '<(generator)',
616                   ],
617                   'outputs': [
618                     '<(output_h)',
619                     '<(output_cc)',
620                   ],
621                   'action': ['python',
622                              '<(generator)',
623                              '--name', 'LibUdev0Loader',
624                              '--output-h', '<(output_h)',
625                              '--output-cc', '<(output_cc)',
626                              '--header', '"third_party/libudev/libudev0.h"',
627                              '--link-directly=0',
628                              '<@(libudev_functions)',
629                   ],
630                   'message': 'Generating libudev0 library loader',
631                   'process_outputs_as_sources': 1,
632                 },
633                 {
634                   'variables': {
635                     'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libudev1.h',
636                     'output_cc': '<(INTERMEDIATE_DIR)/libudev1_loader.cc',
637                     'generator': '../../tools/generate_library_loader/generate_library_loader.py',
638                   },
639                   'action_name': 'generate_libudev1_loader',
640                   'inputs': [
641                     '<(generator)',
642                   ],
643                   'outputs': [
644                     '<(output_h)',
645                     '<(output_cc)',
646                   ],
647                   'action': ['python',
648                              '<(generator)',
649                              '--name', 'LibUdev1Loader',
650                              '--output-h', '<(output_h)',
651                              '--output-cc', '<(output_cc)',
652                              '--header', '"third_party/libudev/libudev1.h"',
653                              '--link-directly=0',
654                              '<@(libudev_functions)',
655                   ],
656                   'message': 'Generating libudev1 library loader',
657                   'process_outputs_as_sources': 1,
658                 },
659               ],
660             }],
661           ],
662         },
663       ],
664     }],
665     ['use_libpci==1', {
666       'targets': [
667         {
668           'target_name': 'libpci',
669           'type': 'static_library',
670           'cflags': [
671             '<!@(<(pkg-config) --cflags libpci)',
672           ],
673           'direct_dependent_settings': {
674             'include_dirs': [
675               '<(SHARED_INTERMEDIATE_DIR)',
676             ],
677             'conditions': [
678               ['linux_link_libpci==1', {
679                 'link_settings': {
680                   'ldflags': [
681                     '<!@(<(pkg-config) --libs-only-L --libs-only-other libpci)',
682                   ],
683                   'libraries': [
684                     '<!@(<(pkg-config) --libs-only-l libpci)',
685                   ],
686                 }
687               }],
688             ],
689           },
690           'include_dirs': [
691             '../..',
692           ],
693           'hard_dependency': 1,
694           'actions': [
695             {
696               'variables': {
697                 'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libpci.h',
698                 'output_cc': '<(INTERMEDIATE_DIR)/libpci_loader.cc',
699                 'generator': '../../tools/generate_library_loader/generate_library_loader.py',
700               },
701               'action_name': 'generate_libpci_loader',
702               'inputs': [
703                 '<(generator)',
704               ],
705               'outputs': [
706                 '<(output_h)',
707                 '<(output_cc)',
708               ],
709               'action': ['python',
710                          '<(generator)',
711                          '--name', 'LibPciLoader',
712                          '--output-h', '<(output_h)',
713                          '--output-cc', '<(output_cc)',
714                          '--header', '<pci/pci.h>',
715                          # TODO(phajdan.jr): Report problem to pciutils project
716                          # and get it fixed so that we don't need --use-extern-c.
717                          '--use-extern-c',
718                          '--link-directly=<(linux_link_libpci)',
719                          '<@(libpci_functions)',
720               ],
721               'message': 'Generating libpci library loader',
722               'process_outputs_as_sources': 1,
723             },
724           ],
725         },
726       ],
727     }],
728   ],  # conditions
729   'targets': [
730     {
731       'target_name': 'dbus',
732       'type': 'none',
733       'direct_dependent_settings': {
734         'cflags': [
735           '<!@(<(pkg-config) --cflags dbus-1)',
736         ],
737       },
738       'link_settings': {
739         'ldflags': [
740           '<!@(<(pkg-config) --libs-only-L --libs-only-other dbus-1)',
741         ],
742         'libraries': [
743           '<!@(<(pkg-config) --libs-only-l dbus-1)',
744         ],
745       },
746     },
747     {
748       'target_name': 'fontconfig',
749       'type': 'none',
750       'conditions': [
751         ['_toolset=="target"', {
752           'conditions': [
753             ['use_system_fontconfig==1', {
754               'direct_dependent_settings': {
755                 'cflags': [
756                   '<!@(<(pkg-config) --cflags fontconfig)',
757                 ],
758               },
759               'link_settings': {
760                 'ldflags': [
761                   '<!@(<(pkg-config) --libs-only-L --libs-only-other fontconfig)',
762                 ],
763                 'libraries': [
764                   '<!@(<(pkg-config) --libs-only-l fontconfig)',
765                 ],
766               },
767             }, {  # use_system_fontconfig==0
768               'dependencies': [
769                 '../../third_party/fontconfig/fontconfig.gyp:fontconfig',
770               ],
771               'export_dependent_settings' : [
772                 '../../third_party/fontconfig/fontconfig.gyp:fontconfig',
773               ],
774             }],
775           ],
776         }],
777       ],
778     },
779     {
780       'target_name': 'freetype2',
781       'type': 'none',
782       'conditions': [
783         ['_toolset=="target"', {
784           'direct_dependent_settings': {
785             'cflags': [
786               '<!@(<(pkg-config) --cflags freetype2)',
787             ],
788           },
789           'link_settings': {
790             'ldflags': [
791               '<!@(<(pkg-config) --libs-only-L --libs-only-other freetype2)',
792             ],
793             'libraries': [
794               '<!@(<(pkg-config) --libs-only-l freetype2)',
795             ],
796           },
797         }],
798       ],
799     },
800     {
801       'target_name': 'gconf',
802       'type': 'none',
803       'conditions': [
804         ['use_gconf==1 and _toolset=="target"', {
805           'direct_dependent_settings': {
806             'cflags': [
807               '<!@(<(pkg-config) --cflags gconf-2.0)',
808             ],
809             'defines': [
810               'USE_GCONF',
811             ],
812           },
813           'link_settings': {
814             'ldflags': [
815               '<!@(<(pkg-config) --libs-only-L --libs-only-other gconf-2.0)',
816             ],
817             'libraries': [
818               '<!@(<(pkg-config) --libs-only-l gconf-2.0)',
819             ],
820           },
821         }],
822       ],
823     },
824     {
825       'target_name': 'gio',
826       'type': 'static_library',
827       'conditions': [
828         ['use_gio==1 and _toolset=="target"', {
829           'cflags': [
830             '<!@(<(pkg-config) --cflags gio-2.0)',
831           ],
832           'variables': {
833             'gio_warning_define': [
834               # glib >=2.40 deprecate g_settings_list_schemas in favor of
835               # g_settings_schema_source_list_schemas. This function is not
836               # available on earlier versions that we still need to support
837               # (specifically, 2.32), so disable the warning.
838               # TODO(mgiuca): Remove this suppression (and variable) when we
839               # drop support for Ubuntu 13.10 (saucy) and earlier. Update the
840               # code to use g_settings_schema_source_list_schemas instead.
841               'GLIB_DISABLE_DEPRECATION_WARNINGS',
842             ],
843           },
844           'defines': [
845             '<(gio_warning_define)',
846           ],
847           'direct_dependent_settings': {
848             'cflags': [
849               '<!@(<(pkg-config) --cflags gio-2.0)',
850             ],
851             'defines': [
852               'USE_GIO',
853               '<(gio_warning_define)',
854             ],
855             'include_dirs': [
856               '<(SHARED_INTERMEDIATE_DIR)',
857             ],
858           },
859           'include_dirs': [
860             '../..',
861           ],
862           'link_settings': {
863             'ldflags': [
864               '<!@(<(pkg-config) --libs-only-L --libs-only-other gio-2.0)',
865             ],
866             'libraries': [
867               '<!@(<(pkg-config) --libs-only-l gio-2.0)',
868             ],
869             'conditions': [
870               ['linux_link_gsettings==0 and OS=="linux"', {
871                 'libraries': [
872                   '-ldl',
873                 ],
874               }],
875             ],
876           },
877           'hard_dependency': 1,
878           'actions': [
879             {
880               'variables': {
881                 'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libgio.h',
882                 'output_cc': '<(INTERMEDIATE_DIR)/libgio_loader.cc',
883                 'generator': '../../tools/generate_library_loader/generate_library_loader.py',
884               },
885               'action_name': 'generate_libgio_loader',
886               'inputs': [
887                 '<(generator)',
888               ],
889               'outputs': [
890                 '<(output_h)',
891                 '<(output_cc)',
892               ],
893               'action': ['python',
894                          '<(generator)',
895                          '--name', 'LibGioLoader',
896                          '--output-h', '<(output_h)',
897                          '--output-cc', '<(output_cc)',
898                          '--header', '<gio/gio.h>',
899                          '--link-directly=<(linux_link_gsettings)',
900                          '<@(libgio_functions)',
901               ],
902               'message': 'Generating libgio library loader',
903               'process_outputs_as_sources': 1,
904             },
905           ],
906         }],
907       ],
908     },
909     {
910       'target_name': 'glib',
911       'type': 'none',
912       'toolsets': ['host', 'target'],
913       'variables': {
914         'glib_packages': 'glib-2.0 gmodule-2.0 gobject-2.0 gthread-2.0',
915       },
916       'conditions': [
917         ['_toolset=="target"', {
918           'direct_dependent_settings': {
919             'cflags': [
920               '<!@(<(pkg-config) --cflags <(glib_packages))',
921             ],
922           },
923           'link_settings': {
924             'ldflags': [
925               '<!@(<(pkg-config) --libs-only-L --libs-only-other <(glib_packages))',
926             ],
927             'libraries': [
928               '<!@(<(pkg-config) --libs-only-l <(glib_packages))',
929             ],
930           },
931         }, {
932           'direct_dependent_settings': {
933             'cflags': [
934               '<!@(pkg-config --cflags <(glib_packages))',
935             ],
936           },
937           'link_settings': {
938             'ldflags': [
939               '<!@(pkg-config --libs-only-L --libs-only-other <(glib_packages))',
940             ],
941             'libraries': [
942               '<!@(pkg-config --libs-only-l <(glib_packages))',
943             ],
944           },
945         }],
946       ],
947     },
948     {
949       'target_name': 'gnome_keyring',
950       'type': 'none',
951       'conditions': [
952         ['use_gnome_keyring==1', {
953           'direct_dependent_settings': {
954             'cflags': [
955               '<!@(<(pkg-config) --cflags gnome-keyring-1)',
956             ],
957             'defines': [
958               'USE_GNOME_KEYRING',
959             ],
960             'conditions': [
961               ['linux_link_gnome_keyring==0', {
962                 'defines': ['DLOPEN_GNOME_KEYRING'],
963               }],
964             ],
965           },
966           'conditions': [
967             ['linux_link_gnome_keyring!=0', {
968               'link_settings': {
969                 'ldflags': [
970                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)',
971                 ],
972                 'libraries': [
973                   '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)',
974                 ],
975               },
976             }, {
977               'conditions': [
978                 ['OS=="linux"', {
979                  'link_settings': {
980                    'libraries': [
981                      '-ldl',
982                    ],
983                  },
984                 }],
985               ],
986             }],
987           ],
988         }],
989       ],
990     },
991     {
992       # The unit tests use a few convenience functions from the GNOME
993       # Keyring library directly. We ignore linux_link_gnome_keyring and
994       # link directly in this version of the target to allow this.
995       # *** Do not use this target in the main binary! ***
996       'target_name': 'gnome_keyring_direct',
997       'type': 'none',
998       'conditions': [
999         ['use_gnome_keyring==1', {
1000           'direct_dependent_settings': {
1001             'cflags': [
1002               '<!@(<(pkg-config) --cflags gnome-keyring-1)',
1003             ],
1004             'defines': [
1005               'USE_GNOME_KEYRING',
1006             ],
1007             'conditions': [
1008               ['linux_link_gnome_keyring==0', {
1009                 'defines': ['DLOPEN_GNOME_KEYRING'],
1010               }],
1011             ],
1012           },
1013           'link_settings': {
1014             'ldflags': [
1015               '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)',
1016             ],
1017             'libraries': [
1018               '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)',
1019             ],
1020           },
1021         }],
1022       ],
1023     },
1024     {
1025       'target_name': 'libbrlapi',
1026       'type': 'static_library',
1027       'all_dependent_settings': {
1028         'include_dirs': [
1029           '<(SHARED_INTERMEDIATE_DIR)',
1030         ],
1031         'defines': [
1032           'USE_BRLAPI',
1033         ],
1034         'conditions': [
1035           ['linux_link_libbrlapi==1', {
1036             'link_settings': {
1037               'libraries': [
1038                 '-lbrlapi',
1039               ],
1040             }
1041           }],
1042         ],
1043       },
1044       'include_dirs': [
1045         '../..',
1046       ],
1047       'hard_dependency': 1,
1048       'actions': [
1049         {
1050           'variables': {
1051             'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libbrlapi.h',
1052             'output_cc': '<(INTERMEDIATE_DIR)/libbrlapi_loader.cc',
1053             'generator': '../../tools/generate_library_loader/generate_library_loader.py',
1054           },
1055           'action_name': 'generate_brlapi_loader',
1056           'inputs': [
1057             '<(generator)',
1058           ],
1059           'outputs': [
1060             '<(output_h)',
1061             '<(output_cc)',
1062           ],
1063           'action': ['python',
1064                      '<(generator)',
1065                      '--name', 'LibBrlapiLoader',
1066                      '--output-h', '<(output_h)',
1067                      '--output-cc', '<(output_cc)',
1068                      '--header', '<brlapi.h>',
1069                      '--link-directly=<(linux_link_libbrlapi)',
1070                      '<@(libbrlapi_functions)',
1071           ],
1072           'message': 'Generating libbrlapi library loader',
1073           'process_outputs_as_sources': 1,
1074         },
1075       ],
1076     },
1077     {
1078       'target_name': 'libcap',
1079       'type': 'none',
1080       'link_settings': {
1081         'libraries': [
1082           '-lcap',
1083         ],
1084       },
1085     },
1086     {
1087       'target_name': 'libresolv',
1088       'type': 'none',
1089       'link_settings': {
1090         'libraries': [
1091           '-lresolv',
1092         ],
1093       },
1094     },
1095     {
1096       # GN version: //third_party/speech-dispatcher
1097       'target_name': 'libspeechd',
1098       'type': 'static_library',
1099       'direct_dependent_settings': {
1100         'include_dirs': [
1101           '<(SHARED_INTERMEDIATE_DIR)',
1102         ],
1103         'conditions': [
1104           ['linux_link_libspeechd==1', {
1105             'link_settings': {
1106               'libraries': [
1107                 '-lspeechd',
1108               ],
1109             }
1110           }],
1111         ],
1112       },
1113       'include_dirs': [
1114         '../..',
1115       ],
1116       'hard_dependency': 1,
1117       'actions': [
1118         {
1119           'variables': {
1120             'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libspeechd.h',
1121             'output_cc': '<(INTERMEDIATE_DIR)/libspeechd_loader.cc',
1122             'generator': '../../tools/generate_library_loader/generate_library_loader.py',
1124             # speech-dispatcher >= 0.8 installs libspeechd.h into
1125             # speech-dispatcher/libspeechd.h, whereas speech-dispatcher < 0.8
1126             # puts libspeechd.h in the top-level include directory.
1127             # Since we need to support both cases for now, we ship a copy of
1128             # libspeechd.h in third_party/speech-dispatcher. If the user
1129             # prefers to link against the speech-dispatcher directly, the
1130             # `libspeechd_h_prefix' variable can be passed to gyp with a value
1131             # such as "speech-dispatcher/" that will be prepended to
1132             # "libspeechd.h" in the #include directive.
1133             # TODO(phaldan.jr): Once we do not need to support
1134             # speech-dispatcher < 0.8 we can get rid of all this (including
1135             # third_party/speech-dispatcher) and just include
1136             # speech-dispatcher/libspeechd.h unconditionally.
1137             'libspeechd_h_prefix%': '',
1138           },
1139           'action_name': 'generate_libspeechd_loader',
1140           'inputs': [
1141             '<(generator)',
1142           ],
1143           'outputs': [
1144             '<(output_h)',
1145             '<(output_cc)',
1146           ],
1147           'action': ['python',
1148                      '<(generator)',
1149                      '--name', 'LibSpeechdLoader',
1150                      '--output-h', '<(output_h)',
1151                      '--output-cc', '<(output_cc)',
1152                      '--header', '<<(libspeechd_h_prefix)libspeechd.h>',
1153                      '--bundled-header',
1154                      '"third_party/speech-dispatcher/libspeechd.h"',
1155                      '--link-directly=<(linux_link_libspeechd)',
1156                      'spd_open',
1157                      'spd_say',
1158                      'spd_stop',
1159                      'spd_close',
1160                      'spd_pause',
1161                      'spd_resume',
1162                      'spd_set_notification_on',
1163                      'spd_set_voice_rate',
1164                      'spd_set_voice_pitch',
1165                      'spd_list_synthesis_voices',
1166                      'spd_set_synthesis_voice',
1167                      'spd_list_modules',
1168                      'spd_set_output_module',
1169                      'spd_set_language',
1170           ],
1171           'message': 'Generating libspeechd library loader',
1172           'process_outputs_as_sources': 1,
1173         },
1174       ],
1175     },
1176     {
1177       'target_name': 'pangocairo',
1178       'type': 'none',
1179       'toolsets': ['host', 'target'],
1180       'conditions': [
1181         ['use_pango==1 and use_cairo==1', {
1182           'conditions': [
1183             ['_toolset=="target"', {
1184               'direct_dependent_settings': {
1185                 'cflags': [
1186                   '<!@(<(pkg-config) --cflags pangocairo pangoft2)',
1187                 ],
1188               },
1189               'link_settings': {
1190                 'ldflags': [
1191                   '<!@(<(pkg-config) --libs-only-L --libs-only-other pangocairo pangoft2)',
1192                 ],
1193                 'libraries': [
1194                   '<!@(<(pkg-config) --libs-only-l pangocairo pangoft2)',
1195                 ],
1196               },
1197             }, {
1198               'direct_dependent_settings': {
1199                 'cflags': [
1200                   '<!@(pkg-config --cflags pangocairo pangoft2)',
1201                 ],
1202               },
1203               'link_settings': {
1204                 'ldflags': [
1205                   '<!@(pkg-config --libs-only-L --libs-only-other pangocairo pangoft2)',
1206                 ],
1207                 'libraries': [
1208                   '<!@(pkg-config --libs-only-l pangocairo pangoft2)',
1209                 ],
1210               },
1211             }],
1212           ],
1213         }],
1214       ],
1215     },
1216     {
1217       'target_name': 'ssl',
1218       'type': 'none',
1219       'conditions': [
1220         ['_toolset=="target"', {
1221           'conditions': [
1222             ['use_openssl==1', {
1223               'dependencies': [
1224                 '../../third_party/boringssl/boringssl.gyp:boringssl',
1225               ],
1226             }, {
1227               'dependencies': [
1228                 '../../net/third_party/nss/ssl.gyp:libssl',
1229               ],
1230               'direct_dependent_settings': {
1231                 'include_dirs+': [
1232                   # We need for our local copies of the libssl3 headers to come
1233                   # before other includes, as we are shadowing system headers.
1234                   '<(DEPTH)/net/third_party/nss/ssl',
1235                 ],
1236               },
1237             }],
1238             # Link in the system NSS if it is used for either the internal
1239             # crypto library (use_openssl==0) or platform certificate
1240             # library (use_nss_certs==1).
1241             ['use_openssl==0 or use_nss_certs==1', {
1242               'direct_dependent_settings': {
1243                 'cflags': [
1244                   '<!@(<(pkg-config) --cflags nss)',
1245                 ],
1246               },
1247               'link_settings': {
1248                 'ldflags': [
1249                   '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)',
1250                 ],
1251                 'libraries': [
1252                   '<!@(<(pkg-config) --libs-only-l nss | sed -e "s/-lssl3//")',
1253                 ],
1254               },
1255               'conditions': [
1256                 ['clang==1', {
1257                   'direct_dependent_settings': {
1258                     'cflags': [
1259                       # There is a broken header guard in /usr/include/nss/secmod.h:
1260                       # https://bugzilla.mozilla.org/show_bug.cgi?id=884072
1261                       '-Wno-header-guard',
1262                     ],
1263                   },
1264                 }],
1265               ],
1266             }],
1267           ]
1268         }],
1269       ],
1270     },
1271   ],