198944Sobrien#!/bin/sh
298944Sobrien
398944Sobrien# Try to find a GNU indent.  There could be a BSD indent in front of a
498944Sobrien# GNU gindent so when indent is found, keep looking.
598944Sobrien
698944Sobriengindent=
798944Sobrienindent=
898944Sobrienpaths=`echo $PATH | sed \
998944Sobrien	-e 's/::/:.:/g' \
1098944Sobrien	-e 's/^:/.:/' \
1198944Sobrien	-e 's/:$/:./' \
1298944Sobrien	-e 's/:/ /g'`
1398944Sobrienfor path in $paths
1498944Sobriendo
1598944Sobrien    if test ! -n "${gindent}" -a -x ${path}/gindent
1698944Sobrien    then
1798944Sobrien	gindent=${path}/gindent
1898944Sobrien	break
1998944Sobrien    elif test ! -n "${indent}" -a -x ${path}/indent
2098944Sobrien    then
2198944Sobrien	indent=${path}/indent
2298944Sobrien    fi
2398944Sobriendone
2498944Sobrien
2598944Sobrienif test -n "${gindent}"
2698944Sobrienthen
2798944Sobrien    indent=${gindent}
2898944Sobrienelif test -n "${indent}"
2998944Sobrienthen
3098944Sobrien    :
3198944Sobrienelse
3298944Sobrien    echo "Indent not found" 1>&2
3398944Sobrienfi
3498944Sobrien
3598944Sobrien
3698944Sobrien# Check that the indent found is both GNU and a reasonable version.
3798944Sobrien# Different indent versions give different indentation.
3898944Sobrien
39130803Smarcelm1=2
40130803Smarcelm2=2
41130803Smarcelm3=9
42130803Smarcel
43130803Smarcelversion=`${indent} --version 2>/dev/null < /dev/null`
44130803Smarcelcase "${version}" in
45130803Smarcel    *GNU* ) ;;
46130803Smarcel    * ) echo "error: GNU indent $m1.$m2.$m3 expected" 1>&2 ; exit 1;;
4798944Sobrienesac
48130803Smarcelv1=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1/'`
49130803Smarcelv2=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\2/'`
50130803Smarcelv3=`echo "${version}" | sed 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\3/'`
5198944Sobrien
52130803Smarcelif test $m1 -ne $v1 -o $m2 -ne $v2 -o $m3 -gt $v3
53130803Smarcelthen
54130803Smarcel    echo "error: Must be GNU indent version $m1.$m2.$m3 or later" 1>&2
55130803Smarcel    exit 1
56130803Smarcelfi
5798944Sobrien
58130803Smarcelif test $m3 -ne $v3
59130803Smarcelthen
60130803Smarcel    echo "warning: GNU indent version $m1.$m2.$m3 recommended" 1>&2
61130803Smarcelfi
62130803Smarcel
6398944Sobrien# Check that we're in the GDB source directory
6498944Sobrien
6598944Sobriencase `pwd` in
6698944Sobrien    */gdb ) ;;
67130803Smarcel    */sim/* ) ;;
6898944Sobrien    * ) echo "Not in GDB directory" 1>&2 ; exit 1 ;;
6998944Sobrienesac
7098944Sobrien
7198944Sobrien
7298944Sobrien# Run indent per GDB specs
7398944Sobrien
74130803Smarceltypes="\
75130803Smarcel-T FILE \
76130803Smarcel-T bfd -T asection -T pid_t \
77130803Smarcel-T prgregset_t -T fpregset_t -T gregset_t -T sigset_t \
78130803Smarcel-T td_thrhandle_t -T td_event_msg_t -T td_thr_events_t \
79130803Smarcel-T td_notify_t -T td_thr_iter_f -T td_thrinfo_t \
80130803Smarcel`cat *.h | sed -n \
8198944Sobrien    -e 's/^.*[^a-z0-9_]\([a-z0-9_]*_ftype\).*$/-T \1/p' \
8298944Sobrien    -e 's/^.*[^a-z0-9_]\([a-z0-9_]*_func\).*$/-T \1/p' \
8398944Sobrien    -e 's/^typedef.*[^a-zA-Z0-9_]\([a-zA-Z0-9_]*[a-zA-Z0-9_]\);$/-T \1/p' \
8498944Sobrien    | sort -u`"
8598944Sobrien
8698944Sobrien${indent} ${types} "$@"
87