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 "};" >>$@ |