#!/bin/nawk -f
#
# Usage: buildObj < objsToBuild
#
# File 'objsToBuild' looks like this:
#
# 	@@@/usr/work/viola/res/objs/		<--- specifies directory
# 	res.v					<--- object files listing
# 	res.font.v
# 	..
#
# Output is 'objs.c' which is the C-string (un-pcoded) version of the 
# viola objects specified in 'objsToBuild' input.
#
BEGIN {

	OUT_idx = "objs_idx.c"
	OUT = "objs.c"

	print "Compiling viola application files into C strings..."

	cmd = sprintf("rm -f %s", OUT)
	system(cmd)

	cmd = sprintf("echo '#include \"objs.h\"\n\n' > %s", OUT)
	system(cmd)
}
/@@@/{
	gsub(/@@@/, "")
	dirContext = $0
	print "\nDirectory Context=" dirContext
	next
}
/^$/{
	next
}
{
	# filePath = sprintf("%s%s", dirContext, $0)
	gsub(/.v$/, "")
	objName = $0
	gsub(/\./, "_")
	objName_C_escaped = $0

	print "Processing " objName
	cmd = sprintf("./objCom %s < %s%s.v >> %s",
			objName_C_escaped, dirContext, objName, OUT)
	#print ">>>>" cmd "<<<"
	system (cmd)
	
}
END {
	print "Compiling index..."

	cmd = sprintf("./buildObjIdx < ./objsToBuild >> %s", OUT_idx)
	system(cmd)

	cmd = sprintf("echo '\nObjsNamesStruct objsNames[] = {' >> %s", OUT)
	system(cmd)

	cmd = sprintf("sort %s >> %s", OUT_idx, OUT)
	system(cmd)

	cmd = sprintf("echo '(char*)0, (char**)0\n};\n' >> %s", OUT)
	system(cmd)


	print "Done. Result in " OUT
}
