diff options
author | 2018-05-18 05:22:40 -0700 | |
---|---|---|
committer | 2018-05-18 05:24:46 -0700 | |
commit | fa10e028739cc751b336e464e1c93d7d1531ac04 (patch) | |
tree | 56fbedfaa76e2e2fc8ee10076798fda6ed8b9b1f /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | cf2f494b2a7b023c88fe12b8fa54f447577a30ca (diff) |
C++: Add more parameters to Skylark API needed for match_clif
RELNOTES:none
PiperOrigin-RevId: 197132493
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java | 23 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java | 6 |
2 files changed, 20 insertions, 9 deletions
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 b595600a57..5b782ef492 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 @@ -198,7 +198,7 @@ public final class CcCompilationHelper { private final List<Artifact> publicTextualHeaders = new ArrayList<>(); private final List<Artifact> privateHeaders = new ArrayList<>(); private final List<Artifact> additionalInputs = new ArrayList<>(); - private final List<Artifact> compilationMandatoryInputs = new ArrayList<>(); + private final List<Artifact> additionalCompilationInputs = new ArrayList<>(); private final List<Artifact> additionalIncludeScanningRoots = new ArrayList<>(); private final List<PathFragment> additionalExportedHeaders = new ArrayList<>(); private final List<CppModuleMap> additionalCppModuleMaps = new ArrayList<>(); @@ -209,7 +209,7 @@ public final class CcCompilationHelper { private CoptsFilter coptsFilter = CoptsFilter.alwaysPasses(); private final Set<String> defines = new LinkedHashSet<>(); private final List<TransitiveInfoCollection> deps = new ArrayList<>(); - private final List<CcCompilationContext> depCcCompilationContexts = new ArrayList<>(); + private final List<CcCompilationContext> ccCompilationContexts = new ArrayList<>(); private final List<PathFragment> looseIncludeDirs = new ArrayList<>(); private final List<PathFragment> systemIncludeDirs = new ArrayList<>(); private final List<PathFragment> includeDirs = new ArrayList<>(); @@ -550,8 +550,10 @@ public final class CcCompilationHelper { return this; } - public CcCompilationHelper addDepCcCompilationContext(CcCompilationContext ccCompilationContext) { - this.depCcCompilationContexts.add(Preconditions.checkNotNull(ccCompilationContext)); + /** For adding CC compilation contexts that affect compilation, e.g: from dependencies. */ + public CcCompilationHelper addCcCompilationContexts( + List<CcCompilationContext> ccCompilationContexts) { + this.ccCompilationContexts.addAll(Preconditions.checkNotNull(ccCompilationContexts)); return this; } @@ -672,9 +674,9 @@ public final class CcCompilationHelper { } /** Adds mandatory inputs for the compilation action. */ - public CcCompilationHelper addCompilationMandatoryInputs( + public CcCompilationHelper addAdditionalCompilationInputs( Collection<Artifact> compilationMandatoryInputs) { - this.compilationMandatoryInputs.addAll(compilationMandatoryInputs); + this.additionalCompilationInputs.addAll(compilationMandatoryInputs); return this; } @@ -701,6 +703,10 @@ public final class CcCompilationHelper { } } + if (!generatePicAction && !generateNoPicAction) { + ruleContext.ruleError("Either PIC or no PIC actions have to be created."); + } + ccCompilationContext = initializeCcCompilationContext(); boolean compileHeaderModules = featureConfiguration.isEnabled(CppRuleClasses.HEADER_MODULES); @@ -929,7 +935,7 @@ public final class CcCompilationHelper { if (useDeps) { ccCompilationContextBuilder.mergeDependentCcCompilationContexts( CcCompilationInfo.getCcCompilationContexts(deps)); - ccCompilationContextBuilder.mergeDependentCcCompilationContexts(depCcCompilationContexts); + ccCompilationContextBuilder.mergeDependentCcCompilationContexts(ccCompilationContexts); } CppHelper.mergeToolchainDependentCcCompilationContext( ruleContext, ccToolchain, ccCompilationContextBuilder); @@ -1313,7 +1319,7 @@ public final class CcCompilationHelper { builder .setSemantics(semantics) - .addMandatoryInputs(compilationMandatoryInputs) + .addMandatoryInputs(additionalCompilationInputs) .addAdditionalIncludeScanningRoots(additionalIncludeScanningRoots); boolean bitcodeOutput = @@ -1727,7 +1733,6 @@ public final class CcCompilationHelper { CcCompilationContext.mergeForLipo( lipoProvider.getLipoCcCompilationContext(), ccCompilationContext)); } - Preconditions.checkState(generatePicAction || generateNoPicAction); if (fake) { boolean usePic = !generateNoPicAction; createFakeSourceAction( diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java index f70633a6aa..f1ec721ded 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java @@ -23,6 +23,7 @@ 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.skylarkbuildapi.cpp.CcCompilationOutputsApi; +import com.google.devtools.build.lib.syntax.SkylarkList; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @@ -103,6 +104,11 @@ public class CcCompilationOutputs implements CcCompilationOutputsApi { return usePic ? picObjectFiles : objectFiles; } + @Override + public SkylarkList<Artifact> getSkylarkObjectFiles(boolean usePic) { + return SkylarkList.createImmutable(getObjectFiles(usePic)); + } + /** Returns unmodifiable map of bitcode object files resulting from compilation. */ public ImmutableMap<Artifact, Artifact> getLtoBitcodeFiles() { return ltoBitcodeFiles; |