Makefile 1.9 KB

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