aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java23
1 files changed, 14 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(