<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.sysutils.autoconf.patches">
    <title>gmane.comp.sysutils.autoconf.patches</title>
    <link>http://blog.gmane.org/gmane.comp.sysutils.autoconf.patches</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7921"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7920"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7919"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7918"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7917"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7915"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7914"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7913"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7912"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7911"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7910"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7909"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7908"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7907"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7906"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7905"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7904"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7903"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7902"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7901"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7921">
    <title>Re: [PATCH] general: deprecate 'configure.in' as autoconf input</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7921</link>
    <description>&lt;pre&gt;Thanks Eric nad Paul for your feedback.  I've pushed the patch to master.

Regards,
  Stefano


&lt;/pre&gt;</description>
    <dc:creator>Stefano Lattarini</dc:creator>
    <dc:date>2012-05-22T22:13:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7920">
    <title>Re: [PATCH] general: deprecate 'configure.in' as autoconf input</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7920</link>
    <description>&lt;pre&gt;
Agreed.  Let's go for it.  We still need to figure out if it is worth
sharing the .pm files in gnulib as a common upstream to both autoconf
and automake, but I haven't had time to look into that yet.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-05-22T16:29:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7919">
    <title>Re: [PATCH] general: deprecate 'configure.in' as autoconf input</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7919</link>
    <description>&lt;pre&gt;
This change is fine with me.  The only package I know that's
still using configure.in is Emacs, and I can rename that.


&lt;/pre&gt;</description>
    <dc:creator>Paul Eggert</dc:creator>
    <dc:date>2012-05-22T16:24:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7918">
    <title>Re: [PATCH] general: deprecate 'configure.in' as autoconf input</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7918</link>
    <description>&lt;pre&gt;Ping?

Regards,
  Stefano


&lt;/pre&gt;</description>
    <dc:creator>Stefano Lattarini</dc:creator>
    <dc:date>2012-05-22T10:29:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7917">
    <title>[PATCH] general: deprecate 'configure.in' as autoconf input</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7917</link>
    <description>&lt;pre&gt;It has been years since that has been deprecated in the documentation,
in favour of 'configure.ac':

  Previous versions of Autoconf promoted the name configure.in, which
  is somewhat ambiguous (the tool needed to process this file is not
  described by its extension), and introduces a slight confusion with
  config.h.in and so on (for which '.in' means "to be processed by
  configure"). Using configure.ac is now preferred.

It's now time to start giving runtime warning about the use of
'configure.in', so that support for it can be removed in future
versions of autoconf/automake.

* lib/Autom4te/Configure_ac.pm: Issue a warning in the 'obsolete'
category if 'configure.in' is detected.  Since this module is synced
from Automake, this change is to be backported there (and will be
soon).
* doc/autoconf.texi: Update.
* tests/tools.at: Adjust to avoid spurious failures.

Signed-off-by: Stefano Lattarini &amp;lt;stefano.lattarini&amp;lt; at &amp;gt;gmail.com&amp;gt;
---

 OK to apply?  I plan to backport the change done to Configure_ac.pm
 to the Automake's master copy as soon as this patch is accepted into
 the autoconf repository.

 Regards,
   Stefano

 NEWS                         |    2 ++
 doc/autoconf.texi            |    9 +++++----
 lib/Autom4te/Configure_ac.pm |   19 ++++++++++---------
 tests/tools.at               |   28 ++++++++++++++--------------
 4 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/NEWS b/NEWS
index 61e3bd2..5429698 100644
--- a/NEWS
+++ b/NEWS
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,6 +2,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; GNU Autoconf NEWS - User visible changes.
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
+** The use of the long-deprecated name 'configure.in' for the autoconf
+   input file now elicits a warning in the 'obsolete' category.
 
 * Noteworthy changes in release 2.69 (2012-04-24) [stable]
 
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 34ca213..bc70e55 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1004,10 +1004,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; a file called &amp;lt; at &amp;gt;file{config.log} containing any messages produced by
 compilers, to help debugging if &amp;lt; at &amp;gt;command{configure} makes a mistake.
 &amp;lt; at &amp;gt;end itemize
 
-&amp;lt; at &amp;gt;cindex &amp;lt; at &amp;gt;file{configure.in}
 &amp;lt; at &amp;gt;cindex &amp;lt; at &amp;gt;file{configure.ac}
-To create a &amp;lt; at &amp;gt;command{configure} script with Autoconf, you need to write an
-Autoconf input file &amp;lt; at &amp;gt;file{configure.ac} (or &amp;lt; at &amp;gt;file{configure.in}) and run
+To create a &amp;lt; at &amp;gt;command{configure} script with Autoconf, you need
+to write an Autoconf input file &amp;lt; at &amp;gt;file{configure.ac} and run
 &amp;lt; at &amp;gt;command{autoconf} on it.  If you write your own feature tests to
 supplement those that come with Autoconf, you might also write files
 called &amp;lt; at &amp;gt;file{aclocal.m4} and &amp;lt; at &amp;gt;file{acsite.m4}.  If you use a C header
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1095,12 +1094,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Programming}.  The &amp;lt; at &amp;gt;command{autoscan} program can give you a good start
 in writing &amp;lt; at &amp;gt;file{configure.ac} (&amp;lt; at &amp;gt;pxref{autoscan Invocation}, for more
 information).
 
+&amp;lt; at &amp;gt;cindex &amp;lt; at &amp;gt;file{configure.in}
 Previous versions of Autoconf promoted the name &amp;lt; at &amp;gt;file{configure.in},
 which is somewhat ambiguous (the tool needed to process this file is not
 described by its extension), and introduces a slight confusion with
 &amp;lt; at &amp;gt;file{config.h.in} and so on (for which &amp;lt; at &amp;gt;samp{.in} means ``to be
 processed by &amp;lt; at &amp;gt;command{configure}'').  Using &amp;lt; at &amp;gt;file{configure.ac} is now
-preferred.
+preferred, while the use of &amp;lt; at &amp;gt;file{configure.in} will cause warnings
+from &amp;lt; at &amp;gt;command{autoconf}.
 
 &amp;lt; at &amp;gt;menu
 * Shell Script Compiler::       Autoconf as solution of a problem
diff --git a/lib/Autom4te/Configure_ac.pm b/lib/Autom4te/Configure_ac.pm
index 924b23c..854ee0d 100644
--- a/lib/Autom4te/Configure_ac.pm
+++ b/lib/Autom4te/Configure_ac.pm
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -75,19 +75,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sub find_configure_ac (;&amp;lt; at &amp;gt;)
   my $configure_in =
     File::Spec-&amp;gt;canonpath (File::Spec-&amp;gt;catfile ($directory, 'configure.in'));
 
-  if (-f $configure_ac)
+  if (-f $configure_in)
     {
-      if (-f $configure_in)
+      msg ('obsolete', "autoconf input should be named 'configure.ac'," .
+                       " not 'configure.in'");
+      if (-f $configure_ac)
 {
   msg ('unsupported',
        "'$configure_ac' and '$configure_in' both present.\n"
        . "proceeding with '$configure_ac'");
+          return $configure_ac
 }
-      return $configure_ac
-    }
-  elsif (-f $configure_in)
-    {
-      return $configure_in;
+      else
+        {
+          return $configure_in;
+        }
     }
   return $configure_ac;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -102,8 +104,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Like C&amp;lt;find_configure_ac&amp;gt;, but fail if neither is present.
 sub require_configure_ac (;$)
 {
   my $res = find_configure_ac (&amp;lt; at &amp;gt;_);
-  fatal "'configure.ac' or 'configure.in' is required"
-    unless -f $res;
+  fatal "'configure.ac' is required" unless -f $res;
   return $res
 }
 
