autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "has changed since the previous run"


From: Ralf Wildenhues
Subject: Re: "has changed since the previous run"
Date: Fri, 2 Feb 2007 20:34:10 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

* quoting myself:
> 
> I should have a working patch soon which adds a
> macro file to newlib which will allow you to continue to use stock 2.59.

Please try this patch for newlib.

I need some help if I should prepare a patch for all of GCC + binutils:
For which part of the tree can I refer to the shared config/ directory,
and which subpackages should each get their own copy of confsubdir.m4?
How should I split up patches and where to send all the individual bits?
Do you want to see the diffs for generated files, as attached?

The regeneration of generated files needs to be forced here, because all
that is added is an input file to aclocal.  I rebuilt like this:

  for file in `find newlib -name configure`
  do
    cd `dirname $file`
    set x `sed -n '/ACLOCAL_AMFLAGS/s/[^=]*=//p' < Makefile.am`
    shift
    aclocal-1.9 --force "$@"
    autoconf
    automake-1.9
    cd -
  done

There is (at least) one open question to me in confsubdir.m4: as of now,
the AC_DEFUN([AC_CONFIG_SUBDIRS],...) is inside the test for 2.59; that
means, as soon as you move to 2.60, it will be invisible, and automake
won't pick up confsubdir.m4 to put in EXTRA_DIST any more.  If you still
want the macro file distributed (for example, so that people downloading
a 2.60-generated tarball can use 2.59 on it), then the AC_DEFUN needs to
be unconditional.  Hmm.  Probably not a problem for binutils.

Cheers,
Ralf

newlib/ChangeLog:
2007-02-02  Ralf Wildenhues  <address@hidden>

        * 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-01-29 23:28:10.740347250 +0100
+++ newlib/confsubdir.m4        2007-02-02 20:13:21.000000000 +0100
@@ -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
+])])

Attachment: confsubdir-newlib-gen.diff.gz
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]