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