llvm-6502/utils/llvmdo
Reid Spencer 8141e37109 Fixed to actually work correctly and be the basis for other tools by
allowing the set of directories searched to be specified either by the
LLVMDO_DIRS env var or by the -dirs "dirs..." command line option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16441 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-20 07:21:19 +00:00

63 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
# This is useful because it prints out all of the source files. Useful for
# greps.
if test $# -lt 1 ; then
echo "Usage: llvmdo [-dirs "DIRNAMES..."] PROGRAM ARGS...";
exit 1;
fi
if test "$1" = "-dirs" ; then
LLVMDO_DIRS="$2";
shift ; shift
elif test -z "$LLVMDO_DIRS" ; then
LLVMDO_DIRS="include lib tools test utils docs examples projects"
fi
PROGRAM=`which $1`
if test ! -x "$PROGRAM" ; then
echo "Can't execute $1"
exit 1
fi
shift;
ARGS="$*"
TOPDIR=`pwd | sed -e 's#\(.*/llvm\).*#\1#'`
if test -d "$TOPDIR" ; then
cd $TOPDIR
find $LLVMDO_DIRS -type f \
\( \
-path 'docs/doxygen/*' -o \
-path 'docs/CommandGuide/html/*' -o \
-path 'docs/CommandGuide/man/*' -o \
-path 'docs/CommandGuide/ps/*' -o \
-path 'docs/CommandGuide/man/*' -o \
-path 'docs/HistoricalNotes/*' -o \
-path 'utils/Burg/*' -o \
-path 'docs/img/*' -o \
-path '*/.libs/*' \
\) -prune -o \( \
-name '*.[cdhyltp]*' \
\! -name '.*' \
\! -name '*~' \
\! -name '#*' \
\! -name '*.d' \
\! -name '*.dir' \
\! -name '*.flc' \
\! -name '*.inc' \
\! -name '*.ll' \
\! -name '*.llx' \
\! -name '*.la' \
\! -name '*.lo' \
\! -name 'Sparc.burm.c' \
\! -name 'llvmAsmParser.cpp' \
\! -name 'llvmAsmParser.h' \
\! -name 'FileParser.cpp' \
\! -name 'FileParser.h' \
\! -name 'StackerParser.h' \
\! -name 'StackerParser.cpp' \
-exec $PROGRAM $ARGS {} \; \
\)
else
echo "Can't find LLVM top directory in $TOPDIR"
fi