]> git.feebdaed.xyz Git - 0xmirror/glibc.git/commitdiff
configure: Only use -Wno-discarded-qualifiers iff compiler supports it
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 1 Dec 2025 20:09:47 +0000 (17:09 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 9 Dec 2025 11:58:10 +0000 (08:58 -0300)
The clang analogous option is
-Wno-incompatible-pointer-types-discards-qualifiers, so add a configure
option to check which one compiler supports.

configure
configure.ac
timezone/Makefile

index fc36935dd0c7f7df5e79077963a5315bf696b31c..b80b9e5255dcf5c18a32654c4b4097db4ebf0616 100755 (executable)
--- a/configure
+++ b/configure
@@ -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}
index 679a4a96cf66fe7f52f9ba817bdd0b9855a00416..ef9fdd1f59f906b1bd8b864cc60d8f9fb8311753 100644 (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
index c03a68962c84f6825df254640b8eb348f9a81380..3bda405b57b0a7cfa5cc15d0f47d82fc972bd6bc 100644 (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