| # | 
 | # qmake configuration for Microsoft Visual Studio C/C++ Compiler | 
 | # This file is used by win32-msvc and all winrt-XXX-msvcXXX specs | 
 | # | 
 |  | 
 | # | 
 | # Version-specific changes | 
 | # | 
 |  | 
 | isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set") | 
 |  | 
 | MSVC_VER = 8.0 | 
 | COMPAT_MKSPEC = win32-msvc2005 | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1499) { | 
 |     # Visual Studio 2008 (9.0) / Visual C++ 15.0 and up | 
 |     MSVC_VER            = 9.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2008 | 
 |     QMAKE_CFLAGS_MP     = -MP | 
 |     QMAKE_CXXFLAGS_MP   = $$QMAKE_CFLAGS_MP | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1599) { | 
 |     # Visual Studio 2010 (10.0) / Visual C++ 16.0 and up | 
 |     MSVC_VER            = 10.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2010 | 
 |     MAKEFILE_GENERATOR  = MSBUILD | 
 |  | 
 |     QMAKE_CFLAGS_AVX    = -arch:AVX | 
 |     QMAKE_CFLAGS_AVX2   = -arch:AVX | 
 |  | 
 |     VCPROJ_EXTENSION    = .vcxproj | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1699) { | 
 |     # Visual Studio 2012 (11.0) / Visual C++ 17.0 and up | 
 |     MSVC_VER            = 11.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2012 | 
 |     QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577 | 
 |     QT_CONFIG          += c++11 | 
 |     CONFIG             += c++11 | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1799) { | 
 |     # Visual Studio 2013 (12.0) / Visual C++ 18.0 and up | 
 |     MSVC_VER            = 12.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2013 | 
 |     QMAKE_CFLAGS       += -FS | 
 |     QMAKE_CXXFLAGS     += -FS -Zc:rvalueCast -Zc:inline | 
 |  | 
 |     QMAKE_CFLAGS_F16C   = -arch:AVX | 
 |     QMAKE_CFLAGS_RDRND  = | 
 |  | 
 |     equals(QMAKE_MSC_VER, 1800) { | 
 |         QMAKE_CFLAGS_RELEASE += -Zc:strictStrings | 
 |         QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings | 
 |         QMAKE_CXXFLAGS_RELEASE += -Zc:strictStrings | 
 |         QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings | 
 |     } | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1899) { | 
 |     # Visual Studio 2015 (14.0) / Visual C++ 19.0 and up | 
 |     MSVC_VER            = 14.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2015 | 
 |     QMAKE_CFLAGS       += -Zc:strictStrings | 
 |     QMAKE_CFLAGS_WARN_ON += -w44456 -w44457 -w44458 | 
 |     QMAKE_CFLAGS_AVX2   = -arch:AVX2 | 
 |     QMAKE_CXXFLAGS     += -Zc:strictStrings -Zc:throwingNew | 
 |     QMAKE_CXXFLAGS_WARN_ON += -w44456 -w44457 -w44458 -wd4577 -wd4467 | 
 |  | 
 |     # -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) { | 
 |     # Visual Studio 2017 (15.0) / Visual C++ 19.10 and up | 
 |     MSVC_VER            = 15.0 | 
 |     COMPAT_MKSPEC       = win32-msvc2017 | 
 |     QMAKE_CXXFLAGS     += -Zc:referenceBinding | 
 |  | 
 |     # Only Visual Studio 2017 version 15.3 / Visual C++ 19.11 & up have support | 
 |     # for AVX-512. We enable the switches anyway and let configure check if they | 
 |     # work. | 
 |     QMAKE_CFLAGS_AVX512F   = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512ER  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512CD  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512PF  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512DQ  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512BW  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512VL  = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512IFMA = -arch:AVX512 | 
 |     QMAKE_CFLAGS_AVX512VBMI = -arch:AVX512 | 
 |  | 
 |     # For now permissive fails as soon as UWP API comes into play. In qtbase this | 
 |     # API is used in direct2d, but also in multimedia, positioning and sensors. | 
 |     # We can try again with a later version of Visual Studio. | 
 |     # QMAKE_CXXFLAGS_STRICTCXX = -permissive- | 
 |  | 
 |     # MSVC partially supports the following, but '__cplusplus' definition is set | 
 |     # as for C++98 until MSVC fully conforms with C++14, see | 
 |     # https://developercommunity.visualstudio.com/content/problem/139261/msvc-incorrectly-defines-cplusplus.html | 
 |     # Support became available in MSVC 2017 15.7: | 
 |     greaterThan(QMAKE_MSC_VER, 1913) { | 
 |         QMAKE_CXXFLAGS      += -Zc:__cplusplus | 
 |         QMAKE_CXXFLAGS_CXX14 = -std:c++14 | 
 |         QMAKE_CXXFLAGS_CXX1Z = -std:c++17 | 
 |     } | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1910) { | 
 |     # No compat spec past MSVC 2017 | 
 |     COMPAT_MKSPEC       = | 
 | } | 
 |  | 
 | greaterThan(QMAKE_MSC_VER, 1919) { | 
 |     # Visual Studio 2019 (16.0) / Visual C++ 19.20 and up | 
 |     MSVC_VER            = 16.0 | 
 |     QMAKE_CXXFLAGS_CXX2A = -std:c++latest | 
 |  | 
 | } | 
 |  | 
 | !isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC |