#! /bin/sh # Copyright (C) 1999-2021 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 . # 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 :