1 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 ]) 105