Makefile 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. #
  2. # Common Makefile for the PX4 bootloaders
  3. #
  4. #
  5. # Paths to common dependencies
  6. #
  7. export BUILD_DIR_ROOT ?= build
  8. export BL_BASE ?= $(wildcard .)
  9. export LIBOPENCM3 ?= $(wildcard libopencm3)
  10. export LIBKINETIS ?= $(wildcard lib/kinetis/NXP_Kinetis_Bootloader_2_0_0)
  11. MKFLAGS=--no-print-directory
  12. SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
  13. COLOR_BLUE = \033[0;94m
  14. NO_COLOR = \033[m
  15. define colorecho
  16. +@echo -e '${COLOR_BLUE}${1} ${NO_COLOR}'
  17. endef
  18. #
  19. # Tools
  20. #
  21. export CC = arm-none-eabi-gcc
  22. export OBJCOPY = arm-none-eabi-objcopy
  23. #
  24. # Common configuration
  25. #
  26. export FLAGS = -std=gnu99 \
  27. -Os \
  28. -g \
  29. -Wundef \
  30. -Wall \
  31. -fno-builtin \
  32. -I$(BL_BASE)/$(LIBOPENCM3)/include \
  33. -I$(BL_BASE)/. \
  34. -ffunction-sections \
  35. -nostartfiles \
  36. -lnosys \
  37. -Wl,-gc-sections \
  38. -Wl,-g \
  39. -Werror
  40. export COMMON_SRCS = bl.c
  41. export ARCH_SRCS = cdcacm.c usart.c
  42. #
  43. # Bootloaders to build
  44. # Note: px4fmuv3_bl is the same as px4fmuv2_bl except for a different USB device
  45. # string
  46. #
  47. TARGETS = \
  48. aerofcv1_bl \
  49. auavx2v1_bl \
  50. avx_v1_bl \
  51. crazyflie_bl \
  52. cube_f4_bl \
  53. fmuk66v3_bl \
  54. kakutef7_bl \
  55. mindpxv2_bl \
  56. omnibusf4sd_bl \
  57. px4aerocore_bl \
  58. px4discovery_bl \
  59. px4flow_bl \
  60. px4fmu_bl \
  61. px4fmuv2_bl \
  62. px4fmuv3_bl \
  63. px4fmuv4_bl \
  64. px4fmuv4pro_bl \
  65. px4fmuv5_bl \
  66. px4io_bl \
  67. px4iov3_bl \
  68. tapv1_bl \
  69. smartap_pro_bl
  70. all: $(TARGETS) sizes
  71. clean:
  72. cd libopencm3 && make --no-print-directory clean && cd ..
  73. rm -f *.elf *.bin # Remove any elf or bin files contained directly in the Bootloader directory
  74. rm -rf build # Remove build directories
  75. #
  76. # Specific bootloader targets.
  77. #
  78. fmuk66v3_bl: $(MAKEFILE_LIST) $(LIBKINETIS)
  79. ${MAKE} ${MKFLAGS} -f Makefile.k66 TARGET_HW=FMUK66_V3 LINKER_FILE=kinetisk66.ld TARGET_FILE_NAME=$@
  80. auavx2v1_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  81. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=AUAV_X2V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  82. kakutef7_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  83. ${MAKE} ${MKFLAGS} -f Makefile.f7 TARGET_HW=KAKUTEF7 LINKER_FILE=stm32f7.ld TARGET_FILE_NAME=$@
  84. px4fmu_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  85. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FMU_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  86. px4fmuv2_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  87. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FMU_V2 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  88. px4fmuv3_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  89. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FMU_V3 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  90. px4fmuv4_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  91. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FMU_V4 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  92. px4fmuv4pro_bl:$(MAKEFILE_LIST) $(LIBOPENCM3)
  93. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FMU_V4_PRO LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@ EXTRAFLAGS=-DSTM32F469
  94. px4fmuv5_bl:$(MAKEFILE_LIST) $(LIBOPENCM3)
  95. ${MAKE} ${MKFLAGS} -f Makefile.f7 TARGET_HW=PX4_FMU_V5 LINKER_FILE=stm32f7.ld TARGET_FILE_NAME=$@
  96. mindpxv2_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  97. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=MINDPX_V2 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  98. px4discovery_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  99. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_DISCOVERY_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  100. px4flow_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  101. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_FLOW_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  102. px4aerocore_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  103. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=PX4_AEROCORE_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  104. crazyflie_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  105. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=CRAZYFLIE LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  106. omnibusf4sd_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  107. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=OMNIBUSF4SD LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  108. cube_f4_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  109. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=CUBE_F4 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  110. cube_f7_bl:$(MAKEFILE_LIST) $(LIBOPENCM3)
  111. ${MAKE} ${MKFLAGS} -f Makefile.f7 TARGET_HW=CUBE_F7 LINKER_FILE=stm32f7.ld TARGET_FILE_NAME=$@
  112. avx_v1_bl:$(MAKEFILE_LIST) $(LIBOPENCM3)
  113. ${MAKE} ${MKFLAGS} -f Makefile.f7 TARGET_HW=AV_X_V1 LINKER_FILE=stm32f7.ld TARGET_FILE_NAME=$@
  114. smartap_pro_bl:$(MAKEFILE_LIST) $(LIBOPENCM3)
  115. ${MAKE} ${MKFLAGS} -f Makefile.f7 TARGET_HW=SMARTAP_PRO LINKER_FILE=stm32f7.ld TARGET_FILE_NAME=$@
  116. # Default bootloader delay is *very* short, just long enough to catch
  117. # the board for recovery but not so long as to make restarting after a
  118. # brownout problematic.
  119. #
  120. px4io_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  121. ${MAKE} ${MKFLAGS} -f Makefile.f1 TARGET_HW=PX4_PIO_V1 LINKER_FILE=stm32f1.ld TARGET_FILE_NAME=$@
  122. px4iov3_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  123. ${MAKE} ${MKFLAGS} -f Makefile.f3 TARGET_HW=PX4_PIO_V3 LINKER_FILE=stm32f3.ld TARGET_FILE_NAME=$@
  124. tapv1_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  125. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=TAP_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  126. aerofcv1_bl: $(MAKEFILE_LIST) $(LIBOPENCM3)
  127. ${MAKE} ${MKFLAGS} -f Makefile.f4 TARGET_HW=AEROFC_V1 LINKER_FILE=stm32f4.ld TARGET_FILE_NAME=$@
  128. #
  129. # Show sizes
  130. #
  131. .PHONY: sizes
  132. sizes:
  133. @-find build/*/ -name '*.elf' -type f | xargs size 2> /dev/null || :
  134. #
  135. # Binary management
  136. #
  137. .PHONY: deploy
  138. deploy:
  139. zip -j Bootloader.zip build/*/*.bin
  140. #
  141. # Submodule management
  142. #
  143. $(LIBOPENCM3): checksubmodules
  144. ${MAKE} -C $(LIBOPENCM3) lib
  145. .PHONY: checksubmodules
  146. checksubmodules:
  147. $(Q) ($(BL_BASE)/Tools/check_submodules.sh)
  148. # Astyle
  149. # --------------------------------------------------------------------
  150. .PHONY: check_format format
  151. check_format:
  152. $(call colorecho,'Checking formatting with astyle')
  153. @$(SRC_DIR)/Tools/check_code_style_all.sh
  154. @cd $(SRC_DIR) && git diff --check
  155. format:
  156. $(call colorecho,'Formatting with astyle')
  157. @$(SRC_DIR)/Tools/check_code_style_all.sh --fix