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