This is the mail archive of the automake@gnu.org mailing list for the automake project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [PATCH] etags support


"Derek R. Price" wrote:

> > > I added a macro to test for the presence of etags and whether it
> > > supports "--etags-include=<file>" or "-i <file>" for includes.

Okay, one more try.  I hadn't added etags.m4 to the Makefile.am so it wasn't being
installed and I also tweaked the AM_PROG_ETAGS macro to call
AM_MISSING_PROG(ETAGS, etags) when it can't find a working version of etags.

I'm including the entire new patch.

Derek

--
Derek Price                      CVS Solutions Architect ( http://CVSHome.org )
mailto:dprice@openavenue.com     OpenAvenue ( http://OpenAvenue.com )
--
106.  Charlie was a Chemist, but Charlie is no more.
      What Charlie thought was H20 was H2SO4.


Index: ChangeLog
===================================================================
RCS file: /cvs/automake/automake/ChangeLog,v
retrieving revision 1.916
diff -u -r1.916 ChangeLog
--- ChangeLog	2000/12/21 06:07:14	1.916
+++ ChangeLog	2000/12/21 18:07:02
@@ -1,3 +1,10 @@
+2000-12-21  Derek Price  <derek.price@openavenue.com>
+
+	* m4/etags.m4: Discover the etags implementation
+	* m4/init.m4: Require AM_PROG_ETAGS
+	* tags.am: add support for AM_PROG_ETAGS & don't assume
+	@CONFIG@ is present in the build directory
+
 2000-12-20  Marc Espie <espie@openbsd.org>
 
 	* automake.in (handle_texinfo): Make path of $vtexi explicit in
Index: tags.am
===================================================================
RCS file: /cvs/automake/automake/tags.am,v
retrieving revision 1.24
diff -u -r1.24 tags.am
--- tags.am	2000/10/16 09:01:36	1.24
+++ tags.am	2000/12/21 18:07:02
@@ -36,17 +36,17 @@
 SUBDIRS	list='$(SUBDIRS)'; for subdir in $$list; do \
 ## Do nothing if we're trying to look in `.'.
 SUBDIRS   if test "$$subdir" = .; then :; else \
-SUBDIRS	    test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+SUBDIRS	    test -f $$subdir/TAGS && tags="$$tags $(ETAGS_INCLUDE_OPTION)$$here/$$subdir/TAGS"; \
 SUBDIRS   fi; \
 SUBDIRS	done; \
 ## Make sure the list of sources is unique.
 	list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
+	unique=`for i in $$list @CONFIG@; do \
 ## Handle VPATH correctly.
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 ## Make sure we have something to run etags on.
-	test -z "$(ETAGS_ARGS)@CONFIG@$$unique$(LISP)$$tags" \
-	  || etags $(ETAGS_ARGS) $$tags @CONFIG@ $$unique $(LISP)
+	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+	  || $(ETAGS) $(ETAGS_ARGS) $$tags $$unique $(LISP)
Index: m4/init.m4
===================================================================
RCS file: /cvs/automake/automake/m4/init.m4,v
retrieving revision 1.20
diff -u -r1.20 m4/init.m4
--- m4/init.m4	2000/10/10 00:18:52	1.20
+++ m4/init.m4	2000/12/21 18:07:02
@@ -54,6 +54,7 @@
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_PROG_ETAGS])
 AC_REQUIRE([AM_DEP_TRACK])dnl
 AC_REQUIRE([AM_SET_DEPDIR])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CC],
Index: tests/ChangeLog
===================================================================
RCS file: /cvs/automake/automake/tests/ChangeLog,v
retrieving revision 1.309
diff -u -r1.309 tests/ChangeLog
--- tests/ChangeLog	2000/12/17 21:32:57	1.309
+++ tests/ChangeLog	2000/12/21 18:07:02
@@ -1,3 +1,8 @@
+2000-12-21  Derek Price  <derek.price@openavenue.com>
+
+	* etags.test: New file
+	* Makefile.am (TESTS): added etags.test
+
 2000-12-17  Tom Tromey  <tromey@redhat.com>
 
 	* Makefile.am (XFAIL_TESTS): Don't mention ldflags.test.
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.240
diff -u -r1.240 tests/Makefile.am
--- tests/Makefile.am	2000/12/17 21:32:57	1.240
+++ tests/Makefile.am	2000/12/21 18:07:02
@@ -97,6 +98,7 @@
 empty3.test \
 empty4.test \
 error.test \
+etags.test \
 exdir.test \
 exdir2.test \
 exsource.test \
--- /dev/null	Thu Aug 24 05:00:32 2000
+++ tests/etags.test	Wed Dec 20 19:24:26 2000
@@ -0,0 +1,28 @@
+#! /bin/sh
+
+# Test to make sure depcomp is installed and found properly
+# when required for multiple directories
+
+. $srcdir/defs || exit 1
+
+cat > configure.in << 'END'
+AC_INIT(Makefile.am)
+AM_INIT_AUTOMAKE(nonesuch, nonesuch)
+AM_PROG_ETAGS
+AC_OUTPUT(Makefile)
+END
+
+: > Makefile.am
+
+# Fail gracefully if no autoconf.
+(autoconf --version) > /dev/null 2>&1 || exit 77
+
+$ACLOCAL || exit 1
+autoconf || exit 1
+$AUTOMAKE || exit 1
+./configure || exit 1
+
+egrep '^ETAGS = ..*$' Makefile >/dev/null 2>&1 || exit 1
+egrep '^ETAGS_INCLUDE_OPTION = ..*$' Makefile >/dev/null 2>&1 || exit 1
+
+exit 0
Index: m4/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/m4/Makefile.am,v
retrieving revision 1.28
diff -u -r1.28 m4/Makefile.am
--- m4/Makefile.am	1999/11/22 19:22:02	1.28
+++ m4/Makefile.am	2000/12/21 22:21:40
@@ -7,6 +7,7 @@
 m4data_DATA = ccstdc.m4 cond.m4 depend.m4 depout.m4 dmalloc.m4 \
 error.m4 gcj.m4 header.m4 init.m4 lex.m4 lispdir.m4 maintainer.m4 \
 minuso.m4 missing.m4 multi.m4 obstack.m4 protos.m4 ptrdiff.m4 \
-python.m4 regex.m4 sanity.m4 strtod.m4 termios.m4 winsz.m4
+python.m4 regex.m4 sanity.m4 strtod.m4 termios.m4 winsz.m4 \
+etags.m4
 
 EXTRA_DIST = $(m4data_DATA)
--- /dev/null	Thu Aug 24 05:00:32 2000
+++ m4/etags.m4	Thu Dec 21 17:32:23 2000
@@ -0,0 +1,61 @@
+#
+# Find some information about the etags program
+#
+# Sets
+#	ETAGS = path to etags
+#	ETAGS_INCLUDE_OPTION = option to pass to etags with arg for includes
+#
+
+AC_DEFUN([AM_PROG_ETAGS],
+[AC_BEFORE([$0], AM_PROG_ETAGS_WORKS)
+AC_CHECK_PROG(ETAGS, etags, etags)
+if test -z "$ETAGS"; then
+  AC_CHECK_PROG(ETAGS, ctags, ctags -e)
+fi
+if test -n "$ETAGS"; then
+	AM_PROG_ETAGS_WORKS
+	if test "$am_cv_prog_etags_works" = yes ; then
+		AM_PROG_ETAGS_INCLUDE_OPTION
+	else
+		AM_MISSING_PROG(ETAGS, etags)
+	fi
+else
+	AM_MISSING_PROG(ETAGS, etags)
+fi])
+
+
+AC_DEFUN([AM_PROG_ETAGS_WORKS],
+[AC_CACHE_CHECK([whether etags works], [am_cv_prog_etags_works],
+[cat >conftest.c <<EOF
+int globalvar;
+EOF
+if AC_TRY_COMMAND(${ETAGS-etags} -f - conftest.c) |egrep "^int globalvar;" >/dev/null 2>&1; then
+	am_cv_prog_etags_works=yes
+else
+	am_cv_prog_etags_works=no
+fi
+rm -f conftest.c])])
+
+AC_DEFUN([AM_PROG_ETAGS_INCLUDE_OPTION],
+[AC_REQUIRE([AM_PROG_ETAGS_WORKS])
+if test "$am_cv_prog_etags_works" = yes ; then
+	AC_CACHE_CHECK([for etags include option],
+	[am_cv_prog_etags_include_option],
+	[cat >conftest.c <<EOF
+int globalvar;
+EOF
+	if AC_TRY_COMMAND(${ETAGS-etags} --etags-include=TAGS.inc -f - conftest.c) \
+			|egrep '^TAGS.inc,include$' >/dev/null 2>&1; then
+		am_cv_prog_etags_include_option=--etags-include=
+	elif AC_TRY_COMMAND(${ETAGS-etags} -i TAGS.inc -f - conftest.c) \
+			|egrep '^TAGS.inc,include$' >/dev/null 2>&1; then
+		am_cv_prog_etags_include_option='"-i "'
+	else :
+		# AC_MSG_ERROR(unfamiliar etags implementation)
+	fi
+	rm -f conftest.c])
+else
+	:
+fi
+ETAGS_INCLUDE_OPTION="$am_cv_prog_etags_include_option"
+AC_SUBST(ETAGS_INCLUDE_OPTION)])

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]