summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32/mingw_make.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2020-06-05 18:59:01 +0300
committerOrgad Shaneh <orgads@gmail.com>2020-07-06 13:41:37 +0000
commit4c20a35cd93315dfefc06d87dbd74e9c0c0c5eff (patch)
treed28b08592be42e863d03ca1b0f68644eaf34c3d9 /qmake/generators/win32/mingw_make.cpp
parent1f0299b029eadc988872dc6b0bc27e78a625c871 (diff)
MinGW: Use a response file for long include paths
Change-Id: I55ce73ad08473bca27c7ab5730f633fb77c9b8cd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'qmake/generators/win32/mingw_make.cpp')
-rw-r--r--qmake/generators/win32/mingw_make.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index eb100764ae..823b799eb2 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -201,11 +201,26 @@ void MingwMakefileGenerator::writeIncPart(QTextStream &t)
t << "INCPATH = ";
const ProStringList &incs = project->values("INCLUDEPATH");
- for (ProStringList::ConstIterator incit = incs.begin(); incit != incs.end(); ++incit) {
- QString inc = (*incit).toQString();
+ QFile responseFile;
+ QTextStream responseStream;
+ QChar sep(' ');
+ int totalLength = std::accumulate(incs.constBegin(), incs.constEnd(), 0,
+ [](int total, const ProString &inc) {
+ return total + inc.size() + 2;
+ });
+ if (totalLength > project->intValue("QMAKE_RESPONSEFILE_THRESHOLD", 8000)) {
+ const QString fileName = createResponseFile("incpath", incs, "-I");
+ if (!fileName.isEmpty()) {
+ t << '@' + fileName;
+ t << Qt::endl;
+ return;
+ }
+ }
+ for (const ProString &incit: qAsConst(incs)) {
+ QString inc = incit.toQString();
inc.replace(QRegularExpression("\\\\$"), "");
-
- t << "-I" << escapeFilePath(inc) << ' ';
+ inc.replace('\\', '/');
+ t << "-I" << escapeFilePath(inc) << sep;
}
t << Qt::endl;
}