aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-05-18 05:22:40 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-18 05:24:46 -0700
commitfa10e028739cc751b336e464e1c93d7d1531ac04 (patch)
tree56fbedfaa76e2e2fc8ee10076798fda6ed8b9b1f /src/main/java/com/google/devtools/build/lib
parentcf2f494b2a7b023c88fe12b8fa54f447577a30ca (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java17
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);
+}