diff --git a/tests/tools.at b/tests/tools.at
index 31d4aad..5a9ee63 100644
--- a/tests/tools.at
+++ b/tests/tools.at
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1135,7 +1135,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AT_SETUP([autoupdating with aclocal and m4&amp;lt; at &amp;gt;&amp;amp;t&amp;lt; at &amp;gt;_include])
 AT_CHECK([aclocal --version || exit 77], [], [ignore], [ignore])
 
 mkdir m4 aclocal
-AT_DATA([configure.in],
+AT_DATA([configure.ac],
 [[AC_INIT(x,0)
 AC_UNCHANGED_MACRO
 AC_OLD_MACRO
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1169,7 +1169,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AT_CHECK([automake --version || exit 77], [], [stdout], [ignore])
 AT_CHECK([[grep '[1-9]\.[0-9]' stdout || exit 77]], [], [ignore])
 AT_CHECK([test ! -f $HOME/.autom4te.cfg || exit 77], [], [ignore], [ignore])
 
-AT_DATA([configure.in],
+AT_DATA([configure.ac],
 [[AC_INIT(GNU foo, 1.0)
 AM_INIT_AUTOMAKE
 AC_CONFIG_FILES([Makefile])
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1294,9 +1294,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; do
   export TMPDIR
 
   # skip if we cannot create such a file or directory
-  AT_CHECK([mkdir "$dir" "$TMPDIR" &amp;amp;&amp;amp; touch "$file.in" || exit 77])
+  AT_CHECK([mkdir "$dir" "$TMPDIR" &amp;amp;&amp;amp; touch "$file.ac" || exit 77])
 
-  cat &amp;gt;"$file.in" &amp;lt;&amp;lt;'END'
+  cat &amp;gt;"$file.ac" &amp;lt;&amp;lt;'END'
 [AC_INIT(x,0)
 m4&amp;lt; at &amp;gt;&amp;amp;t&amp;lt; at &amp;gt;_include([foo.m4])
 AC_CONFIG_HEADERS([config.h:config.hin])
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1307,20 +1307,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; END
 [AC_DEFUN([AC_MACRO], [echo hi])]
 END
 
-  AT_CHECK_AUTOHEADER([-B "$dir" "$file.in"])
-  AT_CHECK_AUTOHEADER([--force -I "$dir" "$file.in"])
-  AT_CHECK_AUTOUPDATE([-B "$dir" "$file.in"])
-  AT_CHECK_AUTOUPDATE([--force -I "$dir" "$file.in"])
-  AT_CHECK_AUTOUPDATE([-B "$dir" - &amp;lt; "$file.in"], [], [ignore])
-  AT_CHECK_AUTOCONF([-B "$dir" -o "$file" "$file.in"])
-  AT_CHECK_AUTOCONF([-I "$dir" -o "$file" "$file.in"])
+  AT_CHECK_AUTOHEADER([-B "$dir" "$file.ac"])
+  AT_CHECK_AUTOHEADER([--force -I "$dir" "$file.ac"])
+  AT_CHECK_AUTOUPDATE([-B "$dir" "$file.ac"])
+  AT_CHECK_AUTOUPDATE([--force -I "$dir" "$file.ac"])
+  AT_CHECK_AUTOUPDATE([-B "$dir" - &amp;lt; "$file.ac"], [], [ignore])
+  AT_CHECK_AUTOCONF([-B "$dir" -o "$file" "$file.ac"])
+  AT_CHECK_AUTOCONF([-I "$dir" -o "$file" "$file.ac"])
   # In autoconf, these exercise a slightly different code path:
-  AT_CHECK_AUTOCONF([--prepend-include="$dir" -o "$file" "$file.in"])
-  AT_CHECK_AUTOCONF([--include="$dir" -o "$file" "$file.in"])
+  AT_CHECK_AUTOCONF([--prepend-include="$dir" -o "$file" "$file.ac"])
+  AT_CHECK_AUTOCONF([--include="$dir" -o "$file" "$file.ac"])
   AT_CHECK([autoscan -B "$dir"], [], [], [ignore])
   AT_CHECK([autoscan --force -I "$dir"], [], [], [ignore])
   # autoreconf requires a sane input file name.  Also, disable aclocal.
-  mv -f "$file.in" configure.in
+  mv -f "$file.ac" configure.ac
   AT_DATA([aclocal.m4])
   AT_CHECK([autoreconf -B "$dir"])
   AT_CHECK([autoreconf --force -I "$dir"])
&lt;/pre&gt;</description>
    <dc:creator>Stefano Lattarini</dc:creator>
    <dc:date>2012-05-19T08:25:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7915">
    <title>Re: [PATCH] Improve cross-compilation guesses for glibc system hosts.</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7915</link>
    <description>&lt;pre&gt;

Thanks; pushed.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-05-03T16:55:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7914">
    <title>[PATCH] doc: fix another bad &lt; at &gt;xref</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7914</link>
    <description>&lt;pre&gt;Obviously, I didn't fully test commit f35498d.

* doc/autoconf.texi (Limitations of Builtins): Add a comma.

Signed-off-by: Eric Blake &amp;lt;eblake&amp;lt; at &amp;gt;redhat.com&amp;gt;
---
 doc/autoconf.texi |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 34ca213..393e38f 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17874,7 +17874,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Limitations of Builtins
 &amp;lt; at &amp;gt;samp{-}. With Solaris &amp;lt; at &amp;gt;command{ksh}, it is possible to use &amp;lt; at &amp;gt;code{print
 -r --} for this role instead.

-&amp;lt; at &amp;gt;xref{echo, , Limitations of Shell Builtins} for a discussion of
+&amp;lt; at &amp;gt;xref{echo, , Limitations of Shell Builtins}, for a discussion of
 portable alternatives to both &amp;lt; at &amp;gt;command{printf} and &amp;lt; at &amp;gt;command{echo}.


&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-05-03T15:29:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7913">
    <title>[PATCH] Improve cross-compilation guesses for glibc system hosts.</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7913</link>
    <description>&lt;pre&gt;Hi,

Paul and Eric suggested that improving the cross-compilation guesses
for targets that are glibc systems would be welcome here [1][2], so here
is a proposed patch.

This patch modifies the cross-compilation behaviour of
  AC_FUNC_CHOWN
  AC_FUNC_GETGROUPS
  AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
  AC_FUNC_MALLOC
  AC_FUNC_MMAP
  AC_FUNC_REALLOC
  AC_FUNC_STRCOLL
so that when the target is a glibc system (or, in case of AC_FUNC_MALLOC
and AC_FUNC_REALLOC, any known "good" Unix system), the guess is
"yes it works" rather than "guessing no".

This is important because some of these macros are used in Gnulib, and
in case of "guessing no" Gnulib provides extra workaround code, and
  1) Generally, when targetting embedded systems, code size should be
     minimized,
  2) In [3], unnecessary workaround code will look like a Glibc bug.

This patch also changes the configure output to "guessing yes" or
"guessing no" in a case where the ac_cv_* variable is undocumented.

[1] http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00010.html
[2] http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00013.html
[3] http://sourceware.org/glibc/wiki/Testing/Gnulib


This patch was tested as follows: The simple configure.ac file
=============== configure.ac ==================
AC_INIT([dummy], [0])
AC_FUNC_CHOWN
AC_FUNC_GETGROUPS
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
AC_FUNC_MALLOC
AC_FUNC_MMAP
AC_FUNC_REALLOC
AC_FUNC_STRCOLL
AC_OUTPUT
===============================================

produces this output when not cross-compiling:

$ ./configure --host=x86_64-pc-linux-gnu
configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu
checking for x86_64-pc-linux-gnu-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /arch/x86-linux/gnu/bin/grep
checking for egrep... /arch/x86-linux/gnu/bin/grep -E
checking for uid_t in sys/types.h... yes
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for unistd.h... (cached) yes
checking for working chown... yes
checking type of array argument to getgroups... gid_t
checking for size_t... yes
checking for getgroups... yes
checking for working getgroups... yes
checking whether lstat correctly handles trailing slash... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for working strcoll... yes
configure: creating ./config.status

When cross-compiling it produces this before the patch:

$ ./configure --host=x86_64-pc-linux-gnu --build=x86_64-unknown-linux-gnu
configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu
checking for x86_64-pc-linux-gnu-gcc... no
checking for gcc... gcc
configure: WARNING: using cross tools not prefixed with host triplet
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /arch/x86-linux/gnu/bin/grep
checking for egrep... /arch/x86-linux/gnu/bin/grep -E
checking for uid_t in sys/types.h... yes
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for unistd.h... (cached) yes
checking for working chown... no
checking type of array argument to getgroups... gid_t
checking for size_t... yes
checking for getgroups... yes
checking for working getgroups... no
checking whether lstat correctly handles trailing slash... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... no
checking for working strcoll... no
configure: creating ./config.status

and this output after the patch:

$ ./configure --host=x86_64-pc-linux-gnu --build=x86_64-unknown-linux-gnu
configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu
checking for x86_64-pc-linux-gnu-gcc... no
checking for gcc... gcc
configure: WARNING: using cross tools not prefixed with host triplet
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /arch/x86-linux/gnu/bin/grep
checking for egrep... /arch/x86-linux/gnu/bin/grep -E
checking for uid_t in sys/types.h... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for unistd.h... (cached) yes
checking for working chown... yes
checking type of array argument to getgroups... gid_t
checking for size_t... yes
checking for getgroups... yes
checking for working getgroups... guessing yes
checking whether lstat correctly handles trailing slash... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for working strcoll... yes
configure: creating ./config.status


Patch comes here. The attachment contains the same thing in "git am" format.


Improve cross-compilation guesses for glibc system hosts.

* lib/autoconf/functions.m4 (AC_FUNC_CHOWN): Require AC_CANONICAL_HOST.
When cross-compiling to a glibc system, guess yes.
(AC_FUNC_GETGROUPS): Likewise.
(AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Likewise.
(AC_FUNC_STRCOLL): Likewise.
(_AC_FUNC_MALLOC_IF): Require AC_CANONICAL_HOST. When cross-compiling
to a know Unix system other than AIX and OSF/1, guess yes.
(_AC_FUNC_REALLOC_IF): Likewise.
(AC_FUNC_MMAP): Require AC_CANONICAL_HOST. When cross-compiling to a
system with a Linux kernel, guess yes.

--- lib/autoconf/functions.m4.origWed May  2 22:42:01 2012
+++ lib/autoconf/functions.m4Wed May  2 22:33:44 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -423,6 +423,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AN_FUNCTION([chown], [AC_FUNC_CHOWN])
 AC_DEFUN([AC_FUNC_CHOWN],
 [AC_REQUIRE([AC_TYPE_UID_T])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
 AC_CHECK_HEADERS(unistd.h)
 AC_CACHE_CHECK([for working chown], ac_cv_func_chown_works,
 [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -443,7 +444,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 ]])],
        [ac_cv_func_chown_works=yes],
        [ac_cv_func_chown_works=no],
-       [ac_cv_func_chown_works=no])
+       [case "$host_os" in # ((
+  # Guess yes on glibc systems.
+  *-gnu*) ac_cv_func_chown_works=yes ;;
+  # If we don't know, assume the worst.
+  *)      ac_cv_func_chown_works=no ;;
+esac])
 rm -f conftest.chown
 ])
 if test $ac_cv_func_chown_works = yes; then
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -625,6 +631,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AC_DEFUN([AC_FUNC_GETGROUPS],
 [AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
 AC_CHECK_FUNC(getgroups)
 
 # If we don't yet have getgroups, see if it's in -lbsd.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -643,15 +650,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
        return getgroups (0, 0) == -1;]])],
   [ac_cv_func_getgroups_works=yes],
   [ac_cv_func_getgroups_works=no],
