diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-04-11 11:04:56 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2012-04-11 11:04:56 +0200 |
commit | 76f0605a6dd790ab43cc608db11ac2141ddf46c0 (patch) | |
tree | 2befbb70e06fd104625bd685c3c19a2985246e4b /t/lex-clean-cxx.sh | |
parent | 7f2bc63991aeed6ddec5f28dc2162a281ff8ee3d (diff) | |
parent | f854b6c0eb7905dc8c9f2899a8f43b94fd6957ff (diff) | |
download | automake-76f0605a6dd790ab43cc608db11ac2141ddf46c0.tar.gz |
Merge branch 'rmch'
* rmch:
maint: simplify generation of files with @substed@ stuff
t/README: update w.r.t. recent overhaul (non-recursive build system)
docs: fix names of relevant test cases in comments
NEWS: automake build systems avoids make recursion
maint: no more make recursion in Automake's build system
tests: rename 'tests/' => 't/', '*.test' => '*.sh'
tests: remove recipes that run tests with 'prove'
tests: move most helper scripts and files into the 'ax' subdirectory
Diffstat (limited to 't/lex-clean-cxx.sh')
-rwxr-xr-x | t/lex-clean-cxx.sh | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/t/lex-clean-cxx.sh b/t/lex-clean-cxx.sh new file mode 100755 index 000000000..4089f0e2b --- /dev/null +++ b/t/lex-clean-cxx.sh @@ -0,0 +1,127 @@ +#! /bin/sh +# Copyright (C) 2011-2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Check that C++ source and header files derived from non-distributed +# Yacc sources are cleaned by "make clean", while C++ source and +# header files derived from distributed Yacc sources are cleaned by +# "make maintainer-clean". +# See also sister test 'lex-clean.test'. + +required=lex +. ./defs || Exit 1 + +cat >> configure.ac << 'END' +AC_PROG_CXX +AC_PROG_LEX +AC_OUTPUT +END + +cat > Makefile.am << 'END' +bin_PROGRAMS = foo bar baz qux + +foo_SOURCES = mainfoo.cc parsefoo.lxx + +bar_SOURCES = mainbar.cpp parsebar.ll +bar_LFLAGS = $(AM_LFLAGS) + +baz_SOURCES = mainbaz.c++ +nodist_baz_SOURCES = parsebaz.l++ + +qux_SOURCES = mainqux.cxx +nodist_qux_SOURCES = parsequx.lpp +qux_LFLAGS = $(AM_LFLAGS) + +parsebaz.l++ parsequx.lpp: + cp $(srcdir)/parsefoo.lxx $@ + +CLEANFILES = parsebaz.l++ parsequx.lpp + +LDADD = $(LEXLIB) +END + +cat > parsefoo.lxx << 'END' +%{ +#define YY_NO_UNISTD_H 1 +static int isatty (int fd) { return 0; } +%} +%% +"GOOD" return EOF; +. +%% +int yywrap (void) +{ + return 1; +} +END +cp parsefoo.lxx parsebar.ll + +cat > mainfoo.cc << 'END' +// This file should contain valid C++ but invalid C. +using namespace std; +int main (int argc, char **argv) +{ + extern int yylex (void); + return yylex (); +} +END +cp mainfoo.cc mainbar.cpp +cp mainfoo.cc mainbaz.c++ +cp mainfoo.cc mainqux.cxx + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +./configure + +cp config.status config.sav + +$MAKE +ls -l +# Sanity checks. +test -f parsefoo.cxx +test -f bar-parsebar.cc +test -f parsebaz.l++ +test -f parsebaz.c++ +test -f parsequx.lpp +test -f qux-parsequx.cpp + +for target in clean distclean; do + $MAKE $target + ls -l + test -f parsefoo.cxx + test -f bar-parsebar.cc + test ! -r parsebaz.l++ + test ! -r parsebaz.c++ + test ! -r parsequx.lpp + test ! -r qux-parsequx.cpp +done + +cp config.sav config.status +./config.status # re-create Makefile + +$MAKE maintainer-clean +ls -l +test -f parsefoo.lxx +test -f parsebar.ll +test ! -r parsefoo.cxx +test ! -r bar-parsebar.cc +test -f parsefoo.lxx +test -f parsebar.ll +test ! -r parsefoo.cxx +test ! -r bar-parsebar.cc + +: |