Makefile-rpi4.j2 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. FW_URL := https://github.com/raspberrypi/firmware/branches/stable/boot
  2. SHELL := /bin/bash
  3. EFI_BUILD := RELEASE
  4. EFI_ARCH := AARCH64
  5. EFI_TOOLCHAIN := GCC5
  6. EFI_TIMEOUT := 3
  7. EFI_FLAGS := --pcd=PcdPlatformBootTimeOut=$(EFI_TIMEOUT)
  8. EFI_DSC := edk2-platforms/Platform/RaspberryPi/RPi4/RPi4.dsc
  9. EFI_FD := Build/RPi4/$(EFI_BUILD)_$(EFI_TOOLCHAIN)/FV/RPI_EFI.fd
  10. IPXE_CROSS := aarch64-linux-gnu-
  11. IPXE_SRC := ipxe/src
  12. IPXE_TGT := bin-arm64-efi/snp.efi
  13. IPXE_EFI := $(IPXE_SRC)/$(IPXE_TGT)
  14. SDCARD_MB := 32
  15. export MTOOLSRC := mtoolsrc
  16. all : sdcard sdcard.img sdcard.zip
  17. submodules :
  18. git submodule update --init --recursive
  19. firmware :
  20. if [ ! -e firmware ] ; then \
  21. $(RM) -rf firmware-tmp ; \
  22. svn export $(FW_URL) firmware-tmp && \
  23. mv firmware-tmp firmware ; \
  24. fi
  25. efi : $(EFI_FD)
  26. efi-basetools : submodules
  27. $(MAKE) -C edk2/BaseTools
  28. $(EFI_FD) : submodules efi-basetools
  29. . ./edksetup.sh && \
  30. build -b $(EFI_BUILD) -a $(EFI_ARCH) -t $(EFI_TOOLCHAIN) \
  31. -p $(EFI_DSC) $(EFI_FLAGS)
  32. ipxe : $(IPXE_EFI)
  33. $(IPXE_EFI) : submodules
  34. $(MAKE) -C $(IPXE_SRC) CROSS=$(IPXE_CROSS) CONFIG=rpi EMBED={{ bootloader_filename }} TRUST={{ trust_files }} $(IPXE_TGT)
  35. sdcard : firmware efi ipxe
  36. $(RM) -rf sdcard
  37. mkdir -p sdcard
  38. cp -r $(sort $(filter-out firmware/kernel%,$(wildcard firmware/*))) \
  39. sdcard/
  40. cp config.txt $(EFI_FD) edk2/License.txt sdcard/
  41. mkdir -p sdcard/efi/boot
  42. cp $(IPXE_EFI) sdcard/efi/boot/bootaa64.efi
  43. cp ipxe/COPYING* sdcard/
  44. sdcard.img : sdcard
  45. truncate -s $(SDCARD_MB)M $@
  46. mpartition -I -c -b 32 -s 32 -h 64 -t $(SDCARD_MB) -a "z:"
  47. mformat -v "piPXE" "z:"
  48. mcopy -s sdcard/* "z:"
  49. sdcard.zip : sdcard
  50. $(RM) -f $@
  51. ( pushd $< ; zip -q -r ../$@ * ; popd )
  52. update:
  53. git submodule foreach git pull origin master
  54. tag :
  55. git tag v`git show -s --format='%ad' --date=short | tr -d -`
  56. .PHONY : submodules firmware efi efi-basetools $(EFI_FD) ipxe $(IPXE_EFI) \
  57. sdcard sdcard.img
  58. clean :
  59. $(RM) -rf firmware Build sdcard sdcard.img sdcard.zip
  60. if [ -d $(IPXE_SRC) ] ; then $(MAKE) -C $(IPXE_SRC) clean ; fi