tests: avoid a spurious failure on MSYS
[platform/upstream/automake.git] / t / dist-auxdir-many-subdirs.sh
1 #! /bin/sh
2 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
3 #
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.
8 #
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.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 # It should be legitimate for many subdir Makefiles to require the
18 # same config-aux files.
19
20 am_create_testdir=empty
21 required=cc
22 . test-init.sh
23
24 count=0
25 ocwd=$(pwd) || fatal_ "cannot get current working directory"
26
27 # Usage: do_check [--add-missing] [CONFIG-AUXDIR-PATH=.]
28 do_check ()
29 {
30   case $1 in
31     -a|--add-missing) add_missing=yes; shift;;
32     *) add_missing=no;;
33   esac
34   auxdir=${1-.}
35
36   count=$(($count + 1))
37   mkdir T$count.d
38   cd T$count.d
39
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
52
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
62
63   required_files='
64     install-sh
65     missing
66     depcomp
67     py-compile
68     test-driver
69   '
70
71   echo "SUBDIRS =" > Makefile.am
72
73   suffixes='0 1 2 3 4 5 6 7 8 9'
74
75   for x in $suffixes; do
76     mkdir sub$x
77     echo "SUBDIRS += sub$x" >> Makefile.am
78     echo "AC_CONFIG_FILES([sub$x/Makefile])" >> configure.ac
79     cp Makefile.stub sub$x/Makefile.am
80     echo 'int main (void) { return 0; }' > sub$x/foo.c
81     touch sub$x/bar.py sub$x/baz.el
82   done
83   echo AC_OUTPUT >> configure.ac
84
85   $ACLOCAL
86   $AUTOCONF
87
88   "$am_scriptdir"/install-sh -d $auxdir \
89     || fatal_ "creating directory '$auxdir' with install-sh"
90   if test $add_missing = yes; then
91     $AUTOMAKE -a --copy
92     for f in $required_files; do
93       test -f $auxdir/$f
94       # To ensure that if a auxiliary file is required and distributed
95       # by many Makefiles, the "dist" rule won't try to copy it multiple
96       # times in $(distdir).
97       chmod a-w $auxdir/$f
98     done
99   else
100     for f in $required_files; do
101       cp "$am_scriptdir"/$f $auxdir/$f \
102         || fatal_ "faild to fetch auxiliary script '$f'"
103       # See comments above.
104       chmod a-w $auxdir/$f
105     done
106     $AUTOMAKE
107   fi
108
109   for vpath in : false; do
110     if $vpath; then
111       mkdir build
112       cd build
113       srcdir=..
114     else
115       srcdir=.
116     fi
117     $srcdir/configure
118     $MAKE distdir
119     find $distdir # For debugging.
120     for f in $required_files; do
121       test -f $distdir/$auxdir/$f
122     done
123     cd $srcdir
124   done
125
126   cd "$ocwd" || fatal_ "cannot chdir back to '$ocwd'"
127 }
128
129 do_check .
130 do_check --add-missing .
131 do_check build-aux
132 do_check --add-missing build-aux
133 do_check a/b/c
134 do_check --add-missing a/b/c
135
136 :