summaryrefslogtreecommitdiffstats
path: root/build/MakeEtags
diff options
context:
space:
mode:
Diffstat (limited to 'build/MakeEtags')
-rwxr-xr-xbuild/MakeEtags41
1 files changed, 41 insertions, 0 deletions
diff --git a/build/MakeEtags b/build/MakeEtags
new file mode 100755
index 0000000..cf1a486
--- /dev/null
+++ b/build/MakeEtags
@@ -0,0 +1,41 @@
+#!/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
+ignore=$ignore,APU_DECLARE,APU_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 -
+