081e5326833043e63e95946ef2a213e18ef50c6e
[platform/upstream/automake.git] / tests / yacc6.test
1 #! /bin/sh
2 # Copyright (C) 2001, 2002, 2003, 2004  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., 59 Temple Place - Suite 330,
19 # Boston, MA 02111-1307, USA.
20
21 # Test to make sure ylwrap put in right location.
22 # Report from Tim Van Holder.
23 # Also make sure depcomp does not needlessly update headers.
24 # Report from Paolo Bonzini.
25
26 required='gcc bison GNUmake'
27 . ./defs || exit 1
28
29 set -e
30
31 cat > configure.in << 'END'
32 AC_INIT([yacc6], [1.0])
33 AC_CONFIG_AUX_DIR([aux1])
34 AM_INIT_AUTOMAKE
35 AC_CONFIG_FILES([Makefile])
36 AC_PROG_CC
37 AM_PROG_CC_C_O
38 AC_PROG_YACC
39 AC_CONFIG_FILES([sub/Makefile])
40 AC_OUTPUT
41 END
42
43 cat > Makefile.am << 'END'
44 SUBDIRS = sub
45
46 test-time-unchanged:
47         test `ls -1t sub/main.$(OBJEXT) z | sed 1q` = z
48 test-time-changed:
49         test `ls -1t sub/main.$(OBJEXT) z | sed 1q` = sub/main.$(OBJEXT)
50 END
51
52 mkdir aux1 sub
53
54 cat > sub/Makefile.am << 'END'
55 bin_PROGRAMS = foo bar
56 AM_YFLAGS = -d
57 foo_SOURCES = foo.y main.c
58 foo_CPPFLAGS = -DFOO
59 bar_SOURCES = bar.y main.c
60 END
61
62 cat > sub/foo.y << 'END'
63 %{
64 int yylex () {return 0;}
65 void yyerror (char *s) {}
66 %}
67 %token TOKEN
68 %%
69 foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
70 END
71
72 cp sub/foo.y sub/bar.y
73
74 cat >sub/main.c <<'EOF'
75 #ifdef FOO
76 #  include "foo.h"
77 #else
78 #  include "bar.h"
79 #endif
80
81 int
82 main()
83 {
84   return 0;
85 }
86 EOF
87
88 $ACLOCAL
89 $AUTOCONF
90 $AUTOMAKE -a
91 test -f aux1/ylwrap
92 test ! -f ylwrap
93 test ! -f sub/ylwrap
94 $FGREP '(top_srcdir)/aux1/ylwrap' sub/Makefile.in
95 ./configure
96 $MAKE
97 grep '#.*line.*foo.y' sub/foo.c
98 grep '#.*line.*bar.y' sub/bar.c
99
100 $sleep
101 : > z
102 $sleep
103 touch sub/bar.y
104 $MAKE
105 $MAKE test-time-unchanged
106 $sleep
107 $PERL -pi -e s/TOKEN/TEKON/g sub/bar.y
108 $MAKE
109 $MAKE test-time-changed