From 4684c1afe5fdb3774d56d85a52b2feaab1b8de2c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 8 Jul 2015 17:21:30 -0700 Subject: Add detection of C++14 and C++1z compiler features [ChangeLog][General Improvements] Qt's buildsystem now detects whether the compiler supports C++14 and experimental support for C++1z. If the compiler supports it, then Qt is automatically compiled using that support. \ This does not apply to user applications built using qmake: those are still built with C++11 support only. To enable support for C++14 in your application, add to your .pro file: CONFIG += c++14 (similarly for C++1z). Change-Id: Ib056b47dde3341ef9a52ffff13ef1f5d01c42596 Reviewed-by: Lars Knoll --- mkspecs/features/c++11.prf | 9 --------- mkspecs/features/c++14.prf | 23 ----------------------- mkspecs/features/default_post.prf | 15 +++++++++++++++ mkspecs/features/mac/sdk.prf | 3 --- mkspecs/features/qt_common.prf | 2 ++ 5 files changed, 17 insertions(+), 35 deletions(-) delete mode 100644 mkspecs/features/c++11.prf delete mode 100644 mkspecs/features/c++14.prf (limited to 'mkspecs/features') diff --git a/mkspecs/features/c++11.prf b/mkspecs/features/c++11.prf deleted file mode 100644 index c8a86548ee..0000000000 --- a/mkspecs/features/c++11.prf +++ /dev/null @@ -1,9 +0,0 @@ -strict_c++|isEmpty(QMAKE_CXXFLAGS_GNUCXX11) { - QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11 - QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS_CXX11 - QMAKE_LFLAGS += $$QMAKE_LFLAGS_CXX11 -} else { - QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_GNUCXX11 - QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS_GNUCXX11 - QMAKE_LFLAGS += $$QMAKE_LFLAGS_GNUCXX11 -} diff --git a/mkspecs/features/c++14.prf b/mkspecs/features/c++14.prf deleted file mode 100644 index 076458560d..0000000000 --- a/mkspecs/features/c++14.prf +++ /dev/null @@ -1,23 +0,0 @@ -intel_icc { - # ICC does not support C++14 yet -} else: clang { - # Clang has supported -std=c++1y since version 3.2 - greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 1) { - QMAKE_CXXFLAGS_CXX11 = -std=c++1y - QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y - } - # Unknown how long Apple Clang has supported -std=c++1y, but at least since XCode 5.0 - greaterThan(QT_APPLE_CLANG_MAJOR_VERSION, 4) { - QMAKE_CXXFLAGS_CXX11 = -std=c++1y - QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y - } -} else: gcc { - # GCC has supported -std=c++1y since 4.8 - greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7) { - QMAKE_CXXFLAGS_CXX11 = -std=c++1y - QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y - } -} - -# Delegate to c++11.prf -include(c++11.prf) diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index bcaddc8363..ebe83af25e 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -98,6 +98,21 @@ breakpad { !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME) } +c++11|c++14|c++1z { + c++1z: cxxstd = CXX1Z + else: c++14: cxxstd = CXX14 + else: cxxstd = CXX11 + + # Check if we should disable the GNU extensions or not + !strict_c++:!isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd): cxxstd = GNU$$cxxstd + + QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) + QMAKE_OBJECTIVE_CFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) + QMAKE_LFLAGS += $$eval(QMAKE_LFLAGS_$$cxxstd) + + unset(cxxstd) +} + !precompile_header: SOURCES += $$NO_PCH_SOURCES QMAKE_INCDIR += $$QMAKE_INCDIR_POST diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf index e238f8e005..a5643e311d 100644 --- a/mkspecs/features/mac/sdk.prf +++ b/mkspecs/features/mac/sdk.prf @@ -72,9 +72,6 @@ isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name) { # FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec' version_identifier = $$replace(QMAKE_MAC_PLATFORM_NAME, iphonesimulator, ios-simulator) - # C++11 support may affect the deployment target - c++11: load(c++11) - ios:!host_build: \ deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET else: \ diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index 2ed43e5063..4fb04339f8 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -13,6 +13,8 @@ QMAKE_DIR_REPLACE_SANE += DESTDIR CONFIG -= debug_and_release_target contains(QT_CONFIG, c++11): CONFIG += c++11 strict_c++ +contains(QT_CONFIG, c++14): CONFIG += c++14 +contains(QT_CONFIG, c++1z): CONFIG += c++1z contains(TEMPLATE, .*lib) { # module and plugins !host_build:contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols -- cgit v1.2.3