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"
41 if test ! -x "$PROGRAM" ; then
42 echo "Can't execute $1"
46 TOPDIR=`pwd | sed -e 's#\(.*/llvm\).*#\1#'`
47 if test -d "$TOPDIR" ; then
50 SunOS) find_prog=gfind ;;
53 $find_prog $LLVMDO_DIRS -type f \
55 -path 'docs/doxygen/*' -o \
56 -path 'docs/CommandGuide/html/*' -o \
57 -path 'docs/CommandGuide/man/*' -o \
58 -path 'docs/CommandGuide/ps/*' -o \
59 -path 'docs/CommandGuide/man/*' -o \
60 -path 'docs/HistoricalNotes/*' -o \
61 -path 'utils/Burg/*' -o \
62 -path 'docs/img/*' -o \
90 -name '*.gnuplot' -o \
92 -path 'test/*.ll' -o \
93 -path 'runtime/*.ll' \
98 \! -name 'Sparc.burm.c' \
99 \! -name 'llvmAsmParser.cpp' \
100 \! -name 'llvmAsmParser.h' \
101 \! -name 'FileParser.cpp' \
102 \! -name 'FileParser.h' \
103 \! -name 'StackerParser.h' \
104 \! -name 'StackerParser.cpp' \
105 -exec $PROGRAM "$@" {} \; \
108 echo "Can't find LLVM top directory in $TOPDIR"