diff options
Diffstat (limited to 'qmake/generators/win32')
-rw-r--r-- | qmake/generators/win32/msvc_nmake.cpp | 4 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 16 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 3 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 42 |
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; } } |