-  [ac_cv_func_getgroups_works=no])
+  [case "$host_os" in # ((
+     # Guess yes on glibc systems.
+     *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
+     # If we don't know, assume the worst.
+     *)      ac_cv_func_getgroups_works="guessing no" ;;
+   esac])
    ])
 else
   ac_cv_func_getgroups_works=no
 fi
-if test $ac_cv_func_getgroups_works = yes; then
-  AC_DEFINE(HAVE_GETGROUPS, 1,
-    [Define to 1 if your system has a working `getgroups' function.])
-fi
+case "$ac_cv_func_getgroups_works" in
+  *yes)
+    AC_DEFINE(HAVE_GETGROUPS, 1,
+      [Define to 1 if your system has a working `getgroups' function.])
+    ;;
+esac
 LIBS=$ac_save_LIBS
 ])# AC_FUNC_GETGROUPS
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -847,7 +861,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # calls lstat a second time when necessary.
 AN_FUNCTION([lstat], [AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
 AC_DEFUN([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
-[AC_CACHE_CHECK(
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+AC_CACHE_CHECK(
        [whether lstat correctly handles trailing slash],
        [ac_cv_func_lstat_dereferences_slashed_symlink],
 [rm -f conftest.sym conftest.file
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -861,7 +876,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
      return lstat ("conftest.sym/", &amp;amp;sbuf) == 0;])],
 [ac_cv_func_lstat_dereferences_slashed_symlink=yes],
 [ac_cv_func_lstat_dereferences_slashed_symlink=no],
-[ac_cv_func_lstat_dereferences_slashed_symlink=no])
+[case "$host_os" in # ((
+   # Guess yes on glibc systems.
+   *-gnu*) ac_cv_func_lstat_dereferences_slashed_symlink=yes ;;
+   # If we don't know, assume the worst.
+   *)      ac_cv_func_lstat_dereferences_slashed_symlink=no ;;
+ esac])
 else
   # If the `ln -s' command failed, then we probably don't even
   # have an lstat function.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -886,6 +906,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # If `malloc (0)' properly handled, run IF-WORKS, otherwise, IF-NOT.
 AC_DEFUN([_AC_FUNC_MALLOC_IF],
 [AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
 AC_CHECK_HEADERS(stdlib.h)
 AC_CACHE_CHECK([for GNU libc compatible malloc], ac_cv_func_malloc_0_nonnull,
 [AC_RUN_IFELSE(
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -899,7 +920,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  [return ! malloc (0);])],
        [ac_cv_func_malloc_0_nonnull=yes],
        [ac_cv_func_malloc_0_nonnull=no],
-       [ac_cv_func_malloc_0_nonnull=no])])
+       [case "$host_os" in # ((
+  # Guess yes on platforms where we know the result.
+  *-gnu* | freebsd* | netbsd* | openbsd* \
+  | hpux* | solaris* | cygwin* | mingw*)
+    ac_cv_func_malloc_0_nonnull=yes ;;
+  # If we don't know, assume the worst.
+  *) ac_cv_func_malloc_0_nonnull=no ;;
+esac])])
 AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2])
 ])# _AC_FUNC_MALLOC_IF
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1199,7 +1227,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # ------------
 AN_FUNCTION([mmap], [AC_FUNC_MMAP])
 AC_DEFUN([AC_FUNC_MMAP],
-[AC_CHECK_HEADERS_ONCE([stdlib.h unistd.h sys/param.h])
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+AC_CHECK_HEADERS_ONCE([stdlib.h unistd.h sys/param.h])
 AC_CHECK_FUNCS([getpagesize])
 AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
 [AC_RUN_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT]
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1340,7 +1369,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 }]])],
        [ac_cv_func_mmap_fixed_mapped=yes],
        [ac_cv_func_mmap_fixed_mapped=no],
