diff options
Diffstat (limited to 't/suffix3.tap')
-rwxr-xr-x | t/suffix3.tap | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/t/suffix3.tap b/t/suffix3.tap new file mode 100755 index 000000000..168c84264 --- /dev/null +++ b/t/suffix3.tap @@ -0,0 +1,82 @@ +#! /bin/sh +# Copyright (C) 1999-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/>. + +# Test to make sure that suffix rules chain. + +required=c++ +. ./defs || Exit 1 + +plan_ 10 + +cat >> configure.ac << 'END' +AC_PROG_CXX +AC_OUTPUT +END + +cat > Makefile.am << 'END' +SUFFIXES = .zoo +.zoo.cc: + sed 's/INTEGER/int/g' `test -f '$<' || echo $(srcdir)/`$< >$@ +bin_PROGRAMS = foo +foo_SOURCES = foo.zoo +# This is required by "make distcheck". The useless indirection is +# reequired to avoid false positives by the grepping checks below. +FOO = foo +CLEANFILES = $(FOO).cc +END + +command_ok_ "aclocal" $ACLOCAL +command_ok_ "automake" $AUTOMAKE + +# The foo.cc intermediate step is implicit, it's a mistake if +# Automake requires this file somewhere. Also, Automake should +# not require the file 'foo.c' anywhere. +command_ok_ "intermediate files not mentioned" \ + not $FGREP foo.c Makefile.in +# However Automake must figure that foo.zoo is eventually +# transformed into foo.o, and use this latter file (to link foo). +command_ok_ "final object file figured out" \ + $FGREP 'foo.$(OBJEXT)' Makefile.in + +command_ok_ "autoconf" $AUTOCONF +command_ok_ "configure" ./configure + +# This is deliberately valid C++, but invalid C. +cat > foo.zoo <<'END' +using namespace std; +INTEGER main (void) +{ + return 0; +} +END + +directive=''; make_can_chain_suffix_rules || directive=TODO + +for target in all distcheck; do + command_ok_ "make $target" \ + -D "$directive" -r "suffix rules not chained" \ + $MAKE $target +done + +# FIXME: should we check that intermediate file 'foo.cc' has +# been removed? Or is this requiring too much from the make +# implementation? + +# Intermediate files should not be distributed. +command_ok_ "make distdir" $MAKE distdir +command_ok_ "intermediate file not distributed" test ! -r $me-1.0/foo.cc + +: |