shithub: pokecrystal

Download patch

ref: d72b2ec16796cba952499311e98ec3d8d654a55c
parent: bbbbd7b9ae6daf32d72ba67fed5ba54ff673480e
author: Jacob Moody <moody@posixcafe.org>
date: Tue Feb 28 06:06:37 EST 2023

rewrite include scanner and move out of mkfile

--- a/mkfile
+++ b/mkfile
@@ -41,64 +41,8 @@
 
 all:V:	$TARG
 
-include:VE:
-	{
-		for(i in gfx/pokemon/*/front.png){
-			which=`{echo $i | sed 's,gfx/pokemon/,,g;s,/front.png,,g'}
-			echo 'gfx/pokemon/'^$which^'/front.animated.2bpp:	gfx/pokemon/'^$which^'/front.2bpp gfx/pokemon/'^$which^'/front.dimensions'
-			echo '	$TANIMG -o $target $prereq'
-			echo 'gfx/pokemon/'^$which^'/front.animated.tilemap:	gfx/pokemon/'^$which^'/front.2bpp gfx/pokemon/'^$which^'/front.dimensions'
-			echo '	$TANIMG -t $target $prereq'
-			echo 'gfx/pokemon/'^$which^'/bitmask.asm:	gfx/pokemon/'^$which^'/front.animated.tilemap gfx/pokemon/'^$which^'/front.dimensions'
-			echo '	$TANIM -b $prereq >$target'
-			echo 'gfx/pokemon/'^$which^'/frames.asm:	gfx/pokemon/'^$which^'/front.animated.tilemap gfx/pokemon/'^$which^'/front.dimensions'
-			echo '	$TANIM -f $prereq >$target'
-			echo 'gfx/pokemon/'^$which^'/back.2bpp:	gfx/pokemon/'^$which^'/back.png'
-			echo '	rgbgfx -h -o $target $prereq'
-		}
-		for(i in gfx/trainers/*.png){
-			dst=`{echo $i | sed 's/\.png/\.2bpp/g'}
-			echo $dst^':	'^$i
-			echo '	rgbgfx -h -o $target $prereq'
-		}
-	} >anim.mk
-	{
-		echo 'BMFILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*bitmask\.asm)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g' | grep -v 'unown/bitmask.asm'
-		}
-		echo
-		echo 'FRFILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*frames\.asm)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g' | grep -v 'gfx/pokemon/unown/frames.asm|(kanto|johto)_frames.asm|gfx/pokemon/unown_frames.asm'
-		}
-		echo
-		echo 'B2FILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*\.2bpp)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g'
-		}
-		echo
-		echo 'B1FILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*\.1bpp)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g'
-		}
-		echo
-		echo 'DIMFILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*\.dimensions)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g'
-		}
-		echo
-		echo 'PALFILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*\.gbcpal)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g'
-		}
-		echo
-		echo 'LZFILES=\'
-		for(i in `{walk | grep asm}){
-			sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*\.lz)".*/\2/gp' $i | sed 's/^/	/g;s/$/\\/g'
-		}
-		echo
-	} >inc.mk
+include:V:
+	./tools/scan_includes.rc
 
 check:V:	$TARG
 	@{
--- /dev/null
+++ b/tools/scan_includes.rc
@@ -1,0 +1,57 @@
+#!/bin/rc
+{
+	for(i in gfx/pokemon/*/front.png){
+		which=`{echo $i | sed 's,gfx/pokemon/,,g;s,/front.png,,g'}
+		echo 'gfx/pokemon/'^$which^'/front.animated.2bpp:	gfx/pokemon/'^$which^'/front.2bpp gfx/pokemon/'^$which^'/front.dimensions'
+		echo '	$TANIMG -o $target $prereq'
+		echo 'gfx/pokemon/'^$which^'/front.animated.tilemap:	gfx/pokemon/'^$which^'/front.2bpp gfx/pokemon/'^$which^'/front.dimensions'
+		echo '	$TANIMG -t $target $prereq'
+		echo 'gfx/pokemon/'^$which^'/bitmask.asm:	gfx/pokemon/'^$which^'/front.animated.tilemap gfx/pokemon/'^$which^'/front.dimensions'
+		echo '	$TANIM -b $prereq >$target'
+		echo 'gfx/pokemon/'^$which^'/frames.asm:	gfx/pokemon/'^$which^'/front.animated.tilemap gfx/pokemon/'^$which^'/front.dimensions'
+		echo '	$TANIM -f $prereq >$target'
+		echo 'gfx/pokemon/'^$which^'/back.2bpp:	gfx/pokemon/'^$which^'/back.png'
+		echo '	rgbgfx -h -o $target $prereq'
+	}
+	for(i in gfx/trainers/*.png){
+		dst=`{echo $i | sed 's/\.png/\.2bpp/g'}
+		echo $dst^':	'^$i
+		echo '	rgbgfx -h -o $target $prereq'
+	}
+} >anim.mk
+{ for(i in `{walk | grep asm}) cat $i } | \
+sed -n 's/.*(INCLUDE|INCBIN) "(gfx.*((bitmask|frames)*\.(asm|2bpp|1bpp|dimensions|gbcpal|lz)))".*/\2/gp' | \
+awk '
+	function out(name, arr){
+		printf("%sFILES=\\\n", name);
+		for(i = 0; i < length(arr); i++)
+			printf("	%s\\\n", arr[i]);
+		print("");
+	}
+	/lz$/{ LZ[lzi++] = $0; }
+	/gbcpal$/{ PAL[pali++] = $0; }
+	/dimensions$/{ DIM[dimi++] = $0; }
+	/1bpp$/{ B1[b1i++] = $0; }
+	/2bpp$/{ B2[b2i++] = $0; }
+	/frames\.asm$/{
+		if(match($0, /(kanto|johto)_frames\.asm$/))
+			next;
+		if(match($0, /unown.frames.asm$/))
+			next;
+		FR[fri++] = $0;
+	}
+	/bitmask\.asm$/{
+		if(match($0, /unown.bitmask.asm/))
+			next;
+		BM[bmi++] = $0;
+	}
+	END{
+		out("BM", BM);
+		out("FR", FR);
+		out("B2", B2);
+		out("B1", B1);
+		out("DIM", DIM);
+		out("PAL", PAL);
+		out("LZ", LZ);
+	}
+'>inc.mk