Blame config/override.m4

Packit Service 706eca
dnl Fix Autoconf bugs by overriding broken internal Autoconf
Packit Service 706eca
dnl macros with backports of fixes from newer releases.
Packit Service 706eca
dnl
Packit Service 706eca
dnl The override bits of this file should be a no-op for the newest
Packit Service 706eca
dnl Autoconf version, which means they can be removed once the complete
Packit Service 706eca
dnl tree has moved to a new enough Autoconf version.
Packit Service 706eca
dnl
Packit Service 706eca
dnl The _GCC_AUTOCONF_VERSION_TEST ensures that exactly the desired
Packit Service 706eca
dnl Autoconf version is used.  It should be kept for consistency.
Packit Service 706eca
Packit Service 706eca
dnl Use ifdef/ifelse over m4_ifdef/m4_ifelse to be clean for 2.13.
Packit Service 706eca
ifdef([m4_PACKAGE_VERSION], [
Packit Service 706eca
Packit Service 706eca
dnl Provide m4_copy_force and m4_rename_force for old Autoconf versions.
Packit Service 706eca
Packit Service 706eca
m4_ifndef([m4_copy_force],
Packit Service 706eca
[m4_define([m4_copy_force],
Packit Service 706eca
[m4_ifdef([$2], [m4_undefine([$2])])m4_copy($@)])])
Packit Service 706eca
Packit Service 706eca
m4_ifndef([m4_rename_force],
Packit Service 706eca
[m4_define([m4_rename_force],
Packit Service 706eca
[m4_ifdef([$2], [m4_undefine([$2])])m4_rename($@)])])
Packit Service 706eca
Packit Service 706eca
dnl AC_DEFUN a commonly used macro so this file is picked up.
Packit Service 706eca
m4_copy([AC_PREREQ], [_AC_PREREQ])
Packit Service 706eca
AC_DEFUN([AC_PREREQ], [frob])
Packit Service 706eca
m4_copy_force([_AC_PREREQ], [AC_PREREQ])
Packit Service 706eca
Packit Service 706eca
Packit Service 706eca
dnl Ensure exactly this Autoconf version is used
Packit Service 706eca
m4_ifndef([_GCC_AUTOCONF_VERSION],
Packit Service 706eca
  [m4_define([_GCC_AUTOCONF_VERSION], [2.69])])
Packit Service 706eca
Packit Service 706eca
dnl Test for the exact version when AC_INIT is expanded.
Packit Service 706eca
dnl This allows to update the tree in steps (for testing)
Packit Service 706eca
dnl by putting
Packit Service 706eca
dnl   m4_define([_GCC_AUTOCONF_VERSION], [X.Y])
Packit Service 706eca
dnl in configure.ac before AC_INIT,
Packit Service 706eca
dnl without rewriting this file.
Packit Service 706eca
dnl Or for updating the whole tree at once with the definition above.
Packit Service 706eca
AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
Packit Service 706eca
[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
Packit Service 706eca
  m4_defn([m4_PACKAGE_VERSION]), [],
Packit Service 706eca
  [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
Packit Service 706eca
])
Packit Service 706eca
m4_define([AC_INIT], m4_defn([AC_INIT])[
Packit Service 706eca
_GCC_AUTOCONF_VERSION_CHECK
Packit Service 706eca
])
Packit Service 706eca
Packit Service 706eca
Packit Service 706eca
dnl Ensure we do not use a buggy M4.
Packit Service 706eca
m4_if(m4_index([..wi.d.], [.d.]), [-1],
Packit Service 706eca
  [m4_fatal(m4_do([m4 with buggy strstr detected.  Please install
Packit Service 706eca
GNU M4 1.4.16 or newer and set the M4 environment variable]))])
Packit Service 706eca
Packit Service 706eca
Packit Service 706eca
dnl Fix 2.64 cross compile detection for AVR and RTEMS
Packit Service 706eca
dnl by not trying to compile fopen.
Packit Service 706eca
m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.64],
Packit Service 706eca
  [m4_foreach([_GCC_LANG], [C, C++, Fortran, Fortran 77],
Packit Service 706eca
     [m4_define([_AC_LANG_IO_PROGRAM(]_GCC_LANG[)], m4_defn([AC_LANG_PROGRAM(]_GCC_LANG[)]))])])
