123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #! /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 cscope functionality.
- . test-init.sh
- plan_ 18
- ocwd=$(pwd) || fatal_ "getting top-level directory"
- cat > configure.ac << 'END'
- AC_INIT([cscope-test], [1.0])
- AM_INIT_AUTOMAKE([subdir-objects])
- AC_CONFIG_FILES([Makefile sub/Makefile])
- AC_SUBST([CC], [who-cares])
- AC_SUBST([CXX], [who-cares])
- AC_SUBST([FC], [who-cares])
- AC_SUBST([GCJ], [who-cares])
- AM_PATH_LISPDIR
- AC_OUTPUT
- END
- mkdir sub sub/subsub
- cat > Makefile.am <<'END'
- SUBDIRS = sub
- bin_PROGRAMS = foo
- foo_SOURCES = foo.c bar.cpp baz.f90
- lisp_LISP = foo.el
- EXTRA_DIST = foo.el
- END
- cat > sub/Makefile.am <<'END'
- bin_PROGRAMS = bar
- bar_SOURCES = subsub/dist.c
- nodist_bar_SOURCES = subsub/gen.c
- subsub/gen.c:
- $(MKDIR_P) subsub
- echo 'int generated_subsub () { return 0; }' > $@
- CLEANFILES = subsub/gen.c
- END
- echo 'int foo_func () { return 0; }' > foo.c
- echo 'int main () { return 0; }' > bar.cpp
- cat > baz.f90 <<'END'
- subroutine baz
- end
- END
- : > foo.el
- echo 'int main () { return 0; }' > sub/subsub/dist.c
- $ACLOCAL || fatal_ "aclocal failed"
- $AUTOCONF || fatal_ "autoconf failed"
- $AUTOMAKE -i -a || fatal_ "automake -i -a failed"
- # Sun cscope is interactive without redirection; also, it might not
- # support the '-q' option, which is required by our generated recipes.
- if cscope -q --version </dev/null; then
- have_cscope=yes
- else
- have_cscope=no
- fi
- test_cleanup ()
- {
- r=ok
- if test -f configure; then
- # In-tree build.
- $MAKE distclean
- else
- # VPATH build.
- $MAKE distcleancheck
- fi \
- && test ! -e cscope.files \
- && test ! -e cscope.out \
- && test ! -e cscope.in.out \
- && test ! -e cscope.po.out \
- || r='not ok'
- result_ "$r" "[$pfx] make distcheck"
- }
- test_cscope ()
- {
- r=ok
- $MAKE -n cscope || r='not ok'
- result_ "$r" "[$pfx] make -n cscope"
- if test $have_cscope = no; then
- # For later tests.
- touch cscope.files cscope.out cscope.in.out cscope.po.out
- skip_row_ 3 -r "no proper cscope program available"
- return 0
- fi
- r=ok
- run_make -E cscope || r='not ok'
- grep 'cannot find file' stderr && r='not ok'
- rm -f stderr
- result_ "$r" "[$pfx] make cscope"
- r=ok
- test -f cscope.files \
- && $FGREP foo.c cscope.files \
- && $FGREP bar.cpp cscope.files \
- && $FGREP sub/subsub/dist.c cscope.files \
- && $FGREP sub/subsub/gen.c cscope.files \
- || r='not ok'
- result_ "$r" "[$pfx] cscope.files looks correct"
- r=ok
- # cscope.files might not exist of the earlier "make cscope" failed.
- cp cscope.files cscope.files1 \
- && $MAKE cscope \
- && diff cscope.files cscope.files1 \
- || r='not ok'
- rm -f cscope.files1
- result_ "$r" "[$pfx] second \"make cscope\" is consistent"
- }
- my_configure ()
- {
- command_ok_ "[$pfx] configure" \
- "$1"/configure EMACS=no --with-lispdir=/who/cares
- }
- if using_gmake; then
- cd "$ocwd"
- pfx="relative VPATH"
- mkdir build
- cd build
- my_configure ..
- test_cscope
- test_cleanup
- cd "$ocwd"
- pfx="absolute VPATH"
- mkdir build2
- cd build2
- my_configure "$ocwd"
- test_cscope
- test_cleanup
- else
- skip_row_ 12 -r "cscope in VPATH requires GNU make"
- fi
- cd "$ocwd"
- pfx="in-tree build"
- my_configure .
- test_cscope
- test_cleanup
- :
|