12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #! /bin/sh
- # Copyright (C) 1999-2017 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++
- . test-init.sh
- 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 ! -e $me-1.0/foo.cc
- :
|