aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-07-23 02:02:24 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-23 02:04:09 -0700
commit6b5df97308d5ce60e801f9872d6b354db5164fe6 (patch)
tree27c789f49745f2123cefecd5f9c10c343c46c692
parenta6255612e4892729d3758775c76085b26b9bc584 (diff)
C++: Refactors every provider wrapping CcLinkParamsStore
Providers that were wrapping CcLinkParamsStore now wrap CcLinkingInfo instead. CcLinkParamsStore will be deleted in a future CL. RELNOTES:none PiperOrigin-RevId: 205629924
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCcLinkParamsProvider.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidCcLinkParamsProviderApi.java5
6 files changed, 51 insertions, 41 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCcLinkParamsProvider.java
index 5d88498db7..2b9ba895d3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCcLinkParamsProvider.java
@@ -20,46 +20,46 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
+import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidCcLinkParamsProviderApi;
import com.google.devtools.build.lib.syntax.EvalException;
/** A target that provides C++ libraries to be linked into Android targets. */
@Immutable
public final class AndroidCcLinkParamsProvider extends NativeInfo
- implements AndroidCcLinkParamsProviderApi<CcLinkParamsStore> {
+ implements AndroidCcLinkParamsProviderApi<CcLinkingInfo> {
public static final String PROVIDER_NAME = "AndroidCcLinkParamsInfo";
public static final Provider PROVIDER = new Provider();
- private final CcLinkParamsStore store;
+ private final CcLinkingInfo ccLinkingInfo;
- public AndroidCcLinkParamsProvider(AbstractCcLinkParamsStore store) {
+ public AndroidCcLinkParamsProvider(CcLinkingInfo ccLinkingInfo) {
super(PROVIDER);
- this.store = new CcLinkParamsStore(store);
+ this.ccLinkingInfo = ccLinkingInfo;
}
@Override
- public CcLinkParamsStore getLinkParams() {
- return store;
+ public CcLinkingInfo getLinkParams() {
+ return ccLinkingInfo;
}
public static final Function<TransitiveInfoCollection, AbstractCcLinkParamsStore> TO_LINK_PARAMS =
(TransitiveInfoCollection input) -> {
AndroidCcLinkParamsProvider provider = input.get(AndroidCcLinkParamsProvider.PROVIDER);
- return provider == null ? null : provider.getLinkParams();
+ return provider == null ? null : provider.getLinkParams().getCcLinkParamsStore();
};
/** Provider class for {@link AndroidCcLinkParamsProvider} objects. */
public static class Provider extends BuiltinProvider<AndroidCcLinkParamsProvider>
- implements AndroidCcLinkParamsProviderApi.Provider<CcLinkParamsStore> {
+ implements AndroidCcLinkParamsProviderApi.Provider<CcLinkingInfo> {
private Provider() {
super(PROVIDER_NAME, AndroidCcLinkParamsProvider.class);
}
@Override
- public AndroidCcLinkParamsProviderApi<CcLinkParamsStore> createInfo(CcLinkParamsStore store)
+ public AndroidCcLinkParamsProviderApi<CcLinkingInfo> createInfo(CcLinkingInfo ccLinkingInfo)
throws EvalException {
- return new AndroidCcLinkParamsProvider(store);
+ return new AndroidCcLinkParamsProvider(ccLinkingInfo);
}
}
}
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 26115c36fa..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;
@@ -245,7 +247,11 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
JavaSourceInfoProvider.class,
JavaSourceInfoProvider.fromJavaTargetAttributes(javaTargetAttributes, javaSemantics))
.addNativeDeclaredProvider(
- new AndroidCcLinkParamsProvider(androidCommon.getCcLinkParamsStore()))
+ 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/cpp/CcLinkParamsStore.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
index f3cc7ee8a5..5d07f6d5cc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsStore.java
@@ -23,6 +23,8 @@ import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkParamsStoreApi;
/** An implementation class for the AbstractCcLinkParamsStore. */
@AutoCodec
+@Deprecated
+// TODO(plf): Remove class, use CcLinkParams instances individually.
public final class CcLinkParamsStore extends AbstractCcLinkParamsStore
implements CcLinkParamsStoreApi {
public static final ObjectCodec<com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore> CODEC =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
index 1d9ff5a3c3..597d788f70 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
@@ -19,32 +19,28 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
+import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
/** A target that provides C++ libraries to be linked into Java targets. */
@Immutable
@AutoCodec
public final class JavaCcLinkParamsProvider implements TransitiveInfoProvider {
- private final CcLinkParamsStore store;
-
- public JavaCcLinkParamsProvider(AbstractCcLinkParamsStore store) {
- this(new CcLinkParamsStore(store));
- }
+ private final CcLinkingInfo ccLinkingInfo;
@AutoCodec.VisibleForSerialization
@AutoCodec.Instantiator
- JavaCcLinkParamsProvider(CcLinkParamsStore store) {
- this.store = store;
+ public JavaCcLinkParamsProvider(CcLinkingInfo ccLinkingInfo) {
+ this.ccLinkingInfo = ccLinkingInfo;
}
- public AbstractCcLinkParamsStore getLinkParams() {
- return store;
+ public CcLinkingInfo getCcLinkingInfo() {
+ return ccLinkingInfo;
}
public static final Function<TransitiveInfoCollection, AbstractCcLinkParamsStore> TO_LINK_PARAMS =
input -> {
JavaCcLinkParamsProvider provider = input.getProvider(JavaCcLinkParamsProvider.class);
- return provider == null ? null : provider.getLinkParams();
+ return provider == null ? null : provider.getCcLinkingInfo().getCcLinkParamsStore();
};
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
index b5a67af825..68f7222d46 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
@@ -20,6 +20,8 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
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.CcLinkParamsStore;
+import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
import java.util.ArrayList;
import java.util.List;
@@ -41,24 +43,27 @@ public class JplCcLinkParams {
*/
public static JavaCcLinkParamsProvider createCcLinkParamsStore(
final RuleContext ruleContext, final ImmutableList<TransitiveInfoCollection> protoRuntimes) {
- List<AbstractCcLinkParamsStore> stores = new ArrayList<>();
+ List<JavaCcLinkParamsProvider> providers = new ArrayList<>();
for (TransitiveInfoCollection t :
ruleContext.getPrerequisites("deps", RuleConfiguredTarget.Mode.TARGET)) {
- stores.add(t.getProvider(JavaProtoLibraryAspectProvider.class)
- .getTransitiveInfoProviderMap()
- .getProvider(JavaCcLinkParamsProvider.class)
- .getLinkParams());
+ providers.add(
+ t.getProvider(JavaProtoLibraryAspectProvider.class)
+ .getTransitiveInfoProviderMap()
+ .getProvider(JavaCcLinkParamsProvider.class));
}
- return new JavaCcLinkParamsProvider(
- new AbstractCcLinkParamsStore() {
- @Override
- protected void collect(
- CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
- for (AbstractCcLinkParamsStore store : stores) {
- builder.add(store);
- }
- builder.addTransitiveTargets(protoRuntimes);
- }
- });
+ CcLinkingInfo.Builder builder = CcLinkingInfo.Builder.create();
+ builder.setCcLinkParamsStore(
+ new CcLinkParamsStore(
+ new AbstractCcLinkParamsStore() {
+ @Override
+ protected void collect(
+ CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
+ for (JavaCcLinkParamsProvider provider : providers) {
+ builder.add(provider.getCcLinkingInfo().getCcLinkParamsStore());
+ }
+ builder.addTransitiveTargets(protoRuntimes);
+ }
+ }));
+ return new JavaCcLinkParamsProvider(builder.build());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
index 34b4dd4cc3..15cffb4ad5 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidCcLinkParamsProviderApi.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.skylarkbuildapi.android;
import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkParamsStoreApi;
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingInfoApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
@@ -29,7 +30,7 @@ import com.google.devtools.build.lib.syntax.EvalException;
name = "AndroidCcLinkParamsInfo",
doc = "Information about the c++ libraries to be linked into Android targets.",
category = SkylarkModuleCategory.PROVIDER)
-public interface AndroidCcLinkParamsProviderApi<T extends CcLinkParamsStoreApi> extends StructApi {
+public interface AndroidCcLinkParamsProviderApi<T extends CcLinkingInfoApi> extends StructApi {
/** Name of this info object. */
public static String NAME = "AndroidCcLinkParamsInfo";
@@ -39,7 +40,7 @@ public interface AndroidCcLinkParamsProviderApi<T extends CcLinkParamsStoreApi>
/** The provider implementing this can construct the AndroidCcLinkParamsInfo provider. */
@SkylarkModule(name = "Provider", doc = "", documented = false)
- public interface Provider<T extends CcLinkParamsStoreApi> extends ProviderApi {
+ public interface Provider<T extends CcLinkingInfoApi> extends ProviderApi {
@SkylarkCallable(
name = NAME,