#!/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/apr-x.y/" . "/home/me/work/apr-x.y/")
#	  ("/home/me/work/apr-util-x.y/" . "/home/me/work/apr-util-x.y/")
#	  ("/home/me/work/httpd-x.y/" . "/home/me/work/httpd-x.y/")
#	 ))

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

etags=${ETAGS-etags}

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

ignore=AP_DECLARE,AP_DECLARE_NONSTD,__declspec,APR_DECLARE,APR_DECLARE_NONSTD

# 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 -

