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