Add an optional "language" parameter to cc_common.configure_features
Use it to set "lang_objc" feature for Objective-C. A followup CL will
migrate the remaining objc-specific features to cc_common, to unify
the support for features, and to allow the C++ build API to set up the
correct features for objc.
PiperOrigin-RevId: 455231579
Change-Id: I8ff8011552cb4d8457d1513bf447d3cfa085aa76
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index 74c69ea..4fc3b99 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -19,6 +19,7 @@
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.starlark.StarlarkActionFactory;
import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CcCompilationOutputs;
import com.google.devtools.build.lib.rules.cpp.CcDebugInfoContext;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index fe390df..228da67 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -69,6 +69,7 @@
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
import com.google.devtools.build.lib.rules.apple.ApplePlatform;
import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext.LinkOptions;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -399,6 +400,7 @@
ruleContext,
requestedFeaturesBuilder.build(),
/* unsupportedFeatures= */ disabledFeaturesBuilder.build(),
+ Language.CPP,
ccToolchain,
semantics);
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 58a81a2..fbbe426 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
@@ -155,6 +155,23 @@
.addAll(ALL_OTHER_ACTIONS)
.build();
+ /** An enum for the list of supported languages. */
+ public enum Language {
+ CPP("c++"),
+ OBJC("objc"),
+ OBJCPP("objc++");
+
+ private final String representation;
+
+ Language(String representation) {
+ this.representation = representation;
+ }
+
+ public String getRepresentation() {
+ return representation;
+ }
+ }
+
public static final String CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME = ":cc_toolchain";
private static final String SYSROOT_FLAG = "--sysroot=";
@@ -919,11 +936,15 @@
* @return the feature configuration for the given {@code ruleContext}.
*/
public static FeatureConfiguration configureFeaturesOrReportRuleError(
- RuleContext ruleContext, CcToolchainProvider toolchain, CppSemantics semantics) {
+ RuleContext ruleContext,
+ Language language,
+ CcToolchainProvider toolchain,
+ CppSemantics semantics) {
return configureFeaturesOrReportRuleError(
ruleContext,
/* requestedFeatures= */ ruleContext.getFeatures(),
/* unsupportedFeatures= */ ruleContext.getDisabledFeatures(),
+ language,
toolchain,
semantics);
}
@@ -937,6 +958,7 @@
RuleContext ruleContext,
ImmutableSet<String> requestedFeatures,
ImmutableSet<String> unsupportedFeatures,
+ Language language,
CcToolchainProvider toolchain,
CppSemantics cppSemantics) {
return configureFeaturesOrReportRuleError(
@@ -944,6 +966,7 @@
ruleContext.getConfiguration(),
requestedFeatures,
unsupportedFeatures,
+ language,
toolchain,
cppSemantics);
}
@@ -953,6 +976,7 @@
BuildConfigurationValue buildConfiguration,
ImmutableSet<String> requestedFeatures,
ImmutableSet<String> unsupportedFeatures,
+ Language language,
CcToolchainProvider toolchain,
CppSemantics cppSemantics) {
cppSemantics.validateLayeringCheckFeatures(
@@ -961,6 +985,7 @@
return configureFeaturesOrThrowEvalException(
requestedFeatures,
unsupportedFeatures,
+ language,
toolchain,
buildConfiguration.getFragment(CppConfiguration.class));
} catch (EvalException e) {
@@ -972,6 +997,7 @@
public static FeatureConfiguration configureFeaturesOrThrowEvalException(
ImmutableSet<String> requestedFeatures,
ImmutableSet<String> unsupportedFeatures,
+ Language language,
CcToolchainProvider toolchain,
CppConfiguration cppConfiguration)
throws EvalException {
@@ -984,7 +1010,8 @@
unsupportedFeaturesBuilder.add(CppRuleClasses.PARSE_HEADERS);
}
- if (!requestedFeatures.contains(CppRuleClasses.LANG_OBJC)
+ if (language != Language.OBJC
+ && language != Language.OBJCPP
&& toolchain.getCcInfo().getCcCompilationContext().getCppModuleMap() == null) {
unsupportedFeaturesBuilder.add(CppRuleClasses.MODULE_MAPS);
}
@@ -1002,6 +1029,10 @@
allRequestedFeaturesBuilder.add(CppRuleClasses.NO_GENERATE_DEBUG_SYMBOLS_FEATURE_NAME);
}
+ if (language == Language.OBJC || language == Language.OBJCPP) {
+ allRequestedFeaturesBuilder.add(CppRuleClasses.LANG_OBJC);
+ }
+
ImmutableSet<String> allUnsupportedFeatures = unsupportedFeaturesBuilder.build();
// If STATIC_LINK_MSVCRT feature isn't specified by user, we add DYNAMIC_LINK_MSVCRT_* feature
@@ -1215,6 +1246,7 @@
configureFeaturesOrThrowEvalException(
ruleContext.getFeatures(),
ruleContext.getDisabledFeatures(),
+ Language.CPP,
toolchainProvider,
cppConfiguration);
} catch (EvalException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index 5ba7423..9daaea5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -45,6 +45,7 @@
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
@@ -137,7 +138,8 @@
FdoContext fdoContext = common.getFdoContext();
FeatureConfiguration featureConfiguration =
- CcCommon.configureFeaturesOrReportRuleError(ruleContext, ccToolchain, semantics);
+ CcCommon.configureFeaturesOrReportRuleError(
+ ruleContext, Language.CPP, ccToolchain, semantics);
PrecompiledFiles precompiledFiles = new PrecompiledFiles(ruleContext);
semantics.validateAttributes(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index cc694d5..a125c34 100755
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -49,6 +49,7 @@
import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
import com.google.devtools.build.lib.rules.cpp.CcCommon.CoptsFilter;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.SourceCategory;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext.LinkOptions;
@@ -131,23 +132,6 @@
ImmutableList.of(
"bazel_internal/test_rules/cc", "rust/private");
- /** Enum for strings coming in from Starlark representing languages */
- protected enum Language {
- CPP("c++"),
- OBJC("objc"),
- OBJCPP("objc++");
-
- private final String representation;
-
- Language(String representation) {
- this.representation = representation;
- }
-
- public String getRepresentation() {
- return representation;
- }
- }
-
public abstract CppSemantics getSemantics();
public abstract CppSemantics getSemantics(Language language);
@@ -160,11 +144,21 @@
@Override
public FeatureConfigurationForStarlark configureFeatures(
Object ruleContextOrNone,
- CcToolchainProvider toolchain, // <String> expected
+ CcToolchainProvider toolchain,
+ Object languageObject,
Sequence<?> requestedFeatures, // <String> expected
- Sequence<?> unsupportedFeatures)
+ Sequence<?> unsupportedFeatures) // <String> expected
throws EvalException {
StarlarkRuleContext ruleContext = nullIfNone(ruleContextOrNone, StarlarkRuleContext.class);
+
+ String languageString = convertFromNoneable(languageObject, Language.CPP.getRepresentation());
+ Language language = parseLanguage(languageString);
+ // TODO(236152224): Remove the following when all Starlark objc configure_features have the
+ // chance to migrate to using the language parameter.
+ if (requestedFeatures.contains(CppRuleClasses.LANG_OBJC)) {
+ language = Language.OBJC;
+ }
+
ImmutableSet<String> requestedFeaturesSet =
ImmutableSet.copyOf(Sequence.cast(requestedFeatures, String.class, "requested_features"));
ImmutableSet<String> unsupportedFeaturesSet =
@@ -194,8 +188,7 @@
// and that will only be flipped when --incompatible_require_ctx_in_configure_features is
// flipped.
buildOptions = ruleContext.getConfiguration().getOptions();
- getSemantics(
- requestedFeatures.contains(CppRuleClasses.LANG_OBJC) ? Language.OBJC : Language.CPP)
+ getSemantics(language)
.validateLayeringCheckFeatures(
ruleContext.getRuleContext(),
ruleContext.getAspectDescriptor(),
@@ -204,7 +197,7 @@
}
return FeatureConfigurationForStarlark.from(
CcCommon.configureFeaturesOrThrowEvalException(
- requestedFeaturesSet, unsupportedFeaturesSet, toolchain, cppConfiguration),
+ requestedFeaturesSet, unsupportedFeaturesSet, language, toolchain, cppConfiguration),
cppConfiguration,
buildOptions);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 33ccac1..55d544a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -55,6 +55,7 @@
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.Type;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext.Linkstamp;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.ExpansionException;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -290,7 +291,8 @@
return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}
FeatureConfiguration featureConfiguration =
- CcCommon.configureFeaturesOrReportRuleError(ruleContext, defaultToolchain, semantics);
+ CcCommon.configureFeaturesOrReportRuleError(
+ ruleContext, Language.CPP, defaultToolchain, semantics);
return defaultToolchain.getDynamicRuntimeLinkInputs(featureConfiguration);
}
@@ -307,7 +309,8 @@
return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}
FeatureConfiguration featureConfiguration =
- CcCommon.configureFeaturesOrReportRuleError(ruleContext, defaultToolchain, semantics);
+ CcCommon.configureFeaturesOrReportRuleError(
+ ruleContext, Language.CPP, defaultToolchain, semantics);
try {
return defaultToolchain.getStaticRuntimeLinkInputs(featureConfiguration);
} catch (EvalException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index 6e36f7a..ed6f9cf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -46,6 +46,7 @@
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.cpp.AspectLegalCppSemantics;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
import com.google.devtools.build.lib.rules.cpp.CcCompilationOutputs;
@@ -298,14 +299,13 @@
} else {
unsupportedFeatures.add(CppRuleClasses.HEADER_MODULES);
}
- FeatureConfiguration featureConfiguration =
- CcCommon.configureFeaturesOrReportRuleError(
- ruleContext,
- requestedFeatures.build(),
- unsupportedFeatures.build(),
- ccToolchain(ruleContext),
- cppSemantics);
- return featureConfiguration;
+ return CcCommon.configureFeaturesOrReportRuleError(
+ ruleContext,
+ requestedFeatures.build(),
+ unsupportedFeatures.build(),
+ Language.CPP,
+ ccToolchain(ruleContext),
+ cppSemantics);
}
private CcCompilationHelper initializeCompilationHelper(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 0575c1b..d15a9fe 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -58,6 +58,7 @@
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.apple.ApplePlatform;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.rules.cpp.CcNativeLibraryInfo;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -181,6 +182,7 @@
.add(JAVA_LAUNCHER_LINK)
.build(),
/* unsupportedFeatures= */ ruleContext.getDisabledFeatures(),
+ Language.CPP,
ccToolchain,
cppConfiguration);
} catch (EvalException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
index 45a03bf..c18a7a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
@@ -35,6 +35,7 @@
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationOutputs;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext;
@@ -224,6 +225,7 @@
ruleContext,
requestedFeatures,
/* unsupportedFeatures= */ ruleContext.getDisabledFeatures(),
+ Language.CPP,
toolchain,
cppSemantics);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index bd7b2bf..a4ada31 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -70,6 +70,7 @@
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.XcodeConfigInfo;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CcCompilationOutputs;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext;
@@ -81,7 +82,6 @@
import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.cpp.CppLinkAction;
import com.google.devtools.build.lib.rules.cpp.CppLinkActionBuilder;
-import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
import com.google.devtools.build.lib.rules.cpp.CppSemantics;
import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
@@ -177,10 +177,7 @@
BuildConfigurationValue configuration,
CppSemantics cppSemantics) {
ImmutableSet.Builder<String> activatedCrosstoolSelectables =
- ImmutableSet.<String>builder()
- .addAll(ruleContext.getFeatures())
- .addAll(OBJC_ACTIONS)
- .add(CppRuleClasses.LANG_OBJC);
+ ImmutableSet.<String>builder().addAll(ruleContext.getFeatures()).addAll(OBJC_ACTIONS);
if (configuration.getFragment(ObjcConfiguration.class).shouldStripBinary()) {
activatedCrosstoolSelectables.add(DEAD_STRIP_FEATURE_NAME);
@@ -197,6 +194,7 @@
buildConfiguration,
activatedCrosstoolSelectables.build(),
disabledFeatures.build(),
+ Language.OBJC,
ccToolchain,
cppSemantics);
}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java
index dbd2320..1f61268 100755
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/CcModuleApi.java
@@ -96,6 +96,16 @@
positional = false,
named = true),
@Param(
+ name = "language",
+ positional = false,
+ named = true,
+ allowedTypes = {
+ @ParamType(type = String.class),
+ @ParamType(type = NoneType.class),
+ },
+ defaultValue = "None",
+ doc = "The language to configure for: either c++ or objc (default c++)"),
+ @Param(
name = "requested_features",
doc = "List of features to be enabled.",
positional = false,
@@ -111,6 +121,7 @@
FeatureConfigurationT configureFeatures(
Object ruleContextOrNone,
CcToolchainProviderT toolchain,
+ Object languageObject,
Sequence<?> requestedFeatures, // <String> expected
Sequence<?> unsupportedFeatures) // <String> expected
throws EvalException;
diff --git a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
index fb0c94e..85e4308 100644
--- a/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl
@@ -123,7 +123,6 @@
]
activated_crosstool_selectables.extend(ctx.features)
activated_crosstool_selectables.extend(OBJC_ACTIONS)
- activated_crosstool_selectables.append("lang_objc")
if common_variables.objc_config.should_strip_binary:
activated_crosstool_selectables.append("dead_strip")
@@ -152,6 +151,7 @@
return cc_common.configure_features(
ctx = common_variables.ctx,
cc_toolchain = common_variables.toolchain,
+ language = "objc",
requested_features = activated_crosstool_selectables,
unsupported_features = disabled_features,
)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
index 5d30bc4..e080057 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
@@ -31,6 +31,7 @@
import com.google.devtools.build.lib.packages.util.Crosstool.CcToolchainConfig;
import com.google.devtools.build.lib.packages.util.MockCcSupport;
import com.google.devtools.build.lib.packages.util.ResourceLoader;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
@@ -185,6 +186,7 @@
CcCommon.configureFeaturesOrThrowEvalException(
/* requestedFeatures= */ ImmutableSet.of(),
/* unsupportedFeatures= */ ImmutableSet.of(),
+ Language.CPP,
toolchainProvider,
cppConfiguration);
return CppHelper.usePicForBinaries(toolchainProvider, cppConfiguration, featureConfiguration);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelperTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelperTest.java
index 09ba3b3..a558374 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelperTest.java
@@ -26,6 +26,7 @@
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.packages.util.Crosstool.CcToolchainConfig;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import java.util.List;
import org.junit.Test;
@@ -230,6 +231,7 @@
CcCommon.configureFeaturesOrThrowEvalException(
/* requestedFeatures= */ ImmutableSet.of(),
/* unsupportedFeatures= */ ImmutableSet.of(),
+ Language.CPP,
toolchain,
cppConfiguration);
boolean usePic = CppHelper.usePicForBinaries(toolchain, cppConfiguration, featureConfiguration);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
index c6f04fb..1b198db 100755
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
@@ -42,6 +42,7 @@
import com.google.devtools.build.lib.packages.util.Crosstool.CcToolchainConfig;
import com.google.devtools.build.lib.packages.util.MockCcSupport;
import com.google.devtools.build.lib.packages.util.ResourceLoader;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.Language;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext.Linkstamp;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.ActionConfig;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.EnvEntry;
@@ -274,6 +275,7 @@
CcCommon.configureFeaturesOrThrowEvalException(
ImmutableSet.of(),
ImmutableSet.of(),
+ Language.CPP,
toolchain,
ruleContext.getFragment(CppConfiguration.class));
assertThat(actionToolPath)
@@ -441,6 +443,7 @@
CcCommon.configureFeaturesOrThrowEvalException(
ImmutableSet.of(),
ImmutableSet.of(),
+ Language.CPP,
toolchain,
ruleContext.getFragment(CppConfiguration.class));
assertThat(commandLine)
@@ -489,6 +492,7 @@
CcCommon.configureFeaturesOrThrowEvalException(
ImmutableSet.of(),
ImmutableSet.of(),
+ Language.CPP,
toolchain,
ruleContext.getFragment(CppConfiguration.class));
assertThat(environmentVariables)