summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2015-07-08 17:21:30 -0700
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-09-05 23:05:40 +0000
commit4684c1afe5fdb3774d56d85a52b2feaab1b8de2c (patch)
treea1b6ffe6e16c9a699dbae5e5d15bb905b6692662 /mkspecs/features
parent041fae00351164fbd72763e4bd947fdeb9956a5d (diff)
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 <lars.knoll@theqtcompany.com>
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/c++11.prf9
-rw-r--r--mkspecs/features/c++14.prf23
-rw-r--r--mkspecs/features/default_post.prf15
-rw-r--r--mkspecs/features/mac/sdk.prf3
-rw-r--r--mkspecs/features/qt_common.prf2
5 files changed, 17 insertions, 35 deletions
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