-       [ac_cv_func_mmap_fixed_mapped=no])])
+       [case "$host_os" in # ((
+  # Guess yes on platforms where we know the result.
+  linux*) ac_cv_func_mmap_fixed_mapped=yes ;;
+  # If we don't know, assume the worst.
+  *)      ac_cv_func_mmap_fixed_mapped=no ;;
+esac])])
 if test $ac_cv_func_mmap_fixed_mapped = yes; then
   AC_DEFINE([HAVE_MMAP], [1],
     [Define to 1 if you have a working `mmap' system call.])
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1391,6 +1425,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # If `realloc (0, 0)' is properly handled, run IF-WORKS, otherwise, IF-NOT.
 AC_DEFUN([_AC_FUNC_REALLOC_IF],
 [AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
 AC_CHECK_HEADERS(stdlib.h)
 AC_CACHE_CHECK([for GNU libc compatible realloc], ac_cv_func_realloc_0_nonnull,
 [AC_RUN_IFELSE(
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1404,7 +1439,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  [return ! realloc (0, 0);])],
        [ac_cv_func_realloc_0_nonnull=yes],
        [ac_cv_func_realloc_0_nonnull=no],
-       [ac_cv_func_realloc_0_nonnull=no])])
+       [case "$host_os" in # ((
+  # Guess yes on platforms where we know the result.
+  *-gnu* | freebsd* | netbsd* | openbsd* \
+  | hpux* | solaris* | cygwin* | mingw*)
+    ac_cv_func_realloc_0_nonnull=yes ;;
+  # If we don't know, assume the worst.
+  *) ac_cv_func_realloc_0_nonnull=no ;;
+esac])])
 AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2])
 ])# AC_FUNC_REALLOC
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1723,14 +1765,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # ---------------
 AN_FUNCTION([strcoll], [AC_FUNC_STRCOLL])
 AC_DEFUN([AC_FUNC_STRCOLL],
-[AC_CACHE_CHECK(for working strcoll, ac_cv_func_strcoll_works,
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+AC_CACHE_CHECK(for working strcoll, ac_cv_func_strcoll_works,
 [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
   [[return (strcoll ("abc", "def") &amp;gt;= 0 ||
  strcoll ("ABC", "DEF") &amp;gt;= 0 ||
  strcoll ("123", "456") &amp;gt;= 0)]])],
        ac_cv_func_strcoll_works=yes,
        ac_cv_func_strcoll_works=no,
-       ac_cv_func_strcoll_works=no)])
+       [case "$host_os" in # ((
+  # Guess yes on glibc systems.
+  *-gnu*) ac_cv_func_strcoll_works=yes ;;
+  # If we don't know, assume the worst.
+  *)      ac_cv_func_strcoll_works=no ;;
+esac])])
 if test $ac_cv_func_strcoll_works = yes; then
   AC_DEFINE(HAVE_STRCOLL, 1,
     [Define to 1 if you have the `strcoll' function and it is properly
&lt;/pre&gt;</description>
    <dc:creator>Bruno Haible</dc:creator>
    <dc:date>2012-05-02T21:02:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7912">
    <title>[PATCH] maint: drop bz2 tarball</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7912</link>
    <description>&lt;pre&gt;At 2.68b, I asked whether anyone would miss .gz and .bz2 formats.
Consensus was overwhelming that .gz still holds a place in people's
hearts, in spite of .xz compressing to smaller files, but no one
was able to make a convincing argument for .bz2.

* configure.ac (AM_INIT_AUTOMAKE): Drop bzip2; xz wins hands down.

Signed-off-by: Eric Blake &amp;lt;eblake&amp;lt; at &amp;gt;redhat.com&amp;gt;
---

See https://lists.gnu.org/archive/html/autoconf/2012-03/msg00001.html
for the long thread of discussion.

 configure.ac |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 280cc0e..696e513 100644
--- a/configure.ac
+++ b/configure.ac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,8 +26,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AC_CONFIG_SRCDIR([lib/autoconf/autoconf.m4])

 AC_CONFIG_AUX_DIR([build-aux])

-AM_INIT_AUTOMAKE([1.11 dist-bzip2 dist-xz
-readme-alpha no-texinfo.tex std-options])
+AM_INIT_AUTOMAKE([1.11 dist-xz readme-alpha no-texinfo.tex std-options])

 AB_INIT

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-25T02:46:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7911">
    <title>[PATCH] doc: fix bad &lt; at &gt;xref uses</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7911</link>
    <description>&lt;pre&gt;Upstream gnulib maint.mk improvements caught a few issues we
should fix, as well as a few issues in files we copy from
other sources that we will just ignore here.

* doc/autoconf.texi (Generic Programs, Special Shell Variables)
(Limitations of Builtins): Use references correctly.
* cfg.mk
(exclude_file_name_regexp--sc_prohibit_undesirable_word_seq)
(exclude_file_name_regexp--sc_useless_cpp_parens): Add exemptions.
---
 cfg.mk            |    7 ++++---
 doc/autoconf.texi |    8 ++++----
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 3febab0..e79ff55 100644
--- a/cfg.mk
+++ b/cfg.mk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -129,12 +129,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; update-copyright-env = \
 # Prevent incorrect NEWS edits.
 old_NEWS_hash = 54ad39275441a2a3fcbe6182da4f84fb

-exclude_file_name_regexp--sc_prohibit_undesirable_word_seq = ^maint\.mk$$
+exclude_file_name_regexp--sc_prohibit_undesirable_word_seq = \
+  ^(maint\.mk|build-aux/texinfo\.tex)$$
 exclude_file_name_regexp--sc_prohibit_test_minus_ao = \
   ^(maint\.mk|doc/autoconf\.texi)$$
-
 exclude_file_name_regexp--sc_prohibit_atoi_atof = ^doc/autoconf\.texi$$
-exclude_file_name_regexp--sc_useless_cpp_parens = ^build-aux/config\.guess$$
+exclude_file_name_regexp--sc_useless_cpp_parens = \
+  ^(build-aux/config\.guess|doc/standards\.texi)$$
 exclude_file_name_regexp--sc_trailing_blank = ^build-aux/texinfo\.tex$$
 exclude_file_name_regexp--sc_two_space_separator_in_usage = \
   ^build-aux/gnupload$$
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index a629668..34ca213 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4211,7 +4211,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Generic Programs
 &amp;lt; at &amp;gt;end example

 You are strongly encouraged to declare the &amp;lt; at &amp;gt;var{variable} passed to
-&amp;lt; at &amp;gt;code{AC_CHECK_PROG} etc.&amp;lt; at &amp;gt;: as precious, &amp;lt; at &amp;gt;xref{Setting Output Variables},
+&amp;lt; at &amp;gt;code{AC_CHECK_PROG} etc.&amp;lt; at &amp;gt;: as precious.  &amp;lt; at &amp;gt;xref{Setting Output Variables},
 &amp;lt; at &amp;gt;code{AC_ARG_VAR}, for more details.

 &amp;lt; at &amp;gt;anchor{AC_CHECK_PROG}
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16782,7 +16782,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Special Shell Variables

 &amp;lt; at &amp;gt;noindent
 (actually, there is some complication due to bugs in &amp;lt; at &amp;gt;command{unset};
-see &amp;lt; at &amp;gt;pxref{unset, , Limitations of Shell Builtins}).
+&amp;lt; at &amp;gt;pxref{unset, , Limitations of Shell Builtins}).

 &amp;lt; at &amp;gt;item FPATH
 &amp;lt; at &amp;gt;evindex FPATH
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17874,8 +17874,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Limitations of Builtins
 &amp;lt; at &amp;gt;samp{-}. With Solaris &amp;lt; at &amp;gt;command{ksh}, it is possible to use &amp;lt; at &amp;gt;code{print
 -r --} for this role instead.

-For a discussion of portable alternatives to both &amp;lt; at &amp;gt;command{printf}
-and &amp;lt; at &amp;gt;command{echo}, &amp;lt; at &amp;gt;xref{echo, , Limitations of Shell Builtins}.
+&amp;lt; at &amp;gt;xref{echo, , Limitations of Shell Builtins} for a discussion of
+portable alternatives to both &amp;lt; at &amp;gt;command{printf} and &amp;lt; at &amp;gt;command{echo}.


 &amp;lt; at &amp;gt;item &amp;lt; at &amp;gt;command{pwd}
&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-25T02:13:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7910">
    <title>[PATCH] maint: resync files from upstream</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7910</link>
    <description>&lt;pre&gt;The files in lib/Autom4te/ are intentionally not synced at this
point, since this recent Automake patch:
https://lists.gnu.org/archive/html/automake-patches/2012-03/msg00111.html

was buggy regarding '-' as stdout, and also exposes some latent
bugs in autoconf where we use raw 'open' instead of XFile::open.

* build-aux/announce-gen: Resync via 'make fetch'.
* build-aux/config.sub: Likewise.
* build-aux/git-version-gen: Likewise.
* build-aux/gnupload: Likewise.
* build-aux/move-if-change: Likewise.
* build-aux/texinfo.tex: Likewise.
* doc/standards.texi: Likewise.
* maint.mk: Likewise.
---

Ultimately, I want to fix the bugs in XFile.pm, and in autoconf's
improper use of raw 'open', but that can wait until after autoconf
2.69 and automake 1.12, as it may prove a bit disruptive.

 build-aux/announce-gen    |    5 +-
 build-aux/config.sub      |    8 +++-
 build-aux/git-version-gen |    5 +-
 build-aux/gnupload        |    2 +-
 build-aux/move-if-change  |    2 +-
 build-aux/texinfo.tex     |  101 +++++++++++++++++++++++++++++++-------------
 doc/standards.texi        |   27 +++++++++---
 maint.mk                  |   14 +++++-
 8 files changed, 118 insertions(+), 46 deletions(-)

diff --git a/build-aux/announce-gen b/build-aux/announce-gen
index 3ca90a9..8c6ed36 100755
--- a/build-aux/announce-gen
+++ b/build-aux/announce-gen
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; eval '(exit $?0)' &amp;amp;&amp;amp; eval 'exec perl -wS "$0" ${1+"$&amp;lt; at &amp;gt;"}'
     if 0;
 # Generate a release announcement message.

-my $VERSION = '2012-01-06 07:46'; # UTC
+my $VERSION = '2012-04-19 14:36'; # UTC
 # The definition above must lie within the first 8 lines in order
 # for the Emacs time-stamp write hook (at end) to update it.
 # If you change this file with Emacs, please let the write hook
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,7 +30,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; use strict;

 use Getopt::Long;
 use Digest::MD5;
-use Digest::SHA1;
+eval { require Digest::SHA; }
+  or eval 'use Digest::SHA1';
 use POSIX qw(strftime);

 (my $ME = $0) =~ s|.*/||;
diff --git a/build-aux/config.sub b/build-aux/config.sub
index c894da4..59bb593 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4,7 +4,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
 #   2011, 2012 Free Software Foundation, Inc.

-timestamp='2012-02-10'
+timestamp='2012-04-18'

 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -225,6 +225,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; case $os in
 -isc*)
 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 ;;
+-lynx*178)
+os=-lynxos178
+;;
+-lynx*5)
+os=-lynxos5
+;;
 -lynx*)
 os=-lynxos
 ;;
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index d5542a2..0fa9063 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,6 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #!/bin/sh
 # Print a version string.
-scriptversion=2012-01-06.07; # UTC
+scriptversion=2012-03-18.17; # UTC

 # Copyright (C) 2007-2012 Free Software Foundation, Inc.
 #
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -92,6 +92,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Options:

 Running without arguments will suffice in most cases."

+prefix=v
+
 while test $# -gt 0; do
   case $1 in
     --help) echo "$usage"; exit 0;;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -120,7 +122,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; if test -z "$tarball_version_file"; then
 fi

 tag_sed_script="${tag_sed_script:-s/x/x/}"
-prefix="${prefix:-v}"

 nl='
 '
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 51e17c6..b71ddfd 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

 scriptversion=2012-01-15.15; # UTC

-# Copyright (C) 2004-2010, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/build-aux/move-if-change b/build-aux/move-if-change
index 4d01447..8cae2b3 100755
--- a/build-aux/move-if-change
+++ b/build-aux/move-if-change
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; VERSION='2012-01-06 07:23'; # UTC
 # If you change this file with Emacs, please let the write hook
 # do its job.  Otherwise, update this string manually.

-# Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.

 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index bee50a8..e4dca02 100644
--- a/build-aux/texinfo.tex
+++ b/build-aux/texinfo.tex
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2012-02-28.16}
+\def\texinfoversion{2012-04-06.11}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1372,7 +1372,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; output) for that.)}
       \fi
     \fi
     \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \def\getfilename#1{%
+    \filenamelength=0
+    % If we don't expand the argument now, \skipspaces will get
+    % snagged on things like "&amp;lt; at &amp;gt;value{foo}".
+    \edef\temp{#1}%
+    \expandafter\skipspaces\temp|\relax
+  }
   \ifnum\pdftexversion &amp;lt; 14
     \let \startlink \pdfannotlink
   \else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4445,6 +4451,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \definedummyword\guillemetright
   \definedummyword\guilsinglleft
   \definedummyword\guilsinglright
+  \definedummyword\lbracechar
   \definedummyword\leq
   \definedummyword\minus
   \definedummyword\ogonek
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4457,6 +4464,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \definedummyword\quoteleft
   \definedummyword\quoteright
   \definedummyword\quotesinglbase
+  \definedummyword\rbracechar
   \definedummyword\result
   \definedummyword\textdegree
   %
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4508,6 +4516,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \definedummyword\t
   %
   % Commands that take arguments.
+  \definedummyword\abbr
   \definedummyword\acronym
   \definedummyword\anchor
   \definedummyword\cite
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4519,7 +4528,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \definedummyword\emph
   \definedummyword\env
   \definedummyword\file
+  \definedummyword\image
   \definedummyword\indicateurl
+  \definedummyword\inforef
   \definedummyword\kbd
   \definedummyword\key
   \definedummyword\math
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4566,7 +4577,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   % content at all.  So for index sorting, we map &amp;lt; at &amp;gt;{ and &amp;lt; at &amp;gt;} to strings
   % starting with |, since that ASCII character is between ASCII { and }.
   \def\{{|a}%
+  \def\lbracechar{|a}%
+  %
   \def\}{|b}%
+  \def\rbracechar{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7801,7 +7815,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \fi\fi
 }

-
+% 
 % &amp;lt; at &amp;gt;xref, &amp;lt; at &amp;gt;pxref, and &amp;lt; at &amp;gt;ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
 % node name, #4 the name of the Info file, #5 the name of the printed
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7811,16 +7825,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
 \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
 \def\ref#1{\xrefX[#1,,,,,,,]}
 %
-\newbox\topbox
+\newbox\toprefbox
 \newbox\printedrefnamebox
+\newbox\infofilenamebox
 \newbox\printedmanualbox
 %
 \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
   \unsepspaces
   %
+  % Get args without leading/trailing spaces.
   \def\printedrefname{\ignorespaces #3}%
   \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
   %
+  \def\infofilename{\ignorespaces #4}%
+  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+  %
   \def\printedmanual{\ignorespaces #5}%
   \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
   %
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7853,12 +7872,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
   \ifpdf
     {\indexnofonts
      \turnoffactive
+     \makevalueexpandable
      % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.
+     % etc. don't get their TeX definitions.  This ignores all spaces in
+     % #4, including (wrongly) those in the middle of the filename.
      \getfilename{#4}%
      %
+     % This (wrongly) does not take account of leading or trailing
+     % spaces in #1, which should be ignored.
      \edef\pdfxrefdest{#1}%
-     \txiescapepdf\pdfxrefdest
+     \ifx\pdfxrefdest\empty
+       \def\pdfxrefdest{Top}% no empty targets
+     \else
+       \txiescapepdf\pdfxrefdest  % escape PDF special chars
+     \fi
      %
      \leavevmode
      \startlink attr{/Border [0 0 0]}%
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7891,7 +7918,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
       \printedrefname
     \fi
     %
-    % if the user also gave the printed manual name (fifth arg), append
+    % If the user also gave the printed manual name (fifth arg), append
     % "in MANUALNAME".
     \ifdim \wd\printedmanualbox &amp;gt; 0pt
       \space \putwordin{} \cite{\printedmanual}%
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7906,32 +7933,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
     % this is a loss.  Therefore, we give the text of the node name
     % again, so it is as if TeX is seeing it for the first time.
     % 
-    % Cross-manual reference.  Only include the "Section ``foo'' in" if
-    % the foo is neither missing or Top.  Thus, &amp;lt; at &amp;gt;xref{,,,foo,The Foo Manual}
-    % outputs simply "see The Foo Manual".
     \ifdim \wd\printedmanualbox &amp;gt; 0pt
-      % What is the 7sp about?  The idea is that we also want to omit
-      % the Section part if we would be printing "Top", since they are
-      % clearly trying to refer to the whole manual.  But, this being
-      % TeX, we can't easily compare strings while ignoring the possible
-      % spaces before and after in the input.  By adding the arbitrary
-      % 7sp, we make it much less likely that a real node name would
-      % happen to have the same width as "Top" (e.g., in a monospaced font).
-      % I hope it will never happen in practice.
+      % Cross-manual reference with a printed manual name.
       % 
-      % For the same basic reason, we retypeset the "Top" at every
-      % reference, since the current font is indeterminate.
+      \crossmanualxref{\cite{\printedmanual\unskip}}%
+    %
+    \else\ifdim \wd\infofilenamebox &amp;gt; 0pt
+      % Cross-manual reference with only an info filename (arg 4), no
+      % printed manual name (arg 5).  This is essentially the same as
+      % the case above; we output the filename, since we have nothing else.
       % 
-      \setbox\topbox = \hbox{Top\kern7sp}%
-      \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
-      \ifdim \wd2 &amp;gt; 7sp
-        \ifdim \wd2 = \wd\topbox \else
-          \putwordSection{} ``\printedrefname'' \putwordin{}\space
-        \fi
-      \fi
-      \cite{\printedmanual}%
+      \crossmanualxref{\code{\infofilename\unskip}}%
+    %
     \else
-      % Reference in this manual.
+      % Reference within this manual.
       %
       % _ (for example) has to be the character _ for the purposes of the
       % control sequence corresponding to the node, but it has to expand
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7952,11 +7967,37 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; end
       %
       % output the `page 3'.
       \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi
+    \fi\fi
   \fi
   \endlink
 \endgroup}

+% Output a cross-manual xref to #1.  Used just above (twice).
+% 
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top.  Thus, &amp;lt; at &amp;gt;xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+% 
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input.  By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font).  Hopefully it will never happen in practice.
+% 
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+% 
+\def\crossmanualxref#1{%
+  \setbox\toprefbox = \hbox{Top\kern7sp}%
+  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+  \ifdim \wd2 &amp;gt; 7sp  % nonempty?
+    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
+      \putwordSection{} ``\printedrefname'' \putwordin{}\space
+    \fi
+  \fi
+  #1%
+}
+
 % This macro is called from \xrefX for the `[nodename]' part of xref
 % output.  It's a separate macro only so it can be changed more easily,
 % since square brackets don't work well in some documents.  Particularly
diff --git a/doc/standards.texi b/doc/standards.texi
index 4ba9426..69a400e 100644
--- a/doc/standards.texi
+++ b/doc/standards.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3,7 +3,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 &amp;lt; at &amp;gt;setfilename standards.info
 &amp;lt; at &amp;gt;settitle GNU Coding Standards
 &amp;lt; at &amp;gt;c This date is automagically updated when you save this file:
-&amp;lt; at &amp;gt;set lastupdate February 5, 2012
+&amp;lt; at &amp;gt;set lastupdate April 7, 2012
 &amp;lt; at &amp;gt;c %**end of header

 &amp;lt; at &amp;gt;dircategory GNU organization
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2384,6 +2384,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Formatting

 &amp;lt; at &amp;gt;cindex open brace
 &amp;lt; at &amp;gt;cindex braces, in C source
+&amp;lt; at &amp;gt;cindex function definitions, formatting
 It is important to put the open-brace that starts the body of a C
 function in column one, so that they will start a defun.  Several
 tools look for open-braces in column one to find the beginnings of C
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2430,6 +2431,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Formatting
 &amp;lt; at &amp;gt;dots{}
 &amp;lt; at &amp;gt;end example

+&amp;lt; at &amp;gt;cindex &amp;lt; at &amp;gt;code{struct} types, formatting
+&amp;lt; at &amp;gt;cindex &amp;lt; at &amp;gt;code{enum} types, formatting
+For &amp;lt; at &amp;gt;code{struct} and &amp;lt; at &amp;gt;code{enum} types, likewise put the braces in
+column one, unless the whole contents fits on one line:
+
+&amp;lt; at &amp;gt;example
+struct foo
+&amp;lt; at &amp;gt;{
+  int a, b;
+&amp;lt; at &amp;gt;}
+&amp;lt; at &amp;gt;exdent &amp;lt; at &amp;gt;r{or}
+struct foo &amp;lt; at &amp;gt;{ int a, b; &amp;lt; at &amp;gt;}
+&amp;lt; at &amp;gt;end example
+
 The rest of this section gives our recommendations for other aspects of
 C formatting style, which is also the default style of the &amp;lt; at &amp;gt;code{indent}
 program in version 1.2 and newer.  It corresponds to the options
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2576,7 +2591,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Comments
 number NODE_NUM'' rather than ``an inode''.

 There is usually no purpose in restating the name of the function in
-the comment before it, because the reader can see that for himself.
+the comment before it, because readers can see that for themselves.
 There might be an exception when the comment is so long that the function
 itself would be off the bottom of the screen.

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2655,10 +2670,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Syntactic Conventions
 as &amp;lt; at &amp;gt;command{lint}, &amp;lt; at &amp;gt;command{clang}, and GCC with extra warnings
 options such as &amp;lt; at &amp;gt;option{-Wconversion} and &amp;lt; at &amp;gt;option{-Wundef}.  These
 tools can help find bugs and unclear code, but they can also generate
-so many false alarms that that it hurts readability to silence them
-with unnecessary casts, wrappers, and other complications.  For
-example, please don't insert casts to &amp;lt; at &amp;gt;code{void} or calls to
-do-nothing functions merely to pacify a lint checker.
+so many false alarms that it hurts readability to silence them with
+unnecessary casts, wrappers, and other complications.  For example,
+please don't insert casts to &amp;lt; at &amp;gt;code{void} or calls to do-nothing
+functions merely to pacify a lint checker.

 Declarations of external functions and functions to appear later in the
 source file should all go in one place near the beginning of the file
diff --git a/maint.mk b/maint.mk
index a97e0bd..1c7af03 100644
--- a/maint.mk
+++ b/maint.mk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -279,7 +279,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; define _sc_search_regexp
    if test -n "$$files"; then\
      if test -n "$$prohibit"; then\
        grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
-         | grep -vE "$${exclude-^$$}"\
+         | grep -vE "$${exclude:-^$$}"\
          &amp;amp;&amp;amp; { msg="$$halt" $(_sc_say_and_exit) } || :;\
      else\
        grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -455,7 +455,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sc_prohibit_quotearg_without_use:

 # Don't include quote.h unless you use one of its functions.
 sc_prohibit_quote_without_use:
-&amp;lt; at &amp;gt;h='quote.h' re='\&amp;lt;quote(_n)? *\(' $(_sc_header_without_use)
+&amp;lt; at &amp;gt;h='quote.h' re='\&amp;lt;quote((_n)? *\(|_quoting_options\&amp;gt;)' \
+  $(_sc_header_without_use)

 # Don't include this header unless you use one of its functions.
 sc_prohibit_long_options_without_use:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -931,8 +932,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sc_prohibit_doubled_word:
 # A regular expression matching undesirable combinations of words like
 # "can not"; this matches them even when the two words appear on different
 # lines, but not when there is an intervening delimiter like "#" or "*".
+# Similarly undesirable, "See &amp;lt; at &amp;gt;xref{...}", since an &amp;lt; at &amp;gt;xref should start
+# a sentence.  Explicitly prohibit any prefix of "see" or "also".
+# Also prohibit a prefix matching "\w+ +".
+# &amp;lt; at &amp;gt;pxref gets the same see/also treatment and should be parenthesized;
+# presume it must *not* start a sentence.
+bad_xref_re_ ?= (?:[\w,:;] +|(?:see|also)\s+)\&amp;lt; at &amp;gt;xref\{
+bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\&amp;lt; at &amp;gt;pxref\{
 prohibit_undesirable_word_seq_RE_ ?=\
-  /\bcan\s+not\b/gims
+  /(?:\bcan\s+not\b|$(bad_xref_re_)|$(bad_pxref_re_))/gims
 prohibit_undesirable_word_seq_ =\
     -e 'while ($(prohibit_undesirable_word_seq_RE_))'\
     $(perl_filename_lineno_text_)
&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-24T23:38:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7909">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7909</link>
    <description>&lt;pre&gt;Thanks Eric for applying the patches.

Eric Blake wrote to Peter Rosin:

Such a knob already exists and is documented since today: it is to
pass both --build and --host with different values.

Bruno



&lt;/pre&gt;</description>
    <dc:creator>Bruno Haible</dc:creator>
    <dc:date>2012-04-24T21:52:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7908">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7908</link>
    <description>&lt;pre&gt;
This is the clincher - it's only a warning, and by now, people have
migrated to saner usage patterns with the modern semantics of --build
and --host.  I will go ahead and apply this.



&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-24T21:19:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7907">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7907</link>
    <description>&lt;pre&gt;
It _IS_ a cross-compile, but in the special subset of cross-compiles
that also happen to be executable from the host.  And this opens up all
sorts of problems where running the executable in a non-native
environment gives outright confusing results (such as thinking that
mingw supports symlinks).  But that generally boils down to the bug of
the person invoking configure lying about their environment, and not
something intrinsically bad with our cross-compilation hueristics.  And
the set of platforms where a cross-compilation allows native execution
is small enough that we already tend to recognize such bug reports
(you're compiling for mingw but using cygwin? did you use the right
arguments?), whether or not the user paid attention to the warning from
configure.


A cross-compilation environment where wine lets you run mingw binaries
is slightly different from a cross-compilation environment where
everything has to be guessed; both environments are interesting, to
different sets of users.  Maybe you are right that a knob to force
build!=host mode even when the non-native binaries can be run, in order
to use that knob to eliminate the surprises due to Wine, is worth
adding; further patches will probably be welcome, but probably post-2.69
material (I'm already late enough on the release as it is).

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-24T21:13:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7906">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7906</link>
    <description>&lt;pre&gt;

This patch looks fine, although it didn't apply very easily through 'git
am'.

&lt;/pre&gt;</description>
    <dc:creator>Eric Blake</dc:creator>
    <dc:date>2012-04-24T21:01:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7905">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7905</link>
    <description>&lt;pre&gt;
Yes, and documentation can help people to understand this.


More precisely, I think that activating cross-compilation mode when
it is not necessary leads to suboptimal guesses from 'configure'.
But it is good that there is a mechanism to force cross-compilation
mode, because some compiler guys apparently want to have this.


Would it satisfy you to add some more documentation to the
'cross_compiling' variable?


I object against this: It would deteriorate the results of bi-arch builds
(e.g. x86 on x86_64) and of mingw builds when run from Cygwin or Linux/Wine.


The fix for these people is easy: They can use
   test "$host_alias" != "$build_alias"

Bruno



&lt;/pre&gt;</description>
    <dc:creator>Bruno Haible</dc:creator>
    <dc:date>2012-04-23T20:10:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7904">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7904</link>
    <description>&lt;pre&gt;Hi Paul,


Ouch. There are now two wrong/inconsistent pieces of doc here:

1) The documentation of AC_RUN_IFELSE does not mention the cross-compilation
   mode. It says

     If the compiler being used does not produce executables that run
     on the system where `configure' is being run, then the test
     program is not run.

   which is factually wrong.

