aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2017-06-05 18:14:40 -0400
committerGravatar John Cater <jcater@google.com>2017-06-06 09:50:41 -0400
commit9335bbe90c33591bd6c7f4c0f461af9571ab4840 (patch)
tree737dbd51e0e73f4f493ddaffed672dc02c7a27a1 /src
parent091636557f56e32215d9846528fe5a0eab55477a (diff)
Specify isTestRule as an input to CompilationSupport instead of from the current rule name
RELNOTES: None. PiperOrigin-RevId: 158068921
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java2
5 files changed, 36 insertions, 23 deletions
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 bcad1d6a71..576d9022a9 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
@@ -64,7 +64,6 @@ import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
-import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.Platform;
@@ -306,6 +305,7 @@ public abstract class CompilationSupport {
protected final boolean useDeps;
protected final Map<String, NestedSet<Artifact>> outputGroupCollector;
protected final CcToolchainProvider toolchain;
+ protected final boolean isTestRule;
/**
* Creates a new compilation support for the given rule and build configuration.
@@ -327,7 +327,8 @@ public abstract class CompilationSupport {
CompilationAttributes compilationAttributes,
boolean useDeps,
Map<String, NestedSet<Artifact>> outputGroupCollector,
- CcToolchainProvider toolchain) {
+ CcToolchainProvider toolchain,
+ boolean isTestRule) {
this.ruleContext = ruleContext;
this.buildConfiguration = buildConfiguration;
this.objcConfiguration = buildConfiguration.getFragment(ObjcConfiguration.class);
@@ -335,6 +336,7 @@ public abstract class CompilationSupport {
this.attributes = compilationAttributes;
this.intermediateArtifacts = intermediateArtifacts;
this.useDeps = useDeps;
+ this.isTestRule = isTestRule;
this.outputGroupCollector = outputGroupCollector;
// TODO(b/62143697): Remove this check once all rules are using the crosstool support.
if (ruleContext
@@ -360,6 +362,7 @@ public abstract class CompilationSupport {
private Map<String, NestedSet<Artifact>> outputGroupCollector;
private boolean isObjcLibrary = false;
private CcToolchainProvider toolchain;
+ private boolean isTestRule = false;
/** Sets the {@link RuleContext} for the calling target. */
public Builder setRuleContext(RuleContext ruleContext) {
@@ -398,12 +401,20 @@ public abstract class CompilationSupport {
* Indicates that this CompilationSupport is for use in an objc_library target. This will cause
* CrosstoolCompilationSupport to be used if --experimental_objc_crosstool=library
*/
- public Builder isObjcLibrary() {
+ public Builder setIsObjcLibrary() {
this.isObjcLibrary = true;
return this;
}
/**
+ * Indicates that this CompilationSupport is for use in a test rule.
+ */
+ public Builder setIsTestRule() {
+ this.isTestRule = true;
+ return this;
+ }
+
+ /**
* Causes the provided map to be updated with output groups produced by compile action
* registration.
*
@@ -463,7 +474,8 @@ public abstract class CompilationSupport {
compilationAttributes,
useDeps,
outputGroupCollector,
- toolchain);
+ toolchain,
+ isTestRule);
} else {
return new LegacyCompilationSupport(
ruleContext,
@@ -472,7 +484,8 @@ public abstract class CompilationSupport {
compilationAttributes,
useDeps,
outputGroupCollector,
- toolchain);
+ toolchain,
+ isTestRule);
}
}
}
@@ -661,7 +674,7 @@ public abstract class CompilationSupport {
getGcovForObjectiveCIfNeeded(),
// The COVERAGE_GCOV_PATH environment variable is added in TestSupport#getExtraProviders()
NestedSetBuilder.<Pair<String, String>>emptySet(Order.COMPILE_ORDER),
- !TargetUtils.isTestRule(ruleContext.getTarget()));
+ !isTestRule);
}
/**
@@ -1182,7 +1195,7 @@ public abstract class CompilationSupport {
*/
protected void registerBinaryStripAction(Artifact binaryToLink, StrippingType strippingType) {
final Iterable<String> stripArgs;
- if (TargetUtils.isTestRule(ruleContext.getRule())) {
+ if (isTestRule) {
// For test targets, only debug symbols are stripped off, since /usr/bin/strip is not able
// to strip off all symbols in XCTest bundle.
stripArgs = ImmutableList.of("-S");
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 cb22ab4bfd..5c06156207 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
@@ -38,7 +38,6 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
-import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.cpp.CcLibraryHelper;
@@ -135,7 +134,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
CompilationAttributes.Builder.fromRuleContext(ruleContext).build(),
/*useDeps=*/ true,
outputGroupCollector,
- null);
+ null,
+ /*isTestRule=*/ false);
}
/**
@@ -155,7 +155,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
CompilationAttributes compilationAttributes,
boolean useDeps,
Map<String, NestedSet<Artifact>> outputGroupCollector,
- CcToolchainProvider toolchain) {
+ CcToolchainProvider toolchain,
+ boolean isTestRule) {
super(
ruleContext,
buildConfiguration,
@@ -163,7 +164,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
compilationAttributes,
useDeps,
outputGroupCollector,
- toolchain);
+ toolchain,
+ isTestRule);
}
@Override
@@ -453,7 +455,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
return result;
}
- private static FeatureConfiguration getFeatureConfiguration(RuleContext ruleContext,
+ private FeatureConfiguration getFeatureConfiguration(RuleContext ruleContext,
BuildConfiguration configuration) {
ImmutableSet.Builder<String> activatedCrosstoolSelectables =
ImmutableSet.<String>builder()
@@ -494,7 +496,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
} else {
activatedCrosstoolSelectables.add(GCC_COVERAGE_MAP_FORMAT);
}
- if (!TargetUtils.isTestRule(ruleContext.getRule())) {
+ if (!isTestRule) {
activatedCrosstoolSelectables.add(IS_NOT_TEST_TARGET_FEATURE_NAME);
}
if (configuration.getFragment(ObjcConfiguration.class).generateDsym()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
index 5e3d3af5e9..f245162101 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
@@ -156,7 +156,7 @@ public final class IosTest implements RuleConfiguredTargetFactory {
.build();
CompilationSupport compilationSupport =
- new CompilationSupport.Builder().setRuleContext(ruleContext).build();
+ new CompilationSupport.Builder().setRuleContext(ruleContext).setIsTestRule().build();
compilationSupport
.registerLinkActions(
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 169b7a6756..c0cb7ef940 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
@@ -57,7 +57,6 @@ 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.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
@@ -148,7 +147,8 @@ public class LegacyCompilationSupport extends CompilationSupport {
CompilationAttributes compilationAttributes,
boolean useDeps,
Map<String, NestedSet<Artifact>> outputGroupCollector,
- CcToolchainProvider toolchain) {
+ CcToolchainProvider toolchain,
+ boolean isTestRule) {
super(
ruleContext,
buildConfiguration,
@@ -156,7 +156,8 @@ public class LegacyCompilationSupport extends CompilationSupport {
compilationAttributes,
useDeps,
outputGroupCollector,
- toolchain);
+ toolchain,
+ isTestRule);
}
@Override
@@ -689,12 +690,9 @@ public class LegacyCompilationSupport extends CompilationSupport {
commandLine.add(CLANG);
}
- // Do not perform code stripping on tests because XCTest binary is linked not as an executable
- // but as a bundle without any entry point.
- boolean isTestTarget = TargetUtils.isTestRule(ruleContext.getRule());
- // TODO(b/36562173): Replace the "!isTestTarget" condition with the presence of "-bundle" in
+ // TODO(b/36562173): Replace the "!isTestRule" condition with the presence of "-bundle" in
// the command line.
- if (objcConfiguration.shouldStripBinary() && !isTestTarget) {
+ if (objcConfiguration.shouldStripBinary() && !isTestRule) {
commandLine.add("-dead_strip").add("-no_dead_strip_inits_and_terms");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 6ab4f59b16..e0b7341dbe 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -70,7 +70,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
new CompilationSupport.Builder()
.setRuleContext(ruleContext)
.setOutputGroupCollector(outputGroupCollector)
- .isObjcLibrary()
+ .setIsObjcLibrary()
.build();
compilationSupport