build: enable gcc-12/13+, clang-10+ picky warnings

Cherry-picked from #17190
Closes #17196
This commit is contained in:
Viktor Szakats 2025-04-26 09:28:28 +02:00
parent f9eb9e5e23
commit 4b7accda5a
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
2 changed files with 20 additions and 0 deletions

View file

@ -179,6 +179,7 @@ if(PICKY_COMPILER)
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.4))
list(APPEND _picky_enable
-Wimplicit-fallthrough # clang 4.0 gcc 7.0 appleclang 12.4 # We do silencing for clang 10.0 and above only
-Wxor-used-as-pow # clang 10.0 gcc 13.0
)
endif()
else() # gcc
@ -242,6 +243,13 @@ if(PICKY_COMPILER)
-Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0
)
endif()
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
list(APPEND _picky_enable
-Warray-compare # clang 20.0 gcc 12.0
-Wenum-int-mismatch # gcc 13.0
-Wxor-used-as-pow # clang 10.0 gcc 13.0
)
endif()
endif()
#

View file

@ -905,6 +905,7 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
dnl clang 10 or later
if test "$compiler_num" -ge "1000"; then
tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough" # we have silencing markup for clang 10.0 and above only
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [xor-used-as-pow])
fi
fi
;;
@ -1096,6 +1097,17 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
fi
#
dnl Only gcc 12 or later
if test "$compiler_num" -ge "1200"; then
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [array-compare])
fi
#
dnl Only gcc 13 or later
if test "$compiler_num" -ge "1300"; then
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-int-mismatch])
CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [xor-used-as-pow])
fi
#
fi
#
dnl Do not issue warnings for code in system include paths.