bootrom-asm-offsets.awk 759 Bytes
#!/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 "}"
}