Index: mojo/mojo_base.gyp |
diff --git a/mojo/mojo_base.gyp b/mojo/mojo_base.gyp |
index dd9a64945630d7a6acd54aa769220266bd6844f3..ac8b8140638ed4d05a31d612fb0acf9fe7f5b94f 100644 |
--- a/mojo/mojo_base.gyp |
+++ b/mojo/mojo_base.gyp |
@@ -6,9 +6,37 @@ |
# Chrome should be here. Other components that are useful only in |
# Mojo land like mojo_shell should be in mojo.gyp. |
{ |
- 'includes': [ |
- '../third_party/mojo/mojo_variables.gypi', |
- ], |
+ 'variables': { |
+ 'chromium_code': 1, |
+ 'conditions': [ |
+ # |
+ # The following mojo_system-prefixed variables are used to express a |
+ # dependency on the mojo system APIs. |
+ # |
+ # In a component == "shared_library" build, everything can link against |
+ # mojo_system_impl because it is built as a shared library. However, in a |
+ # component != "shared_library" build, mojo_system_impl is linked into an |
+ # executable (e.g., mojo_shell), and must be injected into other shared |
+ # libraries (i.e., Mojo Apps) that need the mojo system API. |
+ # |
+ # For component targets, add <(mojo_system_for_component) to your |
+ # dependencies section. For loadable module targets (e.g., a Mojo App), |
+ # add <(mojo_system_for_loadable_module) to your dependencies section. |
+ # |
+ # NOTE: component != "shared_library" implies that we are generating a |
+ # static library, and in that case, it is expected that the target |
+ # listing the component as a dependency will specify either mojo_system |
+ # or mojo_system_impl to link against. This enables multiple targets to |
+ # link against the same component library without having to agree on |
+ # which Mojo system library they are using. |
+ # |
+ ['component=="shared_library"', { |
+ 'mojo_system_for_component': "<(DEPTH)/mojo/mojo_edk.gyp:mojo_system_impl", |
+ }, { |
+ 'mojo_system_for_component': "<(DEPTH)/third_party/mojo/mojo_public.gyp:mojo_system_placeholder", |
+ }], |
+ ], |
+ }, |
'targets': [ |
{ |
'target_name': 'mojo_base', |
@@ -130,12 +158,12 @@ |
'../base/base.gyp:base_message_loop_tests', |
'../testing/gtest.gyp:gtest', |
'../url/url.gyp:url_lib', |
- '../third_party/mojo/mojo_edk.gyp:mojo_system_impl', |
- '../third_party/mojo/mojo_edk.gyp:mojo_common_test_support', |
- '../third_party/mojo/mojo_edk.gyp:mojo_run_all_unittests', |
'../third_party/mojo/mojo_public.gyp:mojo_cpp_bindings', |
'../third_party/mojo/mojo_public.gyp:mojo_public_test_utils', |
'mojo_common_lib', |
+ 'mojo_edk.gyp:mojo_system_impl', |
+ 'mojo_edk.gyp:mojo_common_test_support', |
+ 'mojo_edk.gyp:mojo_run_all_unittests', |
'mojo_environment_chromium', |
'mojo_message_pump_lib', |
'mojo_url_type_converters', |
@@ -286,9 +314,9 @@ |
'type': 'executable', |
'dependencies': [ |
'mojo_application_base', |
+ 'mojo_edk.gyp:mojo_run_all_unittests', |
'../base/base.gyp:base', |
'../testing/gtest.gyp:gtest', |
- '../third_party/mojo/mojo_edk.gyp:mojo_run_all_unittests', |
'../third_party/mojo/mojo_public.gyp:mojo_utility', |
'../third_party/mojo/mojo_public.gyp:mojo_environment_standalone', |
], |
@@ -323,7 +351,7 @@ |
'../base/base.gyp:base', |
'../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', |
'mojo_common_lib', |
- '../third_party/mojo/mojo_edk.gyp:mojo_system_impl', |
+ 'mojo_edk.gyp:mojo_system_impl', |
'mojo_environment_chromium', |
'mojo_jni_headers', |
], |