automake-patches
[Top][All Lists]
Advanced

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

Re: [Patch] New target to generate cscope database


From: Debarshi Ray
Subject: Re: [Patch] New target to generate cscope database
Date: Fri, 8 May 2009 09:28:12 +0530

Updated patch: 
http://rishi.fedorapeople.org/gnu/0001-New-target-to-generate-cscope-database.patch
and inlined below.

Changes:
+ Removed the -R being passed to cscope. It does, indeed, cause files
not owned by the project to be indexed. (Ralf)
+ Added cscope to AM_RECURSIVE_TARGETS. Should it be cscope and/or
cscopelist? (Ralf)
+ Pass $(CSCOPEFLAGS) and $(AM_CSCOPEFLAGS) to cscope. (Ralf)
+ Handle generated SOURCES. (Ralf)
+ Reword the documentation.
+ Added NEWS entry. (Ralf)
+ Added ChangeLog entry.
+ Delete cscope.files at the beginning of 'make cscope' to prevent
consecutive runs from adding duplicate entries. (Ralf)

TODO:
+ Test cases.

Issues:
+ I am not sure if cscope can work with $(LISP). Probably not.
+ Cscope looks for #included headers not found in the source tree
under the standard include path (usually /usr/include). More paths can
be added using the -I option as mentioned in the man page. On the
other hand, this behaviour can be stopped using -k. What do we want to
do?

>From dffd50442f1d0cb662a67026dd48ace0e2bdddfe Mon Sep 17 00:00:00 2001
From: Debarshi Ray <address@hidden>
Date: Fri, 8 May 2009 08:54:42 +0530
Subject: [PATCH] New target to generate cscope database.
 * automake.in (handle_tags): Handle cscope.
 * doc/automake.texi (Tags): Document cscope.
 * lib/am/tags.am (CSCOPE): New macro.
 [TOPDIR_P] (AM_RECURSIVE_TARGETS): Add cscope.
 (cscope): New target.
 (cscopeclean): Likewise.
 (cscope.files): Likewise.
 (cscopelist): Likewise.
 (distclean-tags): Remove `cscope.out', `cscope.in.out',
 `cscope.po.out' and `cscope.files'.
 * NEWS: Update.
 Based upon earlier patch from Jesse Barnes.

---
 ChangeLog                      |   16 ++++++++++
 Makefile.in                    |   63 ++++++++++++++++++++++++++++------------
 NEWS                           |    4 ++
 automake.in                    |   18 ++++++++++-
 doc/Makefile.in                |   42 +++++++++++++++++---------
 doc/automake.texi              |   14 +++++++--
 lib/Automake/Makefile.in       |   36 ++++++++++++++++------
 lib/Automake/tests/Makefile.in |    2 +
 lib/Makefile.in                |   47 ++++++++++++++++++++---------
 lib/am/Makefile.in             |    2 +
 lib/am/tags.am                 |   36 ++++++++++++++++++++++-
 m4/Makefile.in                 |    2 +
 tests/Makefile.in              |    2 +
 13 files changed, 219 insertions(+), 65 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 722ac98..00ceef9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2009-05-07  Debarshi Ray  <address@hidden>
+
+       New target to generate cscope database.
+       * automake.in (handle_tags): Handle cscope.
+       * doc/automake.texi (Tags): Document cscope.
+       * lib/am/tags.am (CSCOPE): New macro.
+       [TOPDIR_P] (AM_RECURSIVE_TARGETS): Add cscope.
+       (cscope): New target.
+       (cscopeclean): Likewise.
+       (cscope.files): Likewise.
+       (cscopelist): Likewise.
+       (distclean-tags): Remove `cscope.out', `cscope.in.out',
+       `cscope.po.out' and `cscope.files'.
+       * NEWS: Update.
+       Based upon earlier patch from Jesse Barnes.
+
 2009-05-03  Ralf Wildenhues  <address@hidden>

        Fix copyright years in *.am files.
diff --git a/Makefile.in b/Makefile.in
index 56a3126..8d6b195 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -89,9 +89,10 @@ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive
clean-recursive \
   distclean-recursive maintainer-clean-recursive
 AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
        $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-       distdir dist dist-all distcheck
+       cscope distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
@@ -438,6 +439,10 @@ ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
          test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE)
$(AM_MAKEFLAGS) ctags); \
        done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS)
cscopelist); \
+       done

 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -501,8 +506,28 @@ GTAGS:
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"

