configure: Only use -Wno-discarded-qualifiers iff compiler supports it

The clang analogous option is
-Wno-incompatible-pointer-types-discards-qualifiers, so add a configure
option to check which one compiler supports.
This commit is contained in:
Adhemerval Zanella
2025-12-01 17:09:47 -03:00
parent 6b7067460f
commit 67b631db87
3 changed files with 59 additions and 2 deletions

41
configure vendored
View File

@@ -7431,6 +7431,47 @@ printf "%s\n" "$libc_cv_fpie" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wno-discarded-qualifiers" >&5
printf %s "checking for -Wno-discarded-qualifiers... " >&6; }
if test ${libc_cv_cflags_wno_discarded_qualifiers+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} -Werror -Wno-discarded-qualifiers -xc /dev/null -S -o /dev/null'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then :
libc_cv_cflags_wno_discarded_qualifiers=-Wno-discarded-qualifiers
else case e in #(
e) libc_cv_cflags_wno_discarded_qualifiers= ;;
esac
fi
if test -z "$libc_cv_cflags_wno_discarded_qualifiers"; then
if { ac_try='${CC-cc} -Werror -Wno-incompatible-pointer-types-discards-qualifiers -xc /dev/null -S -o /dev/null'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then :
libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers=-Wno-incompatible-pointer-types-discards-qualifiers
else case e in #(
e) libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers= ;;
esac
fi
libc_cv_cflags_wno_discarded_qualifiers=$libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers
fi
;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cflags_wno_discarded_qualifiers" >&5
printf "%s\n" "$libc_cv_cflags_wno_discarded_qualifiers" >&6; }
config_vars="$config_vars
config-cflags-wno-discarded-qualifiers = $libc_cv_cflags_wno_discarded_qualifiers"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GLOB_DAT reloc" >&5
printf %s "checking for GLOB_DAT reloc... " >&6; }
if test ${libc_cv_has_glob_dat+y}

View File

@@ -1370,6 +1370,22 @@ LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
AC_SUBST(libc_cv_fpie)
dnl Check how to suppress C23-qualifier-generic const warnings. GCC has
dnl -Wno-discarded-qualifiers, while clang -Wno-incompatible-pointer-types-discards-qualifiers
AC_CACHE_CHECK(for -Wno-discarded-qualifiers, libc_cv_cflags_wno_discarded_qualifiers, [dnl
LIBC_TRY_CC_OPTION([-Werror -Wno-discarded-qualifiers],
[libc_cv_cflags_wno_discarded_qualifiers=-Wno-discarded-qualifiers],
[libc_cv_cflags_wno_discarded_qualifiers=])
if test -z "$libc_cv_cflags_wno_discarded_qualifiers"; then
LIBC_TRY_CC_OPTION([-Werror -Wno-incompatible-pointer-types-discards-qualifiers],
[libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers=-Wno-incompatible-pointer-types-discards-qualifiers],
[libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers=])
libc_cv_cflags_wno_discarded_qualifiers=$libc_cv_cflags_wno_incompatible_pointer_type_discards_qualifiers
fi
])
LIBC_CONFIG_VAR([config-cflags-wno-discarded-qualifiers],
[$libc_cv_cflags_wno_discarded_qualifiers])
AC_CACHE_CHECK(for GLOB_DAT reloc,
libc_cv_has_glob_dat, [dnl
cat > conftest.c <<EOF

View File

@@ -73,10 +73,10 @@ tz-cflags = -DTZDIR='"$(zonedir)"' \
# The -Wno-unused-variable flag is used to prevent GCC 6
# from warning about time_t_min and time_t_max which are
# defined in private.h but not used.
# -Wno-discarded-qualifiers is because zic is not prepared for C23
# $(config-cflags-wno-discarded-qualifiers) is because zic is not prepared for C23
# -qualifier-generic strchr.
CFLAGS-zdump.c += $(tz-cflags)
CFLAGS-zic.c += $(tz-cflags) -Wno-unused-variable -Wno-discarded-qualifiers
CFLAGS-zic.c += $(tz-cflags) -Wno-unused-variable $(config-cflags-wno-discarded-qualifiers)
# We have to make sure the data for testing the tz functions is available.
# Don't add leapseconds here since test-tz made checks that work only without