From f29ff5dffb7f9321d2bfb6071813d2d8d88186b3 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 27 May 2021 14:24:53 +0200 Subject: [PATCH] Add GCC 11 and C++20 workarounds GCC 11.1 has a bug [1] in the preprocessor that leads to -Wsuggest-override warnings being raised in random places, even under pragmas that are supposed to suppress it. For some reason, NOT using the integrated preprocessor fixes it, so add that flag as a workaround. Also, GCC 11 introduces a family of warnings for C++20's deprecations of mixed enum arithmetic, which we use all over the place. Avoid a hard error for those warnings. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100796 Change-Id: I3b2aefa385f191f207e7eb876bc1ed0b18fb342b Pick-to: 6.1 6.2 Task-number: QTBUG-93360 Task-number: QTBUG-94059 Reviewed-by: Fabian Kosmale Reviewed-by: Jarek Kobus Reviewed-by: Edward Welbourne --- cmake/QtInternalTargets.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake index 754688b800b..52d29a86731 100644 --- a/cmake/QtInternalTargets.cmake +++ b/cmake/QtInternalTargets.cmake @@ -32,6 +32,17 @@ function(qt_internal_set_warnings_are_errors_flags target) list(APPEND flags -Wno-error=format-overflow) endif() + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11.0.0") + # We do mixed enum arithmetic all over the place: + list(APPEND flags -Wno-error=deprecated-enum-enum-conversion -Wno-error=deprecated-enum-float-conversion) + endif() + + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11.0.0" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11.2.0") + # GCC 11.1 has a regression in the integrated preprocessor, so disable it as a workaround (QTBUG-93360) + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100796 + list(APPEND flags -no-integrated-cpp) + endif() + # Work-around for bug https://code.google.com/p/android/issues/detail?id=58135 if (ANDROID) list(APPEND flags -Wno-error=literal-suffix)