Packit Service 706eca
Packit Service 706eca
m4_version_prereq([2.66],, [
Packit Service 706eca
dnl We need AC_CHECK_DECL which works for overloaded C++ functions.
Packit Service 706eca
Packit Service 706eca
# _AC_CHECK_DECL_BODY
Packit Service 706eca
# -------------------
Packit Service 706eca
# Shell function body for AC_CHECK_DECL.
Packit Service 706eca
m4_define([_AC_CHECK_DECL_BODY],
Packit Service 706eca
[  AS_LINENO_PUSH([$[]1])
Packit Service 706eca
  [as_decl_name=`echo $][2|sed 's/ *(.*//'`]
Packit Service 706eca
  [as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
Packit Service 706eca
  AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
Packit Service 706eca
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
Packit Service 706eca
[@%:@ifndef $[]as_decl_name
Packit Service 706eca
@%:@ifdef __cplusplus
Packit Service 706eca
  (void) $[]as_decl_use;
Packit Service 706eca
@%:@else
Packit Service 706eca
  (void) $[]as_decl_name;
Packit Service 706eca
@%:@endif
Packit Service 706eca
@%:@endif
Packit Service 706eca
])],
Packit Service 706eca
		   [AS_VAR_SET([$[]3], [yes])],
Packit Service 706eca
		   [AS_VAR_SET([$[]3], [no])])])
Packit Service 706eca
  AS_LINENO_POP
Packit Service 706eca
])# _AC_CHECK_DECL_BODY
Packit Service 706eca
Packit Service 706eca
# _AC_CHECK_DECLS(SYMBOL, ACTION-IF_FOUND, ACTION-IF-NOT-FOUND,
Packit Service 706eca
#                 INCLUDES)
Packit Service 706eca
# -------------------------------------------------------------
Packit Service 706eca
# Helper to AC_CHECK_DECLS, which generates the check for a single
Packit Service 706eca
# SYMBOL with INCLUDES, performs the AC_DEFINE, then expands
Packit Service 706eca
# ACTION-IF-FOUND or ACTION-IF-NOT-FOUND.
Packit Service 706eca
m4_define([_AC_CHECK_DECLS],
Packit Service 706eca
[AC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])]dnl
Packit Service 706eca
[AC_DEFINE_UNQUOTED(AS_TR_CPP(m4_bpatsubst(HAVE_DECL_[$1],[ *(.*])),
Packit Service 706eca
  [$ac_have_decl],
Packit Service 706eca
  [Define to 1 if you have the declaration of `$1',
Packit Service 706eca
   and to 0 if you don't.])]dnl
Packit Service 706eca
[m4_ifvaln([$2$3], [AS_IF([test $ac_have_decl = 1], [$2], [$3])])])
Packit Service 706eca
Packit Service 706eca
])
Packit Service 706eca
Packit Service 706eca
dnl If flex/lex are not found, the top level configure sets LEX to
Packit Service 706eca
dnl "/path_to/missing flex".  When AC_PROG_LEX tries to find the flex
Packit Service 706eca
dnl output file, it calls $LEX to do so, but the current lightweight
Packit Service 706eca
dnl "missing" won't create a file.  This results in an error.
Packit Service 706eca
dnl Avoid calling the bulk of AC_PROG_LEX when $LEX is "missing".
Packit Service 706eca
AC_DEFUN_ONCE([AC_PROG_LEX],
Packit Service 706eca
[AC_CHECK_PROGS(LEX, flex lex, :)
Packit Service 706eca
case "$LEX" in
Packit Service 706eca
  :|*"missing "*) ;;
Packit Service 706eca
  *) _AC_PROG_LEX_YYTEXT_DECL ;;
Packit Service 706eca
esac])
Packit Service 706eca
Packit Service 706eca
])