+cscope: cscopeclean cscope.files
+       $(CSCOPE) -b -q $(CSCOPEFLAGS) $(AM_CSCOPEFLAGS) \
+         -i cscope.files $(CSCOPE_ARGS)
+
+cscopeclean:
+       -rm -f cscope.files
+
+cscope.files: cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       for i in $$list; do \
+         if test -f "$$i"; \
+           then echo \"$(subdir)/$$i\"; \
+         else \
+           echo \"$(abs_srcdir)/$$i\"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
 distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags cscope.out cscope.in.out \
+       cscope.po.out cscope.files

 distdir: $(DISTFILES)
        $(am__remove_distdir)
@@ -788,26 +813,26 @@ ps-am:
 uninstall-am: uninstall-binSCRIPTS
        @$(NORMAL_INSTALL)
        $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-       install-am install-exec-am install-strip tags-recursive \
-       uninstall-am
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am \
+       install-exec-am install-strip tags-recursive uninstall-am

 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
        all all-am am--refresh check check-am clean clean-generic \
-       ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-       dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-       distcheck distclean distclean-generic distclean-tags \
-       distcleancheck distdir distuninstallcheck dvi dvi-am html \
-       html-am info info-am install install-am install-binSCRIPTS \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-exec-hook install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
-       tags-recursive uninstall uninstall-am uninstall-binSCRIPTS \
-       uninstall-hook
+       cscope cscopeclean cscopelist cscopelist-recursive ctags \
+       ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
+       dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+       distclean distclean-generic distclean-tags distcleancheck \
+       distdir distuninstallcheck dvi dvi-am html html-am info \
+       info-am install install-am install-binSCRIPTS install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-exec-hook install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-binSCRIPTS uninstall-hook


 install-exec-hook:
diff --git a/NEWS b/NEWS
index e806cf6..4d3f9dd 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,10 @@ New in 1.10c:
   - There is initial support for the Vala programming language, when using
     Vala 0.7.0 or later.

+* New targets:
+
+  - New `cscope' target (builds cscope database).
+
 * Miscellaneous Changes:

   - In 1.10b, the `parallel-tests' driver introduced per-extension test
diff --git a/automake.in b/automake.in
index 20ef3bd..b5133b1 100755
--- a/automake.in
+++ b/automake.in
@@ -3724,6 +3724,7 @@ sub handle_tags
 {
     my @tag_deps = ();
     my @ctag_deps = ();
+    my @cscope_deps = ();
     if (var ('SUBDIRS'))
     {
        $output_rules .= ("tags-recursive:\n"
@@ -3747,6 +3748,17 @@ sub handle_tags
        push (@ctag_deps, 'ctags-recursive');
        &depend ('.PHONY', 'ctags-recursive');
        &depend ('.MAKE', 'ctags-recursive');
+
+       $output_rules .= ("cscopelist-recursive:\n"
+                         . "\tlist=\'\$(SUBDIRS)\'; for subdir in \$\$list; do 
\\\n"
+                         # Never fail here if a subdir fails; it
+                         # isn't important.
+                         . "\t  test \"\$\$subdir\" = . || (cd \$\$subdir"
+                         . " && \$(MAKE) \$(AM_MAKEFLAGS) cscopelist); \\\n"
+                         . "\tdone\n");
+       push (@cscope_deps, 'cscopelist-recursive');
+       &depend ('.PHONY', 'cscopelist-recursive');
+       &depend ('.MAKE', 'cscopelist-recursive');
     }

     if (&saw_sources_p (1)
@@ -3769,7 +3781,8 @@ sub handle_tags
                                         new Automake::Location,
                                         CONFIG    => "@config",
                                         TAGSDIRS  => "@tag_deps",
-                                        CTAGSDIRS => "@ctag_deps");
+                                        CTAGSDIRS => "@ctag_deps",
+                                        CSCOPEDIRS => "@cscope_deps");

        set_seen 'TAGS_DEPENDENCIES';
     }
@@ -3784,8 +3797,9 @@ sub handle_tags
        # Otherwise, it would be possible for a top-level "make TAGS"
        # to fail because some subdirectory failed.
        $output_rules .= "tags: TAGS\nTAGS:\n\n";
-       # Ditto ctags.
+       # Ditto ctags and cscope.
        $output_rules .= "ctags: CTAGS\nCTAGS:\n\n";
+       $output_rules .= "cscopelist:\n\n";
     }
 }

diff --git a/doc/Makefile.in b/doc/Makefile.in
index 6433ad8..877c042 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -532,8 +532,19 @@ GTAGS:
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"

