diff options
author | Eike Ziller <eike.ziller@qt.io> | 2021-08-26 11:09:08 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2021-08-26 11:09:08 +0200 |
commit | 0777b65db3589324ab45ea5d08ad68860623e69b (patch) | |
tree | fe5e03fc4a36397649f6ec6791b3488efec8c1b4 /src/plugins/cpptools | |
parent | 245b6c0dc73087678de941652f8c752bb49995cf (diff) | |
parent | cd8da8fe5f608d4968b90f19f30b515058605b8c (diff) |
Merge remote-tracking branch 'origin/5.0'
Conflicts:
qbs/modules/qtc/qtc.qbs
src/plugins/android/androidconfigurations.cpp
Change-Id: If8dc2cdf131811e08ca147c6f58dbb3ed3bf7227
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 20 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcodemodelinspectordumper.cpp | 3 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index f5eb770c36..0c8c5d9305 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -472,7 +472,10 @@ void CompilerOptionsBuilder::addLanguageVersionAndExtensions() case LanguageVersion::CXX17: option = "/std:c++17"; break; - case LanguageVersion::CXX2a: + case LanguageVersion::CXX20: + option = "/std:c++20"; + break; + case LanguageVersion::CXX2b: option = "/std:c++latest"; break; } @@ -517,8 +520,11 @@ void CompilerOptionsBuilder::addLanguageVersionAndExtensions() case LanguageVersion::CXX17: option = (gnuExtensions ? QLatin1String("-std=gnu++17") : QLatin1String("-std=c++17")); break; - case LanguageVersion::CXX2a: - option = (gnuExtensions ? QLatin1String("-std=gnu++2a") : QLatin1String("-std=c++2a")); + case LanguageVersion::CXX20: + option = (gnuExtensions ? QLatin1String("-std=gnu++20") : QLatin1String("-std=c++20")); + break; + case LanguageVersion::CXX2b: + option = (gnuExtensions ? QLatin1String("-std=gnu++2b") : QLatin1String("-std=c++2b")); break; case LanguageVersion::None: break; @@ -868,6 +874,14 @@ void CompilerOptionsBuilder::evaluateCompilerFlags() theOption[0] = '-'; } + // Clang-cl (as of Clang 12) frontend doesn't know about -std:c++20 + // but the clang front end knows about -std=c++20 + // https://github.com/llvm/llvm-project/blob/release/12.x/clang/lib/Driver/ToolChains/Clang.cpp#L5855 + if (toolChain == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID || + toolChain == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) { + theOption.replace("-std:c++20", "-clang:-std=c++20"); + } + m_compilerFlags.flags.append(theOption); } diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp index efaf909c55..44c968e10b 100644 --- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp +++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp @@ -123,7 +123,8 @@ QString Utils::toString(::Utils::LanguageVersion languageVersion) CASE_LANGUAGEVERSION(CXX11); CASE_LANGUAGEVERSION(CXX14); CASE_LANGUAGEVERSION(CXX17); - CASE_LANGUAGEVERSION(CXX2a); + CASE_LANGUAGEVERSION(CXX20); + CASE_LANGUAGEVERSION(CXX2b); // no default to get a compiler warning if anything is added } #undef CASE_LANGUAGEVERSION |