|  | 
 | SOURCES	:= $(wildcard [0-9]*x[0-9]*.S) | 
 |  | 
 | BIN	:= $(patsubst %.S, %.bin, $(SOURCES)) | 
 |  | 
 | IHEX	:= $(patsubst %.S, %.bin.ihex, $(SOURCES)) | 
 |  | 
 | CODE	:= $(patsubst %.S, %.c, $(SOURCES)) | 
 |  | 
 | all:	$(BIN) $(IHEX) $(CODE) | 
 |  | 
 | clean: | 
 | 	@rm -f *.o *.bin.ihex *.bin *.c | 
 |  | 
 | %.o:	%.S | 
 | 	@cc -c $^ | 
 |  | 
 | %.bin.nocrc:	%.o | 
 | 	@objcopy -Obinary $^ $@ | 
 |  | 
 | %.crc:	%.bin.nocrc | 
 | 	@list=$$(for i in `seq 1 127`; do head -c$$i $^ | tail -c1 \ | 
 | 		| hexdump -v -e '/1 "%02X+"'; done); \ | 
 | 		echo "ibase=16;100-($${list%?})%100" | bc >$@ | 
 |  | 
 | %.p:	%.crc %.S | 
 | 	@cc -c -DCRC="$$(cat $*.crc)" -o $@ $*.S | 
 |  | 
 | %.bin:	%.p | 
 | 	@objcopy -Obinary $^ $@ | 
 |  | 
 | %.bin.ihex:	%.p | 
 | 	@objcopy -Oihex $^ $@ | 
 | 	@dos2unix $@ 2>/dev/null | 
 |  | 
 | %.c:	%.bin | 
 | 	@echo "{" >$@; hexdump -f hex $^ >>$@; echo "};" >>$@ |