Separate Simple Backend creation from initialization.
[chromium-blink-merge.git] / build / linux / system.gyp
blobd9e553d7ddea8935317a9234238560295414765c
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': './pkg-config-wrapper "<(sysroot)" "<(target_arch)"',
10       }, {
11         'pkg-config': 'pkg-config'
12       }],
13     ],
15     'linux_link_libgps%': 0,
16     'linux_link_libpci%': 0,
17     'linux_link_libspeechd%': 0,
18   },
19   'conditions': [
20     [ 'os_posix==1 and OS!="mac"', {
21       'variables': {
22         # We use our own copy of libssl3, although we still need to link against
23         # the rest of NSS.
24         'use_system_ssl%': 0,
25       },
26     }, {
27       'variables': {
28         'use_system_ssl%': 1,
29       },
30     }],
31     [ 'chromeos==0', {
32       # Hide GTK and related dependencies for Chrome OS, so they won't get
33       # added back to Chrome OS. Don't try to use GTK on Chrome OS.
34       'targets': [
35         {
36           'target_name': 'gtk',
37           'type': 'none',
38           'toolsets': ['host', 'target'],
39           'variables': {
40             # gtk requires gmodule, but it does not list it as a dependency
41             # in some misconfigured systems.
42             'gtk_packages': 'gmodule-2.0 gtk+-2.0 gthread-2.0',
43           },
44           'conditions': [
45             ['_toolset=="target"', {
46               'direct_dependent_settings': {
47                 'cflags': [
48                   '<!@(<(pkg-config) --cflags <(gtk_packages))',
49                 ],
50               },
51               'link_settings': {
52                 'ldflags': [
53                   '<!@(<(pkg-config) --libs-only-L --libs-only-other <(gtk_packages))',
54                 ],
55                 'libraries': [
56                   '<!@(<(pkg-config) --libs-only-l <(gtk_packages))',
57                 ],
58               },
59             }, {
60               'direct_dependent_settings': {
61                 'cflags': [
62                   '<!@(pkg-config --cflags <(gtk_packages))',
63                 ],
64               },
65               'link_settings': {
66                 'ldflags': [
67                   '<!@(pkg-config --libs-only-L --libs-only-other <(gtk_packages))',
68                 ],
69                 'libraries': [
70                   '<!@(pkg-config --libs-only-l <(gtk_packages))',
71                 ],
72               },
73             }],
74           ],
75         },
76         {
77           'target_name': 'gtkprint',
78           'type': 'none',
79           'conditions': [
80             ['_toolset=="target"', {
81               'direct_dependent_settings': {
82                 'cflags': [
83                   '<!@(<(pkg-config) --cflags gtk+-unix-print-2.0)',
84                 ],
85               },
86               'link_settings': {
87                 'ldflags': [
88                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gtk+-unix-print-2.0)',
89                 ],
90                 'libraries': [
91                   '<!@(<(pkg-config) --libs-only-l gtk+-unix-print-2.0)',
92                 ],
93               },
94             }],
95           ],
96         },
97         {
98           'target_name': 'gdk',
99           'type': 'none',
100           'conditions': [
101             ['_toolset=="target"', {
102               'direct_dependent_settings': {
103                 'cflags': [
104                   '<!@(<(pkg-config) --cflags gdk-2.0)',
105                 ],
106               },
107               'link_settings': {
108                 'ldflags': [
109                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gdk-2.0)',
110                 ],
111                 'libraries': [
112                   '<!@(<(pkg-config) --libs-only-l gdk-2.0)',
113                 ],
114               },
115             }],
116           ],
117         },
118       ],  # targets
119     }],
120     ['linux_use_libgps==1', {
121       'targets': [
122         {
123           'target_name': 'libgps',
124           'type': 'static_library',
125           'dependencies': [
126             '../../base/base.gyp:base',
127           ],
128           'all_dependent_settings': {
129             'defines': [
130               'USE_LIBGPS',
131             ],
132             'include_dirs': [
133               '<(SHARED_INTERMEDIATE_DIR)',
134             ],
135             'conditions': [
136               ['linux_link_libgps==1', {
137                 'cflags': [
138                   '<!@(<(pkg-config) --cflags libgps)',
139                 ],
140                 'link_settings': {
141                   'ldflags': [
142                     '<!@(<(pkg-config) --libs-only-L --libs-only-other libgps)',
143                   ],
144                   'libraries': [
145                     '<!@(<(pkg-config) --libs-only-l libgps)',
146                   ],
147                 }
148               }],
149             ],
150           },
151           'hard_dependency': 1,
152           'actions': [
153             {
154               'variables': {
155                 'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libgps.h',
156                 'output_cc': '<(INTERMEDIATE_DIR)/libgps_loader.cc',
157                 'generator': '../../tools/generate_library_loader/generate_library_loader.py',
158               },
159               'action_name': 'generate_libgps_loader',
160               'inputs': [
161                 '<(generator)',
162               ],
163               'outputs': [
164                 '<(output_h)',
165                 '<(output_cc)',
166               ],
167               'action': ['python',
168                          '<(generator)',
169                          '--name', 'LibGpsLoader',
170                          '--output-h', '<(output_h)',
171                          '--output-cc', '<(output_cc)',
172                          '--header', '<gps.h>',
173                          '--bundled-header', '"third_party/gpsd/release-3.1/gps.h"',
174                          '--link-directly=<(linux_link_libgps)',
175                          'gps_open',
176                          'gps_close',
177                          'gps_read',
178                          # We don't use gps_shm_read() directly, just to make
179                          # sure that libgps has the shared memory support.
180                          'gps_shm_read',
181               ],
182               'message': 'Generating libgps library loader.',
183               'process_outputs_as_sources': 1,
184             },
185           ],
186         },
187       ],
188     }],
189   ],  # conditions
190   'targets': [
191     {
192       'target_name': 'ssl',
193       'type': 'none',
194       'conditions': [
195         ['_toolset=="target"', {
196           'conditions': [
197             ['use_openssl==1', {
198               'dependencies': [
199                 '../../third_party/openssl/openssl.gyp:openssl',
200               ],
201             }],
202             ['use_openssl==0 and use_system_ssl==0', {
203               'dependencies': [
204                 '../../net/third_party/nss/ssl.gyp:libssl',
205                 '../../third_party/zlib/zlib.gyp:zlib',
206               ],
207               'direct_dependent_settings': {
208                 'include_dirs+': [
209                   # We need for our local copies of the libssl3 headers to come
210                   # before other includes, as we are shadowing system headers.
211                   '<(DEPTH)/net/third_party/nss/ssl',
212                 ],
213                 'cflags': [
214                   '<!@(<(pkg-config) --cflags nss)',
215                 ],
216               },
217               'link_settings': {
218                 'ldflags': [
219                   '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)',
220                 ],
221                 'libraries': [
222                   '<!@(<(pkg-config) --libs-only-l nss | sed -e "s/-lssl3//")',
223                 ],
224               },
225             }],
226             ['use_openssl==0 and use_system_ssl==1', {
227               'direct_dependent_settings': {
228                 'cflags': [
229                   '<!@(<(pkg-config) --cflags nss)',
230                 ],
231                 'defines': [
232                   'USE_SYSTEM_SSL',
233                 ],
234               },
235               'link_settings': {
236                 'ldflags': [
237                   '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)',
238                 ],
239                 'libraries': [
240                   '<!@(<(pkg-config) --libs-only-l nss)',
241                 ],
242               },
243             }],
244           ]
245         }],
246       ],
247     },
248     {
249       'target_name': 'freetype2',
250       'type': 'none',
251       'conditions': [
252         ['_toolset=="target"', {
253           'direct_dependent_settings': {
254             'cflags': [
255               '<!@(<(pkg-config) --cflags freetype2)',
256             ],
257           },
258           'link_settings': {
259             'ldflags': [
260               '<!@(<(pkg-config) --libs-only-L --libs-only-other freetype2)',
261             ],
262             'libraries': [
263               '<!@(<(pkg-config) --libs-only-l freetype2)',
264             ],
265           },
266         }],
267       ],
268     },
269     {
270       'target_name': 'fontconfig',
271       'type': 'none',
272       'conditions': [
273         ['_toolset=="target"', {
274           'direct_dependent_settings': {
275             'cflags': [
276               '<!@(<(pkg-config) --cflags fontconfig)',
277             ],
278           },
279           'link_settings': {
280             'ldflags': [
281               '<!@(<(pkg-config) --libs-only-L --libs-only-other fontconfig)',
282             ],
283             'libraries': [
284               '<!@(<(pkg-config) --libs-only-l fontconfig)',
285             ],
286           },
287         }],
288       ],
289     },
290     {
291       'target_name': 'gconf',
292       'type': 'none',
293       'conditions': [
294         ['use_gconf==1 and _toolset=="target"', {
295           'direct_dependent_settings': {
296             'cflags': [
297               '<!@(<(pkg-config) --cflags gconf-2.0)',
298             ],
299             'defines': [
300               'USE_GCONF',
301             ],
302           },
303           'link_settings': {
304             'ldflags': [
305               '<!@(<(pkg-config) --libs-only-L --libs-only-other gconf-2.0)',
306             ],
307             'libraries': [
308               '<!@(<(pkg-config) --libs-only-l gconf-2.0)',
309             ],
310           },
311         }],
312       ],
313     },
314     {
315       'target_name': 'gio',
316       'type': 'static_library',
317       'conditions': [
318         ['use_gio==1 and _toolset=="target"', {
319           'dependencies': [
320             '../../base/base.gyp:base',
321           ],
322           'cflags': [
323             '<!@(<(pkg-config) --cflags gio-2.0)',
324           ],
325           'direct_dependent_settings': {
326             'cflags': [
327               '<!@(<(pkg-config) --cflags gio-2.0)',
328             ],
329             'defines': [
330               'USE_GIO',
331             ],
332             'include_dirs': [
333               '<(SHARED_INTERMEDIATE_DIR)',
334             ],
335           },
336           'link_settings': {
337             'ldflags': [
338               '<!@(<(pkg-config) --libs-only-L --libs-only-other gio-2.0)',
339             ],
340             'libraries': [
341               '<!@(<(pkg-config) --libs-only-l gio-2.0)',
342             ],
343             'conditions': [
344               ['linux_link_gsettings==0 and OS=="linux"', {
345                 'libraries': [
346                   '-ldl',
347                 ],
348               }],
349             ],
350           },
351           'hard_dependency': 1,
352           'actions': [
353             {
354               'variables': {
355                 'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libgio.h',
356                 'output_cc': '<(INTERMEDIATE_DIR)/libgio_loader.cc',
357                 'generator': '../../tools/generate_library_loader/generate_library_loader.py',
358               },
359               'action_name': 'generate_libgio_loader',
360               'inputs': [
361                 '<(generator)',
362               ],
363               'outputs': [
364                 '<(output_h)',
365                 '<(output_cc)',
366               ],
367               'action': ['python',
368                          '<(generator)',
369                          '--name', 'LibGioLoader',
370                          '--output-h', '<(output_h)',
371                          '--output-cc', '<(output_cc)',
372                          '--header', '<gio/gio.h>',
373                          # TODO(phajdan.jr): This will no longer be needed
374                          # after switch to Precise, http://crbug.com/158577 .
375                          '--bundled-header', '"build/linux/gsettings.h"',
376                          '--link-directly=<(linux_link_gsettings)',
377                          'g_settings_new',
378                          'g_settings_get_child',
379                          'g_settings_get_string',
380                          'g_settings_get_boolean',
381                          'g_settings_get_int',
382                          'g_settings_get_strv',
383                          'g_settings_list_schemas',
384               ],
385               'message': 'Generating libgio library loader.',
386               'process_outputs_as_sources': 1,
387             },
388           ],
389         }],
390       ],
391     },
392     {
393       'target_name': 'libpci',
394       'type': 'static_library',
395       'cflags': [
396         '<!@(<(pkg-config) --cflags libpci)',
397       ],
398       'dependencies': [
399         '../../base/base.gyp:base',
400       ],
401       'direct_dependent_settings': {
402         'include_dirs': [
403           '<(SHARED_INTERMEDIATE_DIR)',
404         ],
405         'conditions': [
406           ['linux_link_libpci==1', {
407             'link_settings': {
408               'ldflags': [
409                 '<!@(<(pkg-config) --libs-only-L --libs-only-other libpci)',
410               ],
411               'libraries': [
412                 '<!@(<(pkg-config) --libs-only-l libpci)',
413               ],
414             }
415           }],
416         ],
417       },
418       'hard_dependency': 1,
419       'actions': [
420         {
421           'variables': {
422             'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libpci.h',
423             'output_cc': '<(INTERMEDIATE_DIR)/libpci_loader.cc',
424             'generator': '../../tools/generate_library_loader/generate_library_loader.py',
425           },
426           'action_name': 'generate_libpci_loader',
427           'inputs': [
428             '<(generator)',
429           ],
430           'outputs': [
431             '<(output_h)',
432             '<(output_cc)',
433           ],
434           'action': ['python',
435                      '<(generator)',
436                      '--name', 'LibPciLoader',
437                      '--output-h', '<(output_h)',
438                      '--output-cc', '<(output_cc)',
439                      '--header', '<pci/pci.h>',
440                      # TODO(phajdan.jr): Report problem to pciutils project
441                      # and get it fixed so that we don't need --use-extern-c.
442                      '--use-extern-c',
443                      '--link-directly=<(linux_link_libpci)',
444                      'pci_alloc',
445                      'pci_init',
446                      'pci_cleanup',
447                      'pci_scan_bus',
448                      'pci_fill_info',
449                      'pci_lookup_name',
450           ],
451           'message': 'Generating libpci library loader.',
452           'process_outputs_as_sources': 1,
453         },
454       ],
455     },
456     {
457       'target_name': 'libspeechd',
458       'type': 'static_library',
459       'dependencies': [
460         '../../base/base.gyp:base',
461       ],
462       'direct_dependent_settings': {
463         'include_dirs': [
464           '<(SHARED_INTERMEDIATE_DIR)',
465         ],
466         'conditions': [
467           ['linux_link_libspeechd==1', {
468             'link_settings': {
469               'libraries': [
470                 '-lspeechd',
471               ],
472             }
473           }],
474         ],
475       },
476       'hard_dependency': 1,
477       'actions': [
478         {
479           'variables': {
480             'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libspeechd.h',
481             'output_cc': '<(INTERMEDIATE_DIR)/libspeechd_loader.cc',
482             'generator': '../../tools/generate_library_loader/generate_library_loader.py',
483           },
484           'action_name': 'generate_libspeechd_loader',
485           'inputs': [
486             '<(generator)',
487           ],
488           'outputs': [
489             '<(output_h)',
490             '<(output_cc)',
491           ],
492           'action': ['python',
493                      '<(generator)',
494                      '--name', 'LibSpeechdLoader',
495                      '--output-h', '<(output_h)',
496                      '--output-cc', '<(output_cc)',
497                      '--header', '<libspeechd.h>',
498                      '--link-directly=<(linux_link_libspeechd)',
499                      'spd_open',
500                      'spd_say',
501                      'spd_stop',
502                      'spd_close',
503                      'spd_set_notification_on',
504                      'spd_set_voice_rate',
505                      'spd_set_voice_pitch',
506           ],
507           'message': 'Generating libspeechd library loader.',
508           'process_outputs_as_sources': 1,
509         },
510       ],
511     },
512     {
513       'target_name': 'x11',
514       'type': 'none',
515       'toolsets': ['host', 'target'],
516       'conditions': [
517         ['_toolset=="target"', {
518           'direct_dependent_settings': {
519             'cflags': [
520               '<!@(<(pkg-config) --cflags x11)',
521             ],
522           },
523           'link_settings': {
524             'ldflags': [
525               '<!@(<(pkg-config) --libs-only-L --libs-only-other x11 xi)',
526             ],
527             'libraries': [
528               '<!@(<(pkg-config) --libs-only-l x11 xi)',
529             ],
530           },
531         }, {
532           'direct_dependent_settings': {
533             'cflags': [
534               '<!@(pkg-config --cflags x11)',
535             ],
536           },
537           'link_settings': {
538             'ldflags': [
539               '<!@(pkg-config --libs-only-L --libs-only-other x11 xi)',
540             ],
541             'libraries': [
542               '<!@(pkg-config --libs-only-l x11 xi)',
543             ],
544           },
545         }],
546       ],
547     },
548     {
549       'target_name': 'xext',
550       'type': 'none',
551       'conditions': [
552         ['_toolset=="target"', {
553           'direct_dependent_settings': {
554             'cflags': [
555               '<!@(<(pkg-config) --cflags xext)',
556             ],
557           },
558           'link_settings': {
559             'ldflags': [
560               '<!@(<(pkg-config) --libs-only-L --libs-only-other xext)',
561             ],
562             'libraries': [
563               '<!@(<(pkg-config) --libs-only-l xext)',
564             ],
565           },
566         }],
567       ],
568     },
569     {
570       'target_name': 'xfixes',
571       'type': 'none',
572       'conditions': [
573         ['_toolset=="target"', {
574           'direct_dependent_settings': {
575             'cflags': [
576               '<!@(<(pkg-config) --cflags xfixes)',
577             ],
578           },
579           'link_settings': {
580             'ldflags': [
581               '<!@(<(pkg-config) --libs-only-L --libs-only-other xfixes)',
582             ],
583             'libraries': [
584               '<!@(<(pkg-config) --libs-only-l xfixes)',
585             ],
586           },
587         }],
588       ],
589     },
590     {
591       'target_name': 'libgcrypt',
592       'type': 'none',
593       'conditions': [
594         ['_toolset=="target" and use_cups==1', {
595           'direct_dependent_settings': {
596             'cflags': [
597               '<!@(libgcrypt-config --cflags)',
598             ],
599           },
600           'link_settings': {
601             'libraries': [
602               '<!@(libgcrypt-config --libs)',
603             ],
604           },
605         }],
606       ],
607     },
608     {
609       'target_name': 'selinux',
610       'type': 'none',
611       'conditions': [
612         ['_toolset=="target"', {
613           'link_settings': {
614             'libraries': [
615               '-lselinux',
616             ],
617           },
618         }],
619       ],
620     },
621     {
622       'target_name': 'gnome_keyring',
623       'type': 'none',
624       'conditions': [
625         ['use_gnome_keyring==1', {
626           'direct_dependent_settings': {
627             'cflags': [
628               '<!@(<(pkg-config) --cflags gnome-keyring-1)',
629             ],
630             'defines': [
631               'USE_GNOME_KEYRING',
632             ],
633             'conditions': [
634               ['linux_link_gnome_keyring==0', {
635                 'defines': ['DLOPEN_GNOME_KEYRING'],
636               }],
637             ],
638           },
639           'conditions': [
640             ['linux_link_gnome_keyring!=0', {
641               'link_settings': {
642                 'ldflags': [
643                   '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)',
644                 ],
645                 'libraries': [
646                   '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)',
647                 ],
648               },
649             }, {
650               'conditions': [
651                 ['OS=="linux"', {
652                  'link_settings': {
653                    'libraries': [
654                      '-ldl',
655                    ],
656                  },
657                 }],
658               ],
659             }],
660           ],
661         }],
662       ],
663     },
664     {
665       # The unit tests use a few convenience functions from the GNOME
666       # Keyring library directly. We ignore linux_link_gnome_keyring and
667       # link directly in this version of the target to allow this.
668       # *** Do not use this target in the main binary! ***
669       'target_name': 'gnome_keyring_direct',
670       'type': 'none',
671       'conditions': [
672         ['use_gnome_keyring==1', {
673           'direct_dependent_settings': {
674             'cflags': [
675               '<!@(<(pkg-config) --cflags gnome-keyring-1)',
676             ],
677             'defines': [
678               'USE_GNOME_KEYRING',
679             ],
680             'conditions': [
681               ['linux_link_gnome_keyring==0', {
682                 'defines': ['DLOPEN_GNOME_KEYRING'],
683               }],
684             ],
685           },
686           'link_settings': {
687             'ldflags': [
688               '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)',
689             ],
690             'libraries': [
691               '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)',
692             ],
693           },
694         }],
695       ],
696     },
697     {
698       'target_name': 'dbus',
699       'type': 'none',
700       'direct_dependent_settings': {
701         'cflags': [
702           '<!@(<(pkg-config) --cflags dbus-1)',
703         ],
704       },
705       'link_settings': {
706         'ldflags': [
707           '<!@(<(pkg-config) --libs-only-L --libs-only-other dbus-1)',
708         ],
709         'libraries': [
710           '<!@(<(pkg-config) --libs-only-l dbus-1)',
711         ],
712       },
713     },
714     {
715       'target_name': 'glib',
716       'type': 'none',
717       'toolsets': ['host', 'target'],
718       'variables': {
719         'glib_packages': 'glib-2.0 gmodule-2.0 gobject-2.0 gthread-2.0',
720       },
721       'conditions': [
722         ['_toolset=="target"', {
723           'direct_dependent_settings': {
724             'cflags': [
725               '<!@(<(pkg-config) --cflags <(glib_packages))',
726             ],
727           },
728           'link_settings': {
729             'ldflags': [
730               '<!@(<(pkg-config) --libs-only-L --libs-only-other <(glib_packages))',
731             ],
732             'libraries': [
733               '<!@(<(pkg-config) --libs-only-l <(glib_packages))',
734             ],
735           },
736         }, {
737           'direct_dependent_settings': {
738             'cflags': [
739               '<!@(pkg-config --cflags <(glib_packages))',
740             ],
741           },
742           'link_settings': {
743             'ldflags': [
744               '<!@(pkg-config --libs-only-L --libs-only-other <(glib_packages))',
745             ],
746             'libraries': [
747               '<!@(pkg-config --libs-only-l <(glib_packages))',
748             ],
749           },
750         }],
751         ['use_x11==1', {
752           'link_settings': {
753             'libraries': [ '-lXtst' ]
754           }
755         }],
756       ],
757     },
758     {
759       'target_name': 'pangocairo',
760       'type': 'none',
761       'toolsets': ['host', 'target'],
762       'conditions': [
763         ['_toolset=="target"', {
764           'direct_dependent_settings': {
765             'cflags': [
766               '<!@(<(pkg-config) --cflags pangocairo)',
767             ],
768           },
769           'link_settings': {
770             'ldflags': [
771               '<!@(<(pkg-config) --libs-only-L --libs-only-other pangocairo)',
772             ],
773             'libraries': [
774               '<!@(<(pkg-config) --libs-only-l pangocairo)',
775             ],
776           },
777         }, {
778           'direct_dependent_settings': {
779             'cflags': [
780               '<!@(pkg-config --cflags pangocairo)',
781             ],
782           },
783           'link_settings': {
784             'ldflags': [
785               '<!@(pkg-config --libs-only-L --libs-only-other pangocairo)',
786             ],
787             'libraries': [
788               '<!@(pkg-config --libs-only-l pangocairo)',
789             ],
790           },
791         }],
792       ],
793     },
794     {
795       'target_name': 'libresolv',
796       'type': 'none',
797       'link_settings': {
798         'libraries': [
799           '-lresolv',
800         ],
801       },
802     },
803     {
804       'target_name': 'udev',
805       'type': 'none',
806       'conditions': [
807         # libudev is not available on *BSD
808         ['_toolset=="target" and os_bsd!=1', {
809           'direct_dependent_settings': {
810             'cflags': [
811               '<!@(<(pkg-config) --cflags libudev)'
812             ],
813           },
814           'link_settings': {
815             'ldflags': [
816               '<!@(<(pkg-config) --libs-only-L --libs-only-other libudev)',
817             ],
818             'libraries': [
819               '<!@(<(pkg-config) --libs-only-l libudev)',
820             ],
821           },
822         }],
823       ],
824     },
825   ],