tests: Let 'ltorder.sh' run successfully with Guix dynamic loader
[automake.git] / t / ltorder.sh
blob4cfdddf7a8b487e73afe34b40e054e620b71702e
1 #!/bin/sh
2 # Copyright (C) 2008-2018 Free Software Foundation, Inc.
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2, or (at your option)
7 # any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <https://www.gnu.org/licenses/>.
17 # Test for correct installation order of nobase libtool libraries.
19 required='cc libtoolize'
20 . test-init.sh
22 cat >>configure.ac <<'END'
23 AC_PROG_CC
24 AM_PROG_AR
25 AC_PROG_LIBTOOL
26 AC_OUTPUT
27 END
29 cat >Makefile.am <<'END'
30 AUTOMAKE_OPTIONS = subdir-objects
31 nobase_lib_LTLIBRARIES = liba1.la sub/liba2.la sub/liba3.la liba4.la liba5.la
32 sub_liba2_la_LIBADD = liba1.la
33 sub_liba3_la_LIBADD = sub/liba2.la
34 liba4_la_LIBADD = sub/liba3.la
35 liba5_la_LIBADD = liba4.la
36 bin_PROGRAMS = p
37 p_LDADD = liba5.la
38 END
40 mkdir sub
41 echo 'int a1 () { return 1; }' >liba1.c
42 echo 'extern int a1 (); int a2 () { return a1 (); }' >sub/liba2.c
43 echo 'extern int a2 (); int a3 () { return a2 (); }' >sub/liba3.c
44 echo 'extern int a3 (); int a4 () { return a3 (); }' >liba4.c
45 echo 'extern int a4 (); int a5 () { return a4 (); }' >liba5.c
46 echo 'extern int a5 (); int main () { return a5 (); }' >p.c
48 libtoolize
49 $ACLOCAL
50 $AUTOCONF
51 $AUTOMAKE --add-missing
53 ./configure --prefix="$(pwd)/inst"
55 # XXX: This is a workaround for a purity mechanism implemented by GNU Guix.
56 # For more details see
57 # <https://www.gnu.org/s/guix/manual/html_node/Application-Setup.html#index-ld_002dwrapper>.
58 GUIX_LD_WRAPPER_ALLOW_IMPURITIES=1
59 export GUIX_LD_WRAPPER_ALLOW_IMPURITIES
61 $MAKE
62 run_make -E install
63 grep 'has not been installed' stderr && exit 1
65 $MAKE uninstall
66 test $(find inst -type f -print | wc -l) -eq 0