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

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Mon Dec 8 13:18:52 GMT 2025



On 06/12/25 10:27, Sam James wrote:
> Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> 
>> 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=]
>> +)
> 
> This flag is not being used (exclusively) for tests (timezone/), so we
> shouldn't name it such.

Right, I will change to libc_cv_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



More information about the Libc-alpha mailing list