diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2016-11-16 14:10:29 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2016-12-23 13:44:57 +0000 |
commit | 5196d5602c70b8d4c08e49921e9459425ada8a42 (patch) | |
tree | 91ee201b0fee918db2420560d2a91fccada1d096 | |
parent | 1b5271f27f7d5c6f814567d6d3bf211b41244cc8 (diff) |
determine msvc compat version in clang spec dynamically
instead of hardcoding the compat version in the spec, run cl.exe (which
needs to be around anyway) to figure out what version to emulate.
Change-Id: I6eae97fe9a78f8e340ecdabcdc0d48738497c6d2
Started-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | mkspecs/features/toolchain.prf | 21 | ||||
-rw-r--r-- | mkspecs/win32-clang-msvc2015/qmake.conf | 2 |
2 files changed, 21 insertions, 2 deletions
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf index 2fccd64fc5..d71f40b831 100644 --- a/mkspecs/features/toolchain.prf +++ b/mkspecs/features/toolchain.prf @@ -80,7 +80,23 @@ else: \ isEmpty($${target_prefix}.COMPILER_MACROS) { msvc { - vars = $$qtVariablesFromMSVC($$QMAKE_CXX $$QMAKE_CXXFLAGS) + clang_cl { + # We need to obtain the cl.exe version first + vars = $$qtVariablesFromMSVC(cl) + for (v, vars) { + isEmpty(v)|contains(v, $${LITERAL_HASH}.*): next() + eval($$v) + } + isEmpty(QMAKE_MSC_FULL_VER): error("Could not determine the Visual Studio version") + + QMAKE_CFLAGS_MSVC_COMPAT = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", \ + "-fms-compatibility-version=\\1.\\2.\\3") + cache($${target_prefix}.QMAKE_CFLAGS_MSVC_COMPAT, set stash, QMAKE_CFLAGS_MSVC_COMPAT) + $${target_prefix}.COMPILER_MACROS += QMAKE_CFLAGS_MSVC_COMPAT + vars = $$qtVariablesFromMSVC($$QMAKE_CXX, $$QMAKE_CFLAGS_MSVC_COMPAT) + } else { + vars = $$qtVariablesFromMSVC($$QMAKE_CXX) + } } else: gcc { vars = $$qtVariablesFromGCC($$QMAKE_CXX) } @@ -134,3 +150,6 @@ unset(target_prefix) __GNUC__=$$QT_GCC_MAJOR_VERSION \ __GNUC_MINOR__=$$QT_GCC_MINOR_VERSION \ __GNUC_PATCHLEVEL__=$$QT_GCC_PATCH_VERSION + +QMAKE_CFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_MSVC_COMPAT diff --git a/mkspecs/win32-clang-msvc2015/qmake.conf b/mkspecs/win32-clang-msvc2015/qmake.conf index 73cfdcbab9..3d04087fdf 100644 --- a/mkspecs/win32-clang-msvc2015/qmake.conf +++ b/mkspecs/win32-clang-msvc2015/qmake.conf @@ -15,7 +15,7 @@ QMAKE_COMPILER += clang_cl llvm QMAKE_CC = clang-cl QMAKE_CXX = $$QMAKE_CC -QMAKE_CFLAGS += -fms-compatibility-version=19.00.23506 -Wno-microsoft-enum-value +QMAKE_CFLAGS += -Wno-microsoft-enum-value QMAKE_CXXFLAGS = $$QMAKE_CFLAGS # Precompiled headers are not supported yet by clang |