Makefile 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. TARGET := stm32$(HARDWARE)
  2. ifeq ($(DEBUG), 1)
  3. CFLAGS += -DDEBUG -g
  4. endif
  5. ifeq ($(MAC),)
  6. #Print default MAC
  7. MAC = $(shell awk '/\#define DEVICE_MAC/{print $$3}' ./Modules/settings_api.h )
  8. else
  9. #Set device MAC
  10. CFLAGS += -DDEVICE_MAC='"$(MAC)"'
  11. endif
  12. ifeq ($(FLASH_ERASE), 1)
  13. CFLAGS += -DFLASH_ERASE
  14. endif
  15. CFLAGS += -DPRINTF_$(shell echo $(PRINTF) | tr a-z A-Z)
  16. CFLAGS += -DHARDWARE_$(shell echo $(HARDWARE) | tr a-z A-Z)
  17. INCLUDES = -I../config
  18. INCLUDES += -I../stm32/stm32f4xx_spl/inc
  19. INCLUDES += -I../stm32/system
  20. INCLUDES += -I../peripheral_modules/inc
  21. INCLUDES += -I../user
  22. INCLUDES += -I../thirdparty/TinyStdio
  23. INCLUDES += -I../thirdparty/myStrings
  24. INCLUDES += -I.
  25. CSRC = $(wildcard ../stm32/stm32f4xx_spl/src/*.c)
  26. CSRC += $(wildcard ../stm32/system/*.c)
  27. CSRC += $(wildcard ../peripheral_modules/src/*.c)
  28. CSRC += $(wildcard ../user/*.c)
  29. CSRC += $(wildcard ../thirdparty/TinyStdio/*.c)
  30. CSRC += $(wildcard ../thirdparty/myStrings/*.c)
  31. CSRC += $(wildcard *.c)
  32. INCLUDES += -Ileds
  33. INCLUDES += -Ibuttons
  34. INCLUDES += -Ijumper
  35. INCLUDES += -Id_inouts
  36. INCLUDES += -IMegaTec
  37. INCLUDES += -Icommon
  38. INCLUDES += -Imonitor
  39. INCLUDES += -Ilog
  40. INCLUDES += -Itesting
  41. ifeq ($(HARDWARE), bt6710)
  42. INCLUDES += -Iportgw
  43. INCLUDES += -Ids18b20
  44. INCLUDES += -Ionewire_sensor
  45. endif
  46. ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1))
  47. INCLUDES += -Iwhitelist
  48. endif
  49. ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
  50. INCLUDES += -Iradius
  51. endif
  52. INCLUDES += -Imbedtls_api
  53. INCLUDES += -Istm32_temperature
  54. CSRC += $(wildcard leds/*.c)
  55. CSRC += $(wildcard buttons/*.c)
  56. CSRC += $(wildcard jumper/*.c)
  57. CSRC += $(wildcard d_inouts/*.c)
  58. CSRC += $(wildcard MegaTec/*.c)
  59. CSRC += $(wildcard common/*.c)
  60. CSRC += $(wildcard monitor/*.c)
  61. CSRC += $(wildcard log/*.c)
  62. CSRC += $(wildcard testing/*.c)
  63. ifeq ($(HARDWARE), bt6710)
  64. CSRC += $(wildcard portgw/*.c)
  65. CSRC += $(wildcard ds18b20/*.c)
  66. CSRC += $(wildcard onewire_sensor/*.c)
  67. endif
  68. ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6711 bt6711_v1))
  69. CSRC += $(wildcard whitelist/*.c)
  70. endif
  71. ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
  72. CSRC += $(wildcard radius/*.c)
  73. endif
  74. CSRC += $(wildcard mbedtls_api/*.c)
  75. CSRC += $(wildcard stm32_temperature/*.c)
  76. CFLAGS += -DOS_FREERTOS
  77. #FreeRTOS
  78. LDSCRIPT := startup/stm32_flash.ld
  79. INCLUDES += -I../thirdparty/FreeRTOS/include -I../thirdparty/FreeRTOS/portable/GCC/ARM_CM3
  80. CSRC += $(wildcard ../thirdparty/FreeRTOS/*.c ../thirdparty/FreeRTOS/portable/GCC/ARM_CM3/*.c)
  81. ASMSRC = startup/startup_stm32f4xx.s
  82. # MemMang
  83. CSRC += $(wildcard ../thirdparty/FreeRTOS/portable/MemMang/heap_4.c)
  84. #cjson
  85. CSRC += $(wildcard ../thirdparty/cjson/*.c)
  86. INCLUDES += -I../thirdparty/cjson
  87. # LwIP + Web #
  88. INCLUDES += -IHTTP_Server
  89. INCLUDES += -I../thirdparty/lwip_patched/src/include
  90. INCLUDES += -I../thirdparty/lwip_patched/src/include/lwip
  91. INCLUDES += -I../thirdparty/lwip_patched/src/include/netif
  92. INCLUDES += -I../thirdparty/lwip_patched/src/include/lwip/apps
  93. INCLUDES += -I../thirdparty/lwip_patched/src/apps/snmp/
  94. # INCLUDES += -I../thirdparty/lwip_patched/src/netif/ppp
  95. INCLUDES += -I../thirdparty/lwip_patched/port
  96. INCLUDES += -I../thirdparty/lwip_patched/port/FreeRTOS
  97. INCLUDES += -I../thirdparty/lwip_patched/system
  98. INCLUDES += -I../thirdparty/lwip_patched/system/arch
  99. INCLUDES += -IEthernet
  100. # INCLUDES += -I../stm32/stm32f4x7_ethernet
  101. INCLUDES += -ISTM32F4x7_ETH_Driver
  102. ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt))
  103. CSRC += $(wildcard HTTP_Server/my_ssl_server.c)
  104. endif
  105. #ifeq ($(HARDWARE), bt6710)
  106. # CSRC += $(wildcard HTTP_Server/http_server.c)
  107. #endif
  108. ifneq (,$(filter $(HARDWARE),bt6707 bt6709 bt6709_mts bt6711 bt6711_v1 bt6710))
  109. INCLUDES += -Icli
  110. CSRC += $(wildcard cli/*.c)
  111. INCLUDES += -ITelnet_Server
  112. CSRC += $(wildcard HTTP_Server/http_server.c)
  113. CSRC += $(wildcard Telnet_Server/*.c)
  114. ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6710))
  115. # SSH
  116. CSRC += $(wildcard ../thirdparty/wolfssl/wolfcrypt/src/*.c) ../thirdparty/wolfssl/wolfcrypt/src/port/st/stm32.c
  117. INCLUDES += -I../thirdparty/wolfssl
  118. CFLAGS += -DWOLFSSL_LWIP -DWOLFSSL_STM32F4 -DFREERTOS -DFREERTOS_TCP -DNO_WOLFSSL_DIR -DWOLFSSL_USER_SETTINGS -DNO_FILESYSTEM -DWOLFSSL_IAR_ARM -DWOLFSSL_LEANPSK -DINLINE=inline -DNO_WOLFSSL_MEMORY -DHAVE_ECC -DHAVE_STRINGS_H -DWOLF_C99 -DWOLFSSL_NO_PEM -DHAVE_HASHDRBG -DSTM32F4 -DNO_WOLFSSL_CLIENT -DNO_DES3
  119. #CFLAGS += -DDEBUG_WOLFSSL
  120. # incompatible with SPL
  121. CFLAGS += -DNO_STM32_CRYPTO
  122. CSRC += $(wildcard ../thirdparty/wolfssh/wolfcrypt/src/*.c ../thirdparty/wolfssh/src/*.c)
  123. INCLUDES += -I../thirdparty/wolfssh
  124. CFLAGS += -DWOLFSSH_LWIP -DNO_WOLFSSH_DIR -DSINGLE_THREADED -DXMEMSET=memset -DWSTRNCPY=strncpy -DWMEMSET=memset -DWSTRLEN=strlen -DWMEMMOVE=memmove -DHAVE_DH -Dmin=min -DTINYPRINTF_OVERRIDE_LIBC
  125. #CFLAGS += -DDEBUG_WOLFSSH
  126. INCLUDES += -ISSH_Server
  127. CSRC += $(wildcard SSH_Server/*.c)
  128. # for pre-C99 compilers
  129. CFLAGS += -DXSTRNCASECMP=lwip_strnicmp
  130. # pulls strftime that requires the linker to pull lots of useless Linux calls on gcc-4.7.3
  131. CFLAGS += -DWOLFSSH_NO_TIMESTAMP
  132. endif
  133. endif
  134. # don't include GNU/Linux definitions of FD_* since they're provided by lwip, as seen in sys/types.h
  135. CFLAGS += -D__USE_W32_SOCKETS
  136. CSRC += $(wildcard HTTP_Server/trap_params.c)
  137. CSRC += $(wildcard HTTP_Server/web_params_api.c)
  138. CSRC += $(wildcard ../thirdparty/lwip_patched/src/*.c)
  139. CSRC += $(wildcard ../thirdparty/lwip_patched/src/api/*.c)
  140. CSRC += $(wildcard ../thirdparty/lwip_patched/src/core/*.c)
  141. CSRC += $(wildcard ../thirdparty/lwip_patched/src/core/ipv4/*.c)
  142. CSRC += $(wildcard ../thirdparty/lwip_patched/src/netif/*.c)
  143. CSRC += $(wildcard ../thirdparty/lwip_patched/src/apps/snmp/*.c)
  144. # CSRC += $(wildcard ../thirdparty/lwip_patched/src/netif/ppp/*.c)
  145. CSRC += $(wildcard ../thirdparty/lwip_patched/port/FreeRTOS/*.c)
  146. CSRC += $(wildcard Ethernet/*.c)
  147. # CSRC += $(wildcard ../stm32/stm32f4x7_ethernet/*.c)
  148. CSRC += $(wildcard STM32F4x7_ETH_Driver/*.c)
  149. CSRC += $(wildcard ../stm32/system/syscalls/syscalls.c)
  150. #SSL
  151. #INCLUDES += -I../thirdparty/PolarSSL/include/polarssl/
  152. #INCLUDES += -I../thirdparty/PolarSSL/include/
  153. #CSRC += $(wildcard ../thirdparty/PolarSSL/library/*.c)
  154. INCLUDES += -I../thirdparty/mbedTLS/include/
  155. CSRC += $(wildcard ../thirdparty/mbedTLS/library/*.c)
  156. ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt bt6711 bt6711_v1))
  157. #RADDIUS_SERVER
  158. INCLUDES += -I../thirdparty/FreeRadius/
  159. INCLUDES += -I../thirdparty/FreeRadius/include/
  160. INCLUDES += -I../thirdparty/FreeRadius/lib/
  161. CSRC += $(wildcard ../thirdparty/FreeRadius/lib/*.c)
  162. endif
  163. CFLAGS += -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DLOG_ENABLE -DMBEDTLS_CONFIG_FILE='<mbedtls_config.h>'
  164. ifeq ($(HARDWARE), bt6703)
  165. BUILDDIR = ../build/bt6703/$(TARGET)
  166. endif
  167. ifeq ($(HARDWARE), bt6703_rt)
  168. BUILDDIR = ../build/bt6703_rt/$(TARGET)
  169. endif
  170. ifeq ($(HARDWARE), bt6707)
  171. BUILDDIR = ../build/bt6707/$(TARGET)
  172. endif
  173. ifeq ($(HARDWARE), bt6709)
  174. BUILDDIR = ../build/bt6709/$(TARGET)
  175. endif
  176. ifeq ($(HARDWARE), bt6709_mts)
  177. BUILDDIR = ../build/bt6709_mts/$(TARGET)
  178. endif
  179. ifeq ($(HARDWARE), bt6710)
  180. BUILDDIR = ../build/bt6710/$(TARGET)
  181. endif
  182. ifeq ($(HARDWARE), bt6711)
  183. BUILDDIR = ../build/bt6711/$(TARGET)
  184. endif
  185. ifeq ($(HARDWARE), bt6711_v1)
  186. BUILDDIR = ../build/bt6711_v1/$(TARGET)
  187. endif
  188. FW_FLASH_START = $(shell awk '/USER_FLASH_FIRST_PAGE_ADDRESS/{print $$3;exit}' ../config/common_config.h )
  189. FW_FLASH_CRC = $(shell awk '/USER_FLASH_CRC_ADDRESS/{print $$3}' ../config/common_config.h )
  190. ifeq ($(HARDWARE), bt6703)
  191. FW_NAME = BT_6703xx
  192. endif
  193. ifeq ($(HARDWARE), bt6703_rt)
  194. FW_NAME = BT_6703_RTxx
  195. endif
  196. ifeq ($(HARDWARE), bt6707)
  197. FW_NAME = BT_6707xx
  198. endif
  199. ifeq ($(HARDWARE), bt6709)
  200. FW_NAME = BT_6709xx
  201. endif
  202. ifeq ($(HARDWARE), bt6709_mts)
  203. FW_NAME = BT_6709_MTSxx
  204. endif
  205. ifeq ($(HARDWARE), bt6710)
  206. FW_NAME = BT_6710xx
  207. endif
  208. ifeq ($(HARDWARE), bt6711)
  209. FW_NAME = BT_6711xx
  210. endif
  211. ifeq ($(HARDWARE), bt6711_v1)
  212. FW_NAME = BT_6711_v1xx
  213. endif
  214. -include ../Makefile.inc.stm32
  215. #Building Web UI FS
  216. ifeq ($(HARDWARE), bt6710)
  217. WUI_DIR = ../web_interface/dist/wui-10
  218. FSDATA_DIR = ./HTTP_Server/bt6710_fs
  219. endif
  220. ifeq ($(HARDWARE), bt6711)
  221. WUI_DIR = ../web_interface/dist/wui-11
  222. FSDATA_DIR = ./HTTP_Server/bt6711_fs
  223. endif
  224. ifeq ($(HARDWARE), bt6711_v1)
  225. WUI_DIR = ../web_interface/dist/wui-11
  226. FSDATA_DIR = ./HTTP_Server/bt6711_fs
  227. endif
  228. ifeq ($(HARDWARE), bt6707)
  229. WUI_DIR = ../web_interface/dist/wui-7
  230. FSDATA_DIR = ./HTTP_Server/bt6707_fs
  231. endif
  232. ifeq ($(HARDWARE), bt6709)
  233. WUI_DIR = ../web_interface/dist/wui-9
  234. FSDATA_DIR = ./HTTP_Server/bt6709_fs
  235. endif
  236. ifeq ($(HARDWARE), bt6709_mts)
  237. WUI_DIR = ../web_interface/dist/wui-9-mts
  238. FSDATA_DIR = ./HTTP_Server/bt6709_mts_fs
  239. endif
  240. ifeq ($(HARDWARE), bt6703_rt)
  241. WUI_DIR = ../web_interface/dist/wui-3-rt
  242. FSDATA_DIR = ./HTTP_Server/bt6703_rt_fs
  243. endif
  244. ifeq ($(HARDWARE), bt6703)
  245. WUI_DIR = ../web_interface/dist/wui-3
  246. FSDATA_DIR = ./HTTP_Server/bt6703_fs
  247. endif
  248. $(FSDATA_DIR)/fsdata.c: $(WUI_DIR)/*
  249. mkdir -p $(FSDATA_DIR)
  250. ../docs/makefsdata.pl $(FSDATA_DIR) $(WUI_DIR)
  251. ARTIFACTS_PATH := ~/Releases/$(HARDWARE)
  252. RELEASE_VERSION := $(shell ../projects/gcc/tools/version.sh $(HARDWARE) $(INCLUDES))
  253. RELEASE_PATH := $(ARTIFACTS_PATH)/$(RELEASE_VERSION)
  254. prebuild: $(FSDATA_DIR)/fsdata.c
  255. @echo "Hardware version: $(HARDWARE)"
  256. rm -rf ../thirdparty/lwip_patched
  257. mkdir -p ../thirdparty/lwip_patched
  258. cp -R ../thirdparty/lwip/* ../thirdparty/lwip_patched
  259. cd ../thirdparty/lwip_patched/ && patch -p3 < ../../patches/snmp_mib2_system_patch.diff
  260. postbuild: $(BUILDDIR)/$(TARGET).bin
  261. @echo "FW start address: $(FW_FLASH_START)"
  262. @echo "FW CRC address: $(FW_FLASH_CRC)"
  263. @echo "Copying to: $(OUTPUTDIR)/$(FW_NAME).bin"
  264. @cp $(BUILDDIR)/$(TARGET).bin $(OUTPUTDIR)/$(FW_NAME).bin
  265. $(BUILDDIR)/../../tools/cortex_crc $(OUTPUTDIR)/$(FW_NAME).bin $(FW_FLASH_START) $(FW_FLASH_CRC)
  266. release:
  267. @echo "FW version: $(RELEASE_VERSION)"
  268. @mkdir -p $(RELEASE_PATH)
  269. @cp $(OUTPUTDIR)/iap.bin $(RELEASE_PATH)/bl_$(HARDWARE).bin
  270. @cp $(OUTPUTDIR)/$(FW_NAME).bin $(RELEASE_PATH)/IBP.bin
  271. @cp ../docs/$(HARDWARE)/*.MIB $(RELEASE_PATH)
  272. @vim -c "s/^/# $(RELEASE_VERSION)\r### Добавлено\r\r### Изменено\r\r### Исправлено\r\r\r\r" -c "set noswapfile" -c "3" ../docs/$(HARDWARE)/Changelog.md
  273. @cp ../docs/$(HARDWARE)/Changelog.md $(RELEASE_PATH)
  274. @echo "Compressing..."
  275. @cd $(RELEASE_PATH) && zip $(RELEASE_VERSION).zip IBP.bin *.MIB Changelog.md
  276. @echo "Done: $(RELEASE_PATH)/$(RELEASE_VERSION).zip"