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 | |
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')
4 files changed, 35 insertions, 12 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; diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD index 177c61f6b9..024e3239b9 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD @@ -21,6 +21,7 @@ java_library( deps = [ "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib:syntax", + "//src/main/java/com/google/devtools/build/lib/actions", "//third_party:guava", "//third_party:jsr305", ], diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java index 5b1aa8aa8b..285126379c 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java @@ -14,14 +14,25 @@ package com.google.devtools.build.lib.skylarkbuildapi.cpp; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.skylarkinterface.Param; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; +import com.google.devtools.build.lib.syntax.SkylarkList; /** Interface for a structured representation of the compilation outputs of a C++ rule. */ @SkylarkModule( name = "cc_compilation_outputs", category = SkylarkModuleCategory.BUILTIN, documented = false, - doc = "Helper class containing CC compilation outputs." -) -public interface CcCompilationOutputsApi {} + doc = "Helper class containing CC compilation outputs.") +public interface CcCompilationOutputsApi { + @SkylarkCallable( + name = "object_files", + documented = false, + parameters = { + @Param(name = "use_pic", doc = "use_pic", positional = false, named = true), + }) + SkylarkList<Artifact> getSkylarkObjectFiles(boolean usePic); +} |