aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java
index 6eeadae89c..d04c187d6c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LTOBackendArtifacts.java
@@ -19,9 +19,10 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.LTOBackendAction;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -105,7 +106,8 @@ public final class LTOBackendArtifacts {
commandLine = cmdLine;
}
- public void scheduleLTOBackendAction(RuleContext ruleContext, boolean usePic) {
+ public void scheduleLTOBackendAction(
+ RuleContext ruleContext, FeatureConfiguration featureConfiguration, boolean usePic) {
LTOBackendAction.Builder builder = new LTOBackendAction.Builder();
builder.addImportsInfo(bitcodeFiles, imports);
@@ -125,14 +127,17 @@ public final class LTOBackendArtifacts {
PathFragment compiler = cppConfiguration.getCppExecutable();
builder.setExecutable(compiler);
+ Variables.Builder buildVariablesBuilder = new Variables.Builder();
+ buildVariablesBuilder.addVariable("thinlto_index", index.getExecPath().toString());
+ // The output from the LTO backend step is a native object file.
+ buildVariablesBuilder.addVariable(
+ "thinlto_output_object_file", objectFile.getExecPath().toString());
+ // The input to the LTO backend step is the bitcode file.
+ buildVariablesBuilder.addVariable(
+ "thinlto_input_bitcode_file", bitcodeFile.getExecPath().toString());
+ Variables buildVariables = buildVariablesBuilder.build();
List<String> execArgs = new ArrayList<>();
- execArgs.add("-c");
- execArgs.add("-fthinlto-index=" + index.getExecPath());
- execArgs.add("-o");
- execArgs.add(objectFile.getExecPath().getPathString());
- execArgs.add("-x");
- execArgs.add("ir");
- execArgs.add(bitcodeFile.getExecPath().getPathString());
+ execArgs.addAll(featureConfiguration.getCommandLine("lto-backend", buildVariables));
if (usePic) {
execArgs.add("-fPIC");
}