File: gentvals.sh

package info (click to toggle)
gdb 7.4.1%2Bdfsg-0.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 161,344 kB
  • sloc: ansic: 1,781,883; asm: 272,786; exp: 100,392; makefile: 48,884; sh: 20,028; yacc: 10,676; cpp: 9,314; xml: 5,207; perl: 4,960; python: 1,477; pascal: 1,436; ada: 1,283; lex: 593; lisp: 504; sed: 228; awk: 138; objc: 134; f90: 112; java: 69; fortran: 43
file content (74 lines) | stat: -rw-r--r-- 1,333 bytes parent folder | download | duplicates (40)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/sh
# Usage: gentvals.sh target type dir files pattern cpp

target=$1
type=$2
dir=$3
# FIXME: Would be nice to process #include's in these files.
files=$4
pattern=$5
cpp=$6

# FIXME: need trap to remove tmp files.

rm -f tmpvals.list tmpvals.uniq
for f in $files
do
	if test -f $dir/$f ; then
		grep "#define[ 	]$pattern" $dir/$f | sed -e "s/^.*#define[ 	]\($pattern\)[ 	]*\([^ 	][^ 	]*\).*$/\1/" >> tmpvals.list
	fi
done

sort <tmpvals.list | uniq >tmpvals.uniq

rm -f tmpvals.h
for f in $files
do
	if test -f $dir/$f ; then
		echo "#include <$f>" >>tmpvals.h
	fi
done

cat tmpvals.uniq |
while read sym
do
	echo "#ifdef $sym" >>tmpvals.h
	echo 'DEFVAL { "'$sym'", '$sym ' },' >>tmpvals.h
	echo "#endif" >>tmpvals.h
done

if test -z "$target"
then
	echo "#ifdef ${type}_defs"
else
	echo "#ifdef NL_TARGET_$target"
	echo "#ifdef ${type}_defs"
fi

for f in $files
do
	if test -f $dir/$f ; then
		echo "/* from $f */"
	fi
done

if test -z "$target"
then
	echo "/* begin $type target macros */"
else
	echo "/* begin $target $type target macros */"
fi

$cpp -I$dir tmpvals.h | grep DEFVAL | sed -e 's/DEFVAL//' -e 's/  / /'

if test -z "$target"
then
	echo "/* end $type target macros */"
	echo "#endif"
else
	echo "/* end $target $type target macros */"
	echo "#endif"
	echo "#endif"
fi

rm -f tmpvals.list tmpvals.uniq tmpvals.h