| 1 |
26 |
khays |
dnl Fix Autoconf bugs by overriding broken internal Autoconf
|
| 2 |
|
|
dnl macros with backports of fixes from newer releases.
|
| 3 |
|
|
dnl
|
| 4 |
|
|
dnl The override bits of this file should be a no-op for the newest
|
| 5 |
|
|
dnl Autoconf version, which means they can be removed once the complete
|
| 6 |
|
|
dnl tree has moved to a new enough Autoconf version.
|
| 7 |
|
|
dnl
|
| 8 |
|
|
dnl The _GCC_AUTOCONF_VERSION_TEST ensures that exactly the desired
|
| 9 |
|
|
dnl Autoconf version is used. It should be kept for consistency.
|
| 10 |
|
|
|
| 11 |
|
|
dnl Use ifdef/ifelse over m4_ifdef/m4_ifelse to be clean for 2.13.
|
| 12 |
|
|
ifdef([m4_PACKAGE_VERSION], [
|
| 13 |
|
|
|
| 14 |
|
|
dnl Provide m4_copy_force and m4_rename_force for old Autoconf versions.
|
| 15 |
|
|
|
| 16 |
|
|
m4_ifndef([m4_copy_force],
|
| 17 |
|
|
[m4_define([m4_copy_force],
|
| 18 |
|
|
[m4_ifdef([$2], [m4_undefine([$2])])m4_copy($@)])])
|
| 19 |
|
|
|
| 20 |
|
|
m4_ifndef([m4_rename_force],
|
| 21 |
|
|
[m4_define([m4_rename_force],
|
| 22 |
|
|
[m4_ifdef([$2], [m4_undefine([$2])])m4_rename($@)])])
|
| 23 |
|
|
|
| 24 |
|
|
dnl AC_DEFUN a commonly used macro so this file is picked up.
|
| 25 |
|
|
m4_copy([AC_PREREQ], [_AC_PREREQ])
|
| 26 |
|
|
AC_DEFUN([AC_PREREQ], [frob])
|
| 27 |
|
|
m4_copy_force([_AC_PREREQ], [AC_PREREQ])
|
| 28 |
|
|
|
| 29 |
|
|
|
| 30 |
|
|
dnl Ensure exactly this Autoconf version is used
|
| 31 |
|
|
m4_ifndef([_GCC_AUTOCONF_VERSION],
|
| 32 |
|
|
[m4_define([_GCC_AUTOCONF_VERSION], [2.64])])
|
| 33 |
|
|
|
| 34 |
|
|
dnl Test for the exact version when AC_INIT is expanded.
|
| 35 |
|
|
dnl This allows to update the tree in steps (for testing)
|
| 36 |
|
|
dnl by putting
|
| 37 |
|
|
dnl m4_define([_GCC_AUTOCONF_VERSION], [X.Y])
|
| 38 |
|
|
dnl in configure.ac before AC_INIT,
|
| 39 |
|
|
dnl without rewriting this file.
|
| 40 |
|
|
dnl Or for updating the whole tree at once with the definition above.
|
| 41 |
|
|
AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
|
| 42 |
|
|
[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
|
| 43 |
|
|
m4_defn([m4_PACKAGE_VERSION]), [],
|
| 44 |
|
|
[m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
|
| 45 |
|
|
])
|
| 46 |
|
|
m4_define([AC_INIT], m4_defn([AC_INIT])[
|
| 47 |
|
|
_GCC_AUTOCONF_VERSION_CHECK
|
| 48 |
|
|
])
|
| 49 |
|
|
|
| 50 |
|
|
|
| 51 |
|
|
dnl Ensure we do not use a buggy M4.
|
| 52 |
|
|
m4_if(m4_index([..wi.d.], [.d.]), [-1],
|
| 53 |
|
|
[m4_fatal(m4_do([m4 with buggy strstr detected. Please install
|
| 54 |
|
|
GNU M4 1.4.16 or newer and set the M4 environment variable]))])
|
| 55 |
|
|
|
| 56 |
|
|
|
| 57 |
|
|
dnl Fix 2.64 cross compile detection for AVR and RTEMS
|
| 58 |
|
|
dnl by not trying to compile fopen.
|
| 59 |
|
|
m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.64],
|
| 60 |
|
|
[m4_foreach([_GCC_LANG], [C, C++, Fortran, Fortran 77],
|
| 61 |
|
|
[m4_define([_AC_LANG_IO_PROGRAM(]_GCC_LANG[)], m4_defn([AC_LANG_PROGRAM(]_GCC_LANG[)]))])])
|
| 62 |
|
|
|
| 63 |
|
|
m4_version_prereq([2.66],, [
|
| 64 |
|
|
dnl We need AC_CHECK_DECL which works for overloaded C++ functions.
|
| 65 |
|
|
|
| 66 |
|
|
# _AC_CHECK_DECL_BODY
|
| 67 |
|
|
# -------------------
|
| 68 |
|
|
# Shell function body for AC_CHECK_DECL.
|
| 69 |
|
|
m4_define([_AC_CHECK_DECL_BODY],
|
| 70 |
|
|
[ AS_LINENO_PUSH([$[]1])
|
| 71 |
|
|
[as_decl_name=`echo $][2|sed 's/ *(.*//'`]
|
| 72 |
|
|
[as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
|
| 73 |
|
|
AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
|
| 74 |
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
|
| 75 |
|
|
[@%:@ifndef $[]as_decl_name
|
| 76 |
|
|
@%:@ifdef __cplusplus
|
| 77 |
|
|
(void) $[]as_decl_use;
|
| 78 |
|
|
@%:@else
|
| 79 |
|
|
(void) $[]as_decl_name;
|
| 80 |
|
|
@%:@endif
|
| 81 |
|
|
@%:@endif
|
| 82 |
|
|
])],
|
| 83 |
|
|
[AS_VAR_SET([$[]3], [yes])],
|
| 84 |
|
|
[AS_VAR_SET([$[]3], [no])])])
|
| 85 |
|
|
AS_LINENO_POP
|
| 86 |
|
|
])# _AC_CHECK_DECL_BODY
|
| 87 |
|
|
|
| 88 |
|
|
# _AC_CHECK_DECLS(SYMBOL, ACTION-IF_FOUND, ACTION-IF-NOT-FOUND,
|
| 89 |
|
|
# INCLUDES)
|
| 90 |
|
|
# -------------------------------------------------------------
|
| 91 |
|
|
# Helper to AC_CHECK_DECLS, which generates the check for a single
|
| 92 |
|
|
# SYMBOL with INCLUDES, performs the AC_DEFINE, then expands
|
| 93 |
|
|
# ACTION-IF-FOUND or ACTION-IF-NOT-FOUND.
|
| 94 |
|
|
m4_define([_AC_CHECK_DECLS],
|
| 95 |
|
|
[AC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])]dnl
|
| 96 |
|
|
[AC_DEFINE_UNQUOTED(AS_TR_CPP(m4_bpatsubst(HAVE_DECL_[$1],[ *(.*])),
|
| 97 |
|
|
[$ac_have_decl],
|
| 98 |
|
|
[Define to 1 if you have the declaration of `$1',
|
| 99 |
|
|
and to 0 if you don't.])]dnl
|
| 100 |
|
|
[m4_ifvaln([$2$3], [AS_IF([test $ac_have_decl = 1], [$2], [$3])])])
|
| 101 |
|
|
|
| 102 |
|
|
])
|
| 103 |
|
|
|
| 104 |
|
|
])
|