https://bugs.gentoo.org/870412 https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=8b5e2016c7ed2d67f31b03a3d2e361858ff5299b Backport the K&R decls fix to 2.71 to avoid configure tests failing (often "silently", i.e. doesn't fail the build of the package overall, just leads to wrong results) with newer compilers like the upcoming Clang 16. From 8b5e2016c7ed2d67f31b03a3d2e361858ff5299b Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 1 Sep 2022 16:19:50 -0500 Subject: Port to compilers that moan about K&R func decls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lib/autoconf/c.m4 (AC_LANG_CALL, AC_LANG_FUNC_LINK_TRY): Use '(void)' rather than '()' in function prototypes, as the latter provokes fatal errors in some compilers nowadays. * lib/autoconf/functions.m4 (AC_FUNC_STRTOD): * tests/fortran.at (AC_F77_DUMMY_MAIN usage): * tests/semantics.at (AC_CHECK_DECLS): Don’t use () in a function decl. --- a/lib/autoconf/c.m4 +++ b/lib/autoconf/c.m4 @@ -133,7 +133,7 @@ m4_if([$2], [main], , #ifdef __cplusplus extern "C" #endif -char $2 ();])], [return $2 ();])]) +char $2 (void);])], [return $2 ();])]) # AC_LANG_FUNC_LINK_TRY(C)(FUNCTION) @@ -157,7 +157,7 @@ m4_define([AC_LANG_FUNC_LINK_TRY(C)], #define $1 innocuous_$1 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $1 (); below. */ + which can conflict with char $1 (void); below. */ #include #undef $1 @@ -168,7 +168,7 @@ m4_define([AC_LANG_FUNC_LINK_TRY(C)], #ifdef __cplusplus extern "C" #endif -char $1 (); +char $1 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ --- a/lib/autoconf/functions.m4 +++ b/lib/autoconf/functions.m4 @@ -1613,9 +1613,6 @@ AC_DEFUN([AC_FUNC_STRTOD], AC_CACHE_CHECK(for working strtod, ac_cv_func_strtod, [AC_RUN_IFELSE([AC_LANG_SOURCE([[ ]AC_INCLUDES_DEFAULT[ -#ifndef strtod -double strtod (); -#endif int main (void) { --- a/tests/fortran.at +++ b/tests/fortran.at @@ -233,7 +233,7 @@ void FOOBAR_F77 (double *x, double *y); # ifdef __cplusplus extern "C" # endif - int F77_DUMMY_MAIN () { return 1; } + int F77_DUMMY_MAIN (void) { return 1; } #endif int main(int argc, char *argv[]) @@ -315,7 +315,7 @@ void FOOBAR_FC(double *x, double *y); # ifdef __cplusplus extern "C" # endif - int FC_DUMMY_MAIN () { return 1; } + int FC_DUMMY_MAIN (void) { return 1; } #endif int main (int argc, char *argv[]) @@ -561,7 +561,7 @@ void @foobar@ (int *x); # ifdef __cplusplus extern "C" # endif - int F77_DUMMY_MAIN () { return 1; } + int F77_DUMMY_MAIN (void) { return 1; } #endif int main(int argc, char *argv[]) @@ -637,7 +637,7 @@ void @foobar@ (int *x); # ifdef __cplusplus extern "C" # endif - int FC_DUMMY_MAIN () { return 1; } + int FC_DUMMY_MAIN (void) { return 1; } #endif int main(int argc, char *argv[]) --- a/tests/semantics.at +++ b/tests/semantics.at @@ -207,7 +207,7 @@ AT_CHECK_MACRO([AC_CHECK_DECLS], [[extern int yes; enum { myenum }; extern struct mystruct_s { int x[20]; } mystruct; - extern int myfunc(); + extern int myfunc (int); #define mymacro1(arg) arg #define mymacro2]]) # Ensure we can detect missing declarations of functions whose cgit v1.1