123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #! /bin/sh
- # Copyright (C) 2009-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 '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.
- # For gen-testsuite-part: ==> try-with-serial-tests <==
- . test-init.sh
- # 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
- 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 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 mostlyclean maintainer-clean
- do
- run_make -O -- -n $target
- case $target in
- install-* | installdirs | tags ) ;;
- *)
- if $have_dotmake; then
- grep "stamp-$target$" stdout || exit 1
- fi
- test ! -e "stamp-$target" || exit 1
- ;;
- esac
- case $target in
- install-* | installdirs ) ;;
- *)
- if $have_dotmake; then
- grep "stamp-$target-sub" stdout || exit 1
- fi
- test ! -e "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 ! -e "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
|