Refactor TAGS generation.
authorChris Hanson <org/chris-hanson/cph>
Sat, 27 Feb 2016 22:11:45 +0000 (14:11 -0800)
committerChris Hanson <org/chris-hanson/cph>
Sat, 27 Feb 2016 22:11:45 +0000 (14:11 -0800)
* Now works in unconfigured src directory.
* Generates top-level TAGS file.
* Includes .pkg files.

src/TAGS [deleted file]
src/Tags.sh
src/compiler/Tags.sh
src/etc/Tags.sh
src/microcode/Tags.sh
src/microcode/makegen/Makefile.in.in

diff --git a/src/TAGS b/src/TAGS
deleted file mode 100644 (file)
index e066859..0000000
--- a/src/TAGS
+++ /dev/null
@@ -1,18 +0,0 @@
-\f
-runtime/TAGS,include
-\f
-microcode/TAGS,include
-\f
-edwin/TAGS,include
-\f
-compiler/TAGS,include
-\f
-6001/TAGS,include
-\f
-sf/TAGS,include
-\f
-cref/TAGS,include
-\f
-rcs/TAGS,include
-\f
-ffi/TAGS,include
index db7bb11e17acfa7d28b57814112a02ca33ccfd65..b241bcea8bdf89298039b2715587c9b184149831 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # Utility to make TAGS files for MIT/GNU Scheme build directories.
 # The working directory must be the top-level source directory.
 
-for SUBDIR; do
+set -e
+
+DEFAULT_SUBDIRS=( \
+    6001 \
+    blowfish \
+    compiler \
+    cref \
+    edwin \
+    ffi \
+    gdbm \
+    imail \
+    mcrypt \
+    md5 \
+    mhash \
+    microcode \
+    rcs \
+    sf \
+    sos \
+    ssp \
+    star-parser \
+    win32 \
+    xdoc \
+    xml \
+)
+
+SUBDIRS=("${@}")
+if (( ${#SUBDIRS[@]} == 0 )); then
+    SUBDIRS=("${DEFAULT_SUBDIRS[@]}")
+fi
+
+for SUBDIR in "${SUBDIRS[@]}"; do
     echo "making TAGS in ${SUBDIR}"
-    ( cd ${SUBDIR} && ./Tags.sh ) || exit 1
+    if [[ -x ${SUBDIR}/Tags.sh ]]; then
+       SCRIPT_LOC=.
+    else
+       SCRIPT_LOC=../etc
+    fi
+    ( cd ${SUBDIR} && ${SCRIPT_LOC}/Tags.sh ) || exit 1
 done
+
+function write_entries ()
+{
+    for SUBDIR in "${SUBDIRS[@]}"; do
+       echo -e "\f"
+       echo "${SUBDIR}"/TAGS,include
+    done
+}
+write_entries > TAGS
index ef425e7eaf706a8b2dd1278c49cc6d60fa27da12..ad107c3e47827ac3c8b885dbce82bff5c0b262de 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
 #     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # Utility to make TAGS file for the MIT/GNU Scheme compiler directory.
 # The working directory must be the compiler directory.
 
-etags back/*.scm base/*.scm fggen/*.scm fgopt/*.scm machine/*.scm \
-      rtlbase/*.scm rtlgen/*.scm rtlopt/*.scm
+set -e
+
+if [[ -d machine ]]; then
+    MACHINES=(machine/*.scm machine/*.pkg)
+else
+    MACHINES=(machines/*/*.scm machines/*/*.pkg)
+fi
+
+etags back/*.scm base/*.scm fggen/*.scm fgopt/*.scm \
+      rtlbase/*.scm rtlgen/*.scm rtlopt/*.scm "${MACHINES[@]}"
index dd089de783c967318631681b233c49b9adc9f645..cc381fdb4c99e2fab9ddac4358479ecff3e9a85b 100755 (executable)
@@ -25,4 +25,4 @@
 # Utility to make TAGS file for an MIT/GNU Scheme build directory.
 # The working directory must be the build directory.
 
-etags *.scm
+etags *.scm *.pkg
index 60012870985ae1a9c9a500d64cfaf0f140bca6cb..bde448079d5441da1c15753840475cf00595a348 100755 (executable)
@@ -3,4 +3,8 @@
 # Utility to make TAGS file for the MIT/GNU Scheme MICROCODE build
 # directory.  The working directory must be the build directory.
 
-make tags
+REGEX1='/^DEF[A-Z0-9_]*[ \t]*(\("[^"]+"\|[a-zA-Z_][a-zA-Z0-9_]*\)/'
+REGEX2='/^DEF[A-Z0-9_]*[ \t]*\(("[^"]+"|[a-zA-Z_][a-zA-Z0-9_]+)/\1/'
+
+etags -r "${REGEX1}" *.[ch] */*.[ch] \
+    || etags --regex-C="${REGEX2}" *.[ch] */*.[ch]
index 20bbbce0f0750677becab16b09e9442c636b3587..20b9790722185823f5fece96135f25272c68e163 100644 (file)
@@ -221,11 +221,7 @@ prx11.so: prx11.o x11base.o x11color.o x11graph.o x11term.o @MODULE_LOADER@
 
 tags: TAGS
 TAGS:
-       etags -r '/^DEF[A-Z0-9_]*[ \t]*(\("[^"]+"\|[a-zA-Z_][a-zA-Z0-9_]*\)/' \
-           *.[ch] */*.[ch]                                                   \
-       || etags                                                              \
-       --regex-C='/^DEF[A-Z0-9_]*[ \t]*\(("[^"]+"|[a-zA-Z_][a-zA-Z0-9_]+)/\1/'\
-           *.[ch] */*.[ch]
+       ./Tags.sh
 
 mostlyclean:
        -rm -f $(MOSTLYCLEAN_FILES)