[PATCH v6 2/3] configure: Only use -Wno-discarded-qualifiers iff compiler supports it

Adhemerval Zanella adhemerval.zanella@linaro.org
Mon Dec 1 20:09:47 GMT 2025


The clang analogous option is
-Wno-incompatible-pointer-types-discards-qualifiers, so add a configure
option to check which one compiler supports.
---
 configure         | 68 +++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac      | 20 ++++++++++++++
 timezone/Makefile |  4 +--
 3 files changed, 90 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index fc36935dd0..878c7cc7e8 100755
--- a/configure
+++ b/configure
@@ -8189,6 +8189,74 @@ test-config-cflags-wno-fortify-source = $libc_cv_test_cflags_wno_fortify_source"
 
 
 
+saved_CC="$CC"
+CC="$TEST_CC"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -Wno-discarded-qualifiers in testing" >&5
+printf %s "checking -Wno-discarded-qualifiers in testing... " >&6; }
+if test ${libc_cv_test_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_test_cflags_wno_discarded_qualifiers=-Wno-discarded-qualifiers
+else case e in #(
+  e) libc_cv_test_cflags_wno_discarded_qualifiers=
+ ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cflags_wno_discarded_qualifiers" >&5
+printf "%s\n" "$libc_cv_test_cflags_wno_discarded_qualifiers" >&6; }
+
+CC="$saved_CC"
+
+
+if test -z "$libc_cv_test_cflags_wno_discarded_qualifiers"; then
+
+
+saved_CC="$CC"
+CC="$TEST_CC"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -Wno-incompatible-pointer-types-discards-qualifiers in testing" >&5
+printf %s "checking -Wno-incompatible-pointer-types-discards-qualifiers in testing... " >&6; }
+if test ${libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) 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_test_cflags_wno_incompatible_pointer_type_discards_qualifiers=-Wno-incompatible-pointer-types-discards-qualifiers
+else case e in #(
+  e) libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers=
+   ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers" >&5
+printf "%s\n" "$libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers" >&6; }
+
+CC="$saved_CC"
+
+
+  libc_cv_test_cflags_wno_discarded_qualifiers=$libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers
+fi
+config_vars="$config_vars
+test-config-cflags-wno-discarded-qualifiers = $libc_cv_test_cflags_wno_discarded_qualifiers"
+
+
+
 saved_CC="$CC"
 CC="$TEST_CC"
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking -finput-charset=ascii in testing" >&5
diff --git a/configure.ac b/configure.ac
index 679a4a96cf..589d07f073 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1633,6 +1633,26 @@ LIBC_TRY_TEST_CC_OPTION([-Wno-fortify-source],
 LIBC_CONFIG_VAR([test-config-cflags-wno-fortify-source],
 		[$libc_cv_test_cflags_wno_fortify_source])
 
+dnl Check how to suppress C23-qualifier-generic const warnings.  GCC has
+dnl -Wno-discarded-qualifiers, while clang -Wno-incompatible-pointer-types-discards-qualifiers
+LIBC_TRY_TEST_CC_OPTION([-Wno-discarded-qualifiers],
+  [-Werror -Wno-discarded-qualifiers],
+  libc_cv_test_cflags_wno_discarded_qualifiers,
+  [libc_cv_test_cflags_wno_discarded_qualifiers=-Wno-discarded-qualifiers],
+  [libc_cv_test_cflags_wno_discarded_qualifiers=]
+)
+if test -z "$libc_cv_test_cflags_wno_discarded_qualifiers"; then
+  LIBC_TRY_TEST_CC_OPTION([-Wno-incompatible-pointer-types-discards-qualifiers],
+    [-Werror -Wno-incompatible-pointer-types-discards-qualifiers],
+    libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers,
+    [libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers=-Wno-incompatible-pointer-types-discards-qualifiers],
+    [libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers=]
+  )
+  libc_cv_test_cflags_wno_discarded_qualifiers=$libc_cv_test_cflags_wno_incompatible_pointer_type_discards_qualifiers
+fi
+LIBC_CONFIG_VAR([test-config-cflags-wno-discarded-qualifiers],
+		[$libc_cv_test_cflags_wno_discarded_qualifiers])
+
 dnl Check if TEST_CC supports -finput-charset=ascii.
 LIBC_TRY_TEST_CC_OPTION([-finput-charset=ascii],
   [-Werror -finput-charset=ascii],
diff --git a/timezone/Makefile b/timezone/Makefile
index c03a68962c..2ff1e92f9d 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -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
+# $(test-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 $(test-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
-- 
2.43.0



More information about the Libc-alpha mailing list