#! /bin/sh # Copyright (C) 2009-2013 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 . # 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 stderr || r='not ok' cat stderr >&2 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 :