From e4d2b1d5bd6a1ec0ccc060d1355fe1196a7d389c Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 15 Mar 2017 16:37:21 +0000 Subject: Add ThinLTO support for py_binary targets. Builds of py_binary targets were failing with --features=thin_lto during the link because the C++ source files were compiled into bitcode, but the link (which is set up by GooglePythonSemantics.java) did not have support for ThinLTO actions and attempted to do a native link of the bitcode objects. -- PiperOrigin-RevId: 150201765 MOS_MIGRATED_REVID=150201765 --- .../com/google/devtools/build/lib/rules/cpp/CppLinkAction.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java') diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java index 26011cbcf5..6a389250a1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java @@ -571,6 +571,7 @@ public final class CppLinkAction extends AbstractAction final ImmutableSet nonCodeInputs; final NestedSet libraries; final NestedSet crosstoolInputs; + final ImmutableList ltoBitcodeFiles; final Artifact runtimeMiddleman; final NestedSet runtimeInputs; final ArtifactCategory runtimeType; @@ -596,6 +597,7 @@ public final class CppLinkAction extends AbstractAction .addTransitive(builder.getLibraries().build()).build(); this.crosstoolInputs = NestedSetBuilder.stableOrder().addTransitive(builder.getCrosstoolInputs()).build(); + this.ltoBitcodeFiles = ImmutableList.copyOf(builder.getLtoBitcodeFiles()); this.runtimeMiddleman = builder.getRuntimeMiddleman(); this.runtimeInputs = NestedSetBuilder.stableOrder().addTransitive(builder.getRuntimeInputs()).build(); @@ -632,6 +634,11 @@ public final class CppLinkAction extends AbstractAction return this.crosstoolInputs; } + /** Returns linker inputs that are lto bitcode files. */ + public ImmutableList getLtoBitcodeFiles() { + return this.ltoBitcodeFiles; + } + /** * Returns the runtime middleman artifact. */ -- cgit v1.2.3