Makefile 902 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. BOARD ?= icebreaker
  2. CROSS = riscv-none-embed-
  3. CC = $(CROSS)gcc
  4. OBJCOPY = $(CROSS)objcopy
  5. ICEPROG = iceprog
  6. BOARD_DEFINE=BOARD_$(shell echo $(BOARD) | tr a-z\- A-Z_)
  7. CFLAGS=-Wall -Os -march=rv32i -mabi=ilp32 -ffreestanding -flto -nostartfiles -fomit-frame-pointer -Wl,--gc-section -D$(BOARD_DEFINE)
  8. HEADERS=\
  9. config.h \
  10. console.h \
  11. led.h \
  12. mini-printf.h \
  13. spi.h \
  14. usb_priv.h \
  15. usb_desc_data.h
  16. SOURCES=\
  17. start.S \
  18. console.c \
  19. firmware.c \
  20. led.c \
  21. mini-printf.c \
  22. spi.c \
  23. usb.c \
  24. usb_ep0.c \
  25. usb_desc.c
  26. firmware.elf: lnk-app.lds $(HEADERS) $(SOURCES)
  27. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-app.lds,--strip-debug -o $@ $(SOURCES)
  28. boot.elf: lnk-boot.lds boot.S
  29. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-boot.lds,--strip-debug -o $@ boot.S
  30. %.hex: %.bin
  31. ./bin2hex.py $< $@
  32. %.bin: %.elf
  33. $(OBJCOPY) -O binary $< $@
  34. prog_fw: firmware.bin
  35. $(ICEPROG) -o 1M $<
  36. clean:
  37. rm -f *.bin *.hex *.elf