From 9004575f4b2aee7bf3c55522affd10555d134c51 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 26 Aug 2021 12:00:50 +0200 Subject: [PATCH] qmake: Add support for C17/C18 Make it possible to select the C17/C18 standard with CONFIG += c17 or CONFIG += c18 Pick-to: 6.2 5.15 Fixes: QTBUG-96026 Change-Id: I719d22366c3efda009118d58ead173a25ed285c0 Reviewed-by: Alexandru Croitor --- mkspecs/common/gcc-base.conf | 1 + mkspecs/common/msvc-version.conf | 1 + mkspecs/features/default_post.prf | 3 ++- qmake/doc/src/qmake-manual.qdoc | 5 +++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf index 9942089ed5b..1c27f34441a 100644 --- a/mkspecs/common/gcc-base.conf +++ b/mkspecs/common/gcc-base.conf @@ -86,6 +86,7 @@ QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG -fuse-linker-plugin QMAKE_CFLAGS_C99 = -std=c99 QMAKE_CFLAGS_C11 = -std=c11 +QMAKE_CFLAGS_C17 = -std=c17 QMAKE_CFLAGS_SSE2 += -msse2 QMAKE_CFLAGS_SSE3 += -msse3 diff --git a/mkspecs/common/msvc-version.conf b/mkspecs/common/msvc-version.conf index d9f38dae679..b3689dec413 100644 --- a/mkspecs/common/msvc-version.conf +++ b/mkspecs/common/msvc-version.conf @@ -121,6 +121,7 @@ greaterThan(QMAKE_MSC_VER, 1927) { # Visual Studio 2019 (16.8 or 16.9) / Visual C++ 19.28 and up MSVC_VER = 16.8 QMAKE_CFLAGS_C11 = /std:c11 + QMAKE_CFLAGS_C17 = /std:c17 } !isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index b2985fe89c6..18f8b8ad9a2 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -153,7 +153,8 @@ c++1z|c++2a { unset(cxxstd) } -c99|c11 { +c99|c11|c17|c18 { + c17|c18: cstd = C17 c11: cstd = C11 else: cstd = C99 diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index 07a0246124a..7126cfcec0e 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -1208,6 +1208,11 @@ \row \li c11 \li C11 support is enabled. This option has no effect if the compiler does not support C11, or can't select the C standard. By default, the compiler default is used. + \row \li c17 \li C17, also known as C18, support is enabled. + This option has no effect if the compiler does not support C17, or + can't select the C standard. + By default, the compiler default is used. + \row \li c18 \li This is an alias for the \c{c17} value. \row \li strict_c \li Disables support for C compiler extensions. By default, they are enabled. \row \li c++11 \li C++11 support is enabled. This option has no effect if