build.mk 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # comment out or override if you want to see the full output of each command
  2. NOECHO ?= @
  3. PICACHU_LIB := $(LK_TOP_DIR)/platform/$(PLATFORM)/lib/libpicachu.a
  4. ifeq ($(HOST_OS),darwin)
  5. MKIMAGE := ./scripts/mkimage.darwin
  6. else
  7. MKIMAGE := ./scripts/mkimage
  8. endif
  9. $(OUTBIN): $(OUTELF)
  10. @echo generating image: $@
  11. $(NOECHO)$(SIZE) $<
  12. $(NOCOPY)$(OBJCOPY) -O binary $< $@
  13. $(NOECHO)cp -f $@ $(BUILDDIR)/lk-no-mtk-header.bin
  14. $(MKIMAGE) $@ img_hdr_lk.cfg > $(BUILDDIR)/lk_header.bin
  15. $(NOECHO)mv $(BUILDDIR)/lk_header.bin $@
  16. $(OUTELF)-dtb.img: $(OUTBIN)
  17. @echo adding dtb: $@
  18. $(NOECHO)cat $< $(LK_TOP_DIR)/main_dtb_header.bin > $@
  19. $(OUTELF)-sign.img: $(OUTELF)-dtb.img
  20. @mv $(OUTBIN) $(OUTELF)-bin.img
  21. @cp $< $(OUTBIN)
  22. @echo signing image: $@
  23. $(NOECHO)perl $(LK_TOP_DIR)/scripts/sign/SignTool.pl "$(PROJECT)" "$(PROJECT)" "$(LK_TOP_DIR)/certs" "yes" "2048" "true" "$(BUILDDIR)" "lk.img" "no"
  24. ifeq ($(ENABLE_TRUSTZONE), 1)
  25. $(OUTELF): $(ALLOBJS) $(LINKER_SCRIPT) $(OUTPUT_TZ_BIN)
  26. ifeq ($(BUILD_SEC_LIB),yes)
  27. @echo delete old security library
  28. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a
  29. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a
  30. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a
  31. @echo linking security library
  32. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a $(CRYPTO_OBJS)
  33. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a $(SEC_OBJS)
  34. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a $(SEC_PLAT_OBJS)
  35. endif
  36. ifeq ($(BUILD_DEVINFO_LIB), yes)
  37. @echo delete old security library
  38. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a
  39. @echo linking security library
  40. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a $(DEVINFO_OBJS)
  41. endif
  42. @echo linking $@
  43. $(NOECHO)$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) $(OUTPUT_TZ_BIN) $(ALLOBJS) $(LIBGCC) $(LIBSEC) $(LIBSEC_PLAT) $(wildcard $(PICACHU_LIB)) -o $@
  44. else
  45. $(OUTELF): $(ALLOBJS) $(LINKER_SCRIPT)
  46. ifeq ($(BUILD_SEC_LIB),yes)
  47. @echo delete old security library
  48. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a
  49. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a
  50. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a
  51. @echo linking security library
  52. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a $(CRYPTO_OBJS)
  53. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a $(SEC_OBJS)
  54. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a $(SEC_PLAT_OBJS)
  55. endif
  56. ifeq ($(BUILD_DEVINFO_LIB), yes)
  57. @echo delete old security library
  58. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a
  59. @echo linking security library
  60. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a $(DEVINFO_OBJS)
  61. endif
  62. ifeq ($(BUILD_HW_CRYPTO_LIB),yes)
  63. @echo delete old hw crypto library
  64. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libhw_crypto.a
  65. @echo linking hw crypto library
  66. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libhw_crypto.a $(HW_CRYPTO_OBJS)
  67. endif
  68. @echo linking $@
  69. $(NOECHO)$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) $(ALLOBJS) $(LIBGCC) $(LIBSEC) $(LIBSEC_PLAT) $(LIBHW_CRYPTO) $(wildcard $(PICACHU_LIB)) -o $@
  70. endif
  71. $(OUTELF).sym: $(OUTELF)
  72. @echo generating symbols: $@
  73. $(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) > $@
  74. $(OUTELF).lst: $(OUTELF)
  75. @echo generating listing: $@
  76. $(NOECHO)$(OBJDUMP) -Mreg-names-raw -d $< | $(CPPFILT) > $@
  77. $(OUTELF).debug.lst: $(OUTELF)
  78. @echo generating listing: $@
  79. $(NOECHO)$(OBJDUMP) -Mreg-names-raw -S $< | $(CPPFILT) > $@
  80. $(OUTELF).size: $(OUTELF)
  81. @echo generating size map: $@
  82. $(NOECHO)$(NM) -S --size-sort $< > $@
  83. ifeq ($(ENABLE_TRUSTZONE), 1)
  84. $(OUTPUT_TZ_BIN): $(INPUT_TZ_BIN)
  85. @echo generating TZ output from TZ input
  86. $(NOECHO)$(OBJCOPY) -I binary -B arm -O elf32-littlearm $(INPUT_TZ_BIN) $(OUTPUT_TZ_BIN)
  87. endif
  88. include arch/$(ARCH)/compile.mk