aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-04-04 20:14:45 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-04-05 15:19:00 +0200
commitd6d27083b526a9288bd9bd1d35e0442b5c9f7ab6 (patch)
treefdd01e55ccb8d84a8bc958d2bae67564536626ec /src/main
parentd705c98773afd3d08f7c04f71263b23f3dbc98f7 (diff)
objc_proto_library does not pick up generated cc code in compile actions.
PiperOrigin-RevId: 152169986
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java67
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java2
6 files changed, 90 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
index 83eb0ff321..3154b16a34 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
@@ -300,6 +300,7 @@ public final class CcLibraryHelper {
private CcToolchainProvider ccToolchain;
private final FdoSupportProvider fdoSupport;
private String linkedArtifactNameSuffix = "";
+ private boolean useDeps = true;
/**
* Creates a CcLibraryHelper.
@@ -912,6 +913,15 @@ public final class CcLibraryHelper {
}
/**
+ * Causes actions generated from this CcLibraryHelper not to use build semantics (includes,
+ * headers, srcs) from dependencies.
+ */
+ public CcLibraryHelper doNotUseDeps() {
+ this.useDeps = false;
+ return this;
+ }
+
+ /**
* Create the C++ compile and link actions, and the corresponding C++-related providers.
*
* @throws RuleErrorException
@@ -1318,9 +1328,11 @@ public final class CcLibraryHelper {
contextBuilder.addIncludeDir(publicHeaders.getVirtualIncludePath());
}
- contextBuilder.mergeDependentContexts(
- AnalysisUtils.getProviders(deps, CppCompilationContext.class));
- contextBuilder.mergeDependentContexts(depContexts);
+ if (useDeps) {
+ contextBuilder.mergeDependentContexts(
+ AnalysisUtils.getProviders(deps, CppCompilationContext.class));
+ contextBuilder.mergeDependentContexts(depContexts);
+ }
CppHelper.mergeToolchainDependentContext(ruleContext, ccToolchain, contextBuilder);
// But defines come after those inherited from deps.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 6532052044..e999d9ee09 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -309,6 +309,7 @@ public abstract class CompilationSupport {
protected final AppleConfiguration appleConfiguration;
protected final CompilationAttributes attributes;
protected final IntermediateArtifacts intermediateArtifacts;
+ protected final boolean useDeps;
/**
* Creates a new compilation support for the given rule and build configuration.
@@ -327,13 +328,15 @@ public abstract class CompilationSupport {
RuleContext ruleContext,
BuildConfiguration buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
- CompilationAttributes compilationAttributes) {
+ CompilationAttributes compilationAttributes,
+ boolean useDeps) {
this.ruleContext = ruleContext;
this.buildConfiguration = buildConfiguration;
this.objcConfiguration = buildConfiguration.getFragment(ObjcConfiguration.class);
this.appleConfiguration = buildConfiguration.getFragment(AppleConfiguration.class);
this.attributes = compilationAttributes;
this.intermediateArtifacts = intermediateArtifacts;
+ this.useDeps = useDeps;
}
/**
@@ -343,7 +346,18 @@ public abstract class CompilationSupport {
* @param ruleContext the RuleContext for the calling target
*/
public static CompilationSupport create(RuleContext ruleContext) {
- return createForConfig(ruleContext, ruleContext.getConfiguration());
+ return createForConfig(ruleContext, ruleContext.getConfiguration(), /*useDeps=*/true);
+ }
+
+ /**
+ * Returns a CompilationSupport instance, the type of which is determined from the
+ * --experimental_objc_crosstool flag. If this is an instance of
+ * {@link CrosstoolCompilationSupport}, dependencies will not be used.
+ */
+ public static CompilationSupport createWithoutDeps(RuleContext ruleContext) {
+ CompilationSupport result = createForConfig(ruleContext, ruleContext.getConfiguration(),
+ /*useDeps=*/false);
+ return result;
}
/**
@@ -356,10 +370,24 @@ public abstract class CompilationSupport {
*/
public static CompilationSupport createForConfig(RuleContext ruleContext,
BuildConfiguration buildConfiguration) {
+ return createForConfig(ruleContext, buildConfiguration, /*useDeps=*/true);
+ }
+
+ /**
+ * Returns a CompilationSupport instance, the type of which is determined from the
+ * --experimental_objc_crosstool flag. The result can be either {@link LegacyCompilationSupport}
+ * or {@link CrosstoolCompilationSupport}.
+ *
+ * @param ruleContext the RuleContext for the calling target
+ * @param buildConfiguration the configuration for the calling target
+ * @param useDeps true if deps should be used
+ */
+ public static CompilationSupport createForConfig(RuleContext ruleContext,
+ BuildConfiguration buildConfiguration, boolean useDeps) {
return createWithSelectedImplementation(ruleContext,
buildConfiguration,
ObjcRuleClasses.intermediateArtifacts(ruleContext, buildConfiguration),
- CompilationAttributes.Builder.fromRuleContext(ruleContext).build());
+ CompilationAttributes.Builder.fromRuleContext(ruleContext).build(), useDeps);
}
/**
@@ -375,10 +403,11 @@ public abstract class CompilationSupport {
return createWithSelectedImplementation(ruleContext,
config,
ObjcRuleClasses.intermediateArtifacts(ruleContext, config),
- compilationAttributes);
+ compilationAttributes,
+ /*useDeps=*/true);
}
- /**
+ /**
* Returns a CompilationSupport instance, the type of which is determined from the
* --experimental_objc_crosstool flag.
*
@@ -392,12 +421,36 @@ public abstract class CompilationSupport {
BuildConfiguration buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
CompilationAttributes compilationAttributes) {
+ return createWithSelectedImplementation(
+ ruleContext,
+ buildConfiguration,
+ intermediateArtifacts,
+ compilationAttributes,
+ /*useDeps=*/true);
+ }
+
+ /**
+ * Returns a CompilationSupport instance, the type of which is determined from the
+ * --experimental_objc_crosstool flag.
+ *
+ * @param ruleContext the RuleContext for the calling target
+ * @param buildConfiguration the configuration for the calling target
+ * @param intermediateArtifacts IntermediateArtifacts for deriving artifact paths
+ * @param compilationAttributes attributes of the calling target
+ * @param useDeps true if deps should be used
+ */
+ static CompilationSupport createWithSelectedImplementation(
+ RuleContext ruleContext,
+ BuildConfiguration buildConfiguration,
+ IntermediateArtifacts intermediateArtifacts,
+ CompilationAttributes compilationAttributes,
+ boolean useDeps) {
return buildConfiguration.getFragment(ObjcConfiguration.class).getObjcCrosstoolMode()
== ObjcCrosstoolMode.ALL
? new CrosstoolCompilationSupport(ruleContext, buildConfiguration, intermediateArtifacts,
- compilationAttributes)
+ compilationAttributes, useDeps)
: new LegacyCompilationSupport(ruleContext, buildConfiguration, intermediateArtifacts,
- compilationAttributes);
+ compilationAttributes, useDeps);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
index b2642f1e33..ca8bd2e869 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
@@ -123,7 +123,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
ruleContext,
ruleContext.getConfiguration(),
ObjcRuleClasses.intermediateArtifacts(ruleContext),
- CompilationAttributes.Builder.fromRuleContext(ruleContext).build());
+ CompilationAttributes.Builder.fromRuleContext(ruleContext).build(),
+ /*useDeps=*/true);
}
/**
@@ -133,12 +134,14 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
* @param buildConfiguration the configuration for the calling target
* @param intermediateArtifacts IntermediateArtifacts for deriving artifact paths
* @param compilationAttributes attributes of the calling target
+ * @param useDeps true if deps should be used
*/
public CrosstoolCompilationSupport(RuleContext ruleContext,
BuildConfiguration buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
- CompilationAttributes compilationAttributes) {
- super(ruleContext, buildConfiguration, intermediateArtifacts, compilationAttributes);
+ CompilationAttributes compilationAttributes,
+ boolean useDeps) {
+ super(ruleContext, buildConfiguration, intermediateArtifacts, compilationAttributes, useDeps);
}
@Override
@@ -388,6 +391,9 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
if (pchHdr != null) {
result.addNonModuleMapHeader(pchHdr);
}
+ if (!useDeps) {
+ result.doNotUseDeps();
+ }
return result;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java
index 17bc6215ff..27b3b83491 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java
@@ -143,8 +143,9 @@ public class LegacyCompilationSupport extends CompilationSupport {
RuleContext ruleContext,
BuildConfiguration buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
- CompilationAttributes compilationAttributes) {
- super(ruleContext, buildConfiguration, intermediateArtifacts, compilationAttributes);
+ CompilationAttributes compilationAttributes,
+ boolean useDeps) {
+ super(ruleContext, buildConfiguration, intermediateArtifacts, compilationAttributes, useDeps);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
index 2505835104..422c07999f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
@@ -193,7 +193,8 @@ final class ProtobufSupport {
ruleContext,
buildConfiguration,
intermediateArtifacts,
- new CompilationAttributes.Builder().build())
+ new CompilationAttributes.Builder().build(),
+ /*useDeps=*/false)
.registerCompileAndArchiveActions(common, userHeaderSearchPaths);
actionId++;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
index 0a19cb18ca..a9810c54ea 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
@@ -97,7 +97,7 @@ final class ProtocolBuffers2Support {
*/
public ProtocolBuffers2Support registerCompilationActions()
throws RuleErrorException, InterruptedException {
- CompilationSupport.create(ruleContext)
+ CompilationSupport.createWithoutDeps(ruleContext)
.registerCompileAndArchiveActions(getCommon());
return this;
}