2) The second paragraph you showed says that specifying --host enables
   the cross-compilation mode. Either the cross-compilation mode influences
   AC_RUN_IFELSE - then this statement is wrong. Or it has no influence on
   AC_RUN_IFELSE - then what are its effect, what is this doc all about?

Let's go back to the sample provided by Peter Rosin:

===================== configure.ac ================
AC_INIT([cross-test], [0.1])
AC_PROG_CC
AC_RUN_IFELSE(
  [AC_LANG_PROGRAM([[]],[[]])],
  [echo executable],
  [echo not executable],
  [echo not attempted to execute])
AC_OUTPUT
===================================================

On Cygwin 1.5:

$ ./configure CC="gcc-3 -mno-cygwin" --host=i586-pc-mingw32
configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
checking for i586-pc-mingw32-gcc... gcc-3 -mno-cygwin
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc-3 -mno-cygwin accepts -g... yes
checking for gcc-3 -mno-cygwin option to accept ISO C89... none needed
executable
configure: creating ./config.status

$ ./configure CC="gcc-3 -mno-cygwin" --host=i586-pc-mingw32 --build=i686-pc-cygwin
checking for i586-pc-mingw32-gcc... gcc-3 -mno-cygwin
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... yes
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc-3 -mno-cygwin accepts -g... yes
checking for gcc-3 -mno-cygwin option to accept ISO C89... none needed
not attempted to execute
configure: creating ./config.status

Results of this test:

1) When users obey the warning and pass --build, AC_RUN_IFELSE executes its
   4th arguments and therefore produces only guesses, not real findings.
   That's why I proposed the patch to eliminate the warning. Can someone
   please apply it?

2) The "checking whether we are cross compiling" result, i.e. the value
   of $cross_compiling (see node "Runtime"), correlates with the behaviour
   of AC_RUN_IFELSE. I assume this is meant by "cross-compilation mode".

3) --host alone does not enable the cross-compilation mode.

4) When --build is specified AND is different from the --host, the cross-
   compilation mode is forced.

Apparently these behaviours were installed as a "temporary" behaviour in 2000,
according to the doc in node "Hosts and Cross-Compilation". That piece of
doc also says

   In the future, `--host' will not override the
   name of the build system type.  Whenever you specify `--host', be sure
   to specify `--build' too.

"In the future" is wrong. That's already the case:
========================= configure.ac ====================
AC_INIT([cross-test], [0.1])
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_OUTPUT
===========================================================
$ ./configure CC="gcc-3 -mno-cygwin" --host=i586-pc-mingw32
configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
checking build system type... i686-pc-cygwin
checking host system type... i586-pc-mingw32
configure: creating ./config.status

I specified --host, and --build was guessed correctly.

Here is a proposed patch to clean up some of these mistakes.


2012-04-23  Bruno Haible  &amp;lt;bruno&amp;lt; at &amp;gt;clisp.org&amp;gt;

doc: Fix incorrect and incomplete doc about cross-compilation mode.
* doc/autoconf.texi (Runtime): Mention the effect of the cross-
compilation mode on AC_RUN_IFELSE.
(Specifying Target Triplets): Fix description of --host's effects.
(Hosts and Cross-Compilation): Remove incorrect statement about
--host's effects.

--- doc/autoconf.texi.origMon Apr 23 21:38:00 2012
+++ doc/autoconf.texiMon Apr 23 21:37:39 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -9491,8 +9491,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 that of a failed compilation, or it might be that of a failed program
 execution.
 
-If the compiler being used does not produce executables that run on the
-system where &amp;lt; at &amp;gt;command{configure} is being run, then the test program is
+If cross-compilation mode is enabled (this is the case if either the
+compiler being used does not produce executables that run on the system
+where &amp;lt; at &amp;gt;command{configure} is being run, or if the options &amp;lt; at &amp;gt;code{--build}
+and &amp;lt; at &amp;gt;code{--host} were both specified and their values are different),
+then the test program is
 not run.  If the optional shell commands &amp;lt; at &amp;gt;var{action-if-cross-compiling}
 are given, those commands are run instead; typically these commands
 provide pessimistic defaults that allow cross-compilation to work even
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -21752,8 +21755,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 &amp;lt; at &amp;gt;item --host=&amp;lt; at &amp;gt;var{host-type}
 the type of system on which the package runs.  By default it is the
-same as the build machine.  Specifying it enables cross-compilation
-mode.
+same as the build machine.  Specifying a &amp;lt; at &amp;gt;var{host-type} that differs
+from &amp;lt; at &amp;gt;var{build-type}, when &amp;lt; at &amp;gt;var{build-type} was also explicitly
+specified, enables cross-compilation mode.
 
 &amp;lt; at &amp;gt;item --target=&amp;lt; at &amp;gt;var{target-type}
 the type of system for which any compiler tools in the package
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24459,10 +24463,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 mode, so it doesn't run any tests that require execution.
 
 Hint: if you mean to override the result of &amp;lt; at &amp;gt;command{config.guess},
-prefer &amp;lt; at &amp;gt;option{--build} over &amp;lt; at &amp;gt;option{--host}.  In the future,
-&amp;lt; at &amp;gt;option{--host} will not override the name of the build system type.
-Whenever you specify &amp;lt; at &amp;gt;option{--host}, be sure to specify &amp;lt; at &amp;gt;option{--build}
-too.
+prefer &amp;lt; at &amp;gt;option{--build} over &amp;lt; at &amp;gt;option{--host}.
 
 &amp;lt; at &amp;gt;sp 1
 



&lt;/pre&gt;</description>
    <dc:creator>Bruno Haible</dc:creator>
    <dc:date>2012-04-23T19:43:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7903">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7903</link>
    <description>&lt;pre&gt;
And I have the nagging suspicion that one of the meanings spring from
the fact that people simply do not want to do exotic stuff such as cross
compiling because of rumors that it is complex.  They rather look upon
what they are doing as something that everybody else is also doing, but
with a little twist.

No no no no. I'm not cross compiling. NO! No no. La la la...


Perhaps.  I've made my case and will try to not extend this thread further.

Cheers,
Peter


&lt;/pre&gt;</description>
    <dc:creator>Peter Rosin</dc:creator>
    <dc:date>2012-04-23T19:38:09</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7902">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7902</link>
    <description>&lt;pre&gt;
Currently "./configure --host=foo --build=`./config.guess`" is
different from "./configure --host=foo" on a build system that
can execute host code (such as when doing Cygwin-&amp;gt;MinGW or
Linux-x86_64-&amp;gt;Linux-x86 crosses) in that the former enters
cross-compile mode, but the latter doesn't.

It is clearly confusing that you get different behavior by
explicitly specifying a default value.

Bruno thinks it is bad to enter cross-compile mode when the build
system can execute host code and wants to zap the warning that
keeps nagging his use case (i.e. not specifying --build).

I think it is bad that the variable 'cross_compiling' is set
to the wrong thing and would rather get rid of the heuristic
that sets it to "no" just because the build system happens to be
able to run host code.  People have been known to use the outcome
of that test as an argument that they are not cross-compiling when
in fact they are.  But I also recognize that Bruno have a valid
use case, but think executing the tests in cross-compile mode
should perhaps be enabled by a specific option (e.g. --disable-
cross-compile-mode) instead of by omitting --build.

Cheers,
Peter


&lt;/pre&gt;</description>
    <dc:creator>Peter Rosin</dc:creator>
    <dc:date>2012-04-23T19:10:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7901">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7901</link>
    <description>&lt;pre&gt;
I don't want to discuss words. The term "cross compile" was coined at
a time when every machine had only 1 format of executables that it could
execute. Now there are two possible meanings of the term.


There's nothing fragile about it. Autoconf detects whether it can run
binaries produced by $CC or not. It's in line with Autoconf's design to
determine attributes about the build environment, so that the user does
not have to provide this information explicitly.

Bruno



&lt;/pre&gt;</description>
    <dc:creator>Bruno Haible</dc:creator>
    <dc:date>2012-04-23T19:02:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7900">
    <title>Re: [PATCH] remove warning for --host without --build</title>
    <link>http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/7900</link>
    <description>&lt;pre&gt;
Thanks, I pushed the following slightly-different
(and I hope clearer) patch.  I don't understand
the disagreement about what --host and --build
should do (I try not to do cross-builds myself...)
but at least this helps document what autoconf
currently does, and it can be changed if the behavior
needs to be changed.

From 71d2c125cb3ad167a59776a3bab0e95169805af0 Mon Sep 17 00:00:00 2001
From: Paul Eggert &amp;lt;eggert&amp;lt; at &amp;gt;cs.ucla.edu&amp;gt;
Date: Mon, 23 Apr 2012 10:30:05 -0700
Subject: [PATCH] doc: document --build and cross-compilation better

* doc/autoconf.texi (Specifying Target Triplets): Mention that
specifying a build-type that differs from host-type enables
cross-compilation.  Problem reported by Bruno Haible in:
http://lists.gnu.org/archive/html/autoconf-patches/2012-04/msg00009.html
---
 doc/autoconf.texi |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index 2ae8bb9..b1295eb 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -21747,10 +21747,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; system types are involved.  The options to specify them are:
 &amp;lt; at &amp;gt;item --build=&amp;lt; at &amp;gt;var{build-type}
 the type of system on which the package is being configured and
 compiled.  It defaults to the result of running &amp;lt; at &amp;gt;command{config.guess}.
+Specifying a &amp;lt; at &amp;gt;var{build-type} that differs from &amp;lt; at &amp;gt;var{host-type} enables
+cross-compilation mode.
 
 &amp;lt; at &amp;gt;item --host=&amp;lt; at &amp;gt;var{host-type}
 the type of system on which the package runs.  By default it is the
-same as the build machine.  Specifying it enables the cross-compilation
+same as the build machine.  Specifying it enables cross-compilation
 mode.
 
 &amp;lt; at &amp;gt;item --target=&amp;lt; at &amp;gt;var{target-type}
&lt;/pre&gt;</description>
    <dc:creator>Paul Eggert</dc:creator>
    <dc:date>2012-04-23T17:32:37</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.sysutils.autoconf.patches">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.sysutils.autoconf.patches</link>
  </textinput>
</rdf:RDF>

