From 8972a152c597cf88280c6a99b03f38cbf21e6dd2 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 5 Apr 2015 13:01:55 -0400 Subject: [PATCH] Suppress clang's unhelpful gripes about -pthread switch being unused. Considering the number of cases in which "unused" command line arguments are silently ignored by compilers, it's fairly astonishing that anybody thought this warning was useful; it's certainly nothing but an annoyance when building Postgres. One such case is that neither gcc nor clang complain about unrecognized -Wno-foo switches, making it more difficult to figure out whether the switch does anything than one could wish. Back-patch to 9.3, which is as far back as the patch applies conveniently (we'd have to back-patch PGAC_PROG_CC_VAR_OPT to go further, and it doesn't seem worth that). --- configure | 41 +++++++++++++++++++++++++++++++++++++++++ configure.in | 7 +++++++ 2 files changed, 48 insertions(+) diff --git a/configure b/configure index df0b499753..2b4d173b1d 100755 --- a/configure +++ b/configure @@ -4694,6 +4694,47 @@ if test x"$pgac_cv_prog_cc_cflags__ftree_vectorize" = x"yes"; then CFLAGS_VECTOR="${CFLAGS_VECTOR} -ftree-vectorize" fi + # We want to suppress clang's unhelpful unused-command-line-argument warnings + # but gcc won't complain about unrecognized -Wno-foo switches, so we have to + # test for the positive form and if that works, add the negative form + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wunused-command-line-argument" >&5 +$as_echo_n "checking whether $CC supports -Wunused-command-line-argument... " >&6; } +if ${pgac_cv_prog_cc_cflags__Wunused_command_line_argument+:} false; then : + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -Wunused-command-line-argument" +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__Wunused_command_line_argument=yes +else + pgac_cv_prog_cc_cflags__Wunused_command_line_argument=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" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_cc_cflags__Wunused_command_line_argument" >&5 +$as_echo "$pgac_cv_prog_cc_cflags__Wunused_command_line_argument" >&6; } +if test x"$pgac_cv_prog_cc_cflags__Wunused_command_line_argument" = x"yes"; then + NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wunused-command-line-argument" +fi + + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-unused-command-line-argument" + fi elif test "$ICC" = yes; then # Intel's compiler has a bug/misoptimization in checking for # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. diff --git a/configure.in b/configure.in index a34da63e60..967733999e 100644 --- a/configure.in +++ b/configure.in @@ -440,6 +440,13 @@ if test "$GCC" = yes -a "$ICC" = no; then # Optimization flags for specific files that benefit from vectorization PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-funroll-loops]) PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-ftree-vectorize]) + # We want to suppress clang's unhelpful unused-command-line-argument warnings + # but gcc won't complain about unrecognized -Wno-foo switches, so we have to + # test for the positive form and if that works, add the negative form + PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wunused-command-line-argument]) + if test -n "$NOT_THE_CFLAGS"; then + CFLAGS="$CFLAGS -Wno-unused-command-line-argument" + fi elif test "$ICC" = yes; then # Intel's compiler has a bug/misoptimization in checking for # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.