Chromium Code Reviews| Index: visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/NaClLink.cs |
| diff --git a/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/NaClLink.cs b/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/NaClLink.cs |
| index 61cd7f679497cf734bb4dcb19749511671cc03c9..4c7f480b04128b104962224d458270f940fd91b9 100644 |
| --- a/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/NaClLink.cs |
| +++ b/visual_studio/NativeClientVSAddIn/NaCl.Build.CPPTasks/NaClLink.cs |
| @@ -77,17 +77,36 @@ namespace NaCl.Build.CPPTasks |
| } |
| responseFileCmds.Append("-Wl,--end-group "); |
| - responseFileCmds.Append(xamlParser.Parse(Sources[0], false)); |
| + responseFileCmds.Append(xamlParser.Parse(Sources[0], false, IsPNaCl() ? ".bc" : null)); |
| return responseFileCmds.ToString(); |
| } |
| + private static string PexeToBC(string pexe) |
| + { |
| + return Path.ChangeExtension(pexe, ".bc"); |
| + } |
| + |
| private static string PexeToNexe(string pexe, string arch) |
| { |
| string basename = Path.GetFileNameWithoutExtension(pexe) + "_" + arch + ".nexe"; |
| return Path.Combine(Path.GetDirectoryName(pexe), basename); |
| } |
| + private bool Finalize() |
| + { |
| + string dirname = Path.GetDirectoryName(GenerateFullPathToTool()); |
| + string finalize = Path.Combine(dirname, "pnacl-finalize.bat"); |
| + string cmd = String.Format("\"{0}\" -o \"{1}\"", PexeToBC(OutputFile), OutputFile); |
| + if (!OutputCommandLine) |
| + Log.LogMessage("pnacl-finalize -> {0}", Path.GetFileName(OutputFile)); |
| + |
| + if (ExecuteTool(finalize, cmd, string.Empty) != 0) |
|
binji
2013/11/19 21:57:16
You could do just
return ExecuteTool(...) == 0;
Sam Clegg
2013/11/19 23:21:24
Done.
|
| + return false; |
| + |
| + return true; |
| + } |
| + |
| private bool Translate(string arch, string pnacl_arch=null) |
| { |
| if (pnacl_arch == null) |
| @@ -102,17 +121,19 @@ namespace NaCl.Build.CPPTasks |
| Log.LogMessage("pnacl-translate -> {0}", Path.GetFileName(outfile)); |
| if (ExecuteTool(translateTool, cmd, string.Empty) != 0) |
| - { |
| return false; |
| - } |
| return true; |
| } |
| public override bool Execute() |
| { |
| - if (!OutputCommandLine) |
| - Log.LogMessage("Linking: {0}", Path.GetFileName(OutputFile)); |
| + if (!OutputCommandLine) { |
| + string filename = OutputFile; |
| + if (IsPNaCl()) |
| + filename = PexeToBC(OutputFile); |
| + Log.LogMessage("Linking: {0}", filename); |
| + } |
| if (!base.Execute()) |
| return false; |
| @@ -128,6 +149,9 @@ namespace NaCl.Build.CPPTasks |
| { |
| if (IsPNaCl()) |
| { |
| + if (!Finalize()) |
| + return false; |
| + |
| if (TranslateX64 && !Translate("64", "x86-64")) |
| return false; |
| @@ -180,14 +204,6 @@ namespace NaCl.Build.CPPTasks |
| } |
| else |
| { |
| - if (ToolchainName == "glibc") |
| - { |
| - string bindir = Path.GetDirectoryName(NaClLinkerPath); |
| - string tcroot = Path.GetDirectoryName(bindir); |
| - cmd += " -D \"" + Path.Combine(bindir, "x86_64-nacl-objdump.exe") + "\""; |
| - cmd += " -L \"" + Path.Combine(tcroot, "x86_64-nacl", "lib") + "\""; |
| - cmd += " -L \"" + Path.Combine(tcroot, "x86_64-nacl", "lib32") + "\""; |
| - } |
| cmd += " \"" + OutputFile + "\""; |
| } |
| @@ -195,9 +211,7 @@ namespace NaCl.Build.CPPTasks |
| Log.LogMessage("CreateNMF -> {0}", Path.GetFileName(nmfPath)); |
| if (ExecuteTool("python", string.Empty, cmd) != 0) |
| - { |
| return false; |
| - } |
| } |
| return true; |
| @@ -206,9 +220,7 @@ namespace NaCl.Build.CPPTasks |
| protected override int ExecuteTool(string pathToTool, string responseFileCommands, string commandLineCommands) |
| { |
| if (OutputCommandLine) |
| - { |
| Log.LogMessage(MessageImportance.High, pathToTool + " " + responseFileCommands + " " + commandLineCommands); |
| - } |
| return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); |
| } |