+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       for i in $$list; do \
+         if test -f "$$i"; \
+           then echo \"$(subdir)/$$i\"; \
+         else \
+           echo \"$(abs_srcdir)/$$i\"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
 distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags cscope.out cscope.in.out \
+       cscope.po.out cscope.files

 distdir: $(DISTFILES)
        @list='$(MANS)'; if test -n "$$list"; then \
@@ -764,20 +775,21 @@ uninstall-man: uninstall-man1
 .MAKE: install-am install-strip

 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-aminfo \
-       clean-generic ctags dist-info distclean distclean-generic \
-       distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am \
-       install-dist_docDATA install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-man1 install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-aminfo maintainer-clean-generic \
-       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
-       mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am tags \
-       uninstall uninstall-am uninstall-dist_docDATA uninstall-dvi-am \
-       uninstall-html-am uninstall-info-am uninstall-man \
-       uninstall-man1 uninstall-pdf-am uninstall-ps-am
+       clean-generic cscopelist ctags dist-info distclean \
+       distclean-generic distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dist_docDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-man1 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-vti mostlyclean \
+       mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
+       pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-dist_docDATA uninstall-dvi-am uninstall-html-am \
+       uninstall-info-am uninstall-man uninstall-man1 \
+       uninstall-pdf-am uninstall-ps-am

 $(dist_man1_MANS): $(top_srcdir)/configure.ac
 $(srcdir)/aclocal.1 $(srcdir)/automake.1:
diff --git a/doc/automake.texi b/doc/automake.texi
index 09a5dd2..e3a7e84 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -312,7 +312,7 @@ Support for Test Suites

 Miscellaneous Rules

-* Tags::                        Interfacing to etags and mkid
+* Tags::                        Interfacing to cscope, etags and mkid
 * Suffixes::                    Handling new file extensions
 * Multilibs::                   Support for multilibs.

@@ -9302,7 +9302,7 @@ the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
 There are a few rules and variables that didn't fit anywhere else.

 @menu
-* Tags::                        Interfacing to etags and mkid
+* Tags::                        Interfacing to cscope, etags and mkid
 * Suffixes::                    Handling new file extensions
 * Multilibs::                   Support for multilibs.
 @end menu
@@ -9364,6 +9364,14 @@ Automake will also generate an @code{ID} rule
that will run
 directory-by-directory basis.
 @trindex id

+Similarly, the @code{cscope} rule will create a list of all the source
+files in the tree and run @command{cscope} to build an inverted index
+database.  The variable @code{CSCOPE} is the name of the program to invoke
+(by default @command{cscope}); @code{CSCOPEFLAGS} and
address@hidden can be used by the user to pass additional flags and
+file names respectively, while @code{AM_CSCOPEFLAGS} can be used by the
address@hidden
+
 Finally, Automake also emits rules to support the
 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
 The @code{GTAGS} rule runs Global Tags and puts the
@@ -12885,4 +12893,4 @@ parentheses is the number of generated test cases.
 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
address@hidden  LocalWords:  barexec Pinard's automatize initialize lzma xz
address@hidden  LocalWords:  barexec Pinard's automatize initialize lzma xz 
cscope
diff --git a/lib/Automake/Makefile.in b/lib/Automake/Makefile.in
index 25c2843..c57fea7 100644
--- a/lib/Automake/Makefile.in
+++ b/lib/Automake/Makefile.in
@@ -386,6 +386,10 @@ ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
          test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE)
$(AM_MAKEFLAGS) ctags); \
        done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS)
cscopelist); \
+       done

 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -449,8 +453,19 @@ GTAGS:
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"

+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       for i in $$list; do \
+         if test -f "$$i"; \
+           then echo \"$(subdir)/$$i\"; \
+         else \
+           echo \"$(abs_srcdir)/$$i\"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
 distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags cscope.out cscope.in.out \
+       cscope.po.out cscope.files

 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -610,17 +625,18 @@ ps-am:

 uninstall-am: uninstall-dist_perllibDATA uninstall-nodist_perllibDATA

-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-       install-am install-strip tags-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive

 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am check check-am clean clean-generic ctags \
-       ctags-recursive distclean distclean-generic distclean-tags \
-       distdir dvi dvi-am html html-am info info-am install \
-       install-am install-data install-data-am \
-       install-dist_perllibDATA install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man \
+       all all-am check check-am clean clean-generic cscopelist \
+       cscopelist-recursive ctags ctags-recursive distclean \
+       distclean-generic distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dist_perllibDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
        install-nodist_perllibDATA install-pdf install-pdf-am \
        install-ps install-ps-am install-strip installcheck \
        installcheck-am installdirs installdirs-am maintainer-clean \
diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in
index 9f3a097..2103667 100644
--- a/lib/Automake/tests/Makefile.in
+++ b/lib/Automake/tests/Makefile.in
@@ -273,6 +273,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:

+cscopelist:
+

 # To be appended to the command running the test.  Handle the stdout
 # and stderr redirection, and catch the exit status.
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 3773bd1..e1a286b 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -361,6 +361,10 @@ ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
          test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE)
$(AM_MAKEFLAGS) ctags); \
        done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS)
cscopelist); \
+       done

 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -424,8 +428,19 @@ GTAGS:
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"

+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       for i in $$list; do \
+         if test -f "$$i"; \
+           then echo \"$(subdir)/$$i\"; \
+         else \
+           echo \"$(abs_srcdir)/$$i\"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
 distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags cscope.out cscope.in.out \
+       cscope.po.out cscope.files

 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -585,22 +600,24 @@ ps-am:

 uninstall-am: uninstall-dist_pkgvdataDATA uninstall-dist_scriptDATA

-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-       install-am install-data-am install-strip tags-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am \
+       install-data-am install-strip tags-recursive

 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am check check-am clean clean-generic ctags \
-       ctags-recursive distclean distclean-generic distclean-tags \
-       distdir dvi dvi-am html html-am info info-am install \
-       install-am install-data install-data-am install-data-hook \
-       install-dist_pkgvdataDATA install-dist_scriptDATA install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installcheck-local \
-       installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+       all all-am check check-am clean clean-generic cscopelist \
+       cscopelist-recursive ctags ctags-recursive distclean \
+       distclean-generic distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-data-hook install-dist_pkgvdataDATA \
+       install-dist_scriptDATA install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installcheck-local installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am \
        uninstall-dist_pkgvdataDATA uninstall-dist_scriptDATA


diff --git a/lib/am/Makefile.in b/lib/am/Makefile.in
index 84d09f0..0ca8c9f 100644
--- a/lib/am/Makefile.in
+++ b/lib/am/Makefile.in
@@ -268,6 +268,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:

+cscopelist:
+

 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
diff --git a/lib/am/tags.am b/lib/am/tags.am
index f6661e2..654ddde 100644
--- a/lib/am/tags.am
+++ b/lib/am/tags.am
@@ -134,6 +134,39 @@ GTAGS:
          && gtags -i $(GTAGS_ARGS) "$$here"


+## ------- ##
+## cscope  ##
+## ------- ##
+
+if %?TOPDIR_P%
+
+CSCOPE = cscope
+.PHONY: cscope cscopeclean
+AM_RECURSIVE_TARGETS += cscope
+
+cscope: cscopeclean cscope.files
+       $(CSCOPE) -b -q $(CSCOPEFLAGS) $(AM_CSCOPEFLAGS) \
+         -i cscope.files $(CSCOPE_ARGS)
+
+cscopeclean:
+       -rm -f cscope.files
+
+cscope.files: %CSCOPEDIRS% cscopelist
+
+endif %?TOPDIR_P%
+
+.PHONY: cscopelist
+cscopelist: %CSCOPEDIRS% $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       for i in $$list; do \
+         if test -f "$$i"; \
+           then echo \"$(subdir)/$$i\"; \
+         else \
+           echo \"$(abs_srcdir)/$$i\"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+
 ## ---------- ##
 ## Cleaning.  ##
 ## ---------- ##
@@ -141,4 +174,5 @@ GTAGS:
 .PHONY distclean-am: distclean-tags

 distclean-tags:
-       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags cscope.out cscope.in.out \
+       cscope.po.out cscope.files
diff --git a/m4/Makefile.in b/m4/Makefile.in
index bb7bbf9..c03eb14 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -265,6 +265,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:

+cscopelist:
+

 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index ce8e779..5efcbfc 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1016,6 +1016,8 @@ TAGS:
 ctags: CTAGS
 CTAGS:

+cscopelist:
+

 # To be appended to the command running the test.  Handle the stdout
 # and stderr redirection, and catch the exit status.
-- 
1.6.0.6


Happy hacking,
Debarshi
-- 
One reason that life is complex is that it has a real part and an
imaginary part.
    -- Andrew Koenig




reply via email to

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