On 9/1/22 11:53, Khem Raj wrote:
I ran into few problems. Some of them were latent issues[1] but some are problems[2] especially using AC_CHECK_FUNCS when default compiler is C++ compiler not C compiler
Thanks for checking. How about the attached patch instead? It's closer to what you originally suggested.
Zack, any thoughts on this sort of thing?
From 7a3bbca81b803ba116b83c82de378e840cc35f81 Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Thu, 1 Sep 2022 16:19:50 -0500 Subject: [PATCH] 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. --- doc/autoconf.texi | 7 +++---- lib/autoconf/c.m4 | 6 +++--- lib/autoconf/functions.m4 | 3 --- tests/fortran.at | 8 ++++---- tests/semantics.at | 2 +- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/doc/autoconf.texi b/doc/autoconf.texi index 67f31064..aa534ab7 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -5460,9 +5460,8 @@ the @samp{#undef malloc}): #include <config.h> #undef malloc -#include <sys/types.h> - -void *malloc (); +#include <stdlib.h> +#undef malloc /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ @@ -8297,7 +8296,7 @@ needed: # ifdef __cplusplus extern "C" # endif - int F77_DUMMY_MAIN () @{ return 1; @} + int F77_DUMMY_MAIN (void) @{ return 1; @} #endif @end example diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4 index abbb83fe..4751c7f5 100644 --- 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 <limits.h> #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. */ diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4 index 9f44a1ce..ee519a38 100644 --- 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) { diff --git a/tests/fortran.at b/tests/fortran.at index 75b50b1a..473b39f6 100644 --- 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[]) diff --git a/tests/semantics.at b/tests/semantics.at index d24c4551..276d9744 100644 --- 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 -- 2.37.2