diff options
Diffstat (limited to 't/maken3.sh')
-rwxr-xr-x | t/maken3.sh | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/t/maken3.sh b/t/maken3.sh new file mode 100755 index 000000000..2018549e5 --- /dev/null +++ b/t/maken3.sh @@ -0,0 +1,190 @@ +#! /bin/sh +# Copyright (C) 2009-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 'make -n' for various targets, to ensure that: +# +# 1. no files or directories are created or removed, and +# +# 2. if using GNU make or a make implementation supporting the .MAKE +# special target, the output from make is sufficiently complete. +# +# This test exercises the GCS-mandated targets (except for dist) +# as well as tags, TAGS. + +. ./defs || Exit 1 + +# Does $MAKE support the '.MAKE' special target? +have_dotmake=false +if using_gmake; then + have_dotmake=: # GNU make must support it. +else + unindent > mk.tmp << 'END' + targ.tmp: + : > $@ + .MAKE: targ.tmp +END + if $MAKE -n -f mk.tmp targ.tmp && test -f targ.tmp; then + have_dotmake=: + fi +fi + +mkdir sub sub2 + +cat >> configure.ac << 'END' +AC_CONFIG_FILES([sub/Makefile sub2/Makefile]) +AC_OUTPUT +END + +cat > Makefile.am <<'END' +TESTS = foo.test +SUBDIRS = sub sub2 +##BUILT_SOURCES = foo +foo: +foo.test: +all-local: + @: > stamp-all +install-data-local: + @: > stamp-install +uninstall-local: + @: > stamp-uninstall +clean-local: + @: > stamp-clean +distclean-local: + @: > stamp-distclean +info-local: + @: > stamp-info +html-local: + @: > stamp-html +dvi-local: + @: > stamp-dvi +ps-local: + @: > stamp-ps +pdf-local: + @: > stamp-pdf +check-local: + @: > stamp-check +installcheck-local: + @: > stamp-installcheck +mostlyclean-local: + @: > stamp-mostlyclean +maintainer-clean-local: + @: > stamp-maintainer-clean +END +cat >sub/Makefile.am <<'END' +all-local: + @: > stamp-all-sub +install-data-local: + @: > stamp-install-sub +uninstall-local: + @: > stamp-uninstall-sub +clean-local: + @: > stamp-clean-sub +distclean-local: + @: > stamp-distclean-sub +info-local: + @: > stamp-info-sub +html-local: + @: > stamp-html-sub +dvi-local: + @: > stamp-dvi-sub +ps-local: + @: > stamp-ps-sub +pdf-local: + @: > stamp-pdf-sub +check-local: + @: > stamp-check-sub +installcheck-local: + @: > stamp-installcheck-sub +tags: + @: > stamp-tags-sub +TAGS: + @: > stamp-TAGS-sub +mostlyclean-local: + @: > stamp-mostlyclean-sub +maintainer-clean-local: + @: > stamp-maintainer-clean-sub +END +cat >sub2/Makefile.am <<'END' +all install uninstall clean check: + @: > sub2-$@-should-not-be-executed +info dvi pdf ps: + @: > sub2-$@-should-not-be-executed +html: + @: > sub2-$@-should-not-be-executed +install-info install-html install-dvi install-pdf install-ps: + @: > sub2-$@-should-not-be-executed +installcheck installdirs tags TAGS mostlyclean: + @: > sub2-$@-should-not-be-executed +## These targets cannot be overridden like this: +## install-strip distclean maintainer-clean +END + +$ACLOCAL +$AUTOCONF + +check_targets () +{ + for target in \ + all install install-strip uninstall clean distclean check \ + info html dvi pdf ps \ + install-info install-html install-dvi install-pdf install-ps \ + installcheck installdirs tags TAGS mostlyclean maintainer-clean + do + $MAKE -n $target >stdout || { cat stdout; Exit 1; } + cat stdout + case $target in + install-* | installdirs | tags | TAGS ) ;; + *) + if $have_dotmake; then + grep "stamp-$target$" stdout || Exit 1 + fi + test ! -f "stamp-$target$" || Exit 1 + ;; + esac + case $target in + install-* | installdirs ) ;; + *) + if $have_dotmake; then + grep "stamp-$target-sub" stdout || Exit 1 + fi + test ! -f "sub/stamp-$target-sub" || Exit 1 + ;; + esac + case $target in + distclean | maintainer-clean ) ;; + *) + if $have_dotmake; then + grep "should-not-be-executed" stdout || Exit 1 + fi + test ! -f "sub2/sub2-$target-should-not-be-executed" || Exit 1 + ;; + esac + done +} + +$AUTOMAKE -a -Wno-override +./configure +check_targets || Exit 1 + +# Now, introduce BUILT_SOURCES into the toplevel Makefile +# TODO: add BUILT_SOURCES to sub2, fix fallout. +sed 's/##//' < Makefile.am > t +mv -f t Makefile.am +$AUTOMAKE -Wno-override --force Makefile +./configure +check_targets || Exit 1 + +Exit 0 |