Makefile 707 B

12345678910111213141516171819202122232425262728293031323334353637
  1. SOURCES := $(wildcard [0-9]*x[0-9]*.S)
  2. BIN := $(patsubst %.S, %.bin, $(SOURCES))
  3. IHEX := $(patsubst %.S, %.bin.ihex, $(SOURCES))
  4. CODE := $(patsubst %.S, %.c, $(SOURCES))
  5. all: $(BIN) $(IHEX) $(CODE)
  6. clean:
  7. @rm -f *.o *.bin.ihex *.bin *.c
  8. %.o: %.S
  9. @cc -c $^
  10. %.bin.nocrc: %.o
  11. @objcopy -Obinary $^ $@
  12. %.crc: %.bin.nocrc
  13. @list=$$(for i in `seq 1 127`; do head -c$$i $^ | tail -c1 \
  14. | hexdump -v -e '/1 "%02X+"'; done); \
  15. echo "ibase=16;100-($${list%?})%100" | bc >$@
  16. %.p: %.crc %.S
  17. @cc -c -DCRC="$$(cat $*.crc)" -o $@ $*.S
  18. %.bin: %.p
  19. @objcopy -Obinary $^ $@
  20. %.bin.ihex: %.p
  21. @objcopy -Oihex $^ $@
  22. @dos2unix $@ 2>/dev/null
  23. %.c: %.bin
  24. @echo "{" >$@; hexdump -f hex $^ >>$@; echo "};" >>$@