diff options
author | cpeyser <cpeyser@google.com> | 2017-12-20 07:08:27 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-12-20 07:16:47 -0800 |
commit | b9c138ede77b305102526d32611f6964c8ee18b2 (patch) | |
tree | dbba44dd21aea41604ac48fc433ebb38b3a8955b /src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java | |
parent | fb0598878bf1b7fffe1ab7f310f705792fe47b95 (diff) |
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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java | 20 |
1 files changed, 20 insertions, 0 deletions
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() : ""; |