aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/reference/modules/cpp-module.qdoc3
-rw-r--r--share/qbs/modules/cpp/gcc.js16
-rw-r--r--share/qbs/modules/cpp/msvc.js10
-rw-r--r--tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs2
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp2
5 files changed, 25 insertions, 8 deletions
diff --git a/doc/reference/modules/cpp-module.qdoc b/doc/reference/modules/cpp-module.qdoc
index 1483dc9c7..936c7373b 100644
--- a/doc/reference/modules/cpp-module.qdoc
+++ b/doc/reference/modules/cpp-module.qdoc
@@ -854,7 +854,8 @@
If the value is left undefined, the compiler default will be used.
If the list contains more than one value, the highest version is chosen.
- Possible values include: \c{"c++98"}, \c{"c++11"}, \c{"c++14"}, \c{"c++17"}, \c{"c++20"}.
+ Possible values include: \c{"c++98"}, \c{"c++11"}, \c{"c++14"}, \c{"c++17"}, \c{"c++20"},
+ \c{"c++23"}.
\nodefaultvalue
*/
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index 5fce2bbe4..120e601a5 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -710,9 +710,17 @@ function standardFallbackValueOrDefault(toolchain, compilerVersion, languageVers
"c++20": {
"fallback": "c++2a",
"toolchains": [
- {"name": "xcode"}, // not yet implemented
- {"name": "clang"}, // not yet implemented
- {"name": "gcc"} // not yet implemented
+ {"name": "xcode"}, // ??
+ {"name": "clang", "version": "11.0"},
+ {"name": "gcc", "version": "10.1"}
+ ]
+ },
+ "c++23": {
+ "fallback": "c++2b",
+ "toolchains": [
+ {"name": "xcode"},
+ {"name": "clang"},
+ {"name": "gcc"}
]
}
};
@@ -876,7 +884,7 @@ function compilerFlags(project, product, input, output, explicitlyDependsOn) {
return Cpp.languageVersion(input.cpp.cLanguageVersion, knownValues, "C");
case "cpp":
case "objcpp":
- knownValues = ["c++20", "c++2a", "c++17", "c++1z",
+ knownValues = ["c++23", "c++2b", "c++20", "c++2a", "c++17", "c++1z",
"c++14", "c++1y", "c++11", "c++0x",
"c++03", "c++98"];
return Cpp.languageVersion(input.cpp.cxxLanguageVersion, knownValues, "C++");
diff --git a/share/qbs/modules/cpp/msvc.js b/share/qbs/modules/cpp/msvc.js
index c56f84f5f..8906cd9e3 100644
--- a/share/qbs/modules/cpp/msvc.js
+++ b/share/qbs/modules/cpp/msvc.js
@@ -96,6 +96,12 @@ function hasZCplusPlusOption(input)
|| (input.qbs.toolchain.contains("clang-cl") && input.cpp.compilerVersionMajor >= 9);
}
+function hasCxx20Option(input)
+{
+ return Utilities.versionCompare(input.cpp.compilerVersion, "19.29.30133.0") >= 0
+ || (input.qbs.toolchain.contains("clang-cl") && input.cpp.compilerVersionMajor >= 13);
+}
+
function supportsExternalIncludesOption(input) {
if (input.qbs.toolchain.contains("clang-cl"))
return false; // Exclude clang-cl.
@@ -108,7 +114,7 @@ function supportsExternalIncludesOption(input) {
function addLanguageVersionFlag(input, args) {
var cxxVersion = Cpp.languageVersion(input.cpp.cxxLanguageVersion,
- ["c++20", "c++17", "c++14", "c++11", "c++98"], "C++");
+ ["c++23", "c++20", "c++17", "c++14", "c++11", "c++98"], "C++");
if (!cxxVersion)
return;
@@ -124,6 +130,8 @@ function addLanguageVersionFlag(input, args) {
flag = "/std:c++14";
else if (cxxVersion === "c++17" && hasCxx17Option(input))
flag = "/std:c++17";
+ else if (cxxVersion === "c++20" && hasCxx20Option(input))
+ flag = "/std:c++20";
else if (cxxVersion !== "c++11" && cxxVersion !== "c++98")
flag = "/std:c++latest";
if (flag)
diff --git a/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs b/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
index f99932b10..305cb29f1 100644
--- a/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
+++ b/tests/auto/blackbox/testdata/maximum-cxx-language-version/modules/newestmodule/newestmodule.qbs
@@ -1,4 +1,4 @@
Module {
Depends { name: "cpp" }
- cpp.cxxLanguageVersion: "c++17"
+ cpp.cxxLanguageVersion: "c++23"
}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 1082ba595..aabc85441 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -7706,7 +7706,7 @@ void TestBlackbox::maximumCxxLanguageVersion()
QCOMPARE(runQbs(QbsRunParameters("resolve",
QStringList("products.app.enableNewestModule:true"))), 0);
QCOMPARE(runQbs(QStringList({"--command-echo-mode", "command-line", "-n"})), 0);
- QVERIFY2(m_qbsStdout.contains("c++17") || m_qbsStdout.contains("c++1z")
+ QVERIFY2(m_qbsStdout.contains("c++23") || m_qbsStdout.contains("c++2b")
|| m_qbsStdout.contains("c++latest"), m_qbsStdout.constData());
QCOMPARE(runQbs(QbsRunParameters("resolve",
QStringList("products.app.enableNewestModule:false"))), 0);