automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] etags support


From: Derek R. Price
Subject: [PATCH] etags support
Date: Thu, 21 Dec 2000 14:05:25 -0500

I added rudimentary support for different implementations of etags (read
the one Automake expects and Exuberent etags) since they take slightly
different options.  Exuberent etags is the version distributed with
RedHat Linux 6.2 & I believe Debian and a few others.

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

This was enough to get the TAGS target working with CVS, but what it
probably still needs is a test for support for "--lang=none" and a hook
like @AMDEP@ to comment out the TAGS target or support in missing for
when the user doesn't have etags installed or configure can't figure out
how it works.

What version of etags was Automake expecting and where can I get it?

Derek

--
Derek Price                      CVS Solutions Architect ( http://CVSHome.org )
mailto:address@hidden     OpenAvenue ( http://OpenAvenue.com )
--
There are two major products to come out of Berkley: LSD and UNIX . We don't
believe this to be a coincidence.


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  <address@hidden>
+
+       * 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-18  Tom Tromey  <address@hidden>
 
        * automake.in (handle_built_sources): Removed.
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)@address@hidden(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  <address@hidden>
+
+       * etags.test: New file
+       * Makefile.am (TESTS): added etags.test
+
 2000-12-17  Tom Tromey  <address@hidden>
 
        * 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
+++ m4/etags.m4 Thu Dec 21 12:03:24 2000
@@ -0,0 +1,60 @@
+#
+# 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" = no ; then
+               ac_cv_prog_ETAGS=
+               ETAGS=
+       else
+               AM_PROG_ETAGS_INCLUDE_OPTION
+       fi
+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)])
--- /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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]