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