summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/win32')
-rw-r--r--qmake/generators/win32/mingw_make.cpp18
-rw-r--r--qmake/generators/win32/mingw_make.h28
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.h44
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp9
-rw-r--r--qmake/generators/win32/msvc_nmake.h18
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h34
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp27
-rw-r--r--qmake/generators/win32/msvc_vcproj.h18
-rw-r--r--qmake/generators/win32/msvc_vcxproj.h2
-rw-r--r--qmake/generators/win32/registry.cpp6
-rw-r--r--qmake/generators/win32/winmakefile.cpp31
-rw-r--r--qmake/generators/win32/winmakefile.h14
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();