From 68fe80d2bb7dd02ccfc3580916779f76e0dc150f Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 24 Apr 2020 15:25:09 +0000 Subject: [PATCH] ide: Fixed response files vs pkg-config git-svn-id: svn://ultimatepp.org/upp/trunk@14371 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/Builders/GccBuilder.cpp | 12 +----------- uppsrc/ide/Core/Builder.cpp | 9 +++++++++ uppsrc/ide/Core/Core.h | 2 ++ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/uppsrc/ide/Builders/GccBuilder.cpp b/uppsrc/ide/Builders/GccBuilder.cpp index 75edf2b3b..3729e9128 100644 --- a/uppsrc/ide/Builders/GccBuilder.cpp +++ b/uppsrc/ide/Builders/GccBuilder.cpp @@ -480,7 +480,7 @@ bool GccBuilder::Link(const Vector& linkfile, const String& linkoptions, for(int i = 0; i < linkfile.GetCount(); i++) if(GetFileTime(linkfile[i]) > targettime) { Vector lib; - String lnk; + String lnk = CompilerName(); if(IsVerbose()) lnk << " -v"; if(HasFlag("GCC32")) @@ -582,16 +582,6 @@ bool GccBuilder::Link(const Vector& linkfile, const String& linkoptions, PutConsole("Linking..."); bool error = false; CustomStep(".pre-link", Null, error); - if(lnk.GetCount() < 8000) - lnk = CompilerName() + " " + lnk; - else { - String rn = CatAnyPath(outdir, "link"); - PutVerbose("Generating response file: " << rn); - PutVerbose(lnk); - lnk.Replace("\\", "/"); - SaveFile(rn, lnk); - lnk = CompilerName() + " @" + rn; - } if(!error && Execute(lnk) == 0) { CustomStep(".post-link", Null, error); PutConsole(String().Cat() << GetHostPath(target) << " (" << GetFileInfo(target).length diff --git a/uppsrc/ide/Core/Builder.cpp b/uppsrc/ide/Core/Builder.cpp index eb8399d44..02e436d0d 100644 --- a/uppsrc/ide/Core/Builder.cpp +++ b/uppsrc/ide/Core/Builder.cpp @@ -51,6 +51,15 @@ String Builder::CmdX(const char *s) } else (cmdf ? cmd : r).Cat(*s); + int q = r.Find(' '); + if(r.GetCount() > 8000 && q >= 0) { + String rn = CatAnyPath(outdir, AsString(tmpfilei.GetAdd(outdir, 0)++) + ".cmd"); + PutVerbose("Generating response file: " << rn); + PutVerbose(r); + r.Replace("\\", "/"); // clang win32 needs this + SaveFile(rn, r.Mid(q + 1)); + r = r.Mid(0, q) + " @" + rn; + } return r; } diff --git a/uppsrc/ide/Core/Core.h b/uppsrc/ide/Core/Core.h index b8bf384c3..64dbec107 100644 --- a/uppsrc/ide/Core/Core.h +++ b/uppsrc/ide/Core/Core.h @@ -444,6 +444,8 @@ struct Builder { Index pkg_config; // names of packages for pkg-config + VectorMap tmpfilei; // for naming automatic response files + String CmdX(const char *s); virtual bool BuildPackage(const String& package, Vector& linkfile, Vector& immfile,