aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-02-23 02:59:04 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-23 03:01:11 -0800
commitf5d749efef2b13a8191d09f4152eb0bff69d65d2 (patch)
treec62de2f52a8bad9e714c40edaf6aa04511ef232b /src/main/java/com/google/devtools
parentc0faa4d480253ce51a239b8059659f6174c2380c (diff)
Move enabling of coverage related features to CcCommon
Move dealing with coverage related features from CppConfiguration.configurationEnabledFeatures to CcCommon.configureFeatures. Remove configurationEnabledFeatures. RELNOTES: None. PiperOrigin-RevId: 186744803
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java3
6 files changed, 38 insertions, 61 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 2be679614c..316791dee5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -246,16 +246,6 @@ public final class RuleContext extends TargetContext
Set<String> ruleDisabledFeatures =
Sets.union(ruleDisabled, Sets.difference(packageDisabled, ruleEnabled));
allDisabledFeatures.addAll(Sets.union(ruleDisabledFeatures, globallyDisabled));
- for (ImmutableMap.Entry<Class<? extends Fragment>, Fragment> entry :
- getConfiguration().getAllFragments().entrySet()) {
- if (isLegalFragment(entry.getKey())) {
- globallyEnabled.addAll(
- entry
- .getValue()
- .configurationEnabledFeatures(
- this, ImmutableSortedSet.copyOf(allDisabledFeatures)));
- }
- }
Set<String> packageFeatures =
Sets.difference(Sets.union(globallyEnabled, packageEnabled), packageDisabled);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 3bec3daa6b..64ba290c29 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -37,7 +37,6 @@ import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.BuildConfigurationInterface;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
-import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.config.transitions.ComposingPatchTransition;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
@@ -199,12 +198,6 @@ public class BuildConfiguration implements BuildConfigurationInterface {
return ImmutableMap.of();
}
- /** Return set of features enabled by this configuration. */
- public ImmutableSet<String> configurationEnabledFeatures(
- RuleContext ruleContext, ImmutableSet<String> disabledFeatures) {
- return ImmutableSet.of();
- }
-
/**
* @return false if a Fragment understands that it won't be able to work with a given strategy,
* or true otherwise.
@@ -703,23 +696,6 @@ public class BuildConfiguration implements BuildConfigurationInterface {
public Label coverageReportGenerator;
@Option(
- name = "experimental_use_llvm_covmap",
- defaultValue = "false",
- category = "experimental",
- documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
- effectTags = {
- OptionEffectTag.CHANGES_INPUTS,
- OptionEffectTag.AFFECTS_OUTPUTS,
- OptionEffectTag.LOADING_AND_ANALYSIS
- },
- metadataTags = { OptionMetadataTag.EXPERIMENTAL },
- help =
- "If specified, Bazel will generate llvm-cov coverage map information rather than "
- + "gcov when collect_code_coverage is enabled."
- )
- public boolean useLLVMCoverageMapFormat;
-
- @Option(
name = "build_runfile_manifests",
defaultValue = "true",
category = "strategy",
@@ -1906,10 +1882,6 @@ public class BuildConfiguration implements BuildConfigurationInterface {
return options.experimentalJavaCoverage;
}
- public boolean isLLVMCoverageMapFormatEnabled() {
- return options.useLLVMCoverageMapFormat;
- }
-
/** If false, AnalysisEnvironment doesn't register any actions created by the ConfiguredTarget. */
public boolean isActionsEnabled() {
return actionsEnabled;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 310ed21d56..d03fbecf15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -675,6 +675,19 @@ public final class CcCommon {
}
}
+ public static ImmutableList<String> getCoverageFeatures(RuleContext ruleContext) {
+ ImmutableList.Builder<String> coverageFeatures = ImmutableList.builder();
+ if (ruleContext.getConfiguration().isCodeCoverageEnabled()) {
+ coverageFeatures.add(CppRuleClasses.COVERAGE);
+ if (ruleContext.getFragment(CppConfiguration.class).useLLVMCoverageMapFormat()) {
+ coverageFeatures.add(CppRuleClasses.LLVM_COVERAGE_MAP_FORMAT);
+ } else {
+ coverageFeatures.add(CppRuleClasses.GCC_COVERAGE_MAP_FORMAT);
+ }
+ }
+ return coverageFeatures.build();
+ }
+
/**
* Creates the feature configuration for a given rule.
*
@@ -716,6 +729,9 @@ public final class CcCommon {
}
CppConfiguration cppConfiguration = toolchain.getCppConfiguration();
+
+ allRequestedFeaturesBuilder.addAll(getCoverageFeatures(ruleContext));
+
if (cppConfiguration.getFdoInstrument() != null
&& !ruleContext.getDisabledFeatures().contains(CppRuleClasses.FDO_INSTRUMENT)) {
allRequestedFeaturesBuilder.add(CppRuleClasses.FDO_INSTRUMENT);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 7d64d6ddab..00eeea8994 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -22,9 +22,7 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
-import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Options.MakeVariableSource;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
@@ -199,7 +197,6 @@ public final class CppConfiguration extends BuildConfiguration.Fragment {
// The dynamic mode for linking.
private final boolean stripBinaries;
private final CompilationMode compilationMode;
- private final boolean useLLVMCoverageMap;
private final boolean shouldProvideMakeVariables;
@@ -322,7 +319,6 @@ public final class CppConfiguration extends BuildConfiguration.Fragment {
|| (cppOptions.stripBinaries == StripMode.SOMETIMES
&& compilationMode == CompilationMode.FASTBUILD)),
compilationMode,
- params.commonOptions.useLLVMCoverageMapFormat,
params.commonOptions.makeVariableSource == MakeVariableSource.CONFIGURATION,
cppOptions.isLipoContextCollector(),
cppToolchainInfo);
@@ -357,7 +353,6 @@ public final class CppConfiguration extends BuildConfiguration.Fragment {
CpuTransformer cpuTransformerEnum,
boolean stripBinaries,
CompilationMode compilationMode,
- boolean useLLVMCoverageMap,
boolean shouldProvideMakeVariables,
boolean lipoContextCollector,
CppToolchainInfo cppToolchainInfo) {
@@ -388,7 +383,6 @@ public final class CppConfiguration extends BuildConfiguration.Fragment {
this.cpuTransformerEnum = cpuTransformerEnum;
this.stripBinaries = stripBinaries;
this.compilationMode = compilationMode;
- this.useLLVMCoverageMap = useLLVMCoverageMap;
this.shouldProvideMakeVariables = shouldProvideMakeVariables;
this.lipoContextCollector = lipoContextCollector;
this.cppToolchainInfo = cppToolchainInfo;
@@ -1335,23 +1329,8 @@ public final class CppConfiguration extends BuildConfiguration.Fragment {
return fdoProfileLabel;
}
- /**
- * Return set of features enabled by the CppConfiguration, specifically the FDO and LIPO related
- * features enabled by options.
- */
- @Override
- public ImmutableSet<String> configurationEnabledFeatures(
- RuleContext ruleContext, ImmutableSet<String> disabledFeatures) {
- ImmutableSet.Builder<String> requestedFeatures = ImmutableSet.builder();
- if (ruleContext.getConfiguration().isCodeCoverageEnabled()) {
- requestedFeatures.add(CppRuleClasses.COVERAGE);
- if (useLLVMCoverageMap) {
- requestedFeatures.add(CppRuleClasses.LLVM_COVERAGE_MAP_FORMAT);
- } else {
- requestedFeatures.add(CppRuleClasses.GCC_COVERAGE_MAP_FORMAT);
- }
- }
- return requestedFeatures.build();
+ public boolean useLLVMCoverageMapFormat() {
+ return cppOptions.useLLVMCoverageMapFormat;
}
public static PathFragment computeDefaultSysroot(CToolchain toolchain) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 77f846d645..5ca58c20fd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -871,6 +871,23 @@ public class CppOptions extends FragmentOptions {
)
public boolean enableMakeVariables;
+ @Option(
+ name = "experimental_use_llvm_covmap",
+ defaultValue = "false",
+ category = "experimental",
+ documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+ effectTags = {
+ OptionEffectTag.CHANGES_INPUTS,
+ OptionEffectTag.AFFECTS_OUTPUTS,
+ OptionEffectTag.LOADING_AND_ANALYSIS
+ },
+ metadataTags = {OptionMetadataTag.EXPERIMENTAL},
+ help =
+ "If specified, Bazel will generate llvm-cov coverage map information rather than "
+ + "gcov when collect_code_coverage is enabled."
+ )
+ public boolean useLLVMCoverageMapFormat;
+
@Override
public FragmentOptions getHost() {
CppOptions host = (CppOptions) getDefault();
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 6704f54a3d..a6b9f8cf7e 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
@@ -558,6 +558,9 @@ public class CompilationSupport {
}
activatedCrosstoolSelectables.addAll(ruleContext.getFeatures());
+
+ activatedCrosstoolSelectables.addAll(CcCommon.getCoverageFeatures(ruleContext));
+
try {
return ccToolchain
.getFeatures()