| #! /bin/sh |
| # Copyright (C) 2003-2013 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' |
| . test-init.sh |
| |
| mldir=$am_top_srcdir/contrib/multilib |
| mkdir m4 |
| cp "$mldir"/config-ml.in "$mldir"/symlink-tree . |
| cp "$mldir"/multi.m4 m4 |
| |
| ACLOCAL_PATH=${ACLOCAL_PATH+"$ACLOCAL_PATH:"}$(pwd)/m4 |
| export ACLOCAL_PATH |
| |
| cat >configure.ac <<'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; export PATH |
| |
| cat >Makefile.am <<'EOF' |
| SUBDIRS = @subdirs@ |
| EXTRA_DIST = config-ml.in symlink-tree |
| check-all: |
| test -f debug/libfoo/libfoo.a |
| test -f debug/libbar/libbar.a |
| test -f libfoo/libfoo.a |
| test -f libbar/libbar.a |
| EOF |
| |
| # libfoo tests multilib supports when there are no subdirectories |
| # libbar tests multilib supports when there are subdirectories |
| |
| mkdir libfoo |
| cp "$mldir"/multilib.am libfoo/ |
| |
| cat >libfoo/configure.ac <<'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 |
| include $(top_srcdir)/multilib.am |
| END |
| |
| : > libfoo/foo.c |
| |
| mkdir libbar |
| cp "$mldir"/multilib.am libbar/ |
| |
| cat >libbar/configure.ac <<'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 |
| include $(top_srcdir)/multilib.am |
| END |
| |
| mkdir libbar/sub |
| echo 'include $(top_srcdir)/multilib.am' >libbar/sub/Makefile.am |
| : > libbar/bar.c |
| |
| $ACLOCAL |
| $AUTOCONF |
| $AUTOMAKE --add-missing |
| |
| cd libfoo |
| $ACLOCAL |
| $AUTOCONF |
| $AUTOMAKE --add-missing |
| cd .. |
| |
| cd libbar |
| $ACLOCAL |
| $AUTOCONF |
| $AUTOMAKE --add-missing |
| cd .. |
| |
| # Check VPATH builds |
| mkdir build |
| cd build |
| ../configure --enable-multilib CC=mycc |
| $MAKE |
| test -f debug/libfoo/libfoo.a |
| test -f debug/libbar/libbar.a |
| test -f libfoo/libfoo.a |
| test -f libbar/libbar.a |
| $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 check |
| DISTCHECK_CONFIGURE_FLAGS='--enable-multilib CC=mycc' $MAKE distcheck |
| |
| : |