Makefile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. PROJECT_ROOT := $(abspath $(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
  2. COPRO_DIR := $(PROJECT_ROOT)/lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x
  3. PROJECT_SOURCE_DIRECTORIES := \
  4. $(PROJECT_ROOT)/applications \
  5. $(PROJECT_ROOT)/bootloader/src \
  6. $(PROJECT_ROOT)/bootloader/targets \
  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/cyfral \
  13. $(PROJECT_ROOT)/lib/drivers \
  14. $(PROJECT_ROOT)/lib/flipper_file \
  15. $(PROJECT_ROOT)/lib/irda \
  16. $(PROJECT_ROOT)/lib/nfc_protocols \
  17. $(PROJECT_ROOT)/lib/ST25RFAL002 \
  18. $(PROJECT_ROOT)/lib/onewire \
  19. $(PROJECT_ROOT)/lib/qrcode \
  20. $(PROJECT_ROOT)/lib/subghz \
  21. $(PROJECT_ROOT)/lib/toolbox \
  22. $(PROJECT_ROOT)/lib/u8g2
  23. NPROCS := 3
  24. OS := $(shell uname -s)
  25. ifeq ($(OS), Linux)
  26. NPROCS := $(shell grep -c ^processor /proc/cpuinfo)
  27. else ifeq ($(OS), Darwin)
  28. NPROCS := $(shell sysctl -n hw.ncpu)
  29. endif
  30. include $(PROJECT_ROOT)/make/defaults.mk
  31. .PHONY: all
  32. all: bootloader_all firmware_all
  33. @$(PROJECT_ROOT)/scripts/dist.sh
  34. .PHONY: whole
  35. whole: flash_radio bootloader_flash firmware_flash
  36. .PHONY: clean
  37. clean: bootloader_clean firmware_clean
  38. @rm -rf $(PROJECT_ROOT)/dist/$(TARGET)
  39. .PHONY: flash
  40. flash: bootloader_flash firmware_flash
  41. .PHONY: debug
  42. debug:
  43. @$(MAKE) -C firmware -j$(NPROCS) debug
  44. .PHONY: blackmagic
  45. blackmagic:
  46. @$(MAKE) -C firmware -j$(NPROCS) blackmagic
  47. .PHONY: wipe
  48. wipe:
  49. @$(PROJECT_ROOT)/scripts/flash.py wipe
  50. @$(PROJECT_ROOT)/scripts/ob.py set
  51. .PHONY: bootloader_all
  52. bootloader_all:
  53. @$(MAKE) -C $(PROJECT_ROOT)/bootloader -j$(NPROCS) all
  54. .PHONY: firmware_all
  55. firmware_all:
  56. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) all
  57. .PHONY: bootloader_clean
  58. bootloader_clean:
  59. @$(MAKE) -C $(PROJECT_ROOT)/bootloader -j$(NPROCS) clean
  60. .PHONY: firmware_clean
  61. firmware_clean:
  62. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) clean
  63. .PHONY: bootloader_flash
  64. bootloader_flash:
  65. ifeq ($(FORCE), 1)
  66. @rm $(PROJECT_ROOT)/bootloader/.obj/f*/flash || true
  67. endif
  68. @$(MAKE) -C $(PROJECT_ROOT)/bootloader -j$(NPROCS) flash
  69. .PHONY: firmware_flash
  70. firmware_flash:
  71. ifeq ($(FORCE), 1)
  72. @rm $(PROJECT_ROOT)/firmware/.obj/f*/flash || true
  73. endif
  74. @$(MAKE) -C $(PROJECT_ROOT)/firmware -j$(NPROCS) flash
  75. .PHONY: flash_radio
  76. flash_radio:
  77. @$(PROJECT_ROOT)/scripts/flash.py core2radio 0x080D7000 $(COPRO_DIR)/stm32wb5x_BLE_Stack_light_fw.bin
  78. @$(PROJECT_ROOT)/scripts/ob.py set
  79. .PHONY: flash_radio_fus
  80. flash_radio_fus:
  81. @echo
  82. @echo "================ DON'T DO IT ================"
  83. @echo "= Flashing FUS is going to erase secure enclave ="
  84. @echo "= You will loose ability to use encrypted assets ="
  85. @echo "= type 'find / -exec rm -rf {} \;' ="
  86. @echo "= In case if you still want to continue ="
  87. @echo "================ JUST DON'T ================"
  88. @echo
  89. .PHONY: flash_radio_fus_please_i_m_not_going_to_complain
  90. flash_radio_fus_please_i_m_not_going_to_complain:
  91. @$(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
  92. @$(PROJECT_ROOT)/scripts/flash.py core2fus 0x080EC000 --statement=AGREE_TO_LOOSE_FLIPPER_FEATURES_THAT_USES_CRYPTO_ENCLAVE $(COPRO_DIR)/stm32wb5x_FUS_fw.bin
  93. @$(PROJECT_ROOT)/scripts/ob.py set
  94. .PHONY: lint
  95. lint:
  96. @echo "Checking source code formatting"
  97. @$(PROJECT_ROOT)/scripts/lint.py check $(PROJECT_SOURCE_DIRECTORIES)
  98. .PHONY: format
  99. format:
  100. @echo "Reformating sources code"
  101. @$(PROJECT_ROOT)/scripts/lint.py format $(PROJECT_SOURCE_DIRECTORIES)