From d31dbe1efe0dd9d2d9d85f9c3c30777c8c5401bf Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Wed, 28 Nov 2012 13:21:15 +0200 Subject: Remove duplicate libraries added via prl files in Windows The LIBS statement generated into Makefiles contained duplicate libraries when application was linking static libraries. Fixed by adapting the logic from unixmake.cpp's version of processPrlFiles() to remove duplicates. Change-Id: I12e152900233d0376b7d7ac6cd18a92850a6d640 Reviewed-by: Oswald Buddenhagen --- qmake/generators/win32/winmakefile.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 8bd45379d6..2fb1fb952b 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -245,6 +245,23 @@ Win32MakefileGenerator::processPrlFiles() l.insert(lit + prl + 1, prl_libs.at(prl)); prl_libs.clear(); } + + // Merge them into a logical order + if (!project->isActiveConfig("no_smart_library_merge") && !project->isActiveConfig("no_lflags_merge")) { + ProStringList lflags; + for (int lit = 0; lit < l.size(); ++lit) { + ProString opt = l.at(lit).trimmed(); + if (opt.startsWith(libArg)) { + if (!lflags.contains(opt)) + lflags.append(opt); + } else { + // Make sure we keep the dependency-order of libraries + lflags.removeAll(opt); + lflags.append(opt); + } + } + l = lflags; + } } } -- cgit v1.2.3