Merge branch 'msvc' into maint
[platform/upstream/automake.git] / tests / cond39.test
1 #!/bin/sh
2 # Copyright (C) 2008, 2010 Free Software Foundation, Inc.
3 #
4 # This file is part of GNU Automake.
5 #
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.
10 #
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.
15 #
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.
20
21 # Build either as CONFIG_FILE or as PROGRAM.
22
23 . ./defs || Exit 1
24 set -e
25
26 mkdir sub
27
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
37
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
47
48 sure-exist:
49         test -f prog1 || test -f prog1$(EXEEXT)
50         test -f sub/prog2 || test -f sub/prog2$(EXEEXT)
51
52 sure-not-exist:
53         test ! -f prog1 && test ! -f prog1$(EXEEXT)
54         test ! -f sub/prog2 && test ! -f sub/prog2$(EXEEXT)
55 END
56
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
66
67 cat >prog.c <<'END'
68 int main () { return 42; }
69 END
70
71 cat >prog1.in <<'END'
72 #! /bin/sh
73 bindir='@bindir@'
74 echo "hi, this is $0, and bindir is $bindir"
75 END
76
77 cp prog.c sub
78 cp prog1.in sub/prog2.in
79
80 $ACLOCAL
81 $AUTOCONF
82 $AUTOMAKE --add-missing
83
84 ./configure COND=true
85 $MAKE 2>stderr || { cat stderr >&2; Exit 1; }
86 cat stderr >&2
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
98
99 ./configure COND=false
100 $MAKE 2>stderr || { cat stderr >&2; Exit 1; }
101 cat stderr >&2
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
110
111 :