postgres.git / summary / log / commit / refs

commit    aa449e5caed8b3745ec86d358bbfdaaacf8dbfbe
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Thu Nov 11 01:51:12 2021 +0000
First released in: 15.0, 10.20, 11.15, 12.10, 13.6, 14.2

    Clean up compilation warnings coming from PL/Perl with clang-12~
    
    clang-12 has introduced -Wcompound-token-split-by-macro, that is causing
    a large amount of warnings when building PL/Perl because of its
    interactions with upstream Perl.  This commit adds one -Wno to CFLAGS at
    ./configure time if the flag is supported by the compiler to silence all
    those warnings.
    
    Upstream perl has fixed this issue, but it is going to take some time
    before this is spread across the buildfarm, and we have noticed that
    some animals would be useful with an extra -Werror to help with the
    detection of incorrect placeholders (see b0cf544), dangomushi being
    one.
    
    Reviewed-by: Tom Lane
    Discussion: https://postgr.es/m/YYr3qYa/R3Gw+Sbg@paquier.xyz
    Backpatch-through: 10


configure | 46 ++++++++++++++++++++++++++++++++++++++++++++++ configure.in | 8 ++++++++ 2 files changed, 54 insertions(+) diff --git a/configure b/configure index 219a4809782..a35016a4e65 100755 --- a/configure +++ b/configure @@ -6136,6 +6136,52 @@ fi if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-unused-command-line-argument" fi + # Remove clang 12+'s compound-token-split-by-macro, as this causes a lot + # of warnings when building plperl because of Perl. Like previously, test + # for the positive form and add the negative form + NOT_THE_CFLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS" >&5 +$as_echo_n "checking whether ${CC} supports -Wcompound-token-split-by-macro, for NOT_THE_CFLAGS... " >&6; } +if ${pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +pgac_save_CC=$CC +CC=${CC} +CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro=yes +else + pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_c_werror_flag=$ac_save_c_werror_flag +CFLAGS="$pgac_save_CFLAGS" +CC="$pgac_save_CC" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" >&5 +$as_echo "$pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" >&6; } +if test x"$pgac_cv_prog_CC_cflags__Wcompound_token_split_by_macro" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wcompound-token-split-by-macro" +fi + + + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -Wformat-truncation, for NOT_THE_CFLAGS" >&5 diff --git a/configure.in b/configure.in index 3df9344e209..071f83e1816 100644 --- a/configure.in +++ b/configure.in @@ -521,6 +521,14 @@ if test "$GCC" = yes -a "$ICC" = no; then if test -n "$NOT_THE_CFLAGS"; then CFLAGS="$CFLAGS -Wno-unused-command-line-argument" fi + # Remove clang 12+'s compound-token-split-by-macro, as this causes a lot + # of warnings when building plperl because of Perl. Like previously, test + # for the positive form and add the negative form + NOT_THE_CFLAGS="" + PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wcompound-token-split-by-macro]) + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-compound-token-split-by-macro" + fi # Similarly disable useless truncation warnings from gcc 8+ NOT_THE_CFLAGS="" PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wformat-truncation]) [parent: 78f058411b02]