1# Copyright 2013 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.
4
5{
6  'target_defaults': {
7    'conditions': [
8      ['mojo_shell_debug_url != ""', {
9        'defines': [
10          'MOJO_SHELL_DEBUG=1',
11          'MOJO_SHELL_DEBUG_URL="<(mojo_shell_debug_url)"',
12         ],
13      }],
14    ],
15  },
16  'includes': [
17    'mojo_apps.gypi',
18    'mojo_examples.gypi',
19    'mojo_services.gypi',
20    'mojo_variables.gypi',
21  ],
22  'targets': [
23    {
24      # GN version: //mojo
25      'target_name': 'mojo',
26      'type': 'none',
27      'dependencies': [
28        'mojo_application_manager',
29        'mojo_application_manager_unittests',
30        'mojo_apps_js_unittests',
31        'mojo_base.gyp:mojo_base',
32        'mojo_clipboard',
33        'mojo_clipboard_unittests',
34        'mojo_compositor_app',
35        'mojo_content_handler_demo',
36        'mojo_echo_client',
37        'mojo_echo_service',
38        'mojo_example_apptests',
39        'mojo_example_service',
40        'mojo_geometry_lib',
41        'mojo_html_viewer',
42        'mojo_js',
43        'mojo_native_viewport_service',
44        'mojo_network_service',
45        'mojo_pepper_container_app',
46        'mojo_png_viewer',
47        'mojo_sample_app',
48        'mojo_shell',
49        'mojo_shell_lib',
50        'mojo_shell_tests',
51        'mojo_surfaces_app',
52        'mojo_surfaces_app',
53        'mojo_surfaces_child_app',
54        'mojo_surfaces_child_gl_app',
55        'mojo_surfaces_lib',
56        'mojo_surfaces_lib_unittests',
57        'mojo_surfaces_service',
58        'mojo_test_app',
59        'mojo_test_request_tracker_app',
60        'mojo_view_manager_lib',
61        'mojo_view_manager_lib_unittests',
62        'mojo_wget',
63      ],
64      'conditions': [
65        ['use_aura==1', {
66          'dependencies': [
67            'mojo_aura_demo',
68            'mojo_aura_demo_init',
69            'mojo_browser',
70            'mojo_core_window_manager',
71            'mojo_core_window_manager_unittests',
72            'mojo_demo_launcher',
73            'mojo_embedded_app',
74            'mojo_keyboard',
75            'mojo_media_viewer',
76            'mojo_nesting_app',
77            'mojo_window_manager',
78            'mojo_wm_flow_app',
79            'mojo_wm_flow_embedded',
80            'mojo_wm_flow_init',
81            'mojo_wm_flow_wm',
82            'mojo_view_manager',
83            'mojo_view_manager_unittests',
84          ],
85        }],
86        ['OS == "linux"', {
87          'dependencies': [
88            'mojo_dbus_echo',
89            'mojo_dbus_echo_service',
90          ],
91        }],
92        ['component != "shared_library" and OS == "linux"', {
93          'dependencies': [
94            'mojo_python_bindings',
95            'mojo_python_embedder',
96            'mojo_python_system',
97            'mojo_python',
98          ],
99        }],
100      ]
101    },
102    {
103      # GN version: //mojo/shell:external_service_bindings
104      'target_name': 'mojo_external_service_bindings',
105      'type': 'static_library',
106      'sources': [
107        'shell/external_service.mojom',
108      ],
109      'includes': [ 'public/tools/bindings/mojom_bindings_generator.gypi' ],
110      'export_dependent_settings': [
111        'mojo_base.gyp:mojo_cpp_bindings',
112      ],
113      'dependencies': [
114        'mojo_base.gyp:mojo_cpp_bindings',
115      ],
116    },
117    {
118      # GN version: //mojo/spy
119      'target_name': 'mojo_spy',
120      'type': 'static_library',
121      'dependencies': [
122        '../base/base.gyp:base',
123        '../base/base.gyp:base_static',
124        '../net/net.gyp:http_server',
125        '../url/url.gyp:url_lib',
126        'mojo_application_manager',
127      ],
128      'variables': {
129        'mojom_base_output_dir': 'mojo',
130      },
131      'includes': [ 'public/tools/bindings/mojom_bindings_generator.gypi' ],
132      'sources': [
133        'spy/public/spy.mojom',
134        'spy/common.h',
135        'spy/spy.cc',
136        'spy/spy.h',
137        'spy/spy_server_impl.h',
138        'spy/spy_server_impl.cc',
139        'spy/websocket_server.cc',
140        'spy/websocket_server.h',
141      ],
142    },
143    {
144      # GN version: //mojo/shell:lib
145      'target_name': 'mojo_shell_lib',
146      'type': 'static_library',
147      'dependencies': [
148        '../base/base.gyp:base',
149        '../base/base.gyp:base_static',
150        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
151        'mojo_application_manager',
152        'mojo_base.gyp:mojo_application_bindings',
153        'mojo_base.gyp:mojo_common_lib',
154        'mojo_base.gyp:mojo_gles2_impl',
155        'mojo_base.gyp:mojo_system_impl',
156        'mojo_base.gyp:mojo_application_chromium',
157        'mojo_external_service_bindings',
158        'mojo_network_bindings',
159        'mojo_spy',
160      ],
161      'includes': [ 'public/tools/bindings/mojom_bindings_generator.gypi' ],
162      'sources': [
163        'shell/app_child_process.cc',
164        'shell/app_child_process.h',
165        'shell/app_child_process.mojom',
166        'shell/app_child_process_host.cc',
167        'shell/app_child_process_host.h',
168        'shell/child_process.cc',
169        'shell/child_process.h',
170        'shell/child_process_host.cc',
171        'shell/child_process_host.h',
172        'shell/context.cc',
173        'shell/context.h',
174        'shell/dbus_application_loader_linux.cc',
175        'shell/dbus_application_loader_linux.h',
176        'shell/dynamic_application_loader.cc',
177        'shell/dynamic_application_loader.h',
178        'shell/dynamic_service_runner.h',
179        'shell/init.cc',
180        'shell/init.h',
181        'shell/in_process_dynamic_service_runner.cc',
182        'shell/in_process_dynamic_service_runner.h',
183        'shell/mojo_url_resolver.cc',
184        'shell/mojo_url_resolver.h',
185        'shell/out_of_process_dynamic_service_runner.cc',
186        'shell/out_of_process_dynamic_service_runner.h',
187        'shell/switches.cc',
188        'shell/switches.h',
189        'shell/task_runners.cc',
190        'shell/task_runners.h',
191        'shell/test_child_process.cc',
192        'shell/test_child_process.h',
193        'shell/ui_application_loader_android.cc',
194        'shell/ui_application_loader_android.h',
195      ],
196      'conditions': [
197        ['component=="shared_library"', {
198          'dependencies': [
199            '../ui/gl/gl.gyp:gl',
200          ],
201        }],
202        ['OS=="linux"', {
203          'dependencies': [
204            '../build/linux/system.gyp:dbus',
205            '../dbus/dbus.gyp:dbus',
206          ],
207        }],
208        ['OS=="android"', {
209          'dependencies': [
210            'mojo_network_service_lib',
211            'mojo_native_viewport_service_lib',
212          ],
213          'sources': [
214            'shell/network_application_loader.cc',
215            'shell/network_application_loader.h',
216          ],
217        }],
218      ],
219    },
220    {
221      # GN version: //mojo/shell:test_support
222      'target_name': 'mojo_shell_test_support',
223      'type': 'static_library',
224      'dependencies': [
225        '../base/base.gyp:base_static',
226        'mojo_base.gyp:mojo_system_impl',
227        'mojo_shell_lib',
228      ],
229      'sources': [
230        'shell/shell_test_helper.cc',
231        'shell/shell_test_helper.h',
232      ],
233    },
234    {
235      # GN version: //mojo/shell
236      'target_name': 'mojo_shell',
237      'type': 'executable',
238      'dependencies': [
239        '../base/base.gyp:base',
240        'mojo_base.gyp:mojo_common_lib',
241        'mojo_base.gyp:mojo_environment_chromium',
242        'mojo_shell_lib',
243      ],
244      'sources': [
245        'shell/desktop/mojo_main.cc',
246      ],
247      'conditions': [
248        ['component=="shared_library"', {
249          'dependencies': [
250            '../ui/gfx/gfx.gyp:gfx',
251          ],
252        }],
253      ],
254    },
255    {
256      # GN version: //mojo/shell:mojo_shell_tests
257      'target_name': 'mojo_shell_tests',
258      'type': '<(gtest_target_type)',
259      'dependencies': [
260        '../base/base.gyp:base',
261        '../base/base.gyp:base_i18n',
262        '../base/base.gyp:test_support_base',
263        '../testing/gtest.gyp:gtest',
264        '../net/net.gyp:net_test_support',
265        '../url/url.gyp:url_lib',
266        'mojo_application_manager',
267        'mojo_base.gyp:mojo_common_lib',
268        'mojo_base.gyp:mojo_environment_chromium',
269        'mojo_base.gyp:mojo_system_impl',
270        'mojo_shell_lib',
271        'mojo_test_app',
272        'mojo_test_request_tracker_app',
273        'mojo_test_service_bindings',
274      ],
275      'sources': [
276        'shell/child_process_host_unittest.cc',
277        'shell/dynamic_application_loader_unittest.cc',
278        'shell/in_process_dynamic_service_runner_unittest.cc',
279        'shell/shell_test_base.cc',
280        'shell/shell_test_base.h',
281        'shell/shell_test_base_unittest.cc',
282        'shell/shell_test_main.cc',
283      ],
284      'conditions': [
285        ['OS == "android"', {
286          'dependencies': [
287            '../testing/android/native_test.gyp:native_test_native_code',
288          ],
289        }],
290      ],
291    },
292    {
293      # GN version: //mojo/application_manager
294      'target_name': 'mojo_application_manager',
295      'type': '<(component)',
296      'defines': [
297        'MOJO_APPLICATION_MANAGER_IMPLEMENTATION',
298      ],
299      'dependencies': [
300        '../base/base.gyp:base',
301        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
302        '../url/url.gyp:url_lib',
303        'mojo_content_handler_bindings',
304        'mojo_network_bindings',
305        'mojo_base.gyp:mojo_application_bindings',
306        'mojo_base.gyp:mojo_common_lib',
307        'mojo_base.gyp:mojo_environment_chromium',
308        '<(mojo_system_for_component)',
309      ],
310      'sources': [
311        'application_manager/application_loader.cc',
312        'application_manager/application_loader.h',
313        'application_manager/application_manager.cc',
314        'application_manager/application_manager.h',
315        'application_manager/application_manager_export.h',
316        'application_manager/background_shell_application_loader.cc',
317        'application_manager/background_shell_application_loader.h',
318      ],
319      'export_dependent_settings': [
320        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
321        'mojo_base.gyp:mojo_application_bindings',
322        'mojo_network_bindings',
323      ],
324    },
325    {
326      # GN version: //mojo/application_manager:unittests
327      'target_name': 'mojo_application_manager_unittests',
328      'type': 'executable',
329      'dependencies': [
330        '../base/base.gyp:base',
331        '../testing/gtest.gyp:gtest',
332        '../url/url.gyp:url_lib',
333        'mojo_application_manager',
334        'mojo_base.gyp:mojo_common_lib',
335        'mojo_base.gyp:mojo_cpp_bindings',
336        'mojo_base.gyp:mojo_environment_chromium',
337        'mojo_base.gyp:mojo_run_all_unittests',
338        'mojo_base.gyp:mojo_application_chromium',
339      ],
340      'includes': [ 'public/tools/bindings/mojom_bindings_generator.gypi' ],
341      'sources': [
342        'application_manager/application_manager_unittest.cc',
343        'application_manager/background_shell_application_loader_unittest.cc',
344        'application_manager/test.mojom',
345      ],
346    },
347    {
348      # GN version: //mojo/cc
349      'target_name': 'mojo_cc_support',
350      'type': 'static_library',
351      'dependencies': [
352        '../base/base.gyp:base',
353        '../cc/cc.gyp:cc',
354        '../cc/cc.gyp:cc_surfaces',
355        '../skia/skia.gyp:skia',
356        '../gpu/gpu.gyp:gles2_implementation',
357        'mojo_geometry_lib',
358        'mojo_surfaces_bindings',
359        'mojo_surfaces_lib',
360      ],
361      'includes': [
362        'mojo_public_gles2_for_loadable_module.gypi',
363      ],
364      'export_dependent_settings': [
365        'mojo_surfaces_bindings',
366      ],
367      'sources': [
368        'cc/context_provider_mojo.cc',
369        'cc/context_provider_mojo.h',
370        'cc/output_surface_mojo.cc',
371        'cc/output_surface_mojo.h',
372      ],
373    },
374  ],
375  'conditions': [
376    ['OS=="android"', {
377      'targets': [
378        {
379          'target_name': 'mojo_native_viewport_java',
380          'type': 'none',
381          'dependencies': [
382            '../base/base.gyp:base_java',
383          ],
384          'variables': {
385            'java_in_dir': '<(DEPTH)/mojo/services/native_viewport/android',
386          },
387          'includes': [ '../build/java.gypi' ],
388        },
389        {
390          'target_name': 'libmojo_shell',
391          'type': 'shared_library',
392          'dependencies': [
393            '../base/base.gyp:base',
394            '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
395            '../ui/gfx/gfx.gyp:gfx',
396            '../ui/gfx/gfx.gyp:gfx_geometry',
397            '../ui/gl/gl.gyp:gl',
398            'mojo_base.gyp:mojo_application_bindings',
399            'mojo_base.gyp:mojo_common_lib',
400            'mojo_base.gyp:mojo_environment_chromium',
401            'mojo_base.gyp:mojo_jni_headers',
402            'mojo_shell_lib',
403          ],
404          'sources': [
405            'shell/android/library_loader.cc',
406            'shell/android/mojo_main.cc',
407            'shell/android/mojo_main.h',
408          ],
409        },
410        {
411          'target_name': 'mojo_shell_apk',
412          'type': 'none',
413          'dependencies': [
414            '../base/base.gyp:base_java',
415            '../net/net.gyp:net_java',
416            'mojo_native_viewport_java',
417            'libmojo_shell',
418          ],
419          'variables': {
420            'apk_name': 'MojoShell',
421            'java_in_dir': '<(DEPTH)/mojo/shell/android/apk',
422            'resource_dir': '<(DEPTH)/mojo/shell/android/apk/res',
423            'native_lib_target': 'libmojo_shell',
424          },
425          'includes': [ '../build/java_apk.gypi' ],
426        }
427      ],
428    }],
429    ['OS=="linux"', {
430      'targets': [
431        {
432          # GN version: //mojo/dbus
433          'target_name': 'mojo_dbus_service',
434          'type': 'static_library',
435          'dependencies': [
436            '../base/base.gyp:base',
437            '../build/linux/system.gyp:dbus',
438            '../dbus/dbus.gyp:dbus',
439            'mojo_base.gyp:mojo_application_chromium',
440            'mojo_base.gyp:mojo_common_lib',
441            'mojo_base.gyp:mojo_system_impl',
442            'mojo_external_service_bindings',
443          ],
444          'sources': [
445            'dbus/dbus_external_service.h',
446            'dbus/dbus_external_service.cc',
447          ],
448        },
449      ],
450    }],
451    ['use_aura==1', {
452      'targets': [
453        {
454          # GN version: //mojo/aura
455          'target_name': 'mojo_aura_support',
456          'type': 'static_library',
457          'dependencies': [
458            '../cc/cc.gyp:cc',
459            '../ui/aura/aura.gyp:aura',
460            '../ui/compositor/compositor.gyp:compositor',
461            '../ui/events/events.gyp:events',
462            '../ui/events/events.gyp:events_base',
463            'mojo_cc_support',
464            'mojo_native_viewport_bindings',
465          ],
466          'includes': [
467            'mojo_public_gles2_for_loadable_module.gypi',
468          ],
469          'sources': [
470            'aura/aura_init.cc',
471            'aura/aura_init.h',
472            'aura/context_factory_mojo.cc',
473            'aura/context_factory_mojo.h',
474            'aura/screen_mojo.cc',
475            'aura/screen_mojo.h',
476            'aura/window_tree_host_mojo.cc',
477            'aura/window_tree_host_mojo.h',
478            'aura/window_tree_host_mojo_delegate.h',
479          ],
480        },
481        {
482          # GN version: //mojo/views
483          'target_name': 'mojo_views_support',
484          'type': 'static_library',
485          'dependencies': [
486            '../base/base.gyp:base',
487            '../base/base.gyp:base_i18n',
488            '../skia/skia.gyp:skia',
489            '../third_party/icu/icu.gyp:icui18n',
490            '../third_party/icu/icu.gyp:icuuc',
491            '../ui/aura/aura.gyp:aura',
492            '../ui/base/ui_base.gyp:ui_base',
493            '../ui/views/views.gyp:views',
494            '../ui/wm/wm.gyp:wm',
495            'mojo_aura_support',
496            'mojo_views_support_internal',
497            'mojo_view_manager_bindings',
498          ],
499          'sources': [
500            'views/input_method_mojo_linux.cc',
501            'views/input_method_mojo_linux.h',
502            'views/native_widget_view_manager.cc',
503            'views/native_widget_view_manager.h',
504            'views/views_init.cc',
505            'views/views_init.h',
506          ],
507        },
508        {
509          # GN version: //mojo/views:views_internal
510          'target_name': 'mojo_views_support_internal',
511          'type': '<(component)',
512          'dependencies': [
513            '../base/base.gyp:base',
514            '../base/base.gyp:base_i18n',
515            '../base/base.gyp:base_static',
516            '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
517            '../skia/skia.gyp:skia',
518            '../third_party/icu/icu.gyp:icui18n',
519            '../third_party/icu/icu.gyp:icuuc',
520            '../ui/base/ui_base.gyp:ui_base',
521            '../ui/gfx/gfx.gyp:gfx',
522          ],
523          'sources': [
524            'views/mojo_views_export.h',
525            'views/views_init_internal.cc',
526            'views/views_init_internal.h',
527          ],
528          'defines': [
529            'MOJO_VIEWS_IMPLEMENTATION',
530          ],
531        },
532      ],
533    }],
534    ['component!="shared_library" and OS=="linux"', {
535      'targets': [
536        {
537          # GN version: //mojo/public/python:system
538          'target_name': 'mojo_python_system',
539          'variables': {
540            'python_base_module': 'mojo',
541            'python_cython_module': 'system',
542          },
543          'sources': [
544            'public/python/mojo/c_core.pxd',
545            'public/python/mojo/c_environment.pxd',
546            'public/python/mojo/system.pyx',
547            'public/python/src/python_system_helper.cc',
548            'public/python/src/python_system_helper.h',
549          ],
550          'dependencies': [
551            'mojo_base.gyp:mojo_environment_standalone',
552            'mojo_base.gyp:mojo_system',
553            'mojo_base.gyp:mojo_utility',
554          ],
555          'includes': [ '../third_party/cython/cython_compiler.gypi' ],
556        },
557        {
558          # GN version: //mojo/python:embedder
559          'target_name': 'mojo_python_embedder',
560          'type': 'loadable_module',
561          'variables': {
562            'python_base_module': 'mojo',
563            'python_cython_module': 'embedder',
564          },
565          'sources': [
566            'python/system/mojo/embedder.pyx',
567          ],
568          'dependencies': [
569            'mojo_base.gyp:mojo_system_impl',
570          ],
571          'includes': [ '../third_party/cython/cython_compiler.gypi' ],
572        },
573        {
574          # GN version: //mojo/public/python:bindings
575          'target_name': 'mojo_python_bindings',
576          'type': 'none',
577          'variables': {
578            'python_base_module': 'mojo/bindings',
579          },
580          'sources': [
581            'public/python/mojo/bindings/__init__.py',
582            'public/python/mojo/bindings/descriptor.py',
583            'public/python/mojo/bindings/messaging.py',
584            'public/python/mojo/bindings/reflection.py',
585            'public/python/mojo/bindings/serialization.py',
586          ],
587          'dependencies': [
588            'mojo_python_system',
589          ],
590          'includes': [ '../third_party/cython/python_module.gypi' ],
591        },
592        {
593          # GN version: //mojo/python
594          'target_name': 'mojo_python',
595          'type': 'none',
596          'variables': {
597            'python_base_module': 'mojo',
598          },
599          'sources': [
600            'public/python/mojo/__init__.py',
601          ],
602          'dependencies': [
603            'mojo_python_bindings',
604            'mojo_python_embedder',
605            'mojo_python_system',
606          ],
607          # The python module need to be copied to their destinations
608          'actions': [
609            {
610              'action_name': 'Copy system module.',
611              'inputs': [
612                '<(DEPTH)/build/cp.py',
613                '<(PRODUCT_DIR)/libmojo_python_system.so',
614              ],
615              'outputs': [
616                '<(PRODUCT_DIR)/python/mojo/system.so',
617              ],
618              'action': [
619                'python',
620                '<@(_inputs)',
621                '<@(_outputs)',
622              ]
623            },
624            {
625              'action_name': 'Copy embedder module.',
626              'inputs': [
627                '<(DEPTH)/build/cp.py',
628                '<(PRODUCT_DIR)/libmojo_python_embedder.so',
629              ],
630              'outputs': [
631                '<(PRODUCT_DIR)/python/mojo/embedder.so',
632              ],
633              'action': [
634                'python',
635                '<@(_inputs)',
636                '<@(_outputs)',
637              ]
638            },
639          ],
640          'includes': [ '../third_party/cython/python_module.gypi' ],
641        },
642      ],
643    }],
644    ['component!="shared_library" and OS=="linux" and test_isolation_mode!="noop"', {
645      'targets': [
646        {
647          'target_name': 'mojo_python_unittests_run',
648          'type': 'none',
649          'dependencies': [
650            'mojo_python',
651            'mojo_base.gyp:mojo_public_test_interfaces',
652          ],
653          'includes': [
654            '../build/isolate.gypi',
655            'mojo_python_unittests.isolate',
656          ],
657          'sources': [
658            'mojo_python_unittests.isolate',
659          ],
660        },
661      ],
662    }],
663  ],
664}
665