Home | History | Annotate | Download | only in config
      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