115 lines
3.4 KiB
Diff
115 lines
3.4 KiB
Diff
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 <eggert@cs.ucla.edu>
|
||
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 <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. */
|
||
--- 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
|