tests: Let 'ltorder.sh' run successfully with Guix dynamic loader
[automake.git] / t / dist-auxdir-many-subdirs.sh
blob3cc0830ded96bb62ea9ff3b58252a6b7e67fef42
1 #! /bin/sh
2 # Copyright (C) 2011-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 # It should be legitimate for many subdir Makefiles to require the
18 # same config-aux files.
20 am_create_testdir=empty
21 required=cc
22 . test-init.sh
24 count=0
25 ocwd=$(pwd) || fatal_ "cannot get current working directory"
27 # Usage: do_check [--add-missing] [CONFIG-AUXDIR-PATH=.]
28 do_check ()
30 case $1 in
31 -a|--add-missing) add_missing=yes; shift;;
32 *) add_missing=no;;
33 esac
34 auxdir=${1-.}
36 count=$(($count + 1))
37 mkdir T$count.d
38 cd T$count.d
40 distdir=$me-$count
41 unindent > configure.ac << END
42 AC_INIT([$me], [$count])
43 AC_CONFIG_AUX_DIR([$auxdir])
44 AM_INIT_AUTOMAKE
45 AC_PROG_CC
46 # We don't want to require python or emcas in this test, so
47 # the tricks below.
48 AM_PATH_PYTHON([2.2], [], [:])
49 EMACS=no; AM_PATH_LISPDIR
50 AC_CONFIG_FILES([Makefile])
51 END
53 unindent > Makefile.stub <<'END'
54 ## For depcomp.
55 bin_PROGRAMS = foo
56 foo_SOURCES = foo.c
57 ## For py-compile.
58 python_PYTHON = bar.py
59 ## For test-driver.
60 TESTS =
61 END
63 required_files='
64 install-sh
65 missing
66 compile
67 depcomp
68 py-compile
69 test-driver
72 echo "SUBDIRS =" > Makefile.am
74 suffixes='0 1 2 3 4 5 6 7 8 9'
76 for x in $suffixes; do
77 mkdir sub$x
78 echo "SUBDIRS += sub$x" >> Makefile.am
79 echo "AC_CONFIG_FILES([sub$x/Makefile])" >> configure.ac
80 cp Makefile.stub sub$x/Makefile.am
81 echo 'int main (void) { return 0; }' > sub$x/foo.c
82 touch sub$x/bar.py sub$x/baz.el
83 done
84 echo AC_OUTPUT >> configure.ac
86 $ACLOCAL
87 $AUTOCONF
89 "$am_scriptdir"/install-sh -d $auxdir \
90 || fatal_ "creating directory '$auxdir' with install-sh"
91 if test $add_missing = yes; then
92 $AUTOMAKE -a --copy
93 for f in $required_files; do
94 test -f $auxdir/$f
95 # To ensure that if a auxiliary file is required and distributed
96 # by many Makefiles, the "dist" rule won't try to copy it multiple
97 # times in $(distdir).
98 chmod a-w $auxdir/$f
99 done
100 else
101 for f in $required_files; do
102 cp "$am_scriptdir"/$f $auxdir/$f \
103 || fatal_ "faild to fetch auxiliary script '$f'"
104 # See comments above.
105 chmod a-w $auxdir/$f
106 done
107 $AUTOMAKE
110 for vpath in : false; do
111 if $vpath; then
112 mkdir build
113 cd build
114 srcdir=..
115 else
116 srcdir=.
118 $srcdir/configure
119 $MAKE distdir
120 find $distdir # For debugging.
121 for f in $required_files; do
122 test -f $distdir/$auxdir/$f
123 done
124 cd $srcdir
125 done
127 cd "$ocwd" || fatal_ "cannot chdir back to '$ocwd'"
130 do_check .
131 do_check --add-missing .
132 do_check build-aux
133 do_check --add-missing build-aux
134 do_check a/b/c
135 do_check --add-missing a/b/c