#!/bin/sh

# This file illustrates how to generate a useful TAGS file via etags
# for emacs.  This should be invoked from the top source directory i.e.:
#   > build/MakeEtags
# and will create a TAGS file in the top source directory.

# This script falls under the Apache License.
# See http://www.apache.org/docs/LICENSE

# Once you have created ./TAGS in emacs you'll need to setup
# tag-table-alist with an entry to assure it finds the single ./TAGS
# file from the many source directories.  Something along these lines:
# (setq tag-table-alist
#	'(("/home/me/work/httpd-2.0/" 
#	   . "/home/me/work/httpd-2.0/")
#	 ))

# This requires a special version of etags, i.e. the
# one called "Exuberant ctags" available at:
#    http://fly.hiwaay.net/~darren/ctags/
# Once that is setup you'll need to point to the
# executable here:

etags=~/local/bin/etags

# Exuberant etags is necessary since it can ignore some defined symbols
# that obscure the function signatures.

ignore=AP_DECLARE,AP_DECLARE_NONSTD,__declspec

# Create an etags file at the root of the source
# tree, then create symbol links to it from each
# directory in the source tree.  By passing etags
# absolute pathnames we get a tag file that is
# NOT portable when we move the directory tree.

find . -name '*.[ch]' -print | $etags -I "$ignore"  -L -

