diff options
| -rw-r--r-- | apex/apex.go | 3 | ||||
| -rw-r--r-- | apex/apex_test.go | 25 |
2 files changed, 26 insertions, 2 deletions
diff --git a/apex/apex.go b/apex/apex.go index 52a5e206c..1e65b0ffe 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -2008,6 +2008,9 @@ func (vctx *visitorContext) normalizeFileInfo(mctx android.ModuleContext) { // If a module is directly included and also transitively depended on // consider it as directly included. e.transitiveDep = e.transitiveDep && f.transitiveDep + // If a module is added as both a JNI library and a regular shared library, consider it as a + // JNI library. + e.isJniLib = e.isJniLib || f.isJniLib encountered[dest] = e } } diff --git a/apex/apex_test.go b/apex/apex_test.go index 1717f3e05..9475f5da3 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -7977,7 +7977,8 @@ func TestApexWithJniLibs(t *testing.T) { apex { name: "myapex", key: "myapex.key", - jni_libs: ["mylib", "libfoo.rust"], + binaries: ["mybin"], + jni_libs: ["mylib", "mylib3", "libfoo.rust"], updatable: false, } @@ -8004,6 +8005,24 @@ func TestApexWithJniLibs(t *testing.T) { apex_available: [ "myapex" ], } + // Used as both a JNI library and a regular shared library. + cc_library { + name: "mylib3", + srcs: ["mylib.cpp"], + system_shared_libs: [], + stl: "none", + apex_available: [ "myapex" ], + } + + cc_binary { + name: "mybin", + srcs: ["mybin.cpp"], + shared_libs: ["mylib3"], + system_shared_libs: [], + stl: "none", + apex_available: [ "myapex" ], + } + rust_ffi_shared { name: "libfoo.rust", crate_name: "foo", @@ -8027,10 +8046,12 @@ func TestApexWithJniLibs(t *testing.T) { rule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexManifestRule") // Notice mylib2.so (transitive dep) is not added as a jni_lib - ensureEquals(t, rule.Args["opt"], "-a jniLibs libfoo.rust.so mylib.so") + ensureEquals(t, rule.Args["opt"], "-a jniLibs libfoo.rust.so mylib.so mylib3.so") ensureExactContents(t, ctx, "myapex", "android_common_myapex", []string{ + "bin/mybin", "lib64/mylib.so", "lib64/mylib2.so", + "lib64/mylib3.so", "lib64/libfoo.rust.so", "lib64/libc++.so", // auto-added to libfoo.rust by Soong "lib64/liblog.so", // auto-added to libfoo.rust by Soong |