12d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencer#!/bin/sh
2181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer##===- utils/llvmgrep - Counts Lines Of Code -----------------*- Script -*-===##
3181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer# 
4181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#                     The LLVM Compiler Infrastructure
5181e65dff10d7c06ae61e35f79003ea79186635eReid Spencer#
63060910e290949a9ac5eda8726d030790c4d60ffChris Lattner# This file is distributed under the University of Illinois Open Source
73060910e290949a9ac5eda8726d030790c4d60ffChris Lattner# 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
216ae928fc69dc18754d1c72437c7a75357685e066Reid Spencerif test "$1" = "-topdir" ; then
226ae928fc69dc18754d1c72437c7a75357685e066Reid Spencer  TOPDIR="$2"
236ae928fc69dc18754d1c72437c7a75357685e066Reid Spencer  shift; shift;
246ae928fc69dc18754d1c72437c7a75357685e066Reid Spencerelse
256ae928fc69dc18754d1c72437c7a75357685e066Reid Spencer  TOPDIR=`llvm-config --src-root`
26ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencerfi
27ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer
282d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencerif test -d "$TOPDIR" ; then
292d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencer  cd $TOPDIR
30054defa74604dcc88db7ce9175122de785992b7bReid Spencer  case `uname -s` in
31054defa74604dcc88db7ce9175122de785992b7bReid Spencer    SunOS) grep_cmd="ggrep -H -n" ;;
32f26475af976389839c4affdcd2b5ef07ba548a81Eric Christopher    Linux|Darwin) grep_cmd="egrep -H -n" ;;
33054defa74604dcc88db7ce9175122de785992b7bReid Spencer    *) grep_cmd="egrep -l -n" ;;
34054defa74604dcc88db7ce9175122de785992b7bReid Spencer  esac
35ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  ./utils/llvmdo -topdir "$TOPDIR" \
36e8f6e795ffaf876defcad01af6826cc8686d72d3Chris Lattner    -dirs "include lib tools utils docs examples test unittests projects cmake" $grep_cmd "$*"
3723a354d1f1e3c9f7232e9b809541f4393c6eb774Reid Spencerelse
38ca7592a1ba86854a1f9ba2b3e442427bed20d5bcReid Spencer  echo "Can't find LLVM top directory"
392d67208306d7b3cc183265832b85cb0f4cf7cc37Reid Spencerfi
40