diff options
Diffstat (limited to 'src/main/java')
9 files changed, 165 insertions, 57 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java index b7bb5aa114..5e79a11e18 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java @@ -894,9 +894,13 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory { cppConfiguration.isLipoContextCollector(), cppConfiguration.processHeadersInDependencies(), CppHelper.usePicForDynamicLibraries(ruleContext, toolchain)); + + CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create(); + ccCompilationInfoBuilder.setCcCompilationContextInfo(ccCompilationContextInfo); + builder .setFilesToBuild(filesToBuild) - .addNativeDeclaredProvider(ccCompilationContextInfo) + .addNativeDeclaredProvider(ccCompilationInfoBuilder.build()) .addProvider(TransitiveLipoInfoProvider.class, transitiveLipoInfo) .addNativeDeclaredProvider( new CcExecutionDynamicLibrariesInfo( diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContextInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContextInfo.java index c7b64d7c05..efd15ac512 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContextInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContextInfo.java @@ -27,8 +27,6 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.packages.NativeInfo; -import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.cpp.CppHelper.PregreppedHeader; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; @@ -56,11 +54,8 @@ import javax.annotation.Nullable; "Immutable store of information needed for C++ compilation that is aggregated across " + "dependencies." ) -public final class CcCompilationContextInfo extends NativeInfo { - public static final NativeProvider<CcCompilationContextInfo> PROVIDER = - new NativeProvider<CcCompilationContextInfo>( - CcCompilationContextInfo.class, "CcCompilationContextInfo") {}; - +// TODO(b/77669139): Rename to CcCompilationContext. +public final class CcCompilationContextInfo { /** An empty {@code CcCompilationContextInfo}. */ public static final CcCompilationContextInfo EMPTY = new Builder(null).build(); @@ -107,7 +102,6 @@ public final class CcCompilationContextInfo extends NativeInfo { CppModuleMap cppModuleMap, @Nullable CppModuleMap verificationModuleMap, boolean propagateModuleMapAsActionInput) { - super(PROVIDER); Preconditions.checkNotNull(commandLineCcCompilationContextInfo); this.commandLineCcCompilationContextInfo = commandLineCcCompilationContextInfo; this.declaredIncludeDirs = declaredIncludeDirs; @@ -274,8 +268,8 @@ public final class CcCompilationContextInfo extends NativeInfo { return new CcCompilationContextInfo( ccCompilationContextInfo.commandLineCcCompilationContextInfo, ccCompilationContextInfo.compilationPrerequisites, - NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER), - NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER), + NestedSetBuilder.emptySet(Order.STABLE_ORDER), + NestedSetBuilder.emptySet(Order.STABLE_ORDER), ccCompilationContextInfo.declaredIncludeSrcs, ccCompilationContextInfo.pregreppedHdrs, ccCompilationContextInfo.nonCodeInputs, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java index ba662d8aff..49c88e280a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java @@ -128,8 +128,11 @@ public final class CcCompilationHelper { /** Function for extracting module maps from CppCompilationDependencies. */ private static final Function<TransitiveInfoCollection, CppModuleMap> CPP_DEPS_TO_MODULES = dep -> { - CcCompilationContextInfo ccCompilationContextInfo = - dep.get(CcCompilationContextInfo.PROVIDER); + CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER); + CcCompilationContextInfo ccCompilationContextInfo = null; + if (ccCompilationInfo != null) { + ccCompilationContextInfo = ccCompilationInfo.getCcCompilationContextInfo(); + } return ccCompilationContextInfo == null ? null : ccCompilationContextInfo.getCppModuleMap(); }; @@ -150,17 +153,14 @@ public final class CcCompilationHelper { private final TransitiveInfoProviderMap providers; private final Map<String, NestedSet<Artifact>> outputGroups; private final CcCompilationOutputs compilationOutputs; - private final CcCompilationContextInfo ccCompilationContextInfo; private CompilationInfo( TransitiveInfoProviderMap providers, Map<String, NestedSet<Artifact>> outputGroups, - CcCompilationOutputs compilationOutputs, - CcCompilationContextInfo ccCompilationContextInfo) { + CcCompilationOutputs compilationOutputs) { this.providers = providers; this.outputGroups = outputGroups; this.compilationOutputs = compilationOutputs; - this.ccCompilationContextInfo = ccCompilationContextInfo; } public TransitiveInfoProviderMap getProviders() { @@ -177,8 +177,13 @@ public final class CcCompilationHelper { } @SkylarkCallable(name = "cc_compilation_info", documented = false) + public CcCompilationInfo getCcCompilationInfo() { + return (CcCompilationInfo) providers.getProvider(CcCompilationInfo.PROVIDER.getKey()); + } + public CcCompilationContextInfo getCcCompilationContextInfo() { - return ccCompilationContextInfo; + return ((CcCompilationInfo) providers.getProvider(CcCompilationInfo.PROVIDER.getKey())) + .getCcCompilationContextInfo(); } } @@ -731,7 +736,9 @@ public final class CcCompilationHelper { new CppDebugFileProvider( dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts()), collectTransitiveLipoInfo(ccOutputs)); - providers.put(ccCompilationContextInfo); + CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create(); + ccCompilationInfoBuilder.setCcCompilationContextInfo(ccCompilationContextInfo); + providers.put(ccCompilationInfoBuilder.build()); Map<String, NestedSet<Artifact>> outputGroups = new TreeMap<>(); outputGroups.put(OutputGroupInfo.TEMP_FILES, getTemps(ccOutputs)); @@ -747,8 +754,7 @@ public final class CcCompilationHelper { CcCommon.collectCompilationPrerequisites(ruleContext, ccCompilationContextInfo)); } - return new CompilationInfo( - providers.build(), outputGroups, ccOutputs, ccCompilationContextInfo); + return new CompilationInfo(providers.build(), outputGroups, ccOutputs); } @Immutable @@ -922,7 +928,7 @@ public final class CcCompilationHelper { if (useDeps) { ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfos( - AnalysisUtils.getProviders(deps, CcCompilationContextInfo.PROVIDER)); + CcCompilationInfo.getCcCompilationContextInfos(deps)); ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfos( depCcCompilationContextInfos); } @@ -1097,10 +1103,10 @@ public final class CcCompilationHelper { List<CppModuleMap> result = deps.stream().map(CPP_DEPS_TO_MODULES).collect(toCollection(ArrayList::new)); if (ruleContext.getRule().getAttributeDefinition(":stl") != null) { - CcCompilationContextInfo stl = - ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationContextInfo.PROVIDER); + CcCompilationInfo stl = + ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationInfo.PROVIDER); if (stl != null) { - result.add(stl.getCppModuleMap()); + result.add(stl.getCcCompilationContextInfo().getCppModuleMap()); } } @@ -1980,7 +1986,9 @@ public final class CcCompilationHelper { // implementation (with caching results of this method) to avoid O(N^2) slowdown. if (ruleContext.getRule().isAttrDefined("deps", BuildType.LABEL_LIST)) { for (TransitiveInfoCollection dep : ruleContext.getPrerequisites("deps", Mode.TARGET)) { - if (dep.get(CcCompilationContextInfo.PROVIDER) != null + CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER); + if (ccCompilationInfo != null + && ccCompilationInfo.getCcCompilationContextInfo() != null && InstrumentedFilesCollector.shouldIncludeLocalSources(configuration, dep)) { return true; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java new file mode 100644 index 0000000000..cba5d39184 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java @@ -0,0 +1,97 @@ +// Copyright 2014 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.rules.cpp; + +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.AnalysisUtils; +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.packages.NativeInfo; +import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** Wrapper for every C++ compilation provider. */ +@Immutable +@AutoCodec +@SkylarkModule( + name = "cc_compilation_info", + documented = false, + category = SkylarkModuleCategory.PROVIDER, + doc = "Wrapper for every C++ compilation provider" +) +public final class CcCompilationInfo extends NativeInfo { + public static final NativeProvider<CcCompilationInfo> PROVIDER = + new NativeProvider<CcCompilationInfo>(CcCompilationInfo.class, "CcCompilationInfo") {}; + + private final CcCompilationContextInfo ccCompilationContextInfo; + + @AutoCodec.Instantiator + @VisibleForSerialization + CcCompilationInfo(CcCompilationContextInfo ccCompilationContextInfo) { + super(PROVIDER); + this.ccCompilationContextInfo = ccCompilationContextInfo; + } + + @SkylarkCallable( + name = "cc_compilation_context_info", + structField = true, + allowReturnNones = true, + doc = "Returns compilation information for this C++ target." + ) + public CcCompilationContextInfo getCcCompilationContextInfo() { + return ccCompilationContextInfo; + } + + /** A Builder for {@link CcCompilationInfo}. */ + public static class Builder { + CcCompilationContextInfo ccCompilationContextInfo; + + public static CcCompilationInfo.Builder create() { + return new CcCompilationInfo.Builder(); + } + + public <P extends TransitiveInfoProvider> Builder setCcCompilationContextInfo( + CcCompilationContextInfo ccCompilationContextInfo) { + Preconditions.checkState(this.ccCompilationContextInfo == null); + this.ccCompilationContextInfo = ccCompilationContextInfo; + return this; + } + + public CcCompilationInfo build() { + return new CcCompilationInfo(ccCompilationContextInfo); + } + } + + public static ImmutableList<CcCompilationContextInfo> getCcCompilationContextInfos( + Iterable<? extends TransitiveInfoCollection> deps) { + ImmutableList.Builder<CcCompilationContextInfo> ccCompilationContextInfosBuilder = + ImmutableList.builder(); + for (CcCompilationInfo ccCompilationInfo : + AnalysisUtils.getProviders(deps, CcCompilationInfo.PROVIDER)) { + CcCompilationContextInfo ccCompilationContextInfo = + ccCompilationInfo.getCcCompilationContextInfo(); + if (ccCompilationContextInfo != null) { + ccCompilationContextInfosBuilder.add(ccCompilationContextInfo); + } + } + return ccCompilationContextInfosBuilder.build(); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java index 61c89dd801..26ece69f1c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java @@ -51,7 +51,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public NestedSet<Artifact> getTransitiveHeaders() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); return ccCompilationContextInfo.getDeclaredIncludeSrcs(); } @@ -99,7 +99,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public ImmutableList<String> getDefines() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); return ccCompilationContextInfo == null ? ImmutableList.<String>of() : ccCompilationContextInfo.getDefines(); @@ -113,7 +113,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public ImmutableList<String> getSystemIncludeDirs() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); if (ccCompilationContextInfo == null) { return ImmutableList.of(); } @@ -132,7 +132,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public ImmutableList<String> getIncludeDirs() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); if (ccCompilationContextInfo == null) { return ImmutableList.of(); } @@ -151,7 +151,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public ImmutableList<String> getQuoteIncludeDirs() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); if (ccCompilationContextInfo == null) { return ImmutableList.of(); } @@ -170,7 +170,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider { + "(possibly empty but never <code>None</code>).") public ImmutableList<String> getCcFlags() { CcCompilationContextInfo ccCompilationContextInfo = - getInfo().get(CcCompilationContextInfo.PROVIDER); + getInfo().get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); ImmutableList.Builder<String> options = ImmutableList.builder(); for (String define : ccCompilationContextInfo.getDefines()) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java index fe296394a9..2b8fd6a2f2 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java @@ -120,13 +120,16 @@ public class CppHelper { if (ruleContext.getRule().getAttributeDefinition(":stl") != null) { TransitiveInfoCollection stl = ruleContext.getPrerequisite(":stl", Mode.TARGET); if (stl != null) { - CcCompilationContextInfo provider = stl.get(CcCompilationContextInfo.PROVIDER); - if (provider == null) { - ruleContext.ruleError("Unable to merge the STL '" + stl.getLabel() - + "' and toolchain contexts"); + CcCompilationInfo ccCompilationInfo = stl.get(CcCompilationInfo.PROVIDER); + CcCompilationContextInfo ccCompilationContextInfo = + ccCompilationInfo != null ? ccCompilationInfo.getCcCompilationContextInfo() : null; + if (ccCompilationContextInfo == null) { + ruleContext.ruleError( + "Unable to merge the STL '" + stl.getLabel() + "' and toolchain contexts"); return; } - ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfo(provider); + ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfo( + ccCompilationContextInfo); } } if (toolchain != null) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java index 49832a9d4d..3c37112911 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java @@ -49,7 +49,6 @@ import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; -import com.google.devtools.build.lib.rules.cpp.CcCompilationContextInfo; import com.google.devtools.build.lib.rules.cpp.LinkerInput; import com.google.devtools.build.lib.rules.java.JavaCompilationArgs.ClasspathType; import com.google.devtools.build.lib.syntax.Type; @@ -409,19 +408,6 @@ public class JavaCommon { ); } - /** Collects transitive C++ dependencies. */ - protected CcCompilationContextInfo collectTransitiveCppDeps() { - CcCompilationContextInfo.Builder builder = new CcCompilationContextInfo.Builder(ruleContext); - for (TransitiveInfoCollection dep : targetsTreatedAsDeps(ClasspathType.BOTH)) { - CcCompilationContextInfo ccCompilationContextInfo = - dep.get(CcCompilationContextInfo.PROVIDER); - if (ccCompilationContextInfo != null) { - builder.mergeDependentCcCompilationContextInfo(ccCompilationContextInfo); - } - } - return builder.build(); - } - /** * Collects labels of targets and artifacts reached transitively via the "exports" attribute. */ diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index 13a915f22a..eb8d854c2e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -68,6 +68,7 @@ import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.apple.AppleToolchain; import com.google.devtools.build.lib.rules.cpp.CcCompilationContextInfo; +import com.google.devtools.build.lib.rules.cpp.CcCompilationInfo; import com.google.devtools.build.lib.rules.cpp.CcLinkParams; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo; import com.google.devtools.build.lib.rules.cpp.CppFileTypes; @@ -257,22 +258,33 @@ public final class ObjcCommon { Builder addDeps(List<ConfiguredTargetAndData> deps) { ImmutableList.Builder<ObjcProvider> propagatedObjcDeps = ImmutableList.<ObjcProvider>builder(); - ImmutableList.Builder<CcCompilationContextInfo> cppDeps = - ImmutableList.<CcCompilationContextInfo>builder(); + ImmutableList.Builder<CcCompilationInfo> cppDeps = ImmutableList.builder(); ImmutableList.Builder<CcLinkParamsInfo> cppDepLinkParams = ImmutableList.<CcLinkParamsInfo>builder(); for (ConfiguredTargetAndData dep : deps) { ConfiguredTarget depCT = dep.getConfiguredTarget(); addAnyProviders(propagatedObjcDeps, depCT, ObjcProvider.SKYLARK_CONSTRUCTOR); - addAnyProviders(cppDeps, depCT, CcCompilationContextInfo.PROVIDER); + addAnyProviders(cppDeps, depCT, CcCompilationInfo.PROVIDER); if (isCcLibrary(dep)) { cppDepLinkParams.add(depCT.get(CcLinkParamsInfo.PROVIDER)); - addDefines(depCT.get(CcCompilationContextInfo.PROVIDER).getDefines()); + CcCompilationContextInfo ccCompilationContextInfo = + depCT.get(CcCompilationInfo.PROVIDER).getCcCompilationContextInfo(); + addDefines(ccCompilationContextInfo.getDefines()); + } + } + ImmutableList.Builder<CcCompilationContextInfo> ccCompilationContextInfoBuilder = + ImmutableList.builder(); + for (CcCompilationInfo ccCompilationInfo : cppDeps.build()) { + CcCompilationContextInfo ccCompilationContextInfo = + ccCompilationInfo.getCcCompilationContextInfo(); + if (ccCompilationContextInfo == null) { + ccCompilationContextInfoBuilder.add(ccCompilationContextInfo); } } addDepObjcProviders(propagatedObjcDeps.build()); - this.depCcHeaderProviders = Iterables.concat(this.depCcHeaderProviders, cppDeps.build()); + this.depCcHeaderProviders = + Iterables.concat(this.depCcHeaderProviders, ccCompilationContextInfoBuilder.build()); this.depCcLinkProviders = Iterables.concat(this.depCcLinkProviders, cppDepLinkParams.build()); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java index ec1be25f8b..6f37fab6f3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.cpp.CcCompilationContextInfo; +import com.google.devtools.build.lib.rules.cpp.CcCompilationInfo; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; import com.google.devtools.build.lib.syntax.Type; @@ -101,9 +102,12 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { .toCollection()) .build(); + CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create(); + ccCompilationInfoBuilder.setCcCompilationContextInfo(ccCompilationContextInfo); + return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addNativeDeclaredProvider(common.getObjcProvider()) - .addNativeDeclaredProvider(ccCompilationContextInfo) + .addNativeDeclaredProvider(ccCompilationInfoBuilder.build()) .addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider) .addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider) .addProvider( |