summaryrefslogtreecommitdiffstats
path: root/qmake/generators
diff options
context:
space:
mode:
authorM. Moellney <mail@michaelmoellney.de>2015-03-31 17:34:18 +0200
committerMichael Möllney <mail@michaelmoellney.de>2015-04-08 15:47:12 +0000
commitfa1b2dc4a012c3dc11db35f6b33a41d326b820b6 (patch)
tree0033df66696c6eb11f86c18b853a1de06e3259fa /qmake/generators
parente63752e6bb886d83af0c22faa673ea4cf99729f0 (diff)
Fix qmake generating bizarre msvc /VERSION values
The msvc_nmake and msvc_vcproj generators deduced the exe/dll header version number from the VERSION variable in a "bizarre" way: VERSION=1.2.3.4567 was converted to /VERSION:1.234567. But a minor number beyond 65535 is not accepted by the linker. This fix deduces the major and minor from the major and minor of VERSION: VERSION=1.2.3.4567 leads to /VERSION:1.2. In addition, a new variable is introduced: VERSION_PE_HEADER. With this variable, legacy pro files that rely on the bizarre behavior can re-create it: VERSION=1.2.3.45 and VERSION_PE_HEADER=1.2345 lead to the old result: /VERSION:1.2345 by just taking the VERSION_PE_HEADER to overrule the new behavior. Task-number: QTBUG-44823 Change-Id: Ie093ade83290c098fe2b2a429ce5d6ed6dc750ea Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'qmake/generators')
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp18
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp18
2 files changed, 22 insertions, 14 deletions
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 740c8c4d13..daa356c8b0 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -354,14 +354,18 @@ void NmakeMakefileGenerator::init()
project->values("QMAKE_LFLAGS").append(QString("/DEF:") + escapeFilePath(defFileName));
}
- if(!project->values("VERSION").isEmpty()) {
- ProString version = project->values("VERSION")[0];
- int firstDot = version.indexOf(".");
- QString major = version.left(firstDot).toQString();
- QString minor = version.right(version.length() - firstDot - 1).toQString();
- minor.replace(".", "");
- project->values("QMAKE_LFLAGS").append("/VERSION:" + major + "." + minor);
+ // set /VERSION for EXE/DLL header
+ ProString major_minor = project->first("VERSION_PE_HEADER");
+ if (major_minor.isEmpty()) {
+ ProString version = project->first("VERSION");
+ if (!version.isEmpty()) {
+ int firstDot = version.indexOf(".");
+ int secondDot = version.indexOf(".", firstDot + 1);
+ major_minor = version.left(secondDot);
+ }
}
+ if (!major_minor.isEmpty())
+ project->values("QMAKE_LFLAGS").append("/VERSION:" + major_minor);
if (project->isEmpty("QMAKE_LINK_O_FLAG"))
project->values("QMAKE_LINK_O_FLAG").append("/OUT:");
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 3222030018..9dbeeb38b5 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -787,14 +787,18 @@ void VcprojGenerator::init()
processVars();
- if(!project->values("VERSION").isEmpty()) {
- QString version = project->values("VERSION")[0].toQString();
- int firstDot = version.indexOf(".");
- QString major = version.left(firstDot);
- QString minor = version.right(version.length() - firstDot - 1);
- minor.replace(QRegExp("\\."), "");
- project->values("QMAKE_LFLAGS").append("/VERSION:" + major + "." + minor);
+ // set /VERSION for EXE/DLL header
+ ProString major_minor = project->first("VERSION_PE_HEADER");
+ if (major_minor.isEmpty()) {
+ ProString version = project->first("VERSION");
+ if (!version.isEmpty()) {
+ int firstDot = version.indexOf(".");
+ int secondDot = version.indexOf(".", firstDot + 1);
+ major_minor = version.left(secondDot);
+ }
}
+ if (!major_minor.isEmpty())
+ project->values("QMAKE_LFLAGS").append("/VERSION:" + major_minor);
MakefileGenerator::init();