aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Adam <ajmichael@google.com>2016-07-27 10:53:15 -0400
committerGravatar Adam Michael <ajmichael@google.com>2016-07-28 18:33:02 -0400
commite65876a28965c72f7a48a16be3390ba7c5c97a6f (patch)
tree71d6a6a1ae3467e597eca6f21827b9b4e605cd00 /src/main/java/com/google
parent047b0e6a2c69436544bf849dddd62792aee1b948 (diff)
Sets SONAME on shared objects in Android binaries.
Adds a linker flag to set the internal DT_SONAME. This fixes #1578 for SDK 24 and removes the warnings for previous SDKs. There is no need to set the linker flag for android_librarys that depend on native code, because the linker flag will be set by the android_binarys that depend on that android_library. Change-Id: I0d4fd78ffaf03c19ae3712bdeb28a52722a22f6f
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 7b807c5dc2..f9c5d52a5c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -860,11 +860,12 @@ public class AndroidCommon {
}
public CcLinkParamsStore getCcLinkParamsStore() {
- return getCcLinkParamsStore(javaCommon.targetsTreatedAsDeps(ClasspathType.BOTH));
+ return getCcLinkParamsStore(javaCommon.targetsTreatedAsDeps(ClasspathType.BOTH),
+ ImmutableList.<String>of());
}
public static CcLinkParamsStore getCcLinkParamsStore(
- final Iterable<? extends TransitiveInfoCollection> deps) {
+ final Iterable<? extends TransitiveInfoCollection> deps, final Collection<String> linkOpts) {
return new CcLinkParamsStore() {
@Override
protected void collect(CcLinkParams.Builder builder, boolean linkingStatically,
@@ -876,6 +877,7 @@ public class AndroidCommon {
AndroidCcLinkParamsProvider.TO_LINK_PARAMS,
// Link in non-language-specific C++ code in the transitive closure
CcLinkParamsProvider.TO_LINK_PARAMS);
+ builder.addLinkOpts(linkOpts);
}
};
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
index fc736ae5e1..b0f4d69e32 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
@@ -71,7 +71,9 @@ public final class NativeLibs {
Map<String, Iterable<Artifact>> result = new LinkedHashMap<>();
for (Map.Entry<String, Collection<TransitiveInfoCollection>> entry :
depsByArchitecture.asMap().entrySet()) {
- CcLinkParams linkParams = AndroidCommon.getCcLinkParamsStore(entry.getValue())
+ CcLinkParams linkParams = AndroidCommon.getCcLinkParamsStore(
+ entry.getValue(),
+ ImmutableList.of("-Wl,-soname=lib" + ruleContext.getLabel().getName()))
.get(/* linkingStatically */ true, /* linkShared */ true);
Artifact nativeDepsLibrary = NativeDepsHelper.maybeCreateAndroidNativeDepsAction(