Makefile 4.2 KB

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