[libiberty] Update libiberty to autoconf 2.5x

Daniel Jacobowitz
2003-08-27T17:36:42Z

I pretty much knew that libiberty would be the hardest nut to crack. To
make sure I was doing things the right way, I did it first. This patch
depends on config/no-executables.m4, posted earlier today. It allows me to
regenerate configure in libiberty using autoconf 2.57.

The bulk of the change is a mechanical conversion to AC_LIBOBJ. The only
interesting bits are:

LIB_AC_PROG_CC was a copy of AC_PROG_CC from autoconf 2.13, which set
ac_libiberty_warn_cflags and did not call AC_PROG_CC_WORKS. Obsoleted by
GCC_NO_EXECUTABLES.

AC_ISC_POSIX needs to be called before link tests, but does not need to be
as early as it is; move it off into the branch where link tests are
performed, so that we don't do it when we can't link.

This patch was extensively tested, on the following builds:

mips --build=i686-linux --host=mipsel-linux
native --build=i686-linux --host=i686-linux
native --build=i686-linux
native --host=i686-linux
native
native --target=mipsel-linux --prefix=/big/fsf/installs/mipsel-linux --with-sysroot=/opt/hardhat/devkit/mips/fp_le/target
mips --host=mipsel-linux
mips --build=i686-linux --host=mipsel-linux --target=i686-linux
cygwin-target --target=i386-pc-cygwin

All were GCC builds except for cygwin-target, which was an uberbaum build.
I used --enable-languages=c,c++, and built everything. For GCC that was
"make -j4 all", for cygwin it was "make -j4 all-target-libstdc++-v3 && make
-j4 all-target-winsup" - there's a missing build dependency in there that I
never got around to fixing.

The "--host=mipsel-linux" build failed, because toplevel configure inferred
--build=mipsel-linux, and invoked libiberty's configure script accordingly;
it bombed when it discovered we were cross compiling. This isn't a problem,
since it didn't work right before. When everything else has moved to 2.5x
we can make it work.

Is this OK?

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer

2003-08-27 Daniel Jacobowitz <drow@mvista.com>

* aclocal.m4: Include acx.m4 and no-executables.m4.
(libiberty_AC_FUNC_STRNCMP): Use AC_LIBOBJ.
(LIB_AC_PROG_CC): Remove.
* configure.in: Update AC_PREREQ to 2.57. Use GCC_NO_EXECUTABLES.
Use AC_PROG_CC and set ac_libiberty_warn_cflags instead of using
LIB_AC_PROG_CC. Use AC_LIBOBJ. Call AC_ISC_POSIX later, only if
performing link tests.
* configure: Regenerated.

Index: libiberty/aclocal.m4
===================================================================
RCS file: /big/fsf/rsync/gcc-cvs/gcc/libiberty/aclocal.m4,v
retrieving revision 1.7
diff -u -p -r1.7 aclocal.m4
--- libiberty/aclocal.m4 7 May 2003 18:06:53 -0000 1.7
+++ libiberty/aclocal.m4 27 Aug 2003 01:01:07 -0000
@@ -1,4 +1,6 @@
sinclude(../config/accross.m4)
+sinclude(../config/acx.m4)
+sinclude(../config/no-executables.m4)

dnl See whether strncmp reads past the end of its string parameters.
dnl On some versions of SunOS4 at least, strncmp reads a word at a time
@@ -71,7 +73,7 @@ main ()
ac_cv_func_strncmp_works=no)
rm -f core core.* *.core])
if test $ac_cv_func_strncmp_works = no ; then
- LIBOBJS="$LIBOBJS strncmp.o"
+ AC_LIBOBJ([strncmp])
fi
])

@@ -117,48 +119,6 @@ if test $libiberty_cv_decl_needed_$1 = y
[Define if $1 is not declared in system header files.])
fi
])dnl
-
-# FIXME: We temporarily define our own version of AC_PROG_CC. This is
-# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
-# are probably using a cross compiler, which will not be able to fully
-# link an executable. This should really be fixed in autoconf
-# itself.
-
-AC_DEFUN(LIB_AC_PROG_CC,
-[AC_BEFORE([$0], [AC_PROG_CPP])dnl
-AC_PROVIDE([AC_PROG_CC])
-AC_CHECK_PROG(CC, gcc, gcc)
-if test -z "$CC"; then
- AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
- test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
-fi
-
-AC_PROG_CC_GNU
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
- ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic'
-dnl Check whether -g works, even if CFLAGS is set, in case the package
-dnl plays around with CFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- AC_PROG_CC_G
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
- elif test $ac_cv_prog_cc_g = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-O2"
- fi
-else
- GCC=
- ac_libiberty_warn_cflags=
- test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-AC_SUBST(ac_libiberty_warn_cflags)
-])

