Makefile 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # Copyright (c) 2020 StarFiveTech, Inc
  2. # compiler tool chain
  3. CROSSCOMPILE?=riscv64-unknown-elf-
  4. CC=${CROSSCOMPILE}gcc
  5. LD=${CROSSCOMPILE}ld
  6. OBJCOPY=${CROSSCOMPILE}objcopy
  7. OBJDUMP=${CROSSCOMPILE}objdump
  8. SUFFIX=$(shell date +%y%m%d)
  9. GIT_VERSION=$(shell git show -s --pretty=format:%h)
  10. BLD_VERSION=$(SUFFIX)-$(GIT_VERSION)
  11. TARGET = bootloader-$(SUFFIX)
  12. LINKER_SCRIPT := bootloader.lds
  13. MAP_FILE := bootloader.map
  14. INCLUDE_DIR=-I. -I../boot\
  15. -I../common\
  16. -I../gpio\
  17. -I../spi\
  18. -I../system\
  19. -I../uart \
  20. -I../timer
  21. # compiler options
  22. RISCV_ARCH := rv64imafdc
  23. RISCV_ABI := lp64d
  24. CFLAGS += -O2 -g -c -Wall -DVERSION=\"$(BLD_VERSION)\"
  25. CFLAGS += -march=$(RISCV_ARCH)
  26. CFLAGS += -mabi=$(RISCV_ABI)
  27. CFLAGS += -mcmodel=medany
  28. CFLAGS += $(INCLUDE_DIR)
  29. CCASFLAGS= -mcmodel=medany -mexplicit-relocs
  30. LDFLAGS = -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI)-T $(LINKER_SCRIPT) -nostartfiles --specs=nano.specs -Wl,-Map,$(MAP_FILE)
  31. # object list
  32. OBJECTLIST=../boot/start.o\
  33. ../boot/bootmain.o\
  34. ../boot/trap.o\
  35. ../uart/uart.o\
  36. ../common/util.o \
  37. ../spi/spi.o\
  38. ../spi/spi_probe.o\
  39. ../spi/cadence_qspi.o\
  40. ../spi/spi_flash.o\
  41. ../spi/cadence_qspi_apb.o\
  42. ../timer/timer.o
  43. all:$(TARGET).elf $(TARGET).bin $(TARGET).asm
  44. $(TARGET).elf:$(OBJECTLIST)
  45. @echo ================================================================================
  46. $(CC) -o $(TARGET).elf $(LDFLAGS) $(OBJECTLIST)
  47. @echo $(TARGET).elf LINK SUCCEED!
  48. %.bin: %.elf
  49. $(OBJCOPY) -O binary $^ $@
  50. @if [ -f fsz.sh ]; then ./fsz.sh $(TARGET).bin; fi
  51. %.asm: %.elf
  52. $(OBJDUMP) -S $^ > $@
  53. %.dtb: %.dts
  54. dtc $^ -o $@ -O dtb
  55. %.o: %.S
  56. $(CC) $(CFLAGS) $(CCASFLAGS) -c $< -o $@
  57. %.o: %.c
  58. $(CC) $(CFLAGS) -o $@ -c $<
  59. .PHONY: clean
  60. clean:
  61. rm -f ../*/*.o $(TARGET).bin *.elf *.asm *.map