Makefile 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. PROJECT_ROOT := $(abspath $(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
  2. include $(PROJECT_ROOT)/make/git.mk
  3. include $(PROJECT_ROOT)/assets/copro.mk
  4. include $(PROJECT_ROOT)/assets/splash.mk
  5. PROJECT_SOURCE_DIRECTORIES := \
  6. $(PROJECT_ROOT)/applications \
  7. $(PROJECT_ROOT)/core \
  8. $(PROJECT_ROOT)/firmware/targets \
  9. $(PROJECT_ROOT)/lib/app-template \
  10. $(PROJECT_ROOT)/lib/app-scened-template \
  11. $(PROJECT_ROOT)/lib/common-api \
  12. $(PROJECT_ROOT)/lib/drivers \
  13. $(PROJECT_ROOT)/lib/flipper_file \
  14. $(PROJECT_ROOT)/lib/infrared \
  15. $(PROJECT_ROOT)/lib/nfc_protocols \
  16. $(PROJECT_ROOT)/lib/ST25RFAL002 \
  17. $(PROJECT_ROOT)/lib/onewire \
  18. $(PROJECT_ROOT)/lib/qrcode \
  19. $(PROJECT_ROOT)/lib/subghz \
  20. $(PROJECT_ROOT)/lib/toolbox \
  21. $(PROJECT_ROOT)/lib/u8g2
  22. NPROCS := 3
  23. OS := $(shell uname -s)
  24. ifeq ($(OS), Linux)
  25. NPROCS := $(shell grep -c ^processor /proc/cpuinfo)
  26. else ifeq ($(OS), Darwin)
  27. NPROCS := $(shell sysctl -n hw.ncpu)
  28. endif
  29. include $(PROJECT_ROOT)/make/defaults.mk
  30. .PHONY: all
  31. all: firmware_all
  32. @$(PROJECT_ROOT)/scripts/dist.py copy -t $(TARGET) -p firmware -s $(DIST_SUFFIX)
  33. .PHONY: whole
  34. whole: flash_radio firmware_flash
  35. .PHONY: clean
  36. clean: firmware_clean updater_clean
  37. @rm -rf $(PROJECT_ROOT)/dist/$(TARGET)
  38. .PHONY: flash
  39. flash: firmware_flash
  40. .PHONY: debug
  41. debug:
  42. @$(MAKE) -C firmware -j$(NPROCS) debug
  43. .PHONY: debug_other
  44. debug_other:
  45. @$(MAKE) -C firmware -j$(NPROCS) debug_other
  46. .PHONY: blackmagic
  47. blackmagic:
  48. @$(MAKE) -C firmware -j$(NPROCS) blackmagic
  49. .PHONY: wipe
  50. wipe:
  51. @$(PROJECT_ROOT)/scripts/flash.py wipe
  52. @$(PROJECT_ROOT)/scripts/ob.py set
  53. .PHONY: firmware_all
  54. firmware_all:
  55. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) all
  56. .PHONY: firmware_clean
  57. firmware_clean:
  58. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) clean
  59. .PHONY: firmware_flash
  60. firmware_flash:
  61. ifeq ($(FORCE), 1)
  62. @rm $(PROJECT_ROOT)/firmware/.obj/f*-firmware/flash || true
  63. endif
  64. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) flash
  65. .PHONY: updater
  66. updater:
  67. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) RAM_EXEC=1 all
  68. .PHONY: updater_clean
  69. updater_clean:
  70. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) RAM_EXEC=1 clean
  71. .PHONY: updater_debug
  72. updater_debug:
  73. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) RAM_EXEC=1 debug
  74. .PHONY: updater_package_bin
  75. updater_package_bin: firmware_all updater
  76. @$(PROJECT_ROOT)/scripts/dist.py copy -t $(TARGET) -p firmware updater -s $(DIST_SUFFIX) --bundlever "$(VERSION_STRING)"
  77. .PHONY: updater_package
  78. updater_package: firmware_all updater assets_manifest
  79. @$(PROJECT_ROOT)/scripts/dist.py copy \
  80. -t $(TARGET) -p firmware updater \
  81. -s $(DIST_SUFFIX) -r $(PROJECT_ROOT)/assets/resources \
  82. --bundlever "$(VERSION_STRING)" \
  83. --radio $(COPRO_STACK_BIN_PATH) \
  84. --radiotype $(COPRO_STACK_TYPE) \
  85. $(COPRO_DISCLAIMER) \
  86. --obdata $(PROJECT_ROOT)/scripts/$(COPRO_OB_DATA) \
  87. --splash $(UPDATER_SPLASH_DIR)
  88. .PHONY: assets_manifest
  89. assets_manifest:
  90. @$(MAKE) -C $(PROJECT_ROOT)/assets manifest
  91. .PHONY: assets_rebuild
  92. assets_rebuild:
  93. @$(MAKE) -C $(PROJECT_ROOT)/assets clean all
  94. .PHONY: flash_radio
  95. flash_radio:
  96. @$(PROJECT_ROOT)/scripts/flash.py core2radio $(COPRO_STACK_BIN_PATH) --addr=$(COPRO_STACK_ADDR)
  97. @$(PROJECT_ROOT)/scripts/ob.py set
  98. .PHONY: flash_radio_fus
  99. flash_radio_fus:
  100. @echo
  101. @echo "================ DON'T DO IT ================"
  102. @echo "= Flashing FUS is going to erase secure enclave ="
  103. @echo "= You will lose ability to use encrypted assets ="
  104. @echo "= type 'find / -exec rm -rf {} \;' ="
  105. @echo "= In case if you still want to continue ="
  106. @echo "================ JUST DON'T ================"
  107. @echo
  108. .PHONY: flash_radio_fus_please_i_m_not_going_to_complain
  109. flash_radio_fus_please_i_m_not_going_to_complain:
  110. @$(PROJECT_ROOT)/scripts/flash.py core2fus 0x080EC000 --statement=AGREE_TO_LOSE_FLIPPER_FEATURES_THAT_USE_CRYPTO_ENCLAVE $(COPRO_FIRMWARE_DIR)/stm32wb5x_FUS_fw_for_fus_0_5_3.bin
  111. @$(PROJECT_ROOT)/scripts/flash.py core2fus 0x080EC000 --statement=AGREE_TO_LOSE_FLIPPER_FEATURES_THAT_USE_CRYPTO_ENCLAVE $(COPRO_FIRMWARE_DIR)/stm32wb5x_FUS_fw.bin
  112. @$(PROJECT_ROOT)/scripts/ob.py set
  113. .PHONY: lint
  114. lint:
  115. @echo "Checking source code formatting"
  116. @$(PROJECT_ROOT)/scripts/lint.py check $(PROJECT_SOURCE_DIRECTORIES)
  117. .PHONY: format
  118. format:
  119. @echo "Reformating sources code"
  120. @$(PROJECT_ROOT)/scripts/lint.py format $(PROJECT_SOURCE_DIRECTORIES)
  121. .PHONY: guruguru
  122. guruguru:
  123. @echo "ぐるぐる回る"
  124. @$(PROJECT_ROOT)/scripts/guruguru.py $(PROJECT_ROOT)
  125. .PHONY: generate_compile_db
  126. generate_compile_db:
  127. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) generate_compile_db