libtool/tests/mdemo-dryrun.test
Gary V. Vaughan e9b2b3f264 Since defs can change (path to grep for example) when it is made
for a different host, it can't be shipped.  That also means that
defs will always be generated in the build tree, so each test case
can have the srcdir discovery factored away into tests/defs.in:

* Makefile.am (EXTRA_DIST): s/defs/defs.in/g
* tests/Makefile.am (defs): New rule to remake defs from the
parent directory's Makefile.
* tests/cdemo-conf.test, tests/cdemo-exec.test,
tests/cdemo-make.test, tests/cdemo-shared.test,
tests/cdemo-static.test, tests/demo-conf.test,
tests/demo-deplibs.test, tests/demo-exec.test,
tests/demo-hardcode.test, tests/demo-inst.test,
tests/demo-make.test, tests/demo-nofast.test,
tests/demo-noinst-link.test, tests/demo-nopic.test,
tests/demo-pic.test, tests/demo-relink.test,
tests/demo-shared.test, tests/demo-static.test,
tests/demo-unst.test, tests/depdemo-conf.test,
tests/depdemo-exec.test, tests/depdemo-inst.test,
tests/depdemo-make.test, tests/depdemo-nofast.test,
tests/depdemo-relink.test, tests/depdemo-shared.test,
tests/depdemo-static.test, tests/depdemo-unst.test,
tests/f77demo-conf.test, tests/f77demo-exec.test,
tests/f77demo-make.test, tests/f77demo-shared.test,
tests/f77demo-static.test, tests/link-2.test, tests/link.test,
tests/mdemo-conf.test, tests/mdemo-dryrun.test,
tests/mdemo-exec.test, tests/mdemo-inst.test,
tests/mdemo-make.test, tests/mdemo-shared.test,
tests/mdemo-static.test, tests/mdemo-unst.test,
tests/mdemo2-conf.test, tests/mdemo2-exec.test,
tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test,
tests/pdemo-exec.test, tests/pdemo-inst.test,
tests/pdemo-make.test, tests/quote.test, tests/sh.test,
tests/suffix.test, tests/tagdemo-conf.test,
tests/tagdemo-exec.test, tests/tagdemo-make.test,
tests/tagdemo-shared.test, tests/tagdemo-static.test,
tests/tagtrace.test: Removed srcdir discovery boilerplate...
* tests/defs.in: ...and put it here.
2004-09-23 13:07:15 +00:00

105 lines
3.8 KiB
Bash
Executable File

#! /bin/sh
# mdemo-dryrun.test - check whether the --dry-run mode works properly
# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 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 of the License, 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, a copy can be downloaded from
# http://www.gnu.org/copyleft/gpl.html, or by writing to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
. defs || exit 1
func_require "mdemo-conf" "mdemo/Makefile"
func_mkprefixdir
func_cd "mdemo"
func_make "clean"
# create `before' and `after' in a directory deep within objdir,
# so that their creation and removal does not modify even a timestamp
# in the output of `ls -l . $objdir'
func_mkdir_p "$objdir/temp/temp"
before=$objdir/temp/temp/before
after=$objdir/temp/temp/after
# Create a new libtool script that will enter dry run if the environment
# variable force_dry_run is set
rm -f $objdir/libtool.new
sed 's/^run=$/run=${force_dry_run+:}/' < libtool > $objdir/libtool.new
chmod +x $objdir/libtool.new
mv libtool $objdir/libtool
mv $objdir/libtool.new libtool
# main.o is not compiled with libtool, but it depends on it, so make
# sure it is up-to-date. libfoo2.la is linked with libsub.la, so make
# sure it exists, otherwise libtool will complain.
func_make main.$objext
func_msg "Making object files in mdemo (dry run)"
ls -l . $objdir | grep -v total > $before
force_dry_run=yes $MAKE foo1.lo foo2.lo sub.lo || exit $?
ls -l . $objdir | grep -v total > $after
cmp $before $after > /dev/null || exit 1
# Now really make them
func_make foo1.lo foo2.lo libsub.la
func_msg "Making libraries in mdemo (dry run)"
ls -l . $objdir | grep -v total > $before
force_dry_run=yes $MAKE foo1.la libfoo2.la || exit $?
ls -l . $objdir | grep -v total > $after
cmp $before $after > /dev/null || exit 1
# Now really make them
func_make foo1.la libfoo2.la
func_msg "Making programs in ../mdemo (dry run)"
ls -l . $objdir | grep -v total > $before
force_dry_run=yes $MAKE mdemo$EXEEXT mdemo_static$EXEEXT 1>&2 || exit $?
ls -l . $objdir | grep -v total > $after
cmp $before $after > /dev/null || exit 1
# Now really make them
func_make mdemo$EXEEXT mdemo_static$EXEEXT
func_msg "Running $MAKE install in ../mdemo (dry run)"
# Libtool does not create these directories
func_mkdir_p "$prefix/bin"
func_mkdir_p "$prefix/lib"
ls -l . $objdir | grep -v total > $before
ls -lR $prefix | grep -v total >> $before
force_dry_run=yes $MAKE install 1>&2 || exit 1
ls -l . $objdir | grep -v total > $after
ls -lR $prefix | grep -v total >> $after
cmp $before $after > /dev/null || exit 1
# Now really run it
func_make install
func_msg "Running $MAKE uninstall in ../mdemo (dry run)"
# Libtool does not uninstall the programs, remove them first
rm -f "$prefix/bin/mdemo$EXEEXT" "$prefix/bin/mdemo_static$EXEEXT"
ls -l . $objdir | grep -v total > $before
ls -lR $prefix | grep -v total >> $before
force_dry_run=yes $MAKE uninstall 1>&2 || exit $?
ls -l . $objdir | grep -v total > $after
ls -lR $prefix | grep -v total >> $after
cmp $before $after > /dev/null || exit 1
# Now really run it
func_make uninstall
rm -f $before $after libtool
mv $objdir/libtool libtool
exit 0