aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-07-25 15:00:14 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-25 15:02:02 -0700
commit1ed89aa24c91248fc062477250d5188940a848de (patch)
tree52dd5f464cedcc69f7576a3897cad89e0aba3b27 /src/main/java/com/google/devtools/build/lib/rules/android
parent03bd99d4a4a6ae51b45907fc4b8677eeafe1d6c8 (diff)
Automated rollback of commit 16dde0de06a3a4157a13e7e7264afeb6a50b2dde.
*** Reason for rollback *** Crash (see linked bug). PiperOrigin-RevId: 206060905
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java51
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java4
3 files changed, 30 insertions, 34 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 af205eb4d9..5703def576 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Streams;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ResourceSet;
import com.google.devtools.build.lib.analysis.AnalysisUtils;
@@ -46,8 +45,9 @@ import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.rules.android.ZipFilterBuilder.CheckHashMismatchMode;
+import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore;
import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
-import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
import com.google.devtools.build.lib.rules.java.ClasspathConfiguredFragment;
import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
import com.google.devtools.build.lib.rules.java.JavaCommon;
@@ -795,39 +795,28 @@ public class AndroidCommon {
return asNeverLink;
}
- public CcLinkingInfo getCcLinkingInfo() {
- return getCcLinkingInfo(
+ public AbstractCcLinkParamsStore getCcLinkParamsStore() {
+ return getCcLinkParamsStore(
javaCommon.targetsTreatedAsDeps(ClasspathType.BOTH), ImmutableList.<String>of());
}
- public static CcLinkingInfo getCcLinkingInfo(
+ public static AbstractCcLinkParamsStore getCcLinkParamsStore(
final Iterable<? extends TransitiveInfoCollection> deps, final Collection<String> linkOpts) {
-
- CcLinkParams linkOptsParams = CcLinkParams.builder().addLinkOpts(linkOpts).build();
- CcLinkingInfo linkOptsProvider =
- CcLinkingInfo.Builder.create()
- .setStaticModeParamsForDynamicLibrary(linkOptsParams)
- .setStaticModeParamsForExecutable(linkOptsParams)
- .setDynamicModeParamsForDynamicLibrary(linkOptsParams)
- .setDynamicModeParamsForExecutable(linkOptsParams)
- .build();
-
- ImmutableList<CcLinkingInfo> ccLinkingInfos =
- ImmutableList.<CcLinkingInfo>builder()
- .add(linkOptsProvider)
- .addAll(
- Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.class))
- .map(JavaCcLinkParamsProvider::getCcLinkingInfo)
- .collect(ImmutableList.toImmutableList()))
- .addAll(
- Streams.stream(
- AnalysisUtils.getProviders(deps, AndroidCcLinkParamsProvider.PROVIDER))
- .map(AndroidCcLinkParamsProvider::getLinkParams)
- .collect(ImmutableList.toImmutableList()))
- .addAll(AnalysisUtils.getProviders(deps, CcLinkingInfo.PROVIDER))
- .build();
-
- return CcLinkingInfo.merge(ccLinkingInfos);
+ return new AbstractCcLinkParamsStore() {
+ @Override
+ protected void collect(
+ CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
+ builder.addTransitiveTargets(
+ deps,
+ // Link in Java-specific C++ code in the transitive closure
+ JavaCcLinkParamsProvider.TO_LINK_PARAMS,
+ // Link in Android-specific C++ code (e.g., android_libraries) in the transitive closure
+ AndroidCcLinkParamsProvider.TO_LINK_PARAMS,
+ // Link in non-language-specific C++ code in the transitive closure
+ CcLinkParamsStore.TO_LINK_PARAMS);
+ builder.addLinkOpts(linkOpts);
+ }
+ };
}
/** Returns {@link AndroidConfiguration} in given context. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
index 50d69dc9ab..19262c7ce8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
@@ -30,6 +30,8 @@ import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
import com.google.devtools.build.lib.rules.android.AndroidLibraryAarInfo.Aar;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
+import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider;
@@ -244,7 +246,12 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
.add(
JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(javaTargetAttributes, javaSemantics))
- .addNativeDeclaredProvider(androidCommon.getCcLinkingInfo())
+ .addNativeDeclaredProvider(
+ new AndroidCcLinkParamsProvider(
+ CcLinkingInfo.Builder.create()
+ .setCcLinkParamsStore(
+ new CcLinkParamsStore(androidCommon.getCcLinkParamsStore()))
+ .build()))
.addNativeDeclaredProvider(new ProguardSpecProvider(transitiveProguardConfigs))
.addNativeDeclaredProvider(
new AndroidProguardInfo(proguardLibrary.collectLocalProguardSpecs()))
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 0df0d333b2..6bea350871 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
@@ -68,10 +68,10 @@ public final class NativeLibs {
for (Map.Entry<String, Collection<TransitiveInfoCollection>> entry :
getSplitDepsByArchitecture(ruleContext, depsAttributes).asMap().entrySet()) {
CcLinkParams linkParams =
- AndroidCommon.getCcLinkingInfo(
+ AndroidCommon.getCcLinkParamsStore(
entry.getValue(),
ImmutableList.of("-Wl,-soname=lib" + ruleContext.getLabel().getName()))
- .getStaticModeParamsForDynamicLibrary();
+ .get(/* linkingStatically */ true, /* linkShared */ true);
Artifact nativeDepsLibrary =
NativeDepsHelper.linkAndroidNativeDepsIfPresent(