From b9c138ede77b305102526d32611f6964c8ee18b2 Mon Sep 17 00:00:00 2001 From: cpeyser Date: Wed, 20 Dec 2017 07:08:27 -0800 Subject: Remove CppConfiguration#supportsFission and #useFission. To do this, we: (1) Remove configuration-level warnings arising from fission. (2) Move the setting of the "per_object_debug_info" feature from the configuration to FeatureConfiguration construction in the analysis phase. (3) Access the c++ toolchain in java_binary to decide on stripping. In order to migrate the c++ rules to platform-based toolchain resolution, we must remove all toolchain information from CppConfiguration. PiperOrigin-RevId: 179682420 --- .../devtools/build/lib/rules/cpp/CcToolchain.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java') diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java index 583b1a112f..fa9753b0dd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java @@ -493,6 +493,8 @@ public class CcToolchain implements RuleConfiguredTargetFactory { } } + reportInvalidOptions(ruleContext, toolchainInfo); + CcToolchainProvider ccProvider = new CcToolchainProvider( getToolchainForSkylark(toolchainInfo), @@ -578,6 +580,24 @@ public class CcToolchain implements RuleConfiguredTargetFactory { return builder.build(); } + private void reportInvalidOptions(RuleContext ruleContext, CppToolchainInfo toolchain) { + CppOptions options = ruleContext.getConfiguration().getOptions().get(CppOptions.class); + CppConfiguration config = ruleContext.getFragment(CppConfiguration.class); + if (options.fissionModes.contains(config.getCompilationMode()) + && !toolchain.supportsFission()) { + ruleContext.ruleWarning( + "Fission is not supported by this crosstool. Please use a " + + "supporting crosstool to enable fission"); + } + if (options.buildTestDwp + && !(toolchain.supportsFission() && config.fissionIsActiveForCurrentCompilationMode())) { + ruleContext.ruleWarning( + "Test dwp file requested, but Fission is not enabled. To generate a " + + "dwp for the test executable, use '--fission=yes' with a toolchain that supports " + + "Fission to build statically."); + } + } + private static String getSkylarkValueForTool(Tool tool, CppToolchainInfo cppToolchainInfo) { PathFragment toolPath = cppToolchainInfo.getToolPathFragment(tool); return toolPath != null ? toolPath.getPathString() : ""; -- cgit v1.2.3