summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-12-11 15:02:16 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-12-14 18:20:26 +0000
commita8cb177d31d45a8cfee16b2c82131d1474d1d2e5 (patch)
treee816a2d57adbb6d014b495471a3394c72de20de0 /mkspecs
parent852b1afa5658d410a270a09ee7b94572df52ccbe (diff)
Fix build with win32-clang-msvc and win32-icc
fbbe8aba9d70a3c13d1cd7797eb4dbbd1f05ade5 introduced a check for MSVC_VER to qmake, which is not set in win32-clang-msvc, causing the build to fail: Mkspec does not specify MSVC_VER. Cannot continue. Unable to generate output for: .../config.tests/verifyspec/Makefile Extract a minimal msvc-based-version.conf which determines MSVC_VER from QMAKE_MSC_VER for win32-clang-msvc and win32-icc. Task-number: QTBUG-63512 Change-Id: Ia6de8c4b1aae2ae1962cf4e60e3e6d51fdbbbabe Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/common/msvc-based-version.conf32
-rw-r--r--mkspecs/common/msvc-version.conf10
-rw-r--r--mkspecs/features/toolchain.prf6
3 files changed, 40 insertions, 8 deletions
diff --git a/mkspecs/common/msvc-based-version.conf b/mkspecs/common/msvc-based-version.conf
new file mode 100644
index 0000000000..38aecbaf59
--- /dev/null
+++ b/mkspecs/common/msvc-based-version.conf
@@ -0,0 +1,32 @@
+#
+# qmake configuration for Compilers based on the Microsoft Visual Studio
+# C/C++ Compilers like win32-clang-msvc
+
+#
+# Version-specific changes
+#
+
+isEmpty(QMAKE_MSC_VER): error("msvc-based-version.conf loaded but QMAKE_MSC_VER isn't set")
+
+MSVC_VER = 14.0
+COMPAT_MKSPEC = win32-msvc2015
+
+# -utf-8 compiler option for Visual Studio 2015 Update 2
+greaterThan(QMAKE_MSC_FULL_VER, 190023918):!intel_icl {
+ isEmpty(QT_CLANG_MAJOR_VERSION)|!lessThan(QT_CLANG_MAJOR_VERSION, 4) {
+ QMAKE_CFLAGS_UTF8_SOURCE = -utf-8
+ }
+}
+
+greaterThan(QMAKE_MSC_VER, 1909) {
+ # Visual Studio 2017 (15.0) / Visual C++ 19.10 and up
+ MSVC_VER = 15.0
+ COMPAT_MKSPEC = win32-msvc2017
+}
+
+greaterThan(QMAKE_MSC_VER, 1910) {
+ # No compat spec past MSVC 2017
+ COMPAT_MKSPEC =
+}
+
+!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC
diff --git a/mkspecs/common/msvc-version.conf b/mkspecs/common/msvc-version.conf
index 3fb55c9d81..de8ba56b7b 100644
--- a/mkspecs/common/msvc-version.conf
+++ b/mkspecs/common/msvc-version.conf
@@ -1,7 +1,6 @@
#
# qmake configuration for Microsoft Visual Studio C/C++ Compiler
-# This file is used by win32-msvc, win32-clang-msvc, and all
-# winrt-XXX-msvcXXX specs
+# This file is used by win32-msvc and all winrt-XXX-msvcXXX specs
#
#
@@ -70,11 +69,8 @@ greaterThan(QMAKE_MSC_VER, 1899) {
QMAKE_CXXFLAGS += -Zc:strictStrings -Zc:throwingNew
QMAKE_CXXFLAGS_WARN_ON += -w44456 -w44457 -w44458 -wd4577 -wd4467
- greaterThan(QMAKE_MSC_FULL_VER, 190023918):!intel_icl {
- isEmpty(QT_CLANG_MAJOR_VERSION)|!lessThan(QT_CLANG_MAJOR_VERSION, 4) {
- QMAKE_CFLAGS_UTF8_SOURCE = -utf-8
- }
- }
+ # -utf-8 compiler option for Visual Studio 2015 Update 2
+ greaterThan(QMAKE_MSC_FULL_VER, 190023918): QMAKE_CFLAGS_UTF8_SOURCE = -utf-8
}
greaterThan(QMAKE_MSC_VER, 1909) {
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
index 63f2f12e21..c7ea20e180 100644
--- a/mkspecs/features/toolchain.prf
+++ b/mkspecs/features/toolchain.prf
@@ -281,4 +281,8 @@ QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX
QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT
-msvc:!intel_icl:!clang_cl: include(../common/msvc-version.conf)
+clang_cl|intel_icl {
+ include(../common/msvc-based-version.conf)
+} else: msvc {
+ include(../common/msvc-version.conf)
+}