build.mk 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. ifeq ($(ENABLE_TRUSTZONE), 1)
  17. $(OUTELF): $(ALLOBJS) $(LINKER_SCRIPT) $(OUTPUT_TZ_BIN)
  18. ifeq ($(BUILD_SEC_LIB),yes)
  19. @echo delete old security library
  20. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a
  21. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a
  22. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a
  23. @echo linking security library
  24. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a $(CRYPTO_OBJS)
  25. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a $(SEC_OBJS)
  26. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a $(SEC_PLAT_OBJS)
  27. endif
  28. ifeq ($(BUILD_DEVINFO_LIB), yes)
  29. @echo delete old security library
  30. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a
  31. @echo linking security library
  32. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a $(DEVINFO_OBJS)
  33. endif
  34. @echo linking $@
  35. $(NOECHO)$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) $(OUTPUT_TZ_BIN) $(ALLOBJS) $(LIBGCC) $(LIBSEC) $(LIBSEC_PLAT) $(wildcard $(PICACHU_LIB)) -o $@
  36. else
  37. $(OUTELF): $(ALLOBJS) $(LINKER_SCRIPT)
  38. ifeq ($(BUILD_SEC_LIB),yes)
  39. @echo delete old security library
  40. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a
  41. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a
  42. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a
  43. @echo linking security library
  44. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libcrypto.a $(CRYPTO_OBJS)
  45. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsec.a $(SEC_OBJS)
  46. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libsecplat.a $(SEC_PLAT_OBJS)
  47. endif
  48. ifeq ($(BUILD_DEVINFO_LIB), yes)
  49. @echo delete old security library
  50. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a
  51. @echo linking security library
  52. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libdevinfo.a $(DEVINFO_OBJS)
  53. endif
  54. ifeq ($(BUILD_HW_CRYPTO_LIB),yes)
  55. @echo delete old hw crypto library
  56. @rm -rf $(LK_TOP_DIR)/app/mt_boot/lib/libhw_crypto.a
  57. @echo linking hw crypto library
  58. @ar cq $(LK_TOP_DIR)/app/mt_boot/lib/libhw_crypto.a $(HW_CRYPTO_OBJS)
  59. endif
  60. @echo linking $@
  61. $(NOECHO)$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) $(ALLOBJS) $(LIBGCC) $(LIBSEC) $(LIBSEC_PLAT) $(LIBHW_CRYPTO) $(wildcard $(PICACHU_LIB)) -o $@
  62. endif
  63. $(OUTELF).sym: $(OUTELF)
  64. @echo generating symbols: $@
  65. $(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) > $@
  66. $(OUTELF).lst: $(OUTELF)
  67. @echo generating listing: $@
  68. $(NOECHO)$(OBJDUMP) -Mreg-names-raw -d $< | $(CPPFILT) > $@
  69. $(OUTELF).debug.lst: $(OUTELF)
  70. @echo generating listing: $@
  71. $(NOECHO)$(OBJDUMP) -Mreg-names-raw -S $< | $(CPPFILT) > $@
  72. $(OUTELF).size: $(OUTELF)
  73. @echo generating size map: $@
  74. $(NOECHO)$(NM) -S --size-sort $< > $@
  75. ifeq ($(ENABLE_TRUSTZONE), 1)
  76. $(OUTPUT_TZ_BIN): $(INPUT_TZ_BIN)
  77. @echo generating TZ output from TZ input
  78. $(NOECHO)$(OBJCOPY) -I binary -B arm -O elf32-littlearm $(INPUT_TZ_BIN) $(OUTPUT_TZ_BIN)
  79. endif
  80. include arch/$(ARCH)/compile.mk