From b4eb7a037414e453cf7377a08dbc38b3e616cb75 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Tue, 30 Apr 2024 13:51:38 +0200 Subject: [PATCH] =?UTF-8?q?build:=20get=20rid=20of=20"unrecognized=20?= =?UTF-8?q?=E2=80=A6=20anon-tag"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC only errors out on unrecognized _positive_ `-Wsomething` flags, negative ones it ignores... but then prints a "note" about whenever an unrelated(!) warning/error occurs. This is both annoying and confusing, since we now get a lot of: ``` cc1: note: unrecognized command-line option ‘-Wno-microsoft-anon-tag’ may have been intended to silence earlier diagnostics ``` Fix by checking for the positive flag in `AC_C_FLAG` instead, which will error out, and therefore `-Wno-microsoft-anon-tag` won't be added for GCC. (It only exists on clang.) Signed-off-by: David Lamparter --- configure.ac | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f11b345cf6ef..6d8e70bb86b2 100644 --- a/configure.ac +++ b/configure.ac @@ -275,7 +275,16 @@ AC_DEFUN([AC_C_FLAG], [{ AC_CACHE_CHECK([[whether $CC supports $1]], cachename, [ AC_LANG_PUSH([C]) ac_c_flag_save="$CFLAGS" - CFLAGS="$CFLAGS $1" + dnl GCC ignores unknown -Wno-whatever flags, but errors on -Wwhatever + dnl except when it ignores them it prints: + dnl cc1: note: unrecognized command-line option ‘-Wno-whatever’ may have been intended to silence earlier diagnostics + dnl which is annoying as hell. So check for the positive flag instead. + flag_add="$1" + if test "$flag_add" != "${flag_add#-Wno-}"; then + CFLAGS="$CFLAGS -W${flag_add#-Wno-}" + else + CFLAGS="$CFLAGS $flag_add" + fi AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[$4]])], [