diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java index f7414408f8..1fad6472b6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java @@ -58,6 +58,7 @@ public final class CcToolchainRule implements RuleDefinition { @Override public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { + final Label zipper = env.getToolsLabel("//tools/zip:zipper"); return builder .setUndocumented() .requiresConfigurationFragments(CppConfiguration.class) @@ -85,6 +86,24 @@ public final class CcToolchainRule implements RuleDefinition { .cfg(HOST) .singleArtifact() .value(env.getToolsLabel("//tools/cpp:link_dynamic_library"))) + .add( + attr(":zipper", LABEL) + .cfg(HOST) + .singleArtifact() + .value( + new LateBoundLabel<BuildConfiguration>() { + @Override + public Label resolve( + Rule rule, AttributeMap attributes, BuildConfiguration configuration) { + CppConfiguration cppConfiguration = + configuration.getFragment(CppConfiguration.class); + if (cppConfiguration.isLLVMOptimizedFdo()) { + return zipper; + } else { + return null; + } + } + })) .add(attr(":libc_top", LABEL).value(LIBC_TOP)) .add( attr(":lipo_context_collector", LABEL) |