Fix conditional rules competing with config.status rules.
[automake/plouj.git] / tests / cond39.test
blob1431ed11e75312d56dea83162b3495ab776c491d
1 #!/bin/sh
2 # Copyright (C) 2008 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 3, 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., 51 Franklin Street, Fifth Floor,
19 # Boston, MA 02110-1301, USA.
21 # Build either as CONFIG_FILE or as PROGRAM.
23 . ./defs
24 set -e
26 mkdir sub
28 cat >>configure.in <<'END'
29 AC_PROG_CC
30 AM_CONDITIONAL([COND], [test "$COND" = true])
31 AM_COND_IF([COND], [],
32 [AC_CONFIG_FILES([prog1], [chmod 755 prog1])
33 AC_CONFIG_FILES([sub/prog2], [chmod 755 sub/prog2])])
34 AC_CONFIG_FILES([sub/Makefile])
35 AC_OUTPUT
36 END
38 cat >Makefile.am <<'END'
39 SUBDIRS = sub
40 if COND
41 bin_PROGRAMS = prog1
42 prog1_SOURCES = prog.c
43 else
44 bin_SCRIPTS = prog1
45 CLEANFILES = prog1
46 endif
48 sure-exist:
49 test -f prog1 || test -f prog1$(EXEEXT)
50 test -f sub/prog2 || test -f sub/prog2$(EXEEXT)
52 sure-not-exist:
53 test ! -f prog1 && test ! -f prog1$(EXEEXT)
54 test ! -f sub/prog2 && test ! -f sub/prog2$(EXEEXT)
55 END
57 cat >sub/Makefile.am <<'END'
58 if COND
59 bin_PROGRAMS = prog2
60 prog2_SOURCES = prog.c
61 else
62 bin_SCRIPTS = prog2
63 CLEANFILES = prog2
64 endif
65 END
67 cat >prog.c <<'END'
68 int main () { return 42; }
69 END
71 cat >prog1.in <<'END'
72 #! /bin/sh
73 bindir='@bindir@'
74 echo "hi, this is $0, and bindir is $bindir"
75 END
77 cp prog.c sub
78 cp prog1.in sub/prog2.in
80 $ACLOCAL
81 $AUTOCONF
82 $AUTOMAKE --add-missing
84 ./configure COND=true
85 $MAKE 2>stderr
86 cat stderr
87 grep 'overriding commands' stderr && exit 1
88 $MAKE sure-exist
89 ./prog1 && exit 1
90 ./sub/prog2 && exit 1
91 $MAKE clean
92 $MAKE sure-not-exist
93 $MAKE
94 $MAKE sure-exist
95 ./prog1 && exit 1
96 ./sub/prog2 && exit 1
97 $MAKE distclean
99 ./configure COND=false
100 $MAKE 2>stderr
101 cat stderr
102 grep 'overriding commands' stderr && exit 1
103 ./prog1
104 ./sub/prog2
105 $MAKE clean
106 $MAKE sure-not-exist
107 $MAKE
108 ./prog1
109 ./sub/prog2