llvmgrep revision ca7592a1ba86854a1f9ba2b3e442427bed20d5bc
12d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencer#!/bin/sh
2181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer##===- utils/llvmgrep - Counts Lines Of Code -----------------*- Script -*-===##
3181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# 
4181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#                     The LLVM Compiler Infrastructure
5181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#
6181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# This file was developed by Reid Spencer and is distributed under the 
7181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# University of Illinois Open Source License. See LICENSE.TXT for details.
8181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# 
9181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer##===----------------------------------------------------------------------===##
10181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#
11181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# This script searches your srcdir for an egrep style pattern. This can quickly
12181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# help you build a list of the places you need to modify when changing a header
13181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# or other "global" name. The only argument is the pattern you want to search
14181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# for. It should be quoted to escape shell interpretation of the pattern's
15181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# special characters.
16181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#
17181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# Note that the implementation is based on llvmdo. See that script for more
18181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# details.
19181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer##===----------------------------------------------------------------------===##
20181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer
21ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencerif test $# -gt 1 ; then
22ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  if test "$1" = "-topdir" ; then
23ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer    TOPDIR="$2"
24ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer    shift; shift;
25ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  else
26ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer    TOPDIR=`llvm-config --src-root`
27ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  fi
28ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencerfi
29ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer
302d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencerif test -d "$TOPDIR" ; then
312d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencer  cd $TOPDIR
32054defa74604dcc88db7ce9175122de785992b7bReid Spencer  case `uname -s` in
33054defa74604dcc88db7ce9175122de785992b7bReid Spencer    SunOS) grep_cmd="ggrep -H -n" ;;
34054defa74604dcc88db7ce9175122de785992b7bReid Spencer    Linux) grep_cmd="egrep -H -n" ;;
35054defa74604dcc88db7ce9175122de785992b7bReid Spencer    *) grep_cmd="egrep -l -n" ;;
36054defa74604dcc88db7ce9175122de785992b7bReid Spencer  esac
37ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  ./utils/llvmdo -topdir "$TOPDIR" \
38ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer    -dirs "include lib tools utils docs examples test projects" $grep_cmd "$*"
3923a354d1f1e3c9f7232e9b809541f4393c6eb774Reid Spencerelse
40ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  echo "Can't find LLVM top directory"
412d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencerfi
42