]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/common/gentvals.sh
daily update
[thirdparty/binutils-gdb.git] / sim / common / gentvals.sh
CommitLineData
c906108c
SS
1#!/bin/sh
2# Usage: gentvals.sh target type dir files pattern cpp
3
4target=$1
5type=$2
6dir=$3
7# FIXME: Would be nice to process #include's in these files.
8files=$4
9pattern=$5
10cpp=$6
11
12# FIXME: need trap to remove tmp files.
13
14rm -f tmpvals.list tmpvals.uniq
15for f in $files
16do
17 if test -f $dir/$f ; then
18 grep "#define[ ]$pattern" $dir/$f | sed -e "s/^.*#define[ ]\($pattern\)[ ]*\([^ ][^ ]*\).*$/\1/" >> tmpvals.list
19 fi
20done
21
22sort <tmpvals.list | uniq >tmpvals.uniq
23
24rm -f tmpvals.h
25for f in $files
26do
27 if test -f $dir/$f ; then
28 echo "#include <$f>" >>tmpvals.h
29 fi
30done
31
32cat tmpvals.uniq |
33while read sym
34do
35 echo "#ifdef $sym" >>tmpvals.h
36 echo 'DEFVAL { "'$sym'", '$sym ' },' >>tmpvals.h
37 echo "#endif" >>tmpvals.h
38done
39
40if test -z "$target"
41then
42 echo "#ifdef ${type}_defs"
43else
44 echo "#ifdef NL_TARGET_$target"
45 echo "#ifdef ${type}_defs"
46fi
47
48for f in $files
49do
50 if test -f $dir/$f ; then
51 echo "/* from $f */"
52 fi
53done
54
55if test -z "$target"
56then
57 echo "/* begin $type target macros */"
58else
59 echo "/* begin $target $type target macros */"
60fi
61
62$cpp -I$dir tmpvals.h | grep DEFVAL | sed -e 's/DEFVAL//' -e 's/ / /'
63
64if test -z "$target"
65then
66 echo "/* end $type target macros */"
67 echo "#endif"
68else
69 echo "/* end $target $type target macros */"
70 echo "#endif"
71 echo "#endif"
72fi
73
74rm -f tmpvals.list tmpvals.uniq tmpvals.h