aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar kush <kush@google.com>2017-09-06 20:49:57 +0200
committerGravatar Yun Peng <pcloudy@google.com>2017-09-07 09:57:35 +0200
commit9b6cf941461769becc06e30d4fd0c2007066abbd (patch)
tree62ea236941f1b490278278432179c33bcaa4f0c9 /src
parent35e0c2d716de87ce746b87098b92d81840255495 (diff)
Internal change
PiperOrigin-RevId: 167751263
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java65
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java35
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java75
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java191
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java50
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java75
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java146
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL1044
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariablesTest.java45
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java44
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java2
20 files changed, 414 insertions, 1434 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
index 48af3cff2b..507cc76de4 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.bazel.rules.cpp;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -53,16 +51,13 @@ public class BazelCppSemantics implements CppSemantics {
public void finalizeCompileActionBuilder(
RuleContext ruleContext,
CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features) {
+ FeatureSpecification featureSpecification) {
actionBuilder.setCppConfiguration(ruleContext.getFragment(CppConfiguration.class));
actionBuilder.setActionContext(CppCompileActionContext.class);
// Because Bazel does not support include scanning, we need the entire crosstool filegroup,
// including header files, as opposed to just the "compile" filegroup.
actionBuilder.addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool());
actionBuilder.setShouldScanIncludes(false);
- actionBuilder.setCoptsFilter(coptsFilter);
}
@Override
@@ -93,7 +88,7 @@ public class BazelCppSemantics implements CppSemantics {
public boolean needsDotdInputPruning() {
return true;
}
-
+
@Override
public void validateAttributes(RuleContext ruleContext) {
}
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 47aa40a0ec..4856b0a1e6 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
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.rules.cpp;
import com.google.common.base.Joiner;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -165,15 +163,12 @@ public final class CcCommon {
}
}
- if (!getCoptsFilter(ruleContext).apply("-Wno-future-warnings")) {
- ruleContext.attributeWarning(
- "nocopts",
- String.format(
- "Regular expression '%s' is too general; for example, it matches "
- + "'-Wno-future-warnings'. Thus it might *re-enable* compiler warnings we wish "
- + "to disable globally. To disable all compiler warnings, add '-w' to copts "
- + "instead",
- Preconditions.checkNotNull(getNoCoptsPattern(ruleContext))));
+ Pattern nocopts = getNoCopts(ruleContext);
+ if (nocopts != null && nocopts.matcher("-Wno-future-warnings").matches()) {
+ ruleContext.attributeWarning("nocopts",
+ "Regular expression '" + nocopts.pattern() + "' is too general; for example, it matches "
+ + "'-Wno-future-warnings'. Thus it might *re-enable* compiler warnings we wish to "
+ + "disable globally. To disable all compiler warnings, add '-w' to copts instead");
}
return ImmutableList.<String>builder()
@@ -354,36 +349,27 @@ public final class CcCommon {
return ImmutableList.copyOf(CppHelper.expandMakeVariables(ruleContext, "copts", unexpanded));
}
- /** Returns copts filter built from the make variable expanded nocopts attribute. */
- Predicate<String> getCoptsFilter() {
- return getCoptsFilter(ruleContext);
+ Pattern getNoCopts() {
+ return getNoCopts(ruleContext);
}
- /** @see CcCommon#getCoptsFilter() */
- private static Predicate<String> getCoptsFilter(RuleContext ruleContext) {
- Pattern noCoptsPattern = getNoCoptsPattern(ruleContext);
- if (noCoptsPattern == null) {
- return Predicates.alwaysTrue();
- }
- return flag -> !noCoptsPattern.matcher(flag).matches();
- }
-
- @Nullable
- private static Pattern getNoCoptsPattern(RuleContext ruleContext) {
- if (!ruleContext.getRule().isAttrDefined(NO_COPTS_ATTRIBUTE, Type.STRING)) {
- return null;
- }
- String nocoptsAttr =
- ruleContext.expandMakeVariables(
- NO_COPTS_ATTRIBUTE, ruleContext.attributes().get(NO_COPTS_ATTRIBUTE, Type.STRING));
- try {
- return Pattern.compile(nocoptsAttr);
- } catch (PatternSyntaxException e) {
- ruleContext.attributeError(
- NO_COPTS_ATTRIBUTE,
- "invalid regular expression '" + nocoptsAttr + "': " + e.getMessage());
- return null;
+ /**
+ * Returns nocopts pattern built from the make variable expanded nocopts
+ * attribute.
+ */
+ private static Pattern getNoCopts(RuleContext ruleContext) {
+ Pattern nocopts = null;
+ if (ruleContext.getRule().isAttrDefined(NO_COPTS_ATTRIBUTE, Type.STRING)) {
+ String nocoptsAttr = ruleContext.expandMakeVariables(NO_COPTS_ATTRIBUTE,
+ ruleContext.attributes().get(NO_COPTS_ATTRIBUTE, Type.STRING));
+ try {
+ nocopts = Pattern.compile(nocoptsAttr);
+ } catch (PatternSyntaxException e) {
+ ruleContext.attributeError(NO_COPTS_ATTRIBUTE,
+ "invalid regular expression '" + nocoptsAttr + "': " + e.getMessage());
+ }
}
+ return nocopts;
}
// TODO(bazel-team): calculating nocopts every time is not very efficient,
@@ -395,7 +381,8 @@ public final class CcCommon {
* otherwise.
*/
static boolean noCoptsMatches(String option, RuleContext ruleContext) {
- return !getCoptsFilter(ruleContext).apply(option);
+ Pattern nocopts = getNoCopts(ruleContext);
+ return nocopts == null ? false : nocopts.matcher(option).matches();
}
private static final String DEFINES_ATTRIBUTE = "defines";
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 02c7c26002..a7ffab3456 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
@@ -19,7 +19,6 @@ import static java.util.stream.Collectors.toCollection;
import com.google.common.base.Function;
import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -68,6 +67,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import java.util.regex.Pattern;
import javax.annotation.Nullable;
/**
@@ -266,7 +266,7 @@ public final class CcLibraryHelper {
private final List<Artifact> nonCodeLinkerInputs = new ArrayList<>();
private ImmutableList<String> copts = ImmutableList.of();
private final List<String> linkopts = new ArrayList<>();
- private Predicate<String> coptsFilter = Predicates.alwaysTrue();
+ @Nullable private Pattern nocopts;
private final Set<String> defines = new LinkedHashSet<>();
private final List<TransitiveInfoCollection> deps = new ArrayList<>();
private final List<CppCompilationContext> depContexts = new ArrayList<>();
@@ -378,7 +378,7 @@ public final class CcLibraryHelper {
addLooseIncludeDirs(common.getLooseIncludeDirs());
addNonCodeLinkerInputs(common.getLinkerScripts());
addSystemIncludeDirs(common.getSystemIncludeDirs());
- setCoptsFilter(common.getCoptsFilter());
+ setNoCopts(common.getNoCopts());
setHeadersCheckingMode(semantics.determineHeadersCheckingMode(ruleContext));
return this;
}
@@ -640,9 +640,11 @@ public final class CcLibraryHelper {
return this;
}
- /** Sets a pattern that is used to filter copts; set to {@code null} for no filtering. */
- public CcLibraryHelper setCoptsFilter(Predicate<String> coptsFilter) {
- this.coptsFilter = Preconditions.checkNotNull(coptsFilter);
+ /**
+ * Sets a pattern that is used to filter copts; set to {@code null} for no filtering.
+ */
+ public CcLibraryHelper setNoCopts(@Nullable Pattern nocopts) {
+ this.nocopts = nocopts;
return this;
}
@@ -1148,7 +1150,12 @@ public final class CcLibraryHelper {
*/
private CppModel initializeCppModel() {
return new CppModel(
- ruleContext, semantics, ccToolchain, fdoSupport, configuration, copts, coptsFilter)
+ ruleContext,
+ semantics,
+ ccToolchain,
+ fdoSupport,
+ configuration,
+ copts)
.addCompilationUnitSources(compilationUnitSources)
.setLinkTargetType(linkType)
.setNeverLink(neverlink)
@@ -1159,6 +1166,7 @@ public final class CcLibraryHelper {
// Note: this doesn't actually save the temps, it just makes the CppModel use the
// configurations --save_temps setting to decide whether to actually save the temps.
.setSaveTemps(true)
+ .setNoCopts(nocopts)
.setDynamicLibrary(dynamicLibrary)
.addLinkopts(linkopts)
.setFeatureConfiguration(featureConfiguration)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 383e64fd3b..705dc80a26 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -35,7 +35,6 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationExcepti
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariableValue;
-import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain;
import java.io.IOException;
@@ -1413,13 +1412,6 @@ public class CcToolchainFeatures implements Serializable {
return this;
}
- /** Overrides a variable to expands {@code name} to {@code value} instead. */
- public Builder overrideStringSequenceVariable(String name, ImmutableList<String> value) {
- Preconditions.checkNotNull(value, "Cannot set null as a value for variable '%s'", name);
- variablesMap.put(name, new StringSequence(value));
- return this;
- }
-
/**
* Add a sequence variable that expands {@code name} to {@code values}.
*
@@ -1516,8 +1508,10 @@ public class CcToolchainFeatures implements Serializable {
return this;
}
- /** @return a new {@Variables} object. */
- public Variables build() {
+ /**
+ * @return a new {@Variables} object.
+ */
+ Variables build() {
return new Variables(
ImmutableMap.copyOf(variablesMap), ImmutableMap.copyOf(stringVariablesMap));
}
@@ -1738,27 +1732,6 @@ public class CcToolchainFeatures implements Serializable {
return commandLine;
}
- /** @return the flags expanded for the given {@code action} in per-feature buckets. */
- public ImmutableList<Pair<String, List<String>>> getPerFeatureExpansions(
- String action, Variables variables) {
- ImmutableList.Builder<Pair<String, List<String>>> perFeatureExpansions =
- ImmutableList.builder();
- if (actionIsConfigured(action)) {
- List<String> commandLine = new ArrayList<>();
- ActionConfig actionConfig = actionConfigByActionName.get(action);
- actionConfig.expandCommandLine(variables, enabledFeatureNames, commandLine);
- perFeatureExpansions.add(Pair.of(actionConfig.getName(), commandLine));
- }
-
- for (Feature feature : enabledFeatures) {
- List<String> commandLine = new ArrayList<>();
- feature.expandCommandLine(action, variables, enabledFeatureNames, commandLine);
- perFeatureExpansions.add(Pair.of(feature.getName(), commandLine));
- }
-
- return perFeatureExpansions.build();
- }
-
/** @return the environment variables (key/value pairs) for the given {@code action}. */
ImmutableMap<String, String> getEnvironmentVariables(String action, Variables variables) {
ImmutableMap.Builder<String, String> envBuilder = ImmutableMap.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index 6526877565..4a7cc2d2d4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -354,12 +354,8 @@ public final class CcToolchainProvider extends ToolchainInfo {
"Returns the default list of options which cannot be filtered by BUILD "
+ "rules. These should be appended to the command line after filtering."
)
- public ImmutableList<String> getUnfilteredCompilerOptionsWithSysroot(Iterable<String> features) {
- return cppConfiguration.getUnfilteredCompilerOptions(features, sysroot);
- }
-
public ImmutableList<String> getUnfilteredCompilerOptions(Iterable<String> features) {
- return cppConfiguration.getUnfilteredCompilerOptions(features, null);
+ return cppConfiguration.getUnfilteredCompilerOptions(features, sysroot);
}
@SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
index db43758289..3e1eaf69c4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLine.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.cpp;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
@@ -23,10 +22,10 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfig
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile;
import com.google.devtools.build.lib.util.FileType;
-import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
@@ -38,6 +37,7 @@ public final class CompileCommandLine {
private final Artifact outputFile;
private final Label sourceLabel;
private final Predicate<String> coptsFilter;
+ private final Collection<String> features;
private final FeatureConfiguration featureConfiguration;
private final CcToolchainFeatures.Variables variables;
private final String actionName;
@@ -50,6 +50,7 @@ public final class CompileCommandLine {
Artifact outputFile,
Label sourceLabel,
Predicate<String> coptsFilter,
+ Collection<String> features,
FeatureConfiguration featureConfiguration,
CppConfiguration cppConfiguration,
CcToolchainFeatures.Variables variables,
@@ -60,6 +61,7 @@ public final class CompileCommandLine {
this.outputFile = Preconditions.checkNotNull(outputFile);
this.sourceLabel = Preconditions.checkNotNull(sourceLabel);
this.coptsFilter = coptsFilter;
+ this.features = Preconditions.checkNotNull(features);
this.featureConfiguration = Preconditions.checkNotNull(featureConfiguration);
this.cppConfiguration = Preconditions.checkNotNull(cppConfiguration);
this.variables = variables;
@@ -109,10 +111,34 @@ public final class CompileCommandLine {
return commandLine;
}
+ private boolean isObjcCompile(String actionName) {
+ return (actionName.equals(CppCompileAction.OBJC_COMPILE)
+ || actionName.equals(CppCompileAction.OBJCPP_COMPILE));
+ }
+
public List<String> getCompilerOptions(
@Nullable CcToolchainFeatures.Variables overwrittenVariables) {
List<String> options = new ArrayList<>();
+ CppConfiguration toolchain = cppConfiguration;
+
+ addFilteredOptions(options, toolchain.getCompilerOptions(features));
+ String sourceFilename = sourceFile.getExecPathString();
+ if (CppFileTypes.C_SOURCE.matches(sourceFilename)) {
+ addFilteredOptions(options, toolchain.getCOptions());
+ }
+ if (CppFileTypes.CPP_SOURCE.matches(sourceFilename)
+ || CppFileTypes.CPP_HEADER.matches(sourceFilename)
+ || CppFileTypes.CPP_MODULE_MAP.matches(sourceFilename)
+ || CppFileTypes.CLIF_INPUT_PROTO.matches(sourceFilename)) {
+ addFilteredOptions(options, toolchain.getCxxOptions(features));
+ }
+
+ // TODO(bazel-team): This needs to be before adding getUnfilteredCompilerOptions() and after
+ // adding the warning flags until all toolchains are migrated; currently toolchains use the
+ // unfiltered compiler options to inject include paths, which is superseded by the feature
+ // configuration; on the other hand toolchains switch off warnings for the layering check
+ // that will be re-added by the feature flags.
CcToolchainFeatures.Variables updatedVariables = variables;
if (variables != null && overwrittenVariables != null) {
CcToolchainFeatures.Variables.Builder variablesBuilder =
@@ -121,14 +147,18 @@ public final class CompileCommandLine {
variablesBuilder.addAndOverwriteAll(overwrittenVariables);
updatedVariables = variablesBuilder.build();
}
- addFilteredOptions(
- options, featureConfiguration.getPerFeatureExpansions(actionName, updatedVariables));
+ addFilteredOptions(options, featureConfiguration.getCommandLine(actionName, updatedVariables));
+ // Unfiltered compiler options contain system include paths. These must be added after
+ // the user provided options, otherwise users adding include paths will not pick up their
+ // own include paths first.
if (isObjcCompile(actionName)) {
PathFragment sysroot = cppProvider.getSysroot();
if (sysroot != null) {
- options.add(cppConfiguration.getSysrootCompilerOption(sysroot));
+ options.add(toolchain.getSysrootCompilerOption(sysroot));
}
+ } else {
+ options.addAll(cppProvider.getUnfilteredCompilerOptions(features));
}
// Add the options of --per_file_copt, if the label or the base name of the source file
@@ -156,22 +186,9 @@ public final class CompileCommandLine {
return options;
}
- private boolean isObjcCompile(String actionName) {
- return (actionName.equals(CppCompileAction.OBJC_COMPILE)
- || actionName.equals(CppCompileAction.OBJCPP_COMPILE));
- }
-
// For each option in 'in', add it to 'out' unless it is matched by the 'coptsFilter' regexp.
- private void addFilteredOptions(
- List<String> out, List<Pair<String, List<String>>> expandedFeatures) {
- for (Pair<String, List<String>> pair : expandedFeatures) {
- if (pair.getFirst().equals(CppRuleClasses.UNFILTERED_COMPILE_FLAGS_FEATURE_NAME)) {
- out.addAll(pair.getSecond());
- continue;
- }
-
- pair.getSecond().stream().filter(coptsFilter).forEachOrdered(out::add);
- }
+ private void addFilteredOptions(List<String> out, List<String> in) {
+ in.stream().filter(coptsFilter).forEachOrdered(out::add);
}
public Artifact getSourceFile() {
@@ -194,8 +211,8 @@ public final class CompileCommandLine {
* explicit attribute, not using platform-dependent garbage bag that copts is).
*/
public ImmutableList<String> getCopts() {
- if (variables.isAvailable(CppModel.USER_COMPILE_FLAGS_VARIABLE_NAME)) {
- return Variables.toStringList(variables, CppModel.USER_COMPILE_FLAGS_VARIABLE_NAME);
+ if (variables.isAvailable(CppModel.COPTS_VARIABLE_VALUE)) {
+ return Variables.toStringList(variables, CppModel.COPTS_VARIABLE_VALUE);
} else {
return ImmutableList.of();
}
@@ -206,6 +223,7 @@ public final class CompileCommandLine {
Artifact outputFile,
Label sourceLabel,
Predicate<String> coptsFilter,
+ ImmutableList<String> features,
String actionName,
CppConfiguration cppConfiguration,
DotdFile dotdFile,
@@ -215,6 +233,7 @@ public final class CompileCommandLine {
outputFile,
sourceLabel,
coptsFilter,
+ features,
actionName,
cppConfiguration,
dotdFile,
@@ -226,7 +245,8 @@ public final class CompileCommandLine {
private final Artifact sourceFile;
private final Artifact outputFile;
private final Label sourceLabel;
- private Predicate<String> coptsFilter;
+ private final Predicate<String> coptsFilter;
+ private final Collection<String> features;
private FeatureConfiguration featureConfiguration;
private CcToolchainFeatures.Variables variables = Variables.EMPTY;
private final String actionName;
@@ -240,6 +260,7 @@ public final class CompileCommandLine {
Preconditions.checkNotNull(outputFile),
Preconditions.checkNotNull(sourceLabel),
Preconditions.checkNotNull(coptsFilter),
+ Preconditions.checkNotNull(features),
Preconditions.checkNotNull(featureConfiguration),
Preconditions.checkNotNull(cppConfiguration),
Preconditions.checkNotNull(variables),
@@ -253,6 +274,7 @@ public final class CompileCommandLine {
Artifact outputFile,
Label sourceLabel,
Predicate<String> coptsFilter,
+ Collection<String> features,
String actionName,
CppConfiguration cppConfiguration,
DotdFile dotdFile,
@@ -261,6 +283,7 @@ public final class CompileCommandLine {
this.outputFile = outputFile;
this.sourceLabel = sourceLabel;
this.coptsFilter = coptsFilter;
+ this.features = features;
this.actionName = actionName;
this.cppConfiguration = cppConfiguration;
this.dotdFile = dotdFile;
@@ -277,11 +300,5 @@ public final class CompileCommandLine {
this.variables = variables;
return this;
}
-
- @VisibleForTesting
- Builder setCoptsFilter(Predicate<String> filter) {
- this.coptsFilter = Preconditions.checkNotNull(filter);
- return this;
- }
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
index 958b26f7f6..8ed59a2fe0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java
@@ -15,7 +15,7 @@ package com.google.devtools.build.lib.rules.cpp;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
+import java.util.Set;
/**
* A helper class for creating action_configs for the c++ actions.
@@ -33,7 +33,7 @@ public class CppActionConfigs {
public static String getCppActionConfigs(
CppPlatform platform,
- ImmutableSet<String> existingFeatureNames,
+ Set<String> features,
String gccToolPath,
String cppLinkDynamicLibraryToolPath,
String arToolPath,
@@ -41,8 +41,7 @@ public class CppActionConfigs {
boolean supportsEmbeddedRuntimes,
boolean supportsInterfaceSharedLibraries) {
String cppDynamicLibraryLinkerTool = "";
- if (!existingFeatureNames.contains("dynamic_library_linker_tool")
- && supportsInterfaceSharedLibraries) {
+ if (!features.contains("dynamic_library_linker_tool") && supportsInterfaceSharedLibraries) {
cppDynamicLibraryLinkerTool =
""
+ "feature {"
@@ -66,9 +65,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'preprocess-assemble'",
@@ -76,9 +73,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c-compile'",
@@ -86,9 +81,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c++-compile'",
@@ -96,9 +89,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c++-header-parsing'",
@@ -106,9 +97,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c++-header-preprocessing'",
@@ -116,9 +105,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c++-module-compile'",
@@ -126,9 +113,7 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
"action_config {",
" config_name: 'c++-module-codegen'",
@@ -136,33 +121,8 @@ public class CppActionConfigs {
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
- " implies: 'legacy_compile_flags'",
- " implies: 'user_compile_flags'",
- " implies: 'unfiltered_compile_flags'",
+ " implies: 'copts'",
"}",
- ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.LEGACY_COMPILE_FLAGS),
- "feature {",
- " name: 'legacy_compile_flags'",
- " enabled: true",
- " flag_set {",
- " expand_if_all_available: 'legacy_compile_flags'",
- " action: 'assemble'",
- " action: 'preprocess-assemble'",
- " action: 'c-compile'",
- " action: 'c++-compile'",
- " action: 'c++-header-parsing'",
- " action: 'c++-header-preprocessing'",
- " action: 'c++-module-compile'",
- " action: 'c++-module-codegen'",
- " action: 'lto-backend'",
- " action: 'clif-match'",
- " flag_group {",
- " iterate_over: 'legacy_compile_flags'",
- " flag: '%{legacy_compile_flags}'",
- " }",
- " }",
- "}"),
// Gcc options:
// -MD turns on .d file output as a side-effect (doesn't imply -E)
// -MM[D] enables user includes only, not system includes
@@ -173,7 +133,7 @@ public class CppActionConfigs {
// This combination gets user and system includes with specified name:
// -MD -MF <name>
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.DEPENDENCY_FILE),
+ !features.contains(CppRuleClasses.DEPENDENCY_FILE),
"feature {",
" name: 'dependency_file'",
" flag_set {",
@@ -202,7 +162,7 @@ public class CppActionConfigs {
// any value which differs for all translation units; we use the
// path to the object file.
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.RANDOM_SEED),
+ !features.contains(CppRuleClasses.RANDOM_SEED),
"feature {",
" name: 'random_seed'",
" flag_set {",
@@ -215,7 +175,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.PIC),
+ !features.contains(CppRuleClasses.PIC),
"feature {",
" name: 'pic'",
" flag_set {",
@@ -232,7 +192,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.PER_OBJECT_DEBUG_INFO),
+ !features.contains(CppRuleClasses.PER_OBJECT_DEBUG_INFO),
"feature {",
" name: 'per_object_debug_info'",
" flag_set {",
@@ -248,7 +208,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.PREPROCESSOR_DEFINES),
+ !features.contains(CppRuleClasses.PREPROCESSOR_DEFINES),
"feature {",
" name: 'preprocessor_defines'",
" flag_set {",
@@ -266,7 +226,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.INCLUDE_PATHS),
+ !features.contains(CppRuleClasses.INCLUDE_PATHS),
"feature {",
" name: 'include_paths'",
" flag_set {",
@@ -296,7 +256,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.FDO_INSTRUMENT),
+ !features.contains(CppRuleClasses.FDO_INSTRUMENT),
"feature {",
" name: 'fdo_instrument'",
" provides: 'profile'",
@@ -313,7 +273,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.FDO_OPTIMIZE),
+ !features.contains(CppRuleClasses.FDO_OPTIMIZE),
"feature {",
" name: 'fdo_optimize'",
" provides: 'profile'",
@@ -330,7 +290,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.AUTOFDO),
+ !features.contains(CppRuleClasses.AUTOFDO),
"feature {",
" name: 'autofdo'",
" provides: 'profile'",
@@ -345,7 +305,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.LIPO),
+ !features.contains(CppRuleClasses.LIPO),
"feature {",
" name: 'lipo'",
" requires { feature: 'autofdo' }",
@@ -458,7 +418,7 @@ public class CppActionConfigs {
// follow right after build_interface_libraries.
cppDynamicLibraryLinkerTool),
ifTrue(
- !existingFeatureNames.contains("symbol_counts"),
+ !features.contains("symbol_counts"),
"feature {",
" name: 'symbol_counts'",
" flag_set {",
@@ -471,7 +431,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("shared_flag"),
+ !features.contains("shared_flag"),
"feature {",
" name: 'shared_flag'",
" flag_set {",
@@ -482,7 +442,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("linkstamps"),
+ !features.contains("linkstamps"),
"feature {",
" name: 'linkstamps'",
" flag_set {",
@@ -496,7 +456,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("output_execpath_flags"),
+ !features.contains("output_execpath_flags"),
"feature {",
" name: 'output_execpath_flags'",
" flag_set {",
@@ -509,7 +469,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("output_execpath_flags_executable"),
+ !features.contains("output_execpath_flags_executable"),
"feature {",
" name: 'output_execpath_flags_executable'",
" flag_set {",
@@ -538,7 +498,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("runtime_library_search_directories"),
+ !features.contains("runtime_library_search_directories"),
"feature {",
" name: 'runtime_library_search_directories',",
" flag_set {",
@@ -563,7 +523,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("library_search_directories"),
+ !features.contains("library_search_directories"),
"feature {",
" name: 'library_search_directories'",
" flag_set {",
@@ -577,7 +537,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("archiver_flags"),
+ !features.contains("archiver_flags"),
"feature {",
" name: 'archiver_flags'",
" flag_set {",
@@ -598,7 +558,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("libraries_to_link"),
+ !features.contains("libraries_to_link"),
"feature {",
" name: 'libraries_to_link'",
" flag_set {",
@@ -759,7 +719,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("force_pic_flags"),
+ !features.contains("force_pic_flags"),
"feature {",
" name: 'force_pic_flags'",
" flag_set {",
@@ -771,7 +731,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("legacy_link_flags"),
+ !features.contains("legacy_link_flags"),
"feature {",
" name: 'legacy_link_flags'",
" flag_set {",
@@ -785,7 +745,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("fission_support"),
+ !features.contains("fission_support"),
"feature {",
" name: 'fission_support'",
" flag_set {",
@@ -799,7 +759,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("strip_debug_symbols"),
+ !features.contains("strip_debug_symbols"),
"feature {",
" name: 'strip_debug_symbols'",
" flag_set {",
@@ -813,7 +773,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains("linker_param_file"),
+ !features.contains("linker_param_file"),
"feature {",
" name: 'linker_param_file'",
" flag_set {",
@@ -836,7 +796,7 @@ public class CppActionConfigs {
" }",
"}"),
ifTrue(
- !existingFeatureNames.contains(CppRuleClasses.COVERAGE),
+ !features.contains(CppRuleClasses.COVERAGE),
"feature {",
" name: 'coverage'",
"}",
@@ -899,6 +859,28 @@ public class CppActionConfigs {
" feature: 'coverage'",
" }",
"}"),
+ ifTrue(
+ !features.contains(CppRuleClasses.COPTS),
+ "feature {",
+ " name: 'copts'",
+ " flag_set {",
+ " expand_if_all_available: 'copts'",
+ " action: 'assemble'",
+ " action: 'preprocess-assemble'",
+ " action: 'c-compile'",
+ " action: 'c++-compile'",
+ " action: 'c++-header-parsing'",
+ " action: 'c++-header-preprocessing'",
+ " action: 'c++-module-compile'",
+ " action: 'c++-module-codegen'",
+ " action: 'lto-backend'",
+ " action: 'clif-match'",
+ " flag_group {",
+ " iterate_over: 'copts'",
+ " flag: '%{copts}'",
+ " }",
+ " }",
+ "}"),
"action_config {",
" config_name: 'strip'",
" action_name: 'strip'",
@@ -941,63 +923,6 @@ public class CppActionConfigs {
"}"));
}
- public static String getFeaturesToAppearLastInToolchain(
- ImmutableSet<String> existingFeatureNames) {
- return Joiner.on("\n")
- .join(
- ImmutableList.of(
- ifTrue(
- !existingFeatureNames.contains("user_compile_flags"),
- "feature {",
- " name: 'user_compile_flags'",
- " enabled: true",
- " flag_set {",
- " expand_if_all_available: 'user_compile_flags'",
- " action: 'assemble'",
- " action: 'preprocess-assemble'",
- " action: 'c-compile'",
- " action: 'c++-compile'",
- " action: 'c++-header-parsing'",
- " action: 'c++-header-preprocessing'",
- " action: 'c++-module-compile'",
- " action: 'c++-module-codegen'",
- " action: 'lto-backend'",
- " action: 'clif-match'",
- " flag_group {",
- " iterate_over: 'user_compile_flags'",
- " flag: '%{user_compile_flags}'",
- " }",
- " }",
- "}"),
- // unfiltered_compile_flags contain system include paths. These must be added
- // after the user provided options (present in legacy_compile_flags build
- // variable above), otherwise users adding include paths will not pick up their own
- // include paths first.
- ifTrue(
- !existingFeatureNames.contains("unfiltered_compile_flags"),
- "feature {",
- " name: 'unfiltered_compile_flags'",
- " enabled: true",
- " flag_set {",
- " expand_if_all_available: 'unfiltered_compile_flags'",
- " action: 'assemble'",
- " action: 'preprocess-assemble'",
- " action: 'c-compile'",
- " action: 'c++-compile'",
- " action: 'c++-header-parsing'",
- " action: 'c++-header-preprocessing'",
- " action: 'c++-module-compile'",
- " action: 'c++-module-codegen'",
- " action: 'lto-backend'",
- " action: 'clif-match'",
- " flag_group {",
- " iterate_over: 'unfiltered_compile_flags'",
- " flag: '%{unfiltered_compile_flags}'",
- " }",
- " }",
- "}")));
- }
-
private static String ifLinux(CppPlatform platform, String... lines) {
return ifTrue(platform == CppPlatform.LINUX, lines);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index a8d3a38bbb..ed46336d53 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -250,6 +250,7 @@ public class CppCompileAction extends AbstractAction
*
* @param owner the owner of the action, usually the configured target that emitted it
* @param allInputs the list of all action inputs.
+ * @param features TODO(bazel-team): Add parameter description.
* @param featureConfiguration TODO(bazel-team): Add parameter description.
* @param variables TODO(bazel-team): Add parameter description.
* @param sourceFile the source file that should be compiled. {@code mandatoryInputs} must contain
@@ -284,6 +285,9 @@ public class CppCompileAction extends AbstractAction
protected CppCompileAction(
ActionOwner owner,
NestedSet<Artifact> allInputs,
+ // TODO(bazel-team): Eventually we will remove 'features'; all functionality in 'features'
+ // will be provided by 'featureConfiguration'.
+ ImmutableList<String> features,
FeatureConfiguration featureConfiguration,
CcToolchainFeatures.Variables variables,
Artifact sourceFile,
@@ -348,6 +352,7 @@ public class CppCompileAction extends AbstractAction
outputFile,
sourceLabel,
coptsFilter,
+ features,
actionName,
cppConfiguration,
dotdFile,
@@ -797,7 +802,7 @@ public class CppCompileAction extends AbstractAction
*/
@VisibleForTesting
public List<String> getCompilerOptions() {
- return compileCommandLine.getCompilerOptions(/* overwrittenVariables= */ null);
+ return compileCommandLine.getCompilerOptions(/*updatedVariables=*/ null);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 1db66cabc7..6020ae906b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -38,11 +38,14 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
import java.util.function.Consumer;
+import java.util.regex.Pattern;
/**
* Builder class to construct C++ compile actions.
@@ -52,6 +55,7 @@ public class CppCompileActionBuilder {
private final ActionOwner owner;
private final BuildConfiguration configuration;
+ private final List<String> features = new ArrayList<>();
private CcToolchainFeatures.FeatureConfiguration featureConfiguration;
private CcToolchainFeatures.Variables variables = Variables.EMPTY;
private Artifact sourceFile;
@@ -66,7 +70,7 @@ public class CppCompileActionBuilder {
private Artifact gcnoFile;
private CppCompilationContext context = CppCompilationContext.EMPTY;
private final List<String> pluginOpts = new ArrayList<>();
- private Predicate<String> coptsFilter = Predicates.alwaysTrue();
+ private final List<Pattern> nocopts = new ArrayList<>();
private ImmutableList<PathFragment> extraSystemIncludePrefixes = ImmutableList.of();
private boolean usePic;
private boolean allowUsingHeaderModules;
@@ -97,6 +101,7 @@ public class CppCompileActionBuilder {
sourceLabel,
ruleContext.getConfiguration(),
getLipoScannableMap(ruleContext),
+ ruleContext.getFeatures(),
ccToolchain);
}
@@ -111,6 +116,7 @@ public class CppCompileActionBuilder {
sourceLabel,
configuration,
getLipoScannableMap(ruleContext),
+ ruleContext.getFeatures(),
ccToolchain);
}
@@ -120,12 +126,14 @@ public class CppCompileActionBuilder {
Label sourceLabel,
BuildConfiguration configuration,
Map<Artifact, IncludeScannable> lipoScannableMap,
+ Set<String> features,
CcToolchainProvider ccToolchain) {
this.owner = actionOwner;
this.sourceLabel = sourceLabel;
this.configuration = configuration;
this.cppConfiguration = configuration.getFragment(CppConfiguration.class);
this.lipoScannableMap = ImmutableMap.copyOf(lipoScannableMap);
+ this.features.addAll(features);
this.mandatoryInputsBuilder = NestedSetBuilder.stableOrder();
this.allowUsingHeaderModules = true;
this.localShellEnvironment = configuration.getLocalShellEnvironment();
@@ -153,6 +161,7 @@ public class CppCompileActionBuilder {
*/
public CppCompileActionBuilder(CppCompileActionBuilder other) {
this.owner = other.owner;
+ this.features.addAll(other.features);
this.featureConfiguration = other.featureConfiguration;
this.sourceFile = other.sourceFile;
this.sourceLabel = other.sourceLabel;
@@ -167,7 +176,7 @@ public class CppCompileActionBuilder {
this.gcnoFile = other.gcnoFile;
this.context = other.context;
this.pluginOpts.addAll(other.pluginOpts);
- this.coptsFilter = other.coptsFilter;
+ this.nocopts.addAll(other.nocopts);
this.extraSystemIncludePrefixes = ImmutableList.copyOf(other.extraSystemIncludePrefixes);
this.specialInputsHandler = other.specialInputsHandler;
this.actionClassId = other.actionClassId;
@@ -207,6 +216,23 @@ public class CppCompileActionBuilder {
return mandatoryInputsBuilder.build();
}
+ private static Predicate<String> getNocoptPredicate(Collection<Pattern> patterns) {
+ final ImmutableList<Pattern> finalPatterns = ImmutableList.copyOf(patterns);
+ if (finalPatterns.isEmpty()) {
+ return Predicates.alwaysTrue();
+ } else {
+ return option -> {
+ for (Pattern pattern : finalPatterns) {
+ if (pattern.matcher(option).matches()) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+ }
+ }
+
private Iterable<IncludeScannable> getLipoScannables(NestedSet<Artifact> realMandatoryInputs) {
boolean fake = tempOutputFile != null;
@@ -359,6 +385,7 @@ public class CppCompileActionBuilder {
new FakeCppCompileAction(
owner,
allInputs,
+ ImmutableList.copyOf(features),
featureConfiguration,
variables,
sourceFile,
@@ -376,7 +403,7 @@ public class CppCompileActionBuilder {
cppConfiguration,
context,
actionContext,
- coptsFilter,
+ getNocoptPredicate(nocopts),
getLipoScannables(realMandatoryInputs),
cppSemantics,
ccToolchain,
@@ -386,6 +413,7 @@ public class CppCompileActionBuilder {
new CppCompileAction(
owner,
allInputs,
+ ImmutableList.copyOf(features),
featureConfiguration,
variables,
sourceFile,
@@ -406,7 +434,7 @@ public class CppCompileActionBuilder {
cppConfiguration,
context,
actionContext,
- coptsFilter,
+ getNocoptPredicate(nocopts),
specialInputsHandler,
getLipoScannables(realMandatoryInputs),
additionalIncludeFiles.build(),
@@ -507,8 +535,10 @@ public class CppCompileActionBuilder {
return this;
}
- /** Returns the build variables to be used for the action. */
- public CcToolchainFeatures.Variables getVariables() {
+ /**
+ * Returns the build variables to be used for the action.
+ */
+ CcToolchainFeatures.Variables getVariables() {
return variables;
}
@@ -644,6 +674,11 @@ public class CppCompileActionBuilder {
return this;
}
+ public CppCompileActionBuilder addNocopts(Pattern nocopts) {
+ this.nocopts.add(nocopts);
+ return this;
+ }
+
public CppCompileActionBuilder setContext(CppCompilationContext context) {
this.context = context;
return this;
@@ -679,7 +714,4 @@ public class CppCompileActionBuilder {
return ccToolchain;
}
- public void setCoptsFilter(Predicate<String> coptsFilter) {
- this.coptsFilter = Preconditions.checkNotNull(coptsFilter);
- }
}
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 539883bb72..a36781773f 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
@@ -55,7 +55,6 @@ import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CTool
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LinkingModeFlags;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.ToolPath;
-import com.google.protobuf.Descriptors.FieldDescriptor;
import com.google.protobuf.TextFormat;
import com.google.protobuf.TextFormat.ParseException;
import java.io.Serializable;
@@ -632,13 +631,12 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
}
}
- ImmutableSet<String> featureNames =
- toolchain
- .getFeatureList()
- .stream()
- .map(feature -> feature.getName())
- .collect(ImmutableSet.toImmutableSet());
- if (!featureNames.contains(CppRuleClasses.NO_LEGACY_FEATURES)) {
+ ImmutableSet.Builder<String> featuresBuilder = ImmutableSet.builder();
+ for (CToolchain.Feature feature : toolchain.getFeatureList()) {
+ featuresBuilder.add(feature.getName());
+ }
+ Set<String> features = featuresBuilder.build();
+ if (!features.contains(CppRuleClasses.NO_LEGACY_FEATURES)) {
try {
String gccToolPath = "DUMMY_GCC_TOOL";
String linkerToolPath = "DUMMY_LINKER_TOOL";
@@ -659,28 +657,10 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
stripToolPath = tool.getPath();
}
}
-
- // TODO(b/30109612): Remove fragile legacyCompileFlags shuffle once there are no legacy
- // crosstools.
- // Existing projects depend on flags from legacy toolchain fields appearing first on the
- // compile command line. 'legacy_compile_flags' feature contains all these flags, and so it
- // needs to appear before other features from {@link CppActionConfigs}.
- CToolchain.Feature legacyCompileFlagsFeature =
- toolchain
- .getFeatureList()
- .stream()
- .filter(feature -> feature.getName().equals(CppRuleClasses.LEGACY_COMPILE_FLAGS))
- .findFirst()
- .orElse(null);
- if (legacyCompileFlagsFeature != null) {
- toolchainBuilder.addFeature(legacyCompileFlagsFeature);
- toolchain = removeLegacyCompileFlagsFeatureFromToolchain(toolchain);
- }
-
TextFormat.merge(
CppActionConfigs.getCppActionConfigs(
getTargetLibc().equals("macosx") ? CppPlatform.MAC : CppPlatform.LINUX,
- featureNames,
+ features,
gccToolPath,
linkerToolPath,
arToolPath,
@@ -696,34 +676,9 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
}
toolchainBuilder.mergeFrom(toolchain);
-
- if (!featureNames.contains(CppRuleClasses.NO_LEGACY_FEATURES)) {
- try {
- TextFormat.merge(
- CppActionConfigs.getFeaturesToAppearLastInToolchain(featureNames), toolchainBuilder);
- } catch (ParseException e) {
- // Can only happen if we change the proto definition without changing our
- // configuration above.
- throw new RuntimeException(e);
- }
- }
return toolchainBuilder.build();
}
- private CToolchain removeLegacyCompileFlagsFeatureFromToolchain(CToolchain toolchain) {
- FieldDescriptor featuresFieldDescriptor = CToolchain.getDescriptor().findFieldByName("feature");
- return toolchain
- .toBuilder()
- .setField(
- featuresFieldDescriptor,
- toolchain
- .getFeatureList()
- .stream()
- .filter(feature -> !feature.getName().equals(CppRuleClasses.LEGACY_COMPILE_FLAGS))
- .collect(ImmutableList.toImmutableList()))
- .build();
- }
-
@VisibleForTesting
static CompilationMode importCompilationMode(CrosstoolConfig.CompilationMode mode) {
return CompilationMode.valueOf(mode.name());
@@ -2008,22 +1963,6 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
return requestedFeatures.build();
}
- public ImmutableList<String> collectLegacyCompileFlags(
- String sourceFilename, ImmutableSet<String> features) {
- ImmutableList.Builder<String> legacyCompileFlags = ImmutableList.builder();
- legacyCompileFlags.addAll(getCompilerOptions(features));
- if (CppFileTypes.C_SOURCE.matches(sourceFilename)) {
- legacyCompileFlags.addAll(getCOptions());
- }
- if (CppFileTypes.CPP_SOURCE.matches(sourceFilename)
- || CppFileTypes.CPP_HEADER.matches(sourceFilename)
- || CppFileTypes.CPP_MODULE_MAP.matches(sourceFilename)
- || CppFileTypes.CLIF_INPUT_PROTO.matches(sourceFilename)) {
- legacyCompileFlags.addAll(getCxxOptions(features));
- }
- return legacyCompileFlags.build();
- }
-
public static PathFragment computeDefaultSysroot(CToolchain toolchain) {
PathFragment defaultSysroot =
toolchain.getBuiltinSysroot().length() == 0
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
index 0681bc040b..90e8965b49 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.rules.cpp;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -52,6 +50,8 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Pattern;
+import javax.annotation.Nullable;
/**
* Representation of a C/C++ compilation. Its purpose is to share the code that creates compilation
@@ -121,9 +121,6 @@ public final class CppModel {
*/
public static final String SYSTEM_INCLUDE_PATHS_VARIABLE_NAME = "system_include_paths";
- /** Name of the build variable for the dependency file path */
- public static final String DEPENDENCY_FILE_VARIABLE_NAME = "dependency_file";
-
/** Name of the build variable for the collection of macros defined for preprocessor. */
public static final String PREPROCESSOR_DEFINES_VARIABLE_NAME = "preprocessor_defines";
@@ -140,24 +137,12 @@ public final class CppModel {
/** Name of the build variable for the LTO indexing bitcode file. */
public static final String LTO_INDEXING_BITCODE_FILE_VARIABLE_NAME = "lto_indexing_bitcode_file";
+ /** Build variable for all user provided copt flags. */
+ public static final String COPTS_VARIABLE_VALUE = "copts";
+
/** Name of the build variable for stripopts for the strip action. */
public static final String STRIPOPTS_VARIABLE_NAME = "stripopts";
- /**
- * Build variable for all flags coming from legacy crosstool fields, such as compiler_flag,
- * optional_compiler_flag, cxx_flag, optional_cxx_flag.
- */
- public static final String LEGACY_COMPILE_FLAGS_VARIABLE_NAME = "legacy_compile_flags";
-
- /**
- * Build variable for all flags coming from copt rule attribute, and from --copt, --cxxopt, or
- * --conlyopt options.
- */
- public static final String USER_COMPILE_FLAGS_VARIABLE_NAME = "user_compile_flags";
-
- /** Build variable for flags coming from unfiltered_cxx_flag CROSSTOOL fields. */
- public static final String UNFILTERED_COMPILE_FLAGS_VARIABLE_NAME = "unfiltered_compile_flags";
-
private final CppSemantics semantics;
private final RuleContext ruleContext;
private final BuildConfiguration configuration;
@@ -168,7 +153,7 @@ public final class CppModel {
private final Set<CppSource> sourceFiles = new LinkedHashSet<>();
private final List<Artifact> mandatoryInputs = new ArrayList<>();
private final ImmutableList<String> copts;
- private final Predicate<String> coptsFilter;
+ @Nullable private Pattern nocopts;
private boolean fake;
private boolean maySaveTemps;
private boolean onlySingleOutput;
@@ -187,7 +172,6 @@ public final class CppModel {
private final CcToolchainProvider ccToolchain;
private final FdoSupportProvider fdoSupport;
private String linkedArtifactNameSuffix = "";
- private final ImmutableSet<String> features;
public CppModel(
RuleContext ruleContext,
@@ -195,31 +179,7 @@ public final class CppModel {
CcToolchainProvider ccToolchain,
FdoSupportProvider fdoSupport,
ImmutableList<String> copts) {
- this(
- ruleContext,
- semantics,
- ccToolchain,
- fdoSupport,
- ruleContext.getConfiguration(),
- copts,
- Predicates.alwaysTrue());
- }
-
- public CppModel(
- RuleContext ruleContext,
- CppSemantics semantics,
- CcToolchainProvider ccToolchain,
- FdoSupportProvider fdoSupport,
- ImmutableList<String> copts,
- Predicate<String> coptsFilter) {
- this(
- ruleContext,
- semantics,
- ccToolchain,
- fdoSupport,
- ruleContext.getConfiguration(),
- copts,
- coptsFilter);
+ this(ruleContext, semantics, ccToolchain, fdoSupport, ruleContext.getConfiguration(), copts);
}
public CppModel(
@@ -228,17 +188,14 @@ public final class CppModel {
CcToolchainProvider ccToolchain,
FdoSupportProvider fdoSupport,
BuildConfiguration configuration,
- ImmutableList<String> copts,
- Predicate<String> coptsFilter) {
+ ImmutableList<String> copts) {
this.ruleContext = Preconditions.checkNotNull(ruleContext);
this.semantics = semantics;
this.ccToolchain = Preconditions.checkNotNull(ccToolchain);
this.fdoSupport = Preconditions.checkNotNull(fdoSupport);
this.configuration = configuration;
this.copts = copts;
- this.coptsFilter = Preconditions.checkNotNull(coptsFilter);
cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
- features = ruleContext.getFeatures();
}
private Artifact getDwoFile(Artifact outputFile) {
@@ -316,6 +273,15 @@ public final class CppModel {
}
/**
+ * Sets the nocopts pattern. This is used to filter out flags from the system defined set of
+ * flags. By default no filter is applied.
+ */
+ public CppModel setNoCopts(@Nullable Pattern nocopts) {
+ this.nocopts = nocopts;
+ return this;
+ }
+
+ /**
* Adds the given linkopts to the optional dynamic library link command.
*/
public CppModel addLinkopts(Collection<String> linkopts) {
@@ -466,6 +432,10 @@ public final class CppModel {
private CppCompileActionBuilder initializeCompileAction(
Artifact sourceArtifact, Label sourceLabel) {
CppCompileActionBuilder builder = createCompileActionBuilder(sourceArtifact, sourceLabel);
+ if (nocopts != null) {
+ builder.addNocopts(nocopts);
+ }
+
builder.setFeatureConfiguration(featureConfiguration);
return builder;
@@ -493,6 +463,8 @@ public final class CppModel {
CcToolchainFeatures.Variables.Builder buildVariables =
new CcToolchainFeatures.Variables.Builder();
+ // TODO(bazel-team): Pull out string constants for all build variables.
+
CppCompilationContext builderContext = builder.getContext();
Artifact sourceFile = builder.getSourceFile();
Artifact outputFile = builder.getOutputFile();
@@ -500,19 +472,7 @@ public final class CppModel {
buildVariables.addStringVariable(SOURCE_FILE_VARIABLE_NAME, sourceFile.getExecPathString());
buildVariables.addStringVariable(OUTPUT_FILE_VARIABLE_NAME, outputFile.getExecPathString());
- buildVariables.addStringSequenceVariable(USER_COMPILE_FLAGS_VARIABLE_NAME, copts);
-
- String sourceFilename = sourceFile.getExecPathString();
- buildVariables.addStringSequenceVariable(
- LEGACY_COMPILE_FLAGS_VARIABLE_NAME,
- cppConfiguration.collectLegacyCompileFlags(sourceFilename, features));
-
- if (!CppFileTypes.OBJC_SOURCE.matches(sourceFilename)
- && !CppFileTypes.OBJCPP_SOURCE.matches(sourceFilename)) {
- buildVariables.addStringSequenceVariable(
- UNFILTERED_COMPILE_FLAGS_VARIABLE_NAME,
- ccToolchain.getUnfilteredCompilerOptionsWithSysroot(features));
- }
+ buildVariables.addStringSequenceVariable(COPTS_VARIABLE_VALUE, copts);
if (builder.getTempOutputFile() != null) {
realOutputFilePath = builder.getTempOutputFile().getPathString();
@@ -535,7 +495,7 @@ public final class CppModel {
// Set dependency_file to enable <object>.d file generation.
if (dotdFile != null) {
buildVariables.addStringVariable(
- DEPENDENCY_FILE_VARIABLE_NAME, dotdFile.getSafeExecPath().getPathString());
+ "dependency_file", dotdFile.getSafeExecPath().getPathString());
}
if (featureConfiguration.isEnabled(CppRuleClasses.MODULE_MAPS) && cppModuleMap != null) {
@@ -746,11 +706,7 @@ public final class CppModel {
builder.getContext().getCppModuleMap(),
ImmutableMap.<String, String>of());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact tokenFile = compileAction.getOutputFile();
@@ -812,11 +768,7 @@ public final class CppModel {
builder.setDwoFile(dwoFile);
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
AnalysisEnvironment env = ruleContext.getAnalysisEnvironment();
env.registerAction(compileAction);
@@ -875,13 +827,9 @@ public final class CppModel {
/*dwoFile=*/ null,
/*ltoIndexingFile=*/ null,
builder.getContext().getCppModuleMap(),
- /* sourceSpecificBuildVariables= */ ImmutableMap.<String, String>of());
+ /*sourceSpecificBuildVariables=*/ ImmutableMap.<String, String>of());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact tokenFile = compileAction.getOutputFile();
@@ -962,11 +910,7 @@ public final class CppModel {
picBuilder.setLtoIndexingFile(ltoIndexingFile);
semantics.finalizeCompileActionBuilder(
- ruleContext,
- picBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, picBuilder, featureConfiguration.getFeatureSpecification());
CppCompileAction picAction = picBuilder.buildOrThrowRuleError(ruleContext);
env.registerAction(picAction);
directOutputs.add(picAction.getOutputFile());
@@ -1033,11 +977,7 @@ public final class CppModel {
builder.setLtoIndexingFile(ltoIndexingFile);
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact objectFile = compileAction.getOutputFile();
@@ -1078,11 +1018,7 @@ public final class CppModel {
builder.getContext().getCppModuleMap(),
source.getBuildVariables());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
// Make sure this builder doesn't reference ruleContext outside of analysis phase.
CppCompileActionTemplate actionTemplate = new CppCompileActionTemplate(
sourceArtifact,
@@ -1138,11 +1074,7 @@ public final class CppModel {
builder.getContext().getCppModuleMap(),
ImmutableMap.<String, String>of());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, builder, featureConfiguration.getFeatureSpecification());
CppCompileAction action = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(action);
if (addObject) {
@@ -1472,11 +1404,7 @@ public final class CppModel {
builder.getContext().getCppModuleMap(),
ImmutableMap.<String, String>of());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- dBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, dBuilder, featureConfiguration.getFeatureSpecification());
CppCompileAction dAction = dBuilder.buildOrThrowRuleError(ruleContext);
ruleContext.registerAction(dAction);
@@ -1494,11 +1422,7 @@ public final class CppModel {
builder.getContext().getCppModuleMap(),
ImmutableMap.<String, String>of());
semantics.finalizeCompileActionBuilder(
- ruleContext,
- sdBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ ruleContext, sdBuilder, featureConfiguration.getFeatureSpecification());
CppCompileAction sdAction = sdBuilder.buildOrThrowRuleError(ruleContext);
ruleContext.registerAction(sdAction);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index b099854b14..06e4c9b687 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -176,8 +176,8 @@ public class CppRuleClasses {
public static final SafeImplicitOutputsFunction CC_BINARY_DEBUG_PACKAGE =
fromTemplates("%{name}.dwp");
- /** Name of the feature that will be exempt from flag filtering when nocopts are used */
- public static final String UNFILTERED_COMPILE_FLAGS_FEATURE_NAME = "unfiltered_compile_flags";
+ /** A string constant for the copts feature. */
+ public static final String COPTS = "copts";
/**
* A string constant for the parse_headers feature.
@@ -289,13 +289,6 @@ public class CppRuleClasses {
public static final String NO_LEGACY_FEATURES = "no_legacy_features";
/**
- * A string constant for the legacy_compile_flags feature. If this feature is present in the
- * toolchain, and the toolchain doesn't specify no_legacy_features, bazel will move
- * legacy_compile_flags before other features from {@link CppActionConfigs}.
- */
- public static final String LEGACY_COMPILE_FLAGS = "legacy_compile_flags";
-
- /**
* A string constant for the feature that makes us build per-object debug info files.
*/
public static final String PER_OBJECT_DEBUG_INFO = "per_object_debug_info";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
index 3331cb1e0f..dfdafb6ded 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.rules.cpp;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -42,9 +40,7 @@ public interface CppSemantics {
void finalizeCompileActionBuilder(
RuleContext ruleContext,
CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features);
+ FeatureSpecification featureSpecification);
/**
* Called before {@link CppCompilationContext}s are finalized.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 3ca810051b..bf6b9fdc70 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -56,6 +56,7 @@ public class FakeCppCompileAction extends CppCompileAction {
FakeCppCompileAction(
ActionOwner owner,
NestedSet<Artifact> allInputs,
+ ImmutableList<String> features,
FeatureConfiguration featureConfiguration,
CcToolchainFeatures.Variables variables,
Artifact sourceFile,
@@ -81,6 +82,7 @@ public class FakeCppCompileAction extends CppCompileAction {
super(
owner,
allInputs,
+ features,
featureConfiguration,
variables,
sourceFile,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
index 54aa46e80b..27f920b103 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
@@ -18,7 +18,6 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DYNAMIC_FRAM
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STATIC_FRAMEWORK_FILE;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
@@ -98,16 +97,13 @@ public class ObjcCppSemantics implements CppSemantics {
public void finalizeCompileActionBuilder(
RuleContext ruleContext,
CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features) {
+ FeatureSpecification featureSpecification) {
actionBuilder.setCppConfiguration(ruleContext.getFragment(CppConfiguration.class));
actionBuilder.setActionContext(CppCompileActionContext.class);
// Because Bazel does not support include scanning, we need the entire crosstool filegroup,
// including header files, as opposed to just the "compile" filegroup.
actionBuilder.addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool());
actionBuilder.setShouldScanIncludes(false);
- actionBuilder.setCoptsFilter(coptsFilter);
actionBuilder.addTransitiveMandatoryInputs(objcProvider.get(STATIC_FRAMEWORK_FILE));
actionBuilder.addTransitiveMandatoryInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE));
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
index f01c9e1fce..86e7e7c344 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MOCK_OSX_CROSSTOOL
@@ -208,27 +208,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -1179,7 +1158,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -1189,35 +1168,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -1302,9 +1259,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -1324,9 +1279,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -1341,9 +1294,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -1358,9 +1309,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -1375,9 +1324,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -1401,9 +1348,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -1428,9 +1373,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -1443,9 +1386,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -1460,9 +1401,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -1902,27 +1841,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -2873,7 +2791,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -2883,35 +2801,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -2996,9 +2892,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -3018,9 +2912,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -3035,9 +2927,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -3052,9 +2942,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -3069,9 +2957,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -3095,9 +2981,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -3122,9 +3006,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -3137,9 +3019,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -3154,9 +3034,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -3596,27 +3474,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -4567,28 +4424,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
- }
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -4598,14 +4434,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -4690,9 +4525,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -4712,9 +4545,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -4729,9 +4560,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -4746,9 +4575,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -4763,9 +4590,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -4789,9 +4614,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -4816,9 +4639,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -4831,9 +4652,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -4848,9 +4667,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -5290,27 +5107,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -6261,7 +6057,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -6271,35 +6067,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -6384,9 +6158,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -6406,9 +6178,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -6423,9 +6193,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -6440,9 +6208,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -6457,9 +6223,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -6483,9 +6247,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -6510,9 +6272,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -6525,9 +6285,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -6542,9 +6300,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -6988,27 +6744,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -7963,7 +7698,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -7973,35 +7708,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -8086,9 +7799,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -8108,9 +7819,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -8125,9 +7834,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -8142,9 +7849,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -8159,9 +7864,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -8185,9 +7888,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -8213,9 +7914,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -8229,9 +7928,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -8246,9 +7943,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -8692,27 +8387,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -9669,28 +9343,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
- }
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -9700,14 +9353,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -9792,9 +9444,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -9814,9 +9464,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -9831,9 +9479,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -9848,9 +9494,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -9865,9 +9509,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -9891,9 +9533,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -9919,9 +9559,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -9935,9 +9573,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -9952,9 +9588,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -10399,27 +10033,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -11400,7 +11013,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -11410,35 +11023,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -11523,9 +11114,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11546,9 +11135,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11564,9 +11151,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11582,9 +11167,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11600,9 +11183,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11627,9 +11208,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -11655,9 +11234,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -11671,9 +11248,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -11689,9 +11264,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -12136,27 +11709,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -13111,7 +12663,7 @@ toolchain {
name: "bitcode_embedded"
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -13121,35 +12673,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -13234,9 +12764,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -13256,9 +12784,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -13273,9 +12799,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -13290,9 +12814,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -13307,9 +12829,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -13333,9 +12853,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -13361,9 +12879,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "apply_simulator_compiler_flags"
}
action_config {
@@ -13377,9 +12893,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -13394,9 +12908,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -13840,27 +13352,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -14837,28 +14328,7 @@ toolchain {
}
}
feature {
- name: "user_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
- }
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -14868,14 +14338,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -14960,9 +14429,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -14982,9 +14449,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -14999,9 +14464,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -15016,9 +14479,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -15033,9 +14494,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -15059,9 +14518,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -15086,9 +14543,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -15101,9 +14556,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -15118,9 +14571,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -15564,27 +15015,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -16563,7 +15993,7 @@ toolchain {
}
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -16573,35 +16003,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -16686,9 +16094,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -16708,9 +16114,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -16725,9 +16129,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -16742,9 +16144,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -16759,9 +16159,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -16785,9 +16183,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -16812,9 +16208,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -16827,9 +16221,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -16844,9 +16236,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
@@ -17291,27 +16681,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -18314,7 +17683,7 @@ toolchain {
}
}
feature {
- name: "user_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -18324,35 +17693,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
- }
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -18437,9 +17784,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18460,9 +17805,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18478,9 +17821,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18496,9 +17837,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18514,9 +17853,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18541,9 +17878,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -18568,9 +17903,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -18583,9 +17916,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -18601,9 +17932,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
implies: "unfiltered_cxx_flags"
}
action_config {
@@ -19048,27 +18377,6 @@ toolchain {
name: "is_not_test_target"
}
feature {
- name: "legacy_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{legacy_compile_flags}"
- iterate_over: "legacy_compile_flags"
- }
- expand_if_all_available: "legacy_compile_flags"
- }
- }
- feature {
name: "generate_dsym_file"
flag_set {
action: "c-compile"
@@ -20045,28 +19353,7 @@ toolchain {
}
}
feature {
- name: "user_compile_flags"
- flag_set {
- action: "assemble"
- action: "preprocess-assemble"
- action: "c-compile"
- action: "c++-compile"
- action: "c++-header-parsing"
- action: "c++-header-preprocessing"
- action: "c++-module-compile"
- action: "c++-module-codegen"
- action: "lto-backend"
- action: "objc-compile"
- action: "objc++-compile"
- flag_group {
- flag: "%{user_compile_flags}"
- iterate_over: "user_compile_flags"
- }
- expand_if_all_available: "user_compile_flags"
- }
- }
- feature {
- name: "unfiltered_compile_flags"
+ name: "copts"
flag_set {
action: "assemble"
action: "preprocess-assemble"
@@ -20076,14 +19363,13 @@ toolchain {
action: "c++-header-preprocessing"
action: "c++-module-compile"
action: "c++-module-codegen"
- action: "lto-backend"
action: "objc-compile"
action: "objc++-compile"
flag_group {
- flag: "%{unfiltered_compile_flags}"
- iterate_over: "unfiltered_compile_flags"
+ flag: "%{copts}"
+ iterate_over: "copts"
}
- expand_if_all_available: "unfiltered_compile_flags"
+ expand_if_all_available: "copts"
}
}
feature {
@@ -20168,9 +19454,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-compile"
@@ -20190,9 +19474,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-module-compile"
@@ -20207,9 +19489,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-parsing"
@@ -20224,9 +19504,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "c++-header-preprocessing"
@@ -20241,9 +19519,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-compile"
@@ -20267,9 +19543,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc++-compile"
@@ -20294,9 +19568,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "assemble"
@@ -20309,9 +19581,7 @@ toolchain {
implies: "no_objc_arc"
implies: "include_system_dirs"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "preprocess-assemble"
@@ -20326,9 +19596,7 @@ toolchain {
implies: "objc_arc"
implies: "no_objc_arc"
implies: "apple_env"
- implies: "legacy_compile_flags"
- implies: "user_compile_flags"
- implies: "unfiltered_compile_flags"
+ implies: "copts"
}
action_config {
config_name: "objc-archive"
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariablesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariablesTest.java
index 469e51d6e7..67b9f8a0e2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariablesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariablesTest.java
@@ -20,7 +20,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
import org.junit.Test;
@@ -66,49 +65,15 @@ public class CompileBuildVariablesTest extends BuildViewTestCase {
}
@Test
- public void testPresenceOfLegacyCompileFlags() throws Exception {
- AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig, "cxx_flag: '-foo'");
- useConfiguration();
-
- scratch.file("x/BUILD", "cc_binary(name = 'bin', srcs = ['bin.cc'])");
- scratch.file("x/bin.cc");
-
- Variables variables = getCompileBuildVariables("//x:bin", "bin");
-
- ImmutableList<String> copts =
- Variables.toStringList(variables, CppModel.LEGACY_COMPILE_FLAGS_VARIABLE_NAME);
- assertThat(copts).contains("-foo");
- }
-
- @Test
- public void testPresenceOfUserCompileFlags() throws Exception {
- AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig);
- useConfiguration();
-
- scratch.file("x/BUILD", "cc_binary(name = 'bin', srcs = ['bin.cc'], copts = ['-foo'])");
+ public void testPresenceOfCoptsVariable() throws Exception {
+ scratch.file(
+ "x/BUILD", "cc_binary(name = 'bin', srcs = ['bin.cc'], copts = ['-foo', '-bar'])");
scratch.file("x/bin.cc");
Variables variables = getCompileBuildVariables("//x:bin", "bin");
ImmutableList<String> copts =
- Variables.toStringList(variables, CppModel.USER_COMPILE_FLAGS_VARIABLE_NAME);
- assertThat(copts).contains("-foo");
- }
-
- @Test
- public void testPresenceOfUnfilteredCompileFlags() throws Exception {
- AnalysisMock.get()
- .ccSupport()
- .setupCrosstool(mockToolsConfig, "unfiltered_cxx_flag: '--i_ll_live_forever'");
- useConfiguration();
-
- scratch.file("x/BUILD", "cc_binary(name = 'bin', srcs = ['bin.cc'])");
- scratch.file("x/bin.cc");
-
- Variables variables = getCompileBuildVariables("//x:bin", "bin");
-
- ImmutableList<String> unfilteredCompileFlags =
- Variables.toStringList(variables, CppModel.UNFILTERED_COMPILE_FLAGS_VARIABLE_NAME);
- assertThat(unfilteredCompileFlags).contains("--i_ll_live_forever");
+ Variables.toStringList(variables, CppModel.COPTS_VARIABLE_VALUE);
+ assertThat(copts).containsExactly("-foo", "-bar").inOrder();
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
index f481f0aa3b..97abeeb722 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.cpp;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Root;
@@ -25,7 +26,6 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfig
import com.google.devtools.build.lib.rules.cpp.CompileCommandLine.Builder;
import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile;
import java.io.IOException;
-import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -97,47 +97,6 @@ public class CompileCommandLineTest extends BuildViewTestCase {
.contains("-some_foo_flag");
}
- @Test
- public void testUnfilteredFlagsAreNotFiltered() throws Exception {
- List<String> actualCommandLine =
- getCompileCommandLineWithCoptsFilter(CppRuleClasses.UNFILTERED_COMPILE_FLAGS_FEATURE_NAME);
- assertThat(actualCommandLine).contains("-i_am_a_flag");
- }
-
- @Test
- public void testNonUnfilteredFlagsAreFiltered() throws Exception {
- List<String> actualCommandLine = getCompileCommandLineWithCoptsFilter("filtered_flags");
- assertThat(actualCommandLine).doesNotContain("-i_am_a_flag");
- }
-
- private List<String> getCompileCommandLineWithCoptsFilter(String featureName) throws Exception {
- CompileCommandLine compileCommandLine =
- makeCompileCommandLineBuilder()
- .setFeatureConfiguration(
- getMockFeatureConfiguration(
- "",
- "action_config {",
- " config_name: 'c++-compile'",
- " action_name: 'c++-compile'",
- " implies: '" + featureName + "'",
- " tool {",
- " tool_path: 'foo/bar/DUMMY_COMPILER'",
- " }",
- "}",
- "feature {",
- " name: '" + featureName + "'",
- " flag_set {",
- " action: 'c++-compile'",
- " flag_group {",
- " flag: '-i_am_a_flag'",
- " }",
- " }",
- "}"))
- .setCoptsFilter(flag -> !flag.contains("i_am_a_flag"))
- .build();
- return compileCommandLine.getArgv(scratchArtifact("a/FakeOutput").getExecPath(), null);
- }
-
private Builder makeCompileCommandLineBuilder() throws Exception {
ConfiguredTarget dummyTarget =
scratchConfiguredTarget("a", "a", "cc_binary(name='a', srcs=['a.cc'])");
@@ -151,6 +110,7 @@ public class CompileCommandLineTest extends BuildViewTestCase {
return true;
}
},
+ ImmutableList.<String>of(),
"c++-compile",
getTargetConfiguration().getFragment(CppConfiguration.class),
new DotdFile(scratchArtifact("a/dotD")),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
index 19f4392273..bc2e57f63f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
@@ -84,14 +84,13 @@ public class CppLinkActionTest extends BuildViewTestCase {
return CcToolchainFeaturesTest.buildFeatures(
CppActionConfigs.getCppActionConfigs(
CppPlatform.LINUX,
- ImmutableSet.of(),
+ ImmutableSet.<String>of(),
"gcc_tool",
"dynamic_library_linker_tool",
"ar_tool",
"strip_tool",
- /* supportsEmbeddedRuntimes= */ true,
- /* supportsInterfaceSharedLibraries= */ false),
- CppActionConfigs.getFeaturesToAppearLastInToolchain(ImmutableSet.of()))
+ true,
+ false))
.getFeatureConfiguration(
FeatureSpecification.create(
ImmutableSet.of(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
index f2df3dd4b1..c0a24572ff 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java
@@ -527,7 +527,7 @@ public class CrosstoolConfigurationLoaderTest extends AnalysisTestCase {
"cxx-flag-A-1", "cxx-flag-A-2", "cxx-fastbuild-flag-A-1", "cxx-fastbuild-flag-A-2")
.inOrder();
assertThat(ccProviderA.getUnfilteredCompilerOptions(NO_FEATURES))
- .containsExactly("unfiltered-flag-A-1", "unfiltered-flag-A-2")
+ .containsExactly("--sysroot=some", "unfiltered-flag-A-1", "unfiltered-flag-A-2")
.inOrder();
assertThat(toolchainA.getDynamicLinkOptions(NO_FEATURES, true))
.containsExactly(