Your config-ml.in change broke cris-axis-elf newlib multilib build

Jeff Johnston jjohnstn@redhat.com
Tue Apr 24 13:49:00 GMT 2007


Thanks Steve.  I have just checked in your patch to newlib.  I didn't 
see the note regarding the script to regenerate - I just used my own 
script I always use to regenerate all of newlib.  The patched newlib 
built fine for i686-linux.

-- Jeff J.

Steve Ellcey wrote:
> I have added some mailing lists to this conversation which started on
> the gcc-patches mailing list at:
>
> http://gcc.gnu.org/ml/gcc-patches/2007-04/msg00875.html
>
> But to recap, Hans-Peter Nilsson reported that my "libtool update
> preparation" patch broke the cris-elf newlib build.  Ralf Wildenhues
> diagnosed the problem as a known autoconf 2.59 bug that is fixed in 2.60
> and pointed us to a patch for the problem that he had created at:
>
> http://thread.gmane.org/gmane.comp.sysutils.autoconf.general/8932/focus=8954
>
> This patch basically overrides the broken 2.59 macro with the fixed 2.6
> one.  I have successfully reproduced the problem and then applied the
> patch and gotten the build to work so I would like to propose that we
> check in Ralf's patch to newlib.  I considered whether we should put
> confsubdir.m4 in the config directory instead of the newlib directory in
> case any other tools needed it but none of the 106 newlib Makefile.am
> files list the config directory in their ACLOCAL_AMFLAGS flags and I
> don't want to change them all so I dropped that idea.
>
> Here is the patch as Ralf proposed it and as I tested it, I also used
> the script from Ralf's email to regenerate files.
>
> Does a newlib maintainer want to approve it?  Do any of the
> libtool/toplevel maintainers want to weigh in on the fix?  Ralf, if this
> is approved, do you want to check it in yourself (if you can) or do you
> want me to do that?
>
> newlib/ChangeLog:
> 2007-02-02  Ralf Wildenhues  <Ralf.Wildenhues <at> gmx.de>
>
> 	* confsubdir.m4 (AC_CONFIG_SUBDIRS, _AC_OUTPUT_SUBDIRS): New
> 	file.  Override Autoconf-2.59's version of these macros with
> 	fixed handling of multiple adjacent whitespace in arguments.
> 	* aclocal.m4: Regenerated forcefully.
> 	* configure: Ditto.
> 	* Makefile.in: Ditto.
> 	* libc/Makefile.in: Ditto.
> 	* libc/aclocal.m4: Ditto.
> 	* libc/configure: Ditto.
> 	* libc/argz/Makefile.in: Ditto.
> 	* libc/ctype/Makefile.in: Ditto.
> 	* libc/errno/Makefile.in: Ditto.
> 	* libc/iconv/Makefile.in: Ditto.
> 	* libc/iconv/ccs/Makefile.in: Ditto.
> 	* libc/iconv/ccs/binary/Makefile.in: Ditto.
> 	* libc/iconv/ces/Makefile.in: Ditto.
> 	* libc/iconv/lib/Makefile.in: Ditto.
> 	* libc/locale/Makefile.in: Ditto.
> 	* libc/machine/Makefile.in: Ditto.
> 	* libc/machine/aclocal.m4: Ditto.
> 	* libc/machine/configure: Ditto.
> 	* libc/misc/Makefile.in: Ditto.
> 	* libc/posix/Makefile.in: Ditto.
> 	* libc/reent/Makefile.in: Ditto.
> 	* libc/search/Makefile.in: Ditto.
> 	* libc/signal/Makefile.in: Ditto.
> 	* libc/stdio/Makefile.in: Ditto.
> 	* libc/stdio64/Makefile.in: Ditto.
> 	* libc/stdlib/Makefile.in: Ditto.
> 	* libc/string/Makefile.in: Ditto.
> 	* libc/sys/Makefile.in: Ditto.
> 	* libc/sys/aclocal.m4: Ditto.
> 	* libc/sys/configure: Ditto.
> 	* libc/sys/linux/Makefile.in: Ditto.
> 	* libc/sys/linux/aclocal.m4: Ditto.
> 	* libc/sys/linux/configure: Ditto.
> 	* libc/sys/linux/argp/Makefile.in: Ditto.
> 	* libc/sys/linux/cmath/Makefile.in: Ditto.
> 	* libc/sys/linux/dl/Makefile.in: Ditto.
> 	* libc/sys/linux/iconv/Makefile.in: Ditto.
> 	* libc/sys/linux/intl/Makefile.in: Ditto.
> 	* libc/sys/linux/linuxthreads/Makefile.in: Ditto.
> 	* libc/sys/linux/linuxthreads/aclocal.m4: Ditto.
> 	* libc/sys/linux/linuxthreads/configure: Ditto.
> 	* libc/sys/linux/linuxthreads/machine/Makefile.in: Ditto.
> 	* libc/sys/linux/linuxthreads/machine/aclocal.m4: Ditto.
> 	* libc/sys/linux/linuxthreads/machine/configure: Ditto.
> 	* libc/sys/linux/machine/Makefile.in: Ditto.
> 	* libc/sys/linux/machine/aclocal.m4: Ditto.
> 	* libc/sys/linux/machine/configure: Ditto.
> 	* libc/sys/linux/net/Makefile.in: Ditto.
> 	* libc/sys/linux/stdlib/Makefile.in: Ditto.
> 	* libc/syscalls/Makefile.in: Ditto.
> 	* libc/time/Makefile.in: Ditto.
> 	* libc/unix/Makefile.in: Ditto.
> 	* libm/Makefile.in: Ditto.
> 	* libm/aclocal.m4: Ditto.
> 	* libm/configure: Ditto.
> 	* libm/common/Makefile.in: Ditto.
> 	* libm/machine/Makefile.in: Ditto.
> 	* libm/machine/aclocal.m4: Ditto.
> 	* libm/machine/configure: Ditto.
> 	* libm/math/Makefile.in: Ditto.
> 	* libm/mathfp/Makefile.in: Ditto.
>
>
> --- /dev/null	2007-04-20 14:44:46.000000000 -0700
> +++ confsubdir.m4	2007-04-20 14:44:00.000000000 -0700
> @@ -0,0 +1,127 @@
> +dnl Fix Autoconf-2.59 AC_CONFIG_SUBDIRS whitespace mangling,
> +dnl by overriding the broken internal Autoconf macro with a
> +dnl backport of the 2.60 fix.
> +dnl
> +dnl This file should be a no-op for Autoconf versions != 2.59.
> +dnl It can be removed once the complete tree has moved to a
> +dnl newer Autoconf version.
> +
> +dnl m4_PACKAGE_VERSION is an undocumented Autoconf macro.
> +dnl We use it because this fix is intended for 2.59 only.
> +dnl A feature test for the broken AC_CONFIG_SUBDIRS instead
> +dnl would be better but is tricky.
> +dnl
> +dnl Use ifdef/ifelse over m4_ifdef/m4_ifelse to be clean for 2.13.
> +dnl Redefine AC_CONFIG_SUBDIRS so aclocal pulls in this file
> +dnl when needed.
> +
> +ifdef([m4_PACKAGE_VERSION],
> +[ifelse(m4_PACKAGE_VERSION, [2.59], [
> +
> +dnl Redefine AC_CONFIG_SUBDIRS so this file is picked up if needed.
> +AC_DEFUN([AC_CONFIG_SUBDIRS], defn([AC_CONFIG_SUBDIRS]))
> +
> +dnl Override the broken macro.
> +# _AC_OUTPUT_SUBDIRS
> +# ------------------
> +# This is a subroutine of AC_OUTPUT, but it does not go into
> +# config.status, rather, it is called after running config.status.
> +m4_define([_AC_OUTPUT_SUBDIRS],
> +[
> +#
> +# CONFIG_SUBDIRS section, as fixed in confsubdir.m4.
> +#
> +if test "$no_recursion" != yes; then
> +
> +  # Remove --cache-file and --srcdir arguments so they do not pile up.
> +  ac_sub_configure_args=
> +  ac_prev=
> +  eval "set x $ac_configure_args"
> +  shift
> +  for ac_arg
> +  do
> +    if test -n "$ac_prev"; then
> +      ac_prev=
> +      continue
> +    fi
> +    case $ac_arg in
> +    -cache-file | --cache-file | --cache-fil | --cache-fi \
> +    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
> +      ac_prev=cache_file ;;
> +    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
> +    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
> +    | --c=*)
> +      ;;
> +    --config-cache | -C)
> +      ;;
> +    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
> +      ac_prev=srcdir ;;
> +    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
> +      ;;
> +    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
> +      ac_prev=prefix ;;
> +    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
> +      ;;
> +    *)
> +      case $ac_arg in
> +      *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
> +      esac
> +      ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;;
> +    esac
> +  done
> +
> +  # Always prepend --prefix to ensure using the same prefix
> +  # in subdir configurations.
> +  ac_arg="--prefix=$prefix"
> +  case $ac_arg in
> +  *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
> +  esac
> +  ac_sub_configure_args="$ac_arg $ac_sub_configure_args"
> +
> +  ac_popdir=`pwd`
> +  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
> +
> +    # Do not complain, so a configure script can configure whichever
> +    # parts of a large source tree are present.
> +    test -d "$srcdir/$ac_dir" || continue
> +
> +    AC_MSG_NOTICE([configuring in $ac_dir])
> +    AS_MKDIR_P(["$ac_dir"])
> +    _AC_SRCPATHS(["$ac_dir"])
> +
> +    cd "$ac_dir"
> +
> +    # Check for guested configure; otherwise get Cygnus style configure.
> +    if test -f "$ac_srcdir/configure.gnu"; then
> +      ac_sub_configure=$ac_srcdir/configure.gnu
> +    elif test -f "$ac_srcdir/configure"; then
> +      ac_sub_configure=$ac_srcdir/configure
> +    elif test -f "$ac_srcdir/configure.in"; then
> +      # This should be Cygnus configure.
> +      ac_sub_configure=$ac_aux_dir/configure
> +    else
> +      AC_MSG_WARN([no configuration information is in $ac_dir])
> +      ac_sub_configure=
> +    fi
> +
> +    # The recursion is here.
> +    if test -n "$ac_sub_configure"; then
> +      # Make the cache file name correct relative to the subdirectory.
> +      case $cache_file in
> +      [[\\/]]* | ?:[[\\/]]* ) ac_sub_cache_file=$cache_file ;;
> +      *) # Relative path.
> +	ac_sub_cache_file=$ac_top_builddir$cache_file ;;
> +      esac
> +
> +      AC_MSG_NOTICE([running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir])
> +      # The eval makes quoting arguments work.
> +      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
> +	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
> +	AC_MSG_ERROR([$ac_sub_configure failed for $ac_dir])
> +    fi
> +
> +    cd "$ac_popdir"
> +  done
> +fi
> +])# _AC_OUTPUT_SUBDIRS
> +])])
>   



More information about the Newlib mailing list