42 lines
759 B
Awk
42 lines
759 B
Awk
|
#!/usr/bin/gawk -f
|
||
|
BEGIN {
|
||
|
print "/* DO NOT EDIT: AUTOMATICALLY GENERATED"
|
||
|
print " * Input files: bootrom-asm-offsets.awk bootrom-asm-offsets.c.in"
|
||
|
print " * DO NOT EDIT: AUTOMATICALLY GENERATED"
|
||
|
print " */"
|
||
|
print ""
|
||
|
system("cat bootrom-asm-offsets.c.in")
|
||
|
print "{"
|
||
|
}
|
||
|
|
||
|
{
|
||
|
/* find a structure definition */
|
||
|
if ($0 ~ /typedef struct .* {/) {
|
||
|
delete members;
|
||
|
i = 0;
|
||
|
|
||
|
/* extract each member of the structure */
|
||
|
while (1) {
|
||
|
getline
|
||
|
if ($1 == "}")
|
||
|
break;
|
||
|
gsub(/[*;]/, "");
|
||
|
members[i++] = $NF;
|
||
|
}
|
||
|
|
||
|
/* grab the structure's name */
|
||
|
struct = $NF;
|
||
|
sub(/;$/, "", struct);
|
||
|
|
||
|
/* output the DEFINE() macros */
|
||
|
while (i-- > 0)
|
||
|
print "\tDEFINE(" struct ", " members[i] ");"
|
||
|
print ""
|
||
|
}
|
||
|
}
|
||
|
|
||
|
END {
|
||
|
print "\treturn 0;"
|
||
|
print "}"
|
||
|
}
|