[PATCH] kbuild: add global tags generation.

From: Jianbin Kang
Date: Fri Jan 14 2011 - 02:13:16 EST


gnu global (http://www.gnu.org/software/global/) is a source code tagging system
It is really cheap to support it in kbuild system.





Jianbin Kang
diff --git a/Makefile b/Makefile
index 74b2555..127a371 100644
--- a/Makefile
+++ b/Makefile
@@ -420,7 +420,7 @@ endif
# of make so .config is not included in this case either (for *config).

no-dot-config-targets := clean mrproper distclean \
- cscope TAGS tags help %docs check% coccicheck \
+ cscope gtags TAGS tags help %docs check% coccicheck \
include/linux/version.h headers_% \
kernelversion %src-pkg

@@ -1134,7 +1134,7 @@ CLEAN_FILES += vmlinux System.map \
MRPROPER_DIRS += include/config usr/include include/generated
MRPROPER_FILES += .config .config.old .version .old_version \
include/linux/version.h \
- Module.symvers tags TAGS cscope*
+ Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS

# clean - Delete most, but leave enough to build external modules
#
@@ -1221,6 +1221,7 @@ help:
@echo ' modules_prepare - Set up for building external modules'
@echo ' tags/TAGS - Generate tags file for editors'
@echo ' cscope - Generate cscope index'
+ @echo ' gtags - Generate global index'
@echo ' kernelrelease - Output the release version string'
@echo ' kernelversion - Output the version stored in Makefile'
@echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
@@ -1379,7 +1380,7 @@ clean: $(clean-dirs)
quiet_cmd_tags = GEN $@
cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@

-tags TAGS cscope: FORCE
+tags TAGS cscope gtags: FORCE
$(call cmd,tags)

# Scripts to check various things for consistency
diff --git a/scripts/tags.sh b/scripts/tags.sh
index bbbe584..5cb11f5 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -114,6 +114,11 @@ docscope()
cscope -b -f cscope.out
}

+dogtags()
+{
+ all_sources | gtags -f -
+}
+
exuberant()
{
all_sources | xargs $1 -a \
@@ -186,7 +191,9 @@ case "$1" in
"cscope")
docscope
;;
-
+ "gtags")
+ dogtags
+ ;;
"tags")
rm -f tags
xtags ctags