diff options
Diffstat (limited to 'qmake/generators/win32')
-rw-r--r-- | qmake/generators/win32/mingw_make.cpp | 18 | ||||
-rw-r--r-- | qmake/generators/win32/mingw_make.h | 28 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.h | 44 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.cpp | 9 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_nmake.h | 18 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 34 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 27 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.h | 18 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcxproj.h | 2 | ||||
-rw-r--r-- | qmake/generators/win32/registry.cpp | 6 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 31 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.h | 14 |
14 files changed, 142 insertions, 111 deletions
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp index 6fcfe96380..95f69dbbc3 100644 --- a/qmake/generators/win32/mingw_make.cpp +++ b/qmake/generators/win32/mingw_make.cpp @@ -73,6 +73,19 @@ MingwMakefileGenerator::parseLibFlag(const ProString &flag, ProString *arg) return MakefileGenerator::parseLibFlag(flag, arg); } +bool MingwMakefileGenerator::processPrlFileBase(QString &origFile, const QStringRef &origName, + const QStringRef &fixedBase, int slashOff) +{ + if (origName.startsWith("lib")) { + QString newFixedBase = fixedBase.left(slashOff) + fixedBase.mid(slashOff + 3); + if (Win32MakefileGenerator::processPrlFileBase(origFile, origName, + QStringRef(&newFixedBase), slashOff)) { + return true; + } + } + return Win32MakefileGenerator::processPrlFileBase(origFile, origName, fixedBase, slashOff); +} + bool MingwMakefileGenerator::writeMakefile(QTextStream &t) { writeHeader(t); @@ -312,8 +325,9 @@ void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t) { t << "first: all\n"; t << "all: " << escapeDependencyPath(fileFixify(Option::output.fileName())) - << ' ' << depVar("ALL_DEPS") << " $(DESTDIR_TARGET)\n\n"; - t << "$(DESTDIR_TARGET): " << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); + << ' ' << depVar("ALL_DEPS") << ' ' << depVar("DEST_TARGET") << "\n\n"; + t << depVar("DEST_TARGET") << ": " + << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); if (project->first("TEMPLATE") == "aux") { t << "\n\n"; return; diff --git a/qmake/generators/win32/mingw_make.h b/qmake/generators/win32/mingw_make.h index 6f041cfd4a..5da5b24088 100644 --- a/qmake/generators/win32/mingw_make.h +++ b/qmake/generators/win32/mingw_make.h @@ -40,25 +40,27 @@ public: ~MingwMakefileGenerator(); protected: using MakefileGenerator::escapeDependencyPath; - virtual QString escapeDependencyPath(const QString &path) const; - virtual ProString fixLibFlag(const ProString &lib); - virtual QString getManifestFileForRcFile() const; - bool writeMakefile(QTextStream &); - void init(); - virtual QString installRoot() const; + QString escapeDependencyPath(const QString &path) const override; + ProString fixLibFlag(const ProString &lib) override; + bool processPrlFileBase(QString &origFile, const QStringRef &origName, + const QStringRef &fixedBase, int slashOff) override; + QString getManifestFileForRcFile() const override; + bool writeMakefile(QTextStream &) override; + void init() override; + QString installRoot() const override; private: void writeMingwParts(QTextStream &); - void writeIncPart(QTextStream &t); - void writeLibsPart(QTextStream &t); - void writeObjectsPart(QTextStream &t); - void writeBuildRulesPart(QTextStream &t); - void writeRcFilePart(QTextStream &t); + void writeIncPart(QTextStream &t) override; + void writeLibsPart(QTextStream &t) override; + void writeObjectsPart(QTextStream &t) override; + void writeBuildRulesPart(QTextStream &t) override; + void writeRcFilePart(QTextStream &t) override; - QStringList &findDependencies(const QString &file); + QStringList &findDependencies(const QString &file) override; QString preCompHeaderOut; - virtual LibFlagType parseLibFlag(const ProString &flag, ProString *arg); + LibFlagType parseLibFlag(const ProString &flag, ProString *arg) override; QString objectsLinkLine; }; diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 082f357d32..ad2976aa01 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -1207,7 +1207,7 @@ static inline QString toString(midlCharOption option) static inline QString toString(midlErrorCheckOption option) { switch (option) { - case midlAlignNotSet: + case midlEnableCustom: break; case midlDisableAll: return "None"; diff --git a/qmake/generators/win32/msbuild_objectmodel.h b/qmake/generators/win32/msbuild_objectmodel.h index 2e77537916..ce5711f2da 100644 --- a/qmake/generators/win32/msbuild_objectmodel.h +++ b/qmake/generators/win32/msbuild_objectmodel.h @@ -72,7 +72,7 @@ public: return Uindex; } - void addElement(const QString &filepath, const VCFilterFile &allInfo){ + void addElement(const QString &filepath, const VCFilterFile &allInfo) override { QString newNodeName(filepath); int index = pathIndex(filepath); @@ -89,7 +89,7 @@ public: n->addElement(filepath.mid(index+1), allInfo); } - void removeElements() { + void removeElements() override { ChildrenMap::ConstIterator it = children.constBegin(); ChildrenMap::ConstIterator end = children.constEnd(); for( ; it != end; it++) { @@ -100,8 +100,8 @@ public: } void generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, VCProject &tool, - const QString &filter); - bool hasElements() { + const QString &filter) override; + bool hasElements() override { return children.size() != 0; } }; @@ -124,7 +124,7 @@ public: return Uindex; } - void addElement(const QString &filepath, const VCFilterFile &allInfo){ + void addElement(const QString &filepath, const VCFilterFile &allInfo) override { QString newKey(filepath); int index = pathIndex(filepath); @@ -136,13 +136,13 @@ public: children.insert(newKey + "\0" + allInfo.file, allInfo); } - void removeElements() { + void removeElements() override { children.clear(); } void generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, VCProject &proj, - const QString &filter); - bool hasElements() { + const QString &filter) override; + bool hasElements() override { return children.size() != 0; } }; @@ -150,20 +150,20 @@ public: class VCXProjectWriter : public VCProjectWriter { public: - void write(XmlOutput &, VCProjectSingleConfig &); - void write(XmlOutput &, VCProject &); - - void write(XmlOutput &, const VCCLCompilerTool &); - void write(XmlOutput &, const VCLinkerTool &); - void write(XmlOutput &, const VCMIDLTool &); - void write(XmlOutput &, const VCCustomBuildTool &); - void write(XmlOutput &, const VCLibrarianTool &); - void write(XmlOutput &, const VCResourceCompilerTool &); - void write(XmlOutput &, const VCEventTool &); - void write(XmlOutput &, const VCDeploymentTool &); - void write(XmlOutput &, const VCWinDeployQtTool &); - void write(XmlOutput &, const VCConfiguration &); - void write(XmlOutput &, VCFilter &); + void write(XmlOutput &, VCProjectSingleConfig &) override; + void write(XmlOutput &, VCProject &) override; + + void write(XmlOutput &, const VCCLCompilerTool &) override; + void write(XmlOutput &, const VCLinkerTool &) override; + void write(XmlOutput &, const VCMIDLTool &) override; + void write(XmlOutput &, const VCCustomBuildTool &) override; + void write(XmlOutput &, const VCLibrarianTool &) override; + void write(XmlOutput &, const VCResourceCompilerTool &) override; + void write(XmlOutput &, const VCEventTool &) override; + void write(XmlOutput &, const VCDeploymentTool &) override; + void write(XmlOutput &, const VCWinDeployQtTool &) override; + void write(XmlOutput &, const VCConfiguration &) override; + void write(XmlOutput &, VCFilter &) override; private: struct OutputFilterData diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 92b4eb5054..fa7ee1b98a 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -499,7 +499,7 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t) QSet<QString> source_directories; if (useInferenceRules) { source_directories.insert("."); - static const char * const directories[] = { "UI_SOURCES_DIR", "UI_DIR", 0 }; + static const char * const directories[] = { "UI_SOURCES_DIR", "UI_DIR", nullptr }; for (int y = 0; directories[y]; y++) { QString dirTemp = project->first(directories[y]).toQString(); if (dirTemp.endsWith("\\")) @@ -507,7 +507,7 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t) if(!dirTemp.isEmpty()) source_directories.insert(dirTemp); } - static const char * const srcs[] = { "SOURCES", "GENERATED_SOURCES", 0 }; + static const char * const srcs[] = { "SOURCES", "GENERATED_SOURCES", nullptr }; for (int x = 0; srcs[x]; x++) { const ProStringList &l = project->values(srcs[x]); for (ProStringList::ConstIterator sit = l.begin(); sit != l.end(); ++sit) { @@ -584,8 +584,9 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t) t << "first: all\n"; t << "all: " << escapeDependencyPath(fileFixify(Option::output.fileName())) - << ' ' << depVar("ALL_DEPS") << " $(DESTDIR_TARGET)\n\n"; - t << "$(DESTDIR_TARGET): " << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); + << ' ' << depVar("ALL_DEPS") << ' ' << depVar("DEST_TARGET") << "\n\n"; + t << depVar("DEST_TARGET") << ": " + << depVar("PRE_TARGETDEPS") << " $(OBJECTS) " << depVar("POST_TARGETDEPS"); if (templateName == "aux") { t << "\n\n"; return; diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h index 67b609d0a6..67a56c7813 100644 --- a/qmake/generators/win32/msvc_nmake.h +++ b/qmake/generators/win32/msvc_nmake.h @@ -36,21 +36,21 @@ QT_BEGIN_NAMESPACE class NmakeMakefileGenerator : public Win32MakefileGenerator { void writeNmakeParts(QTextStream &); - bool writeMakefile(QTextStream &); - void writeImplicitRulesPart(QTextStream &t); - void writeBuildRulesPart(QTextStream &t); + bool writeMakefile(QTextStream &) override; + void writeImplicitRulesPart(QTextStream &t) override; + void writeBuildRulesPart(QTextStream &t) override; void writeLinkCommand(QTextStream &t, const QString &extraFlags = QString(), const QString &extraInlineFileContent = QString()); void writeResponseFileFiles(QTextStream &t, const ProStringList &files); int msvcVersion() const; - void init(); + void init() override; static QStringList sourceFilesForImplicitRulesFilter(); protected: - virtual void writeSubMakeCall(QTextStream &t, const QString &callPrefix, - const QString &makeArguments); - virtual QString defaultInstall(const QString &t); - virtual QStringList &findDependencies(const QString &file); - QString var(const ProKey &value) const; + void writeSubMakeCall(QTextStream &t, const QString &callPrefix, + const QString &makeArguments) override; + QString defaultInstall(const QString &t) override; + QStringList &findDependencies(const QString &file) override; + QString var(const ProKey &value) const override; QString precompH, precompObj, precompPch; QString precompObjC, precompPchC; bool usePCH, usePCHC; diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 300792c5af..0406da584b 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -2185,7 +2185,7 @@ VCConfiguration::VCConfiguration() // VCFilter --------------------------------------------------------- VCFilter::VCFilter() : ParseFiles(unset), - Config(0) + Config(nullptr) { useCustomBuildTool = false; useCompilerTool = false; diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index 10d44970ff..9d1a170489 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -484,7 +484,7 @@ public: // Functions VCCLCompilerTool(); - bool parseOption(const char* option); + bool parseOption(const char* option) override; // Variables QStringList AdditionalIncludeDirectories; @@ -581,7 +581,7 @@ public: // Functions VCLinkerTool(); - bool parseOption(const char* option); + bool parseOption(const char* option) override; // Variables QStringList AdditionalDependencies; @@ -676,7 +676,7 @@ class VCManifestTool : public VCToolBase public: VCManifestTool(); - bool parseOption(const char* option); + bool parseOption(const char* option) override; triState EmbedManifest; }; @@ -687,7 +687,7 @@ public: // Functions VCMIDLTool(); - bool parseOption(const char* option); + bool parseOption(const char* option) override; // Variables QStringList AdditionalIncludeDirectories; @@ -741,7 +741,7 @@ public: // Functions VCLibrarianTool(); - bool parseOption(const char*){ return false; } + bool parseOption(const char*) override { return false; } // Variables QStringList AdditionalDependencies; @@ -762,7 +762,7 @@ public: // Functions VCCustomBuildTool(); - bool parseOption(const char*){ return false; } + bool parseOption(const char*) override { return false; } // Variables QStringList AdditionalDependencies; @@ -781,7 +781,7 @@ public: // Functions VCResourceCompilerTool(); - bool parseOption(const char*){ return false; } + bool parseOption(const char*) override { return false; } // Variables QStringList AdditionalIncludeDirectories; @@ -815,7 +815,7 @@ protected: // Functions VCEventTool(const QString &eventName); - bool parseOption(const char*){ return false; } + bool parseOption(const char*) override { return false; } public: // Variables @@ -851,7 +851,7 @@ public: VCWinDeployQtTool() {} protected: - bool parseOption(const char *) { return false; } + bool parseOption(const char *) override { return false; } public: // Variables @@ -1037,7 +1037,7 @@ public: return Uindex; } - void addElement(const QString &filepath, const VCFilterFile &allInfo){ + void addElement(const QString &filepath, const VCFilterFile &allInfo) override { QString newNodeName(filepath); int index = pathIndex(filepath); @@ -1054,7 +1054,7 @@ public: n->addElement(filepath.mid(index+1), allInfo); } - void removeElements() { + void removeElements() override { ChildrenMap::ConstIterator it = children.constBegin(); ChildrenMap::ConstIterator end = children.constEnd(); for( ; it != end; it++) { @@ -1064,8 +1064,8 @@ public: children.clear(); } - void generateXML(XmlOutput &xml, const QString &tagName, VCProject &tool, const QString &filter); - bool hasElements() { + void generateXML(XmlOutput &xml, const QString &tagName, VCProject &tool, const QString &filter) override; + bool hasElements() override { return children.size() != 0; } }; @@ -1088,7 +1088,7 @@ public: return Uindex; } - void addElement(const QString &filepath, const VCFilterFile &allInfo){ + void addElement(const QString &filepath, const VCFilterFile &allInfo) override { QString newKey(filepath); int index = pathIndex(filepath); @@ -1100,12 +1100,12 @@ public: children.insert(newKey + "\0" + allInfo.file, allInfo); } - void removeElements() { + void removeElements() override { children.clear(); } - void generateXML(XmlOutput &xml, const QString &tagName, VCProject &proj, const QString &filter); - bool hasElements() { + void generateXML(XmlOutput &xml, const QString &tagName, VCProject &proj, const QString &filter) override; + bool hasElements() override { return children.size() != 0; } }; diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 24d1657552..b453873344 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -112,7 +112,7 @@ VcprojGenerator::VcprojGenerator() : Win32MakefileGenerator(), is64Bit(false), customBuildToolFilterFileSuffix(QStringLiteral(".cbt")), - projectWriter(0) + projectWriter(nullptr) { } @@ -1100,7 +1100,7 @@ void VcprojGenerator::initLinkerTool() if (!project->values("DEF_FILE").isEmpty()) conf.linker.ModuleDefinitionFile = project->first("DEF_FILE").toQString(); - static const char * const lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", 0 }; + static const char * const lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", nullptr }; for (int i = 0; lflags[i]; i++) { const auto libs = fixLibFlags(lflags[i]); for (const ProString &lib : libs) { @@ -1617,20 +1617,15 @@ QString VcprojGenerator::replaceExtraCompilerVariables( bool VcprojGenerator::openOutput(QFile &file, const QString &/*build*/) const { - QString outdir; - if(!file.fileName().isEmpty()) { - QFileInfo fi(fileInfo(file.fileName())); - if(fi.isDir()) - outdir = file.fileName() + QDir::separator(); - } - if(!outdir.isEmpty() || file.fileName().isEmpty()) { - ProString ext = project->first("VCPROJ_EXTENSION"); - if(project->first("TEMPLATE") == "vcsubdirs") - ext = project->first("VCSOLUTION_EXTENSION"); - ProString outputName = project->first("TARGET"); - if (!project->first("MAKEFILE").isEmpty()) - outputName = project->first("MAKEFILE"); - file.setFileName(outdir + outputName + ext); + ProString fileName = file.fileName(); + ProString extension = project->first("TEMPLATE") == "vcsubdirs" + ? project->first("VCSOLUTION_EXTENSION") : project->first("VCPROJ_EXTENSION"); + if (!fileName.endsWith(extension)) { + if (fileName.isEmpty()) { + fileName = !project->first("MAKEFILE").isEmpty() + ? project->first("MAKEFILE") : project->first("TARGET"); + } + file.setFileName(fileName + extension); } return Win32MakefileGenerator::openOutput(file, QString()); } diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index 4882296b46..6af5ec7007 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -47,10 +47,10 @@ class VcprojGenerator : public Win32MakefileGenerator bool is64Bit; bool writeVcprojParts(QTextStream &); - bool writeMakefile(QTextStream &); - bool writeProjectMakefile(); + bool writeMakefile(QTextStream &) override; + bool writeProjectMakefile() override; - void init(); + void init() override; public: VcprojGenerator(); @@ -70,14 +70,14 @@ public: protected: virtual VCProjectWriter *createProjectWriter(); - virtual bool doDepends() const { return false; } //never necesary + bool doDepends() const override { return false; } // Never necessary using Win32MakefileGenerator::replaceExtraCompilerVariables; - virtual QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor); - virtual bool supportsMetaBuild() { return true; } - virtual bool supportsMergedBuilds() { return true; } - virtual bool mergeBuildProject(MakefileGenerator *other); + QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor) override; + bool supportsMetaBuild() override { return true; } + bool supportsMergedBuilds() override { return true; } + bool mergeBuildProject(MakefileGenerator *other) override; - virtual bool openOutput(QFile &file, const QString &build) const; + bool openOutput(QFile &file, const QString &build) const override; virtual void initProject(); void initConfiguration(); diff --git a/qmake/generators/win32/msvc_vcxproj.h b/qmake/generators/win32/msvc_vcxproj.h index 8f68348693..7e02b6c32f 100644 --- a/qmake/generators/win32/msvc_vcxproj.h +++ b/qmake/generators/win32/msvc_vcxproj.h @@ -39,7 +39,7 @@ public: VcxprojGenerator(); protected: - virtual VCProjectWriter *createProjectWriter(); + VCProjectWriter *createProjectWriter() override; }; QT_END_NAMESPACE diff --git a/qmake/generators/win32/registry.cpp b/qmake/generators/win32/registry.cpp index 7320cb0551..3391ab9512 100644 --- a/qmake/generators/win32/registry.cpp +++ b/qmake/generators/win32/registry.cpp @@ -77,7 +77,7 @@ QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey, unsigned l QString rSubkeyName = keyName(rSubkey); QString rSubkeyPath = keyPath(rSubkey); - HKEY handle = 0; + HKEY handle = nullptr; LONG res = RegOpenKeyEx(parentHandle, (wchar_t*)rSubkeyPath.utf16(), 0, KEY_READ | options, &handle); @@ -87,7 +87,7 @@ QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey, unsigned l // get the size and type of the value DWORD dataType; DWORD dataSize; - res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), 0, &dataType, 0, &dataSize); + res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), nullptr, &dataType, nullptr, &dataSize); if (res != ERROR_SUCCESS) { RegCloseKey(handle); return QString(); @@ -95,7 +95,7 @@ QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey, unsigned l // get the value QByteArray data(dataSize, 0); - res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), 0, 0, + res = RegQueryValueEx(handle, (wchar_t*)rSubkeyName.utf16(), nullptr, nullptr, reinterpret_cast<unsigned char*>(data.data()), &dataSize); if (res != ERROR_SUCCESS) { RegCloseKey(handle); diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index bca27b7044..3c730299be 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -84,7 +84,7 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags) if (impexts.isEmpty()) impexts = project->values("QMAKE_EXTENSION_STATICLIB"); QList<QMakeLocalFileName> dirs; - static const char * const lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", 0 }; + static const char * const lflags[] = { "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", nullptr }; for (int i = 0; lflags[i]; i++) { ProStringList &l = project->values(lflags[i]); for (ProStringList::Iterator it = l.begin(); it != l.end();) { @@ -106,7 +106,7 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags) for (QList<QMakeLocalFileName>::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) { QString cand = (*dir_it).real() + Option::dir_sep + lib; - if (linkPrl && processPrlFile(cand)) { + if (linkPrl && processPrlFile(cand, true)) { (*it) = cand; goto found; } @@ -124,13 +124,13 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags) } else if (linkPrl && type == LibFlagFile) { QString lib = opt.toQString(); if (fileInfo(lib).isAbsolute()) { - if (processPrlFile(lib)) + if (processPrlFile(lib, false)) (*it) = lib; } else { for (QList<QMakeLocalFileName>::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) { QString cand = (*dir_it).real() + Option::dir_sep + lib; - if (processPrlFile(cand)) { + if (processPrlFile(cand, false)) { (*it) = cand; break; } @@ -163,6 +163,23 @@ Win32MakefileGenerator::findLibraries(bool linkPrl, bool mergeLflags) return true; } +bool Win32MakefileGenerator::processPrlFileBase(QString &origFile, const QStringRef &origName, + const QStringRef &fixedBase, int slashOff) +{ + if (MakefileGenerator::processPrlFileBase(origFile, origName, fixedBase, slashOff)) + return true; + for (int off = fixedBase.length(); off > slashOff; off--) { + if (!fixedBase.at(off - 1).isDigit()) { + if (off != fixedBase.length()) { + return MakefileGenerator::processPrlFileBase( + origFile, origName, fixedBase.left(off), slashOff); + } + break; + } + } + return false; +} + void Win32MakefileGenerator::processVars() { if (project->first("TEMPLATE").endsWith("aux")) @@ -422,7 +439,7 @@ void Win32MakefileGenerator::writeCleanParts(QTextStream &t) { t << "clean: compiler_clean " << depVar("CLEAN_DEPS"); { - const char *clean_targets[] = { "OBJECTS", "QMAKE_CLEAN", "CLEAN_FILES", 0 }; + const char *clean_targets[] = { "OBJECTS", "QMAKE_CLEAN", "CLEAN_FILES", nullptr }; for(int i = 0; clean_targets[i]; ++i) { const ProStringList &list = project->values(clean_targets[i]); const QString del_statement("-$(DEL_FILE)"); @@ -451,7 +468,7 @@ void Win32MakefileGenerator::writeCleanParts(QTextStream &t) t << "distclean: clean " << depVar("DISTCLEAN_DEPS"); { - const char *clean_targets[] = { "QMAKE_DISTCLEAN", 0 }; + const char *clean_targets[] = { "QMAKE_DISTCLEAN", nullptr }; for(int i = 0; clean_targets[i]; ++i) { const ProStringList &list = project->values(clean_targets[i]); const QString del_statement("-$(DEL_FILE)"); @@ -563,7 +580,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) t << "DIST = " << fileVarList("DISTFILES") << ' ' << fileVarList("HEADERS") << ' ' << fileVarList("SOURCES") << endl; - t << "QMAKE_TARGET = " << fileVar("QMAKE_ORIG_TARGET") << endl; + t << "QMAKE_TARGET = " << fileVar("QMAKE_ORIG_TARGET") << endl; // unused // The comment is important to maintain variable compatibility with Unix // Makefiles, while not interpreting a trailing-slash as a linebreak t << "DESTDIR = " << escapeFilePath(destDir) << " #avoid trailing-slash linebreak\n"; diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h index b85a6b67df..4416951a09 100644 --- a/qmake/generators/win32/winmakefile.h +++ b/qmake/generators/win32/winmakefile.h @@ -39,7 +39,7 @@ public: Win32MakefileGenerator(); ~Win32MakefileGenerator(); protected: - virtual QString defaultInstall(const QString &); + QString defaultInstall(const QString &) override; virtual void writeCleanParts(QTextStream &t); virtual void writeStandardParts(QTextStream &t); virtual void writeIncPart(QTextStream &t); @@ -48,16 +48,18 @@ protected: virtual void writeImplicitRulesPart(QTextStream &t); virtual void writeBuildRulesPart(QTextStream &); using MakefileGenerator::escapeFilePath; - virtual QString escapeFilePath(const QString &path) const; + QString escapeFilePath(const QString &path) const override; using MakefileGenerator::escapeDependencyPath; - virtual QString escapeDependencyPath(const QString &path) const; + QString escapeDependencyPath(const QString &path) const override; virtual void writeRcFilePart(QTextStream &t); - virtual bool findLibraries(bool linkPrl, bool mergeLflags); + bool findLibraries(bool linkPrl, bool mergeLflags) override; - virtual LibFlagType parseLibFlag(const ProString &flag, ProString *arg); - virtual ProString fixLibFlag(const ProString &lib); + LibFlagType parseLibFlag(const ProString &flag, ProString *arg) override; + ProString fixLibFlag(const ProString &lib) override; + bool processPrlFileBase(QString &origFile, const QStringRef &origName, + const QStringRef &fixedBase, int slashOff) override; void processVars(); void fixTargetExt(); |