Mimic Paul Eggert's changes to Autoconf.
[automake.git] / tests / multlib.test
blob61c4f0a45642639f1a20045f56b721825de218d0
1 #! /bin/sh
2 # Copyright (C) 2003 Free Software Foundation, Inc.
4 # This file is part of GNU Automake.
6 # GNU Automake is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
11 # GNU Automake is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with Automake; see the file COPYING. If not, write to
18 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 # Boston, MA 02111-1307, USA.
21 # Check multilib support.
22 # Based on a test case from Ralf Corsepius.
24 required='gcc GNUmake'
25 . ./defs || exit 1
27 set -e
29 cat >>configure.in <<'END'
30 AC_CONFIG_SRCDIR(libfoo/foo.c)
31 AC_CONFIG_AUX_DIR(.)
32 AC_CONFIG_SUBDIRS(libfoo)
33 AC_CONFIG_SUBDIRS(libbar)
34 AC_OUTPUT
35 END
37 cat >mycc <<'END'
38 #! /bin/sh
39 case ${1+"$@"} in
40 *-print-multi-lib*)
41 echo ".;"
42 echo "debug;@g"
43 exit 0 ;;
44 esac
45 gcc ${1+"$@"}
46 END
48 chmod +x mycc
50 cat >Makefile.am <<'EOF'
51 SUBDIRS = @subdirs@
52 EXTRA_DIST = config-ml.in symlink-tree
53 EOF
55 # libfoo tests multilib supports when there are no subdirectories
56 # libbar tests multilib supports when there are subdirectories
58 mkdir libfoo
60 cat >libfoo/configure.in <<'END'
61 AC_PREREQ(2.57)
62 AC_INIT(libfoo, 0.1, nobody@localhost)
63 AC_CONFIG_SRCDIR(foo.c)
64 # Apparently it doesn't work to have auxdir=.. when
65 # multilib uses symlinked trees.
66 AC_CONFIG_AUX_DIR(.)
67 AM_INIT_AUTOMAKE(foreign)
68 AC_PROG_CC
69 AC_PROG_RANLIB
70 AM_ENABLE_MULTILIB(Makefile,[..])
71 AC_CONFIG_FILES([Makefile])
72 AC_OUTPUT
73 END
75 cat >libfoo/Makefile.am <<'END'
76 noinst_LIBRARIES = libfoo.a
77 libfoo_a_SOURCES = foo.c
78 END
80 : > libfoo/foo.c
82 mkdir libbar
84 cat >libbar/configure.in <<'END'
85 AC_PREREQ(2.57)
86 AC_INIT(libbar, 0.1, nobody@localhost)
87 # Apparently it doesn't work to have auxdir=.. when
88 # multilib uses symlinked trees.
89 AC_CONFIG_AUX_DIR(.)
90 AM_INIT_AUTOMAKE(foreign)
91 AC_PROG_CC
92 AC_PROG_RANLIB
93 AM_ENABLE_MULTILIB(Makefile,[..])
94 AC_CONFIG_FILES([Makefile sub/Makefile])
95 AC_OUTPUT
96 END
98 cat >libbar/Makefile.am <<'END'
99 SUBDIRS = sub
100 noinst_LIBRARIES = libbar.a
101 libbar_a_SOURCES = bar.c
104 mkdir libbar/sub
106 : >libbar/sub/Makefile.am
108 : > libbar/bar.c
110 cp $testsrcdir/../lib/config-ml.in .
111 cp $testsrcdir/../lib/symlink-tree .
113 $ACLOCAL
114 $AUTOCONF
115 $AUTOMAKE --add-missing
116 cd libfoo
117 $ACLOCAL
118 $AUTOCONF
119 $AUTOMAKE --add-missing
120 cd ../libbar
121 $ACLOCAL
122 $AUTOCONF
123 $AUTOMAKE --add-missing
124 cd ..
127 # Check VPATH builds
128 mkdir build
129 cd build
130 ../configure --enable-multilib CC=`pwd`/../mycc
131 $MAKE
132 $MAKE install
133 $MAKE distcleancheck
135 # Check standard builds.
136 cd ..
137 # Why to I have to specify --with-target-subdir?
138 ./configure --enable-multilib --with-target-subdir=. CC=`pwd`/mycc
139 $MAKE