Makefile 1.9 KB

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