2 ##===- utils/llvmdo - Counts Lines Of Code -------------------*- Script -*-===##
4 # The LLVM Compiler Infrastructure
6 # This file was developed by Reid Spencer and is distributed under the
7 # University of Illinois Open Source License. See LICENSE.TXT for details.
9 ##===----------------------------------------------------------------------===##
11 # This script is a general purpose "apply" function for the source files in LLVM
12 # It uses "find" to locate all the source files and then applies the user's
13 # command to them. As such, this command is often not used by itself much but
14 # the other find related tools (countloc.sh,llvmgrep,getsrcs.sh) are all based
15 # on the implementation. This script defines "what is a source file" in LLVM and
16 # so should be maintained if new directories, new file extensions, etc. are
17 # used in LLVM as it progresses.
20 # llvmdo [-dirs "DIRNAMES..."] PROGRAM ARGS...
22 # The -dirs argument allows you to specify the set of directories that are
23 # searched. By default, everything is searched. Note that you must use quotes
24 # around the list of directory names. After that you simply specify whatever
25 # program you want to run against each file and the arguments to give it. The
26 # PROGRAM will be given the file name as its last argument.
27 ##===----------------------------------------------------------------------===##
29 if test $# -lt 1 ; then
30 echo "Usage: llvmdo [-dirs "DIRNAMES..."] PROGRAM ARGS..."
34 if test "$1" = "-dirs" ; then
37 elif test -z "$LLVMDO_DIRS" ; then
38 LLVMDO_DIRS="include lib tools utils runtime autoconf docs test examples projects"
40 if test "$1" = "" ; then
41 echo "Missing program name to run"
46 if test ! -x "$PROGRAM" ; then
47 echo "Can't execute $1"
52 TOPDIR=`llvm-config --src-root`
54 if test -d "$TOPDIR" ; then
57 SunOS) find_prog=gfind ;;
60 $find_prog $LLVMDO_DIRS -type f \
62 -path 'docs/doxygen/*' -o \
63 -path 'docs/CommandGuide/html/*' -o \
64 -path 'docs/CommandGuide/man/*' -o \
65 -path 'docs/CommandGuide/ps/*' -o \
66 -path 'docs/CommandGuide/man/*' -o \
67 -path 'docs/HistoricalNotes/*' -o \
68 -path 'docs/img/*' -o \
83 -name '*.gnuplot' -o \
109 -path 'test/*.ll' -o \
110 -path 'runtime/*.ll' \
116 \! -name 'configure' \
118 \! -name '*libtool*' \
121 \! -name 'ltmain.m4' \
122 \! -name 'ltmain.sh' \
123 \! -name 'aclocal.m4' \
124 \! -name 'acinclude.m4' \
125 \! -name '*VerifierIsReallySlow.llx' \
126 \! -name '*LoopSimplifyCrash.ll' \
127 \! -name '*AST-Remove.ll' \
128 \! -name 'llvmAsmParser.cpp' \
129 \! -name 'llvmAsmParser.h' \
130 \! -name 'Lexer.cpp' \
131 \! -name 'FileLexer.cpp' \
132 \! -name 'FileParser.cpp' \
133 \! -name 'FileParser.h' \
134 \! -name 'StackerParser.h' \
135 \! -name 'StackerParser.cpp' \
136 \! -name 'ConfigLexer.cpp' \
137 \! -name 'PPCPerfectShuffle.h' \
138 -exec $PROGRAM "$@" {} \; \
141 echo "Can't find LLVM top directory in $TOPDIR"