123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #! /bin/sh
- # Copyright (C) 2010-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 basic remake rules for Makefiles, for a *VPATH build*.
- # This testcase checks dependency of generated Makefile from Makefile.am,
- # configure.ac, acinclude.m4, aclocal.m4, and extra m4 files considered
- # by aclocal.
- # Keep this in sync with sister test 'remake-makefile-instree.sh', which
- # performs the same checks for a in-tree build.
- . test-init.sh
- mv -f configure.ac configure.stub
- cat > Makefile.am <<'END'
- all-local: foo
- foo:
- echo '!Foo!' >$@
- check-local:
- cat foo
- grep '!Foo!' foo
- CLEANFILES = foo
- END
- cat configure.stub - > configure.ac <<'END'
- AC_OUTPUT
- END
- $ACLOCAL
- $AUTOCONF
- $AUTOMAKE
- mkdir build
- cd build
- srcdir='..' # To make syncing with remake-makefile-intree.sh easier.
- $srcdir/configure
- $MAKE
- cat foo
- grep '!Foo!' foo
- $MAKE distcheck
- rm -f foo
- # Modify just Makefile.am.
- $sleep
- cat > $srcdir/Makefile.am <<'END'
- all-local: bar
- bar:
- echo '!Baz!' >$@
- check-local:
- cat bar
- grep '!Baz!' bar
- test ! -r $(srcdir)/foo
- test ! -r foo
- CLEANFILES = bar
- END
- using_gmake || $MAKE Makefile
- $MAKE
- cat bar
- grep '!Baz!' bar
- test ! -e foo
- $MAKE distcheck
- rm -f bar
- # Modify Makefile.am and configure.ac.
- $sleep
- cat > $srcdir/Makefile.am <<'END'
- check-local:
- cat quux
- grep '!Zardoz!' quux
- test ! -r $(srcdir)/bar
- test ! -r bar
- END
- cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
- AC_CONFIG_FILES([quux])
- AC_SUBST([QUUX], [Zardoz])
- AC_OUTPUT
- END
- cat > $srcdir/quux.in <<'END'
- !@QUUX@!
- END
- using_gmake || $MAKE Makefile
- $MAKE
- cat quux
- grep '!Zardoz!' quux
- test ! -e bar
- $MAKE distcheck
- rm -f quux
- # Modify configure.ac and aclocal.m4 to add a directory of extra m4
- # files considered by aclocal. Also update checks in Makefile.am.
- # Note that we won't use this new directory of extra m4 files in the
- # first rebuild below (but we will in the second).
- $sleep
- mkdir $srcdir/m4
- cat > $srcdir/Makefile.am <<'END'
- all-local: quux
- check-local:
- cat quux
- grep '%Foo%' quux
- test x'$(QUUX)' = x'%Foo%'
- END
- # Modify configure.ac and aclocal.m4.
- $sleep
- cat $srcdir/configure.stub - > $srcdir/configure.ac <<'END'
- AC_CONFIG_MACRO_DIR([m4])
- AC_CONFIG_FILES([quux])
- MY_CUSTOM_MACRO
- AC_OUTPUT
- END
- cat >> $srcdir/aclocal.m4 <<'END'
- AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Foo%])])
- END
- $MAKE
- cat quux
- grep '%Foo%' quux
- $MAKE distcheck
- # Modify Makefile.am, remove aclocal.m4, and add a new m4 file to
- # the directory of extra m4 files considered by aclocal. This new
- # file should now provide a macro required by configure.ac and that
- # was previously provided by aclocal.m4.
- $sleep
- sed 's/%Foo%/%Bar%/g' $srcdir/Makefile.am > t
- mv -f t $srcdir/Makefile.am
- cat $srcdir/Makefile.am
- rm -f $srcdir/aclocal.m4
- cat > $srcdir/m4/blah.m4 <<'END'
- AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Bar%])])
- END
- $MAKE
- cat quux
- grep '%Bar%' quux
- $MAKE distcheck
- # Modify Makefile.am, remove all the extra m4 files to considered
- # by aclocal, and add an acinclude.m4 file. This last file should
- # now provide a macro required by configure.ac, and that was
- # previously provided by the extra m4 files considered by aclocal.
- $sleep
- rm -f $srcdir/m4/*.m4
- sed 's/%Bar%/%Quux%/g' $srcdir/Makefile.am > t
- mv -f t $srcdir/Makefile.am
- cat $srcdir/Makefile.am
- cat > $srcdir/acinclude.m4 <<'END'
- AC_DEFUN([MY_CUSTOM_MACRO], [AC_SUBST([QUUX], [%Quux%])])
- END
- $MAKE
- cat quux
- grep '%Quux%' quux
- $MAKE distcheck
- :
|