2 # Copyright (C) 2011-2012 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)
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 <http://www.gnu.org/licenses/>.
17 # Tests Yacc support with yacc-generated headers
18 # (i.e., '-d' in *YFLAGS).
19 # Keep in sync with sister test `yacc-d-cxx.test'.
24 cat >> configure.
in << 'END'
27 AC_CONFIG_FILES
([foo
/Makefile bar
/Makefile baz
/Makefile
])
31 cat > Makefile.am
<<'END'
37 cat > foo
/Makefile.am
<<'END'
39 zardoz_SOURCES = parse.y main.c
42 @echo ' ' $(DIST_COMMON) ' '
44 cp foo
/Makefile.am bar
/Makefile.am
45 cp foo
/Makefile.am baz
/Makefile.am
47 cat > foo
/parse.y
<< 'END'
50 int yylex
() { return 0; }
51 void yyerror
(char
*s
) {}
57 cp foo
/parse.y bar
/parse.y
59 cat > foo
/main.c
<< 'END'
66 cp foo
/main.c bar
/main.c
68 # Even the generated header file is renamed when target-specific YFLAGS
69 # are used. This might not be the best behavior, but it has been in
70 # place for quite a long time, so just go along with it for now.
71 sed 's/"parse\.h"/"zardoz-parse.h"/' foo
/parse.y
> baz
/parse.y
72 sed 's/"parse\.h"/"zardoz-parse.h"/' foo
/main.c
> baz
/main.c
78 $FGREP parse.h foo
/Makefile.
in bar
/Makefile.
in baz
/Makefile.
in && Exit
1
80 cat >> foo
/Makefile.am
<<END
81 BUILT_SOURCES = parse.h
85 $AUTOMAKE -Wno-gnu foo
/Makefile
87 sed 's/EOL$//' >> bar
/Makefile.am
<<END
88 AM_YFLAGS${tab}= -d EOL
89 BUILT_SOURCES = parse.h
91 $AUTOMAKE bar
/Makefile
93 cat >> baz
/Makefile.am
<<END
94 BUILT_SOURCES = zardoz-parse.h
95 zardoz_YFLAGS =-d${tab}
97 $AUTOMAKE baz
/Makefile
107 test -f baz
/zardoz-parse.c
108 test -f baz
/zardoz-parse.h
110 # The generated C source and header files must be shipped.
111 for dir
in foo bar
; do
114 $MAKE -s echo-distcom |
grep '[ /]parse.c '
115 $MAKE -s echo-distcom |
grep '[ /]parse.h '
120 $MAKE -s echo-distcom |
grep '[ /]zardoz-parse.c '
121 $MAKE -s echo-distcom |
grep '[ /]zardoz-parse.h '
126 test -f $distdir/foo
/parse.c
127 test -f $distdir/foo
/parse.h
128 test -f $distdir/bar
/parse.c
129 test -f $distdir/bar
/parse.h
130 test -f $distdir/baz
/zardoz-parse.c
131 test -f $distdir/baz
/zardoz-parse.h
133 # Sanity check the distribution.
136 # While we are at it, make sure that `parse.c' and `parse.h' are erased
137 # by maintainer-clean, and not by distclean.
143 test -f baz
/zardoz-parse.c
144 test -f baz
/zardoz-parse.h
145 .
/configure
# We must re-create `Makefile'.
146 $MAKE maintainer-clean
147 test ! -f foo
/parse.c
148 test ! -f foo
/parse.h
149 test ! -f bar
/parse.c
150 test ! -f bar
/parse.h
151 test ! -f baz
/zardoz-parse.c
152 test ! -f baz
/zardoz-parse.h