#! /bin/sh
# Copyright (C) 2003, 2004, 2007, 2010, 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
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Check multilib support.
# Based on a test case from Ralf Corsepius.
required='gcc GNUmake'
. ./defs || Exit 1
set -e
# Multilib support has been deprecated in the Automake core.
cat >>configure.in <<'END'
AM_ENABLE_MULTILIB([Makefile], [.])
END
$ACLOCAL
$AUTOCONF -Wall -Werror 2>stderr && { cat stderr >&2; Exit 1; }
cat stderr >&2
grep '^configure\.in:4:.*AM_ENABLE_MULTILIB.* removed.* soon' stderr
grep '"multilib".*feature' stderr
grep 'contrib.* in the Automake distribution' stderr
rm -rf autom4te*.cache aclocal.m4 configure
# Functional tests now.
cat >configure.in <<'END'
AC_INIT([multlib], [1.0])
AC_CONFIG_SRCDIR(libfoo/foo.c)
AC_CONFIG_AUX_DIR(.)
AM_INIT_AUTOMAKE
AC_CONFIG_FILES([Makefile])
AC_CONFIG_SUBDIRS(libfoo)
AC_CONFIG_SUBDIRS(libbar)
AC_OUTPUT
END
cat >mycc <<'END'
#! /bin/sh
case ${1+"$@"} in
*-print-multi-lib*)
echo ".;"
echo "debug;@g"
exit 0 ;;
esac
gcc ${1+"$@"}
END
chmod +x mycc
PATH=`pwd`$PATH_SEPARATOR$PATH
cat >Makefile.am <<'EOF'
SUBDIRS = @subdirs@
EXTRA_DIST = config-ml.in symlink-tree
EOF
# libfoo tests multilib supports when there are no subdirectories
# libbar tests multilib supports when there are subdirectories
mkdir libfoo
cat >libfoo/configure.in <<'END'
AC_PREREQ(2.57)
AC_INIT(libfoo, 0.1, nobody@localhost)
AC_CONFIG_SRCDIR(foo.c)
# Apparently it doesn't work to have auxdir=.. when
# multilib uses symlinked trees.
AC_CONFIG_AUX_DIR(.)
AM_INIT_AUTOMAKE
AC_PROG_CC
AM_PROG_AR
AC_PROG_RANLIB
AM_ENABLE_MULTILIB(Makefile,[..])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
END
cat >libfoo/Makefile.am <<'END'
noinst_LIBRARIES = libfoo.a
libfoo_a_SOURCES = foo.c
END
: > libfoo/foo.c
mkdir libbar
cat >libbar/configure.in <<'END'
AC_PREREQ(2.57)
AC_INIT(libbar, 0.1, nobody@localhost)
# Apparently it doesn't work to have auxdir=.. when
# multilib uses symlinked trees.
AC_CONFIG_AUX_DIR(.)
AM_INIT_AUTOMAKE
AC_PROG_CC
AM_PROG_AR
AC_PROG_RANLIB
AM_ENABLE_MULTILIB(Makefile,[..])
AC_CONFIG_FILES([Makefile sub/Makefile])
AC_OUTPUT
END
cat >libbar/Makefile.am <<'END'
SUBDIRS = sub
noinst_LIBRARIES = libbar.a
libbar_a_SOURCES = bar.c
END
mkdir libbar/sub
: >libbar/sub/Makefile.am
: > libbar/bar.c
cp "$testsrcdir/../lib/config-ml.in" .
cp "$testsrcdir/../lib/symlink-tree" .
$ACLOCAL -Wno-obsolete
$AUTOCONF -Werror -Wall -Wno-obsolete
$AUTOMAKE --add-missing
cd libfoo
$ACLOCAL
$AUTOCONF -Werror -Wall -Wno-obsolete
$AUTOMAKE --add-missing
cd ../libbar
$ACLOCAL
$AUTOCONF -Werror -Wall -Wno-obsolete
$AUTOMAKE --add-missing
cd ..
# Check VPATH builds
mkdir build
cd build
../configure --enable-multilib CC=mycc
$MAKE
$MAKE install
$MAKE distcleancheck
# Check standard builds.
cd ..
# Why to I have to specify --with-target-subdir?
./configure --enable-multilib --with-target-subdir=. CC=mycc
$MAKE