summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/win32')
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp4
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp16
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp3
-rw-r--r--qmake/generators/win32/winmakefile.cpp42
4 files changed, 40 insertions, 25 deletions
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 67b478ae28..2fb24201bd 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -272,10 +272,6 @@ void NmakeMakefileGenerator::init()
if (project->isActiveConfig("debug")) {
project->values("QMAKE_CLEAN").append(targetBase + ".ilk");
project->values("QMAKE_CLEAN").append(targetBase + ".idb");
- } else {
- ProStringList &defines = project->values("DEFINES");
- if (!defines.contains("NDEBUG"))
- defines.append("NDEBUG");
}
if (project->values("QMAKE_APP_FLAG").isEmpty() && project->isActiveConfig("dll")) {
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index b6fe683d2c..5396eba72e 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -1568,21 +1568,12 @@ bool VCLinkerTool::parseOption(const char* option)
const char* str = option+6;
if (*str == 'S')
ShowProgress = linkProgressAll;
-#ifndef Q_OS_WIN
- else if (strncasecmp(str, "pginstrument", 12))
+ else if (qstricmp(str, "pginstrument") == 0)
LinkTimeCodeGeneration = optLTCGInstrument;
- else if (strncasecmp(str, "pgoptimize", 10))
+ else if (qstricmp(str, "pgoptimize") == 0)
LinkTimeCodeGeneration = optLTCGOptimize;
- else if (strncasecmp(str, "pgupdate", 8 ))
+ else if (qstricmp(str, "pgupdate") == 0)
LinkTimeCodeGeneration = optLTCGUpdate;
-#else
- else if (_stricmp(str, "pginstrument"))
- LinkTimeCodeGeneration = optLTCGInstrument;
- else if (_stricmp(str, "pgoptimize"))
- LinkTimeCodeGeneration = optLTCGOptimize;
- else if (_stricmp(str, "pgupdate"))
- LinkTimeCodeGeneration = optLTCGUpdate;
-#endif
}
} else {
AdditionalOptions.append(option);
@@ -2135,7 +2126,6 @@ VCResourceCompilerTool::VCResourceCompilerTool()
ShowProgress(linkProgressNotSet),
SuppressStartupBanner(unset)
{
- PreprocessorDefinitions = QStringList("NDEBUG");
}
// VCDeploymentTool --------------------------------------------
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index b74448ce94..e45beca459 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -1050,9 +1050,6 @@ void VcprojGenerator::initConfiguration()
initDeploymentTool();
initWinDeployQtTool();
initPreLinkEventTools();
-
- if (!isDebug)
- conf.compiler.PreprocessorDefinitions += "NDEBUG";
}
void VcprojGenerator::initCompilerTool()
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 27d2a7c0a5..86d10c213c 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -38,6 +38,8 @@
#include <qdir.h>
#include <stdlib.h>
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
ProString Win32MakefileGenerator::fixLibFlag(const ProString &lib)
@@ -73,16 +75,37 @@ Win32MakefileGenerator::parseLibFlag(const ProString &flag, ProString *arg)
return LibFlagFile;
}
+class LibrarySearchPath : public QMakeLocalFileName
+{
+public:
+ LibrarySearchPath() = default;
+
+ LibrarySearchPath(const QString &s)
+ : QMakeLocalFileName(s)
+ {
+ }
+
+ LibrarySearchPath(QString &&s, bool isDefault = false)
+ : QMakeLocalFileName(std::move(s)), _default(isDefault)
+ {
+ }
+
+ bool isDefault() const { return _default; }
+
+private:
+ bool _default = false;
+};
+
bool
Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags)
{
ProStringList impexts = project->values("QMAKE_LIB_EXTENSIONS");
if (impexts.isEmpty())
impexts = project->values("QMAKE_EXTENSION_STATICLIB");
- QVector<QMakeLocalFileName> dirs;
+ QVector<LibrarySearchPath> dirs;
int libidx = 0;
for (const ProString &dlib : project->values("QMAKE_DEFAULT_LIBDIRS"))
- dirs.append(QMakeLocalFileName(dlib.toQString()));
+ dirs.append(LibrarySearchPath(dlib.toQString(), true));
static const char * const lflags[] = { "LIBS", "LIBS_PRIVATE",
"QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", nullptr };
for (int i = 0; lflags[i]; i++) {
@@ -92,12 +115,20 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags)
ProString arg;
LibFlagType type = parseLibFlag(opt, &arg);
if (type == LibFlagPath) {
- QMakeLocalFileName lp(arg.toQString());
- int idx = dirs.indexOf(lp);
+ const QString argqstr = arg.toQString();
+ auto dit = std::find_if(dirs.cbegin(), dirs.cend(),
+ [&argqstr](const LibrarySearchPath &p)
+ {
+ return p.real() == argqstr;
+ });
+ int idx = dit == dirs.cend()
+ ? -1
+ : std::distance(dirs.cbegin(), dit);
if (idx >= 0 && idx < libidx) {
it = l.erase(it);
continue;
}
+ const LibrarySearchPath lp(argqstr);
dirs.insert(libidx++, lp);
(*it) = "-L" + lp.real();
} else if (type == LibFlagLib) {
@@ -114,7 +145,8 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags)
for (ProStringList::ConstIterator extit = impexts.cbegin();
extit != impexts.cend(); ++extit) {
if (exists(libBase + '.' + *extit)) {
- (*it) = cand + verovr + '.' + *extit;
+ *it = (dir_it->isDefault() ? lib : cand)
+ + verovr + '.' + *extit;
goto found;
}
}