# Work around a bug in autoheader. This can go away when we switch to
# autoconf >2.50. The use of define instead of AC_DEFUN is
Index: libiberty/configure.in
===================================================================
RCS file: /big/fsf/rsync/gcc-cvs/gcc/libiberty/configure.in,v
retrieving revision 1.70
diff -u -p -r1.70 configure.in
--- libiberty/configure.in 19 Jun 2003 19:04:03 -0000 1.70
+++ libiberty/configure.in 27 Aug 2003 01:01:07 -0000
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script

-AC_PREREQ(2.13)
+AC_PREREQ(2.57)
AC_INIT(xmalloc.c)

# This works around the fact that libtool configuration may change LD
@@ -99,7 +99,13 @@ dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)

-LIB_AC_PROG_CC
+GCC_NO_EXECUTABLES
+AC_PROG_CC
+
+if test x$GCC = xyes; then
+ ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic'
+fi
+AC_SUBST(ac_libiberty_warn_cflags)

AC_PROG_CC_C_O
# autoconf is lame and doesn't give us any substitution variable for this.
@@ -111,7 +117,6 @@ fi
AC_SUBST(NO_MINUS_C_MINUS_O)
AC_SUBST(OUTPUT_OPTION)

-AC_ISC_POSIX
AC_C_CONST
AC_C_INLINE
AC_C_BIGENDIAN_CROSS
@@ -250,7 +255,12 @@ if test -n "${with_target_subdir}"; then
# newlib provide and which ones we will be expected to provide.

if test "x${with_newlib}" = "xyes"; then
- LIBOBJS="asprintf.o basename.o insque.o random.o strdup.o vasprintf.o"
+ AC_LIBOBJ([asprintf])
+ AC_LIBOBJ([basename])
+ AC_LIBOBJ([insque])
+ AC_LIBOBJ([random])
+ AC_LIBOBJ([strdup])
+ AC_LIBOBJ([vasprintf])

for f in $funcs; do
case "$f" in
@@ -318,8 +328,16 @@ if test -z "${setobjs}"; then
# Handle VxWorks configuration specially, since on VxWorks the
# libraries are actually on the target board, not in the file
# system.
- LIBOBJS="basename.o getpagesize.o insque.o random.o strcasecmp.o"
- LIBOBJS="$LIBOBJS strncasecmp.o strdup.o vfork.o waitpid.o vasprintf.o"
+ AC_LIBOBJ([basename])
+ AC_LIBOBJ([getpagesize])
+ AC_LIBOBJ([insque])
+ AC_LIBOBJ([random])
+ AC_LIBOBJ([strcasecmp])
+ AC_LIBOBJ([strncasecmp])
+ AC_LIBOBJ([strdup])
+ AC_LIBOBJ([vfork])
+ AC_LIBOBJ([waitpid])
+ AC_LIBOBJ([vasprintf])
for f in $funcs; do
case "$f" in
basename | getpagesize | insque | random | strcasecmp)
@@ -366,7 +384,7 @@ if test -z "${setobjs}"; then
if test -n "${with_target_subdir}"
then
funcs="`echo $funcs | sed -e 's/random//'`"
- LIBOBJS="$LIBOBJS random.o"
+ AC_LIBOBJ([random])
vars="`echo $vars | sed -e 's/sys_siglist//'`"
checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
fi
@@ -402,12 +420,12 @@ if test -z "${setobjs}"; then

# We haven't set the list of objects yet. Use the standard autoconf
# tests. This will only work if the compiler works.
- AC_PROG_CC_WORKS
+ AC_ISC_POSIX
AC_REPLACE_FUNCS($funcs)
libiberty_AC_FUNC_C_ALLOCA
AC_FUNC_VFORK
if test $ac_cv_func_vfork_works = no; then
- LIBOBJS="$LIBOBJS vfork.o"
+ AC_LIBOBJ([vfork])
fi
# We only need _doprnt if we might use it to implement v*printf.
if test $ac_cv_func_vprintf != yes \