]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Enable -Wstrict-prototypes and -Wold-style-definition by default
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 18 Mar 2026 13:31:50 +0000 (14:31 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 18 Mar 2026 13:31:50 +0000 (14:31 +0100)
Those are available in all gcc and clang versions that support C11 and as C11
is required as of f5e0186f865c, then we can add them without capability test.

Having them enabled by default avoid having to chase these manually like
11171fe1fc8cdf4b9aff20e72b9d4407069dbcc31f1283ed6cc7b66e2c086,
e95126cf04 and 9f7c527af3 have done.

Also, readline headers trigger a lot of warnings with -Wstrict-prototypes, so
we make use of the system_header pragma to hide the warnings.

Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://postgr.es/m/13d51b20-a69c-4ac1-8546-ec4fc278064f%40eisentraut.org
Discussion: https://postgr.es/m/aTFctZwWSpl2/LG5%40ip-10-97-1-34.eu-west-3.compute.internal

configure
configure.ac
meson.build
src/bin/psql/input.h

index 1d2522483a8db26104bbab93f4fc805d61adb88b..0d3f634abec286ab8067808ff029449e49b28a0d 100755 (executable)
--- a/configure
+++ b/configure
@@ -16986,6 +16986,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
 fi
 
 
+# These flags are supported in all C11-capable GCC/Clang versions,
+# so no capability test is needed.  Added here to avoid affecting configure probes,
+# particularly PGAC_PRINTF_ARCHETYPE which uses -Werror and would fail to detect
+# gnu_printf if -Wstrict-prototypes is active.
+if test "$GCC" = yes -a "$ICC" = no; then
+  CFLAGS="$CFLAGS -Wstrict-prototypes -Wold-style-definition"
+fi
+
 # --------------------
 # Run tests below here
 # --------------------
index 70ddcaabc44f71a0e352cac72fd16f8cb517819e..f8327a7020a03941d26e90719c7f4ded2fe1d783 100644 (file)
@@ -2027,6 +2027,14 @@ related to locating shared libraries.  Check the file 'config.log'
 for the exact reason.]])],
 [AC_MSG_RESULT([cross-compiling])])
 
+# These flags are supported in all C11-capable GCC/Clang versions,
+# so no capability test is needed.  Added here to avoid affecting configure probes,
+# particularly PGAC_PRINTF_ARCHETYPE which uses -Werror and would fail to detect
+# gnu_printf if -Wstrict-prototypes is active.
+if test "$GCC" = yes -a "$ICC" = no; then
+  CFLAGS="$CFLAGS -Wstrict-prototypes -Wold-style-definition"
+fi
+
 # --------------------
 # Run tests below here
 # --------------------
index c6e7cae505536a6448bb398e09b8747ae60f468f..0a181909fab15d39d871f822c29637fa58ec5cd4 100644 (file)
@@ -2253,6 +2253,8 @@ if cc.has_argument('-Wmissing-variable-declarations')
   cflags_no_missing_var_decls += '-Wno-missing-variable-declarations'
 endif
 
+# These are C-only flags, supported in all C11-capable GCC/Clang versions.
+cflags_warn += cc.get_supported_arguments(['-Wstrict-prototypes', '-Wold-style-definition'])
 
 # The following tests want to suppress various unhelpful warnings by adding
 # -Wno-foo switches.  But gcc won't complain about unrecognized -Wno-foo
index 09961c84101cc48e42a84c01729ac56e0d6aafe4..2a47166347e142248029d3ad752f8002ea697ba4 100644 (file)
 #ifdef HAVE_LIBREADLINE
 #define USE_READLINE 1
 
+/*
+ * Readline headers trigger a lot of warnings with our preferred compiler flags
+ * (at least -Wstrict-prototypes is known to be problematic). The system_header
+ * pragma hides warnings from within the rest of this file, if supported.
+ */
+#ifdef HAVE_PRAGMA_GCC_SYSTEM_HEADER
+#pragma GCC system_header
+#endif
+
 #if defined(HAVE_READLINE_READLINE_H)
 #include <readline/readline.h>
 #if defined(HAVE_READLINE_HISTORY_H)