https://github.com/fvwmorg/fvwm/pull/100 From 0b4daddf6b88b696daf54714448b8d89a615abf2 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 24 Nov 2022 13:06:50 +0100 Subject: [PATCH 1/3] configure: Do not require support for implicit ints Implicit ints have not been part of C since 1999, and future compilers will disable support for them by default. Fortunatenly, only one configure check needs adjusting. --- acinclude.m4 | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 8b74ff1e5..b66042f9f 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -30,7 +30,7 @@ if test "$ac_cv_func_select" = yes; then #ifdef HAVE_SYS_SOCKET_H #include #endif], -[extern select ($ac_cv_type_fd_set_size_t, +[extern int select ($ac_cv_type_fd_set_size_t, $ac_cv_type_fd_set *, $ac_cv_type_fd_set *, $ac_cv_type_fd_set *, $ac_type_timeval *);], [ac_found=yes ; break 3],ac_found=no) diff --git a/configure.ac b/configure.ac index 97ab9e7a1..c9fcede6a 100644 --- a/configure.ac +++ b/configure.ac @@ -220,7 +220,7 @@ AC_MINIX # catch -Werror and similar options when running configure AC_TRY_COMPILE([#include ], -[int i; static j; int *p; char *c; +[int i; int *p; char *c; switch (*p = p = *c) { case 0: printf("%Q", c, p); } *c = &i; c = p; while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1)); From 6b9d100ae4e784821b5189474dc58e646417bcf6 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 24 Nov 2022 13:07:56 +0100 Subject: [PATCH 2/3] acinclude.m4: Add missing to AM_SAFETY_CHECK_MKSTEMP Otherwise, the check fails on a compiler which does not support implicit function declarations (a language feature removed in 1999). --- acinclude.m4 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index b66042f9f..4dee2abeb 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1154,6 +1154,9 @@ AC_DEFUN([AM_SAFETY_CHECK_MKSTEMP],[ #include #include #include +#ifdef HAVE_UNISTD_H +#include +#endif int main(void) { char template[128]; From 33537b8ae5a302e4016dc1c6cfe5577fb3fa36c9 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 19 Dec 2023 13:24:50 +0100 Subject: [PATCH 3/3] configure: Further defang the -Werror check Incompatible pointer types are actually errors (in the sense that they are invalid C). Compilers have merely tolerated them as warnings for backwards compatibility. This is changing with Clang 16 and GCC 14, so relax the check a little. --- configure.ac | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index c9fcede6a..2e9615b2b 100644 --- a/configure.ac +++ b/configure.ac @@ -220,9 +220,8 @@ AC_MINIX # catch -Werror and similar options when running configure AC_TRY_COMPILE([#include ], -[int i; int *p; char *c; - switch (*p = p = *c) { case 0: printf("%Q", c, p); } - *c = &i; c = p; +[int unused; int *p; char *c; + printf("%Q", c, p); while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1)); ], , AC_MSG_ERROR(" configure is not able to compile programs with warnings. Please