Index: base/base.gyp |
diff --git a/base/base.gyp b/base/base.gyp |
index e070ee205f55ba6f43be813e0b588db70caac326..53e28034dbb769fb696165e56dd425ae9e6a025e 100644 |
--- a/base/base.gyp |
+++ b/base/base.gyp |
@@ -128,7 +128,7 @@ |
}, |
{ |
'target_name': 'base_unittests', |
- 'type': 'executable', |
+ 'type': '<(gtest_target_type)', |
'sources': [ |
# Tests. |
'android/jni_android_unittest.cc', |
@@ -313,6 +313,11 @@ |
'android/jni_generator/jni_generator.gyp:jni_generator_tests', |
], |
}], |
+ ['OS=="android" and "<(gtest_target_type)"=="shared_library"', { |
+ 'dependencies': [ |
+ '../testing/android/native_test.gyp:native_test_native_code', |
+ ], |
+ }], |
['use_glib==1', { |
'sources!': [ |
'file_version_info_unittest.cc', |
@@ -628,5 +633,54 @@ |
}, |
], |
}], |
+ # Special target to wrap a <(gtest_target_type)==shared_library |
+ # base_unittests into an android apk for execution. |
+ # TODO(jrg): lib.target comes from _InstallableTargetInstallPath() |
+ # in the gyp make generator. What is the correct way to extract |
+ # this path from gyp and into 'raw' for input to antfiles? |
+ # Hard-coding in the gypfile seems a poor choice. |
+ # TODO(jrg): there has to be a shorter way to do all this. Try |
+ # and convert this entire target cluster into ~5 lines that can be |
+ # trivially copied to other projects with only a deps change, such |
+ # as with a new gtest_target_type called |
+ # 'shared_library_apk_wrapper' that does a lot of this magically. |
+ ['OS=="android" and "<(gtest_target_type)"=="shared_library"', { |
+ 'targets': [ |
+ { |
+ 'target_name': 'base_unittests_apk', |
+ 'type': 'none', |
+ 'dependencies': [ |
+ 'base', # So that android/java/java.gyp:base_java is built |
+ 'base_unittests', |
+ ], |
+ 'actions': [ |
+ { |
+ # Generate apk files (including source and antfile) from |
+ # a template, and builds them. |
+ 'action_name': 'generate_and_build', |
+ 'inputs': [ |
+ '../testing/android/generate_native_test.py', |
+ '<(PRODUCT_DIR)/lib.target/libbase_unittests.so', |
+ '<(PRODUCT_DIR)/chromium_base.jar' |
+ ], |
+ 'outputs': [ |
+ '<(PRODUCT_DIR)/ChromeNativeTests_base_unittests-debug.apk', |
+ ], |
+ 'action': [ |
+ '../testing/android/generate_native_test.py', |
+ '--native_library', |
+ '<(PRODUCT_DIR)/lib.target/libbase_unittests.so', |
+ '--jar', |
+ '<(PRODUCT_DIR)/chromium_base.jar', |
+ '--output', |
+ '<(PRODUCT_DIR)/base_unittests_apk', |
+ '--ant-args', |
+ '-DPRODUCT_DIR=<(PRODUCT_DIR)', |
+ '--ant-compile' |
+ ], |
+ }, |
+ ] |
+ }], |
+ }], |
], |
} |