xref: /btstack/port/stm32-f4discovery-cc256x/Makefile (revision 225f4ba4fe806afeda1ee8519bb5f4a8ce540af2)
1##########################################################################################################################
2# File automatically-generated by tool: [projectgenerator] version: [3.1.0] date: [Thu Mar 07 21:47:00 CET 2019]
3##########################################################################################################################
4
5# ------------------------------------------------
6# Generic Makefile (based on gcc)
7#
8# ChangeLog :
9#	2017-02-10 - Several enhancements + project update mode
10#   2015-07-22 - first version
11# ------------------------------------------------
12
13######################################
14# target
15######################################
16TARGET = stm32f4-discovery-cc256x
17
18
19######################################
20# building variables
21######################################
22# debug build?
23DEBUG = 1
24# optimization
25OPT = -O2
26
27
28#######################################
29# paths
30#######################################
31# Build path
32BUILD_DIR = build
33
34BTSTACK_ROOT = ../..
35VPATH += ${BTSTACK_ROOT}/3rd-party/micro-ecc
36VPATH += ${BTSTACK_ROOT}/3rd-party/bluedroid/decoder/srce
37VPATH += ${BTSTACK_ROOT}/3rd-party/bluedroid/encoder/srce
38VPATH += ${BTSTACK_ROOT}/3rd-party/hxcmod-player
39VPATH += ${BTSTACK_ROOT}/3rd-party/hxcmod-player/mods
40VPATH += ${BTSTACK_ROOT}/3rd-party/md5
41VPATH += ${BTSTACK_ROOT}/3rd-party/yxml
42VPATH += ${BTSTACK_ROOT}/3rd-party/segger-rtt
43VPATH += ${BTSTACK_ROOT}/chipset/cc256x
44VPATH += ${BTSTACK_ROOT}/example
45VPATH += ${BTSTACK_ROOT}/platform/embedded
46VPATH += ${BTSTACK_ROOT}/src
47VPATH += ${BTSTACK_ROOT}/src/ble
48VPATH += ${BTSTACK_ROOT}/src/ble/gatt-service
49VPATH += ${BTSTACK_ROOT}/src/classic
50VPATH += Drivers/STM32F4xx_HAL_DRIVER/Src
51VPATH += Src
52VPATH += port
53VPATH += bsp
54
55######################################
56# source
57######################################
58# C sources
59C_SOURCES =  \
603rd-party/hxcmod-player/hxcmod.c \
613rd-party/hxcmod-player/mods/nao-deceased_by_disease.c \
623rd-party/micro-ecc/uECC.c \
633rd-party/segger-rtt/SEGGER_RTT.c \
643rd-party/segger-rtt/SEGGER_RTT_Syscalls_GCC.c \
653rd-party/yxml/yxml.c \
663rd-prty/md5.c \
67bluetooth_init_cc2564B_1.6_BT_Spec_4.1.c \
68bsp/audio.c \
69bsp/cs43l22.c \
70bsp/stm32f4_discovery.c \
71bsp/stm32f4_discovery_audio.c \
72chipset/cc256x/btstack_chipset_cc256x.c \
73Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal.c \
74Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_cortex.c \
75Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dma.c \
76Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_dma_ex.c \
77Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_exti.c \
78Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_flash.c \
79Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_flash_ex.c \
80Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_flash_ramfunc.c \
81Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_gpio.c \
82Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2c.c \
83Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2c_ex.c \
84Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2s.c \
85Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_i2s_ex.c \
86Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_pwr.c \
87Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_pwr_ex.c \
88Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_rcc.c \
89Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_rcc_ex.c \
90Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_spi.c \
91Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_tim.c \
92Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_tim_ex.c \
93Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal_uart.c \
94exampe/sco_demo_util.c \
95platform/embedded/btstack_audio_embedded.c \
96platform/embedded/btstack_run_loop_embedded.c \
97platform/embedded/btstack_stdin_embedded.c \
98platform/embedded/btstack_tlv_flash_bank.c \
99platform/embedded/btstack_uart_block_embedded.c \
100port/hal_audio_f4discovery.c \
101port/hal_flash_bank_stm32.c \
102src/ad_parser.c \
103src/ble/ancs_client.c \
104src/ble/att_db.c \
105src/ble/att_dispatch.c \
106src/ble/att_server.c \
107src/ble/gatt-service/battery_service_server.c \
108src/ble/gatt-service/device_information_service_server.c \
109src/ble/gatt-service/hids_device.c \
110src/ble/gatt_client.c \
111src/ble/le_device_db_memory.c \
112src/ble/le_device_db_tlv.c \
113src/ble/sm.c \
114src/btstack_audio.c \
115src/btstack_crypto.c \
116src/btstack_hid_parser.c \
117src/btstack_linked_list.c \
118src/btstack_memory.c \
119src/btstack_memory_pool.c \
120src/btstack_resample.c \
121src/btstack_ring_buffer.c \
122src/btstack_run_loop.c \
123src/btstack_tlv.c \
124src/btstack_util.c \
125src/classic/a2dp_sink.c \
126src/classic/a2dp_source.c \
127src/classic/avdtp.c \
128src/classic/avdtp_acceptor.c \
129src/classic/avdtp_initiator.c \
130src/classic/avdtp_sink.c \
131src/classic/avdtp_source.c \
132src/classic/avdtp_util.c \
133src/classic/avrcp.c \
134src/classic/avrcp_browsing_controller.c \
135src/classic/avrcp_controller.c \
136src/classic/avrcp_media_item_iterator.c \
137src/classic/avrcp_target.c \
138src/classic/btstack_cvsd_plc.c \
139src/classic/btstack_link_key_db_tlv.c \
140src/classic/btstack_sbc_decoder_bluedroid.c \
141src/classic/btstack_sbc_encoder_bluedroid.c \
142src/classic/btstack_sbc_plc.c \
143src/classic/device_id_server.c \
144src/classic/goep_client.c \
145src/classic/hfp.c \
146src/classic/hfp_ag.c \
147src/classic/hfp_gsm_model.c \
148src/classic/hfp_hf.c \
149src/classic/hfp_msbc.c \
150src/classic/hid_device.c \
151src/classic/hsp_ag.c \
152src/classic/hsp_hs.c \
153src/classic/obex_iterator.c \
154src/classic/pbap_client.c \
155src/classic/rfcomm.c \
156src/classic/sdp_client.c \
157src/classic/sdp_client_rfcomm.c \
158src/classic/sdp_server.c \
159src/classic/sdp_util.c \
160src/classic/spp_server.c \
161Src/dma.c \
162Src/gpio.c \
163src/hci.c \
164src/hci_cmd.c \
165src/hci_dump.c \
166src/hci_transport_h4.c \
167src/l2cap.c \
168src/l2cap_signaling.c \
169Src/main.c \
170Src/port.c \
171Src/spi.c \
172Src/stm32f4xx_hal_msp.c \
173Src/stm32f4xx_it.c \
174Src/system_stm32f4xx.c \
175Src/usart.c \
176
177# ASM sources
178ASM_SOURCES =  \
179startup_stm32f407xx.s
180
181
182#######################################
183# binaries
184#######################################
185PREFIX = arm-none-eabi-
186# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
187# either it can be added to the PATH environment variable.
188ifdef GCC_PATH
189CC = $(GCC_PATH)/$(PREFIX)gcc
190AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
191CP = $(GCC_PATH)/$(PREFIX)objcopy
192SZ = $(GCC_PATH)/$(PREFIX)size
193else
194CC = $(PREFIX)gcc
195AS = $(PREFIX)gcc -x assembler-with-cpp
196CP = $(PREFIX)objcopy
197SZ = $(PREFIX)size
198endif
199HEX = $(CP) -O ihex
200BIN = $(CP) -O binary -S
201
202#######################################
203# CFLAGS
204#######################################
205# cpu
206CPU = -mcpu=cortex-m4
207
208# fpu
209FPU = -mfpu=fpv4-sp-d16
210
211# float-abi
212FLOAT-ABI = -mfloat-abi=softfp
213
214# mcu
215MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)
216
217# macros for gcc
218# AS defines
219AS_DEFS =
220
221# C defines
222C_DEFS =  \
223-DUSE_HAL_DRIVER \
224-DSTM32F407xx
225
226
227# AS includes
228AS_INCLUDES =
229
230# C includes
231C_INCLUDES =  \
232-IInc \
233-IDrivers/STM32F4xx_HAL_Driver/Inc \
234-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \
235-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \
236-IDrivers/CMSIS/Include \
237
238C_INCLUDES += -I$(BUILD_DIR)
239C_INCLUDES += -I${BTSTACK_ROOT}/src/ble
240C_INCLUDES += -I${BTSTACK_ROOT}/src/ble/gatt-service
241C_INCLUDES += -I${BTSTACK_ROOT}/src/classic
242C_INCLUDES += -I${BTSTACK_ROOT}/src
243C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/micro-ecc
244C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/bluedroid/decoder/include
245C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/bluedroid/encoder/include
246C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/hxcmod-player
247C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/hxcmod-player/mods
248C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/md5
249C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/yxml
250C_INCLUDES += -I${BTSTACK_ROOT}/3rd-party/segger-rtt
251C_INCLUDES += -I${BTSTACK_ROOT}/platform/embedded
252C_INCLUDES += -I${BTSTACK_ROOT}/chipset/cc256x
253C_INCLUDES += -I Drivers/STM32F4xx_HAL_Driver/Inc
254C_INCLUDES += -I bsp
255C_INCLUDES += -I pdm
256C_INCLUDES += -I port
257C_INCLUDES += -I src
258
259# compile gcc flags
260ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
261
262CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
263
264ifeq ($(DEBUG), 1)
265CFLAGS += -g -gdwarf-2
266endif
267
268
269# Generate dependency information
270CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
271
272
273#######################################
274# LDFLAGS
275#######################################
276# link script
277LDSCRIPT = STM32F407VGTx_FLASH.ld
278
279# libraries
280LIBS = -lPDMFilter_CM4_GCC -lc -lm -lnosys
281LIBDIR = -Lpdm
282LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
283
284# default action: build all
285LE_EXAMPLES = \
286	ancs_client_demo \
287	gap_le_advertisements \
288	gatt_battery_query \
289	gatt_browser \
290	le_counter \
291	le_streamer \
292	le_streamer_client \
293	sm_pairing_peripheral \
294	sm_pairing_central
295
296EXAMPLES = 					\
297	audio_duplex            \
298	a2dp_sink_demo			\
299	a2dp_source_demo        \
300	ancs_client_demo		\
301	dut_mode_classic        \
302	gap_dedicated_bonding	\
303	gap_inquiry 			\
304	gap_le_advertisements   \
305	gatt_battery_query		\
306	gatt_browser            \
307	hfp_ag_demo             \
308	hfp_hf_demo             \
309	hid_host_demo           \
310	hid_keyboard_demo 	    \
311	hid_mouse_demo          \
312	hog_keyboard_demo       \
313	hog_mouse_demo          \
314	hsp_ag_demo             \
315	hsp_hs_demo             \
316	mod_player              \
317	le_counter              \
318	le_streamer				\
319	le_streamer_client      \
320	pbap_client_demo		\
321	sdp_bnep_query 			\
322	sdp_general_query		\
323	sdp_rfcomm_query		\
324	sine_player             \
325	sm_pairing_central      \
326	sm_pairing_peripheral   \
327	spp_and_le_counter 		\
328	spp_and_le_streamer     \
329	spp_counter 			\
330	spp_streamer			\
331	spp_streamer_client     \
332
333GATT_FILES = \
334	ancs_client_demo.gatt \
335	le_counter.gatt \
336	le_streamer.gatt \
337	gatt_browser.gatt \
338	gatt_battery_query.gatt \
339	hog_keyboard_demo.gatt \
340	hog_mouse_demo.gatt \
341	sm_pairing_peripheral.gatt \
342	sm_pairing_central.gatt \
343	spp_and_le_counter.gatt \
344	spp_and_le_streamer.gatt \
345
346include ${BTSTACK_ROOT}/3rd-party/bluedroid/decoder/Makefile.inc
347include ${BTSTACK_ROOT}/3rd-party/bluedroid/encoder/Makefile.inc
348
349C_SOURCES += ${SBC_ENCODER}
350C_SOURCES += ${SBC_DECODER}
351
352#######################################
353# build the application
354#######################################
355# list of objects
356OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
357vpath %.c $(sort $(dir $(C_SOURCES)))
358# list of ASM program objects
359OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
360vpath %.s $(sort $(dir $(ASM_SOURCES)))
361
362all: \
363	$(OBJECTS) \
364	$(addprefix $(BUILD_DIR)/,$(GATT_FILES:.gatt=.h)) \
365	$(addprefix $(BUILD_DIR)/,$(EXAMPLES:=.elf)) \
366	$(addprefix $(BUILD_DIR)/,$(EXAMPLES:=.hex)) \
367	$(addprefix $(BUILD_DIR)/,$(EXAMPLES:=.bin)) \
368	$(addprefix $(BUILD_DIR)/,$(EXAMPLES:=.jdebug)) \
369
370include ${BTSTACK_ROOT}/chipset/cc256x/Makefile.inc
371
372$(BUILD_DIR)/%.h: %.gatt
373	python ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@
374
375$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
376	$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
377
378$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
379	$(AS) -c $(CFLAGS) $< -o $@
380
381$(BUILD_DIR)/%.elf: Makefile $(OBJECTS) $(BUILD_DIR)/%.o
382	$(CC) $(filter-out Makefile,$^)  $(LDFLAGS) -o $@
383	$(SZ) $@
384
385$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
386	$(HEX) $< $@
387
388$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
389	$(BIN) $< $@
390
391$(BUILD_DIR)/%.jdebug: ozone.jdebug | $(BUILD_DIR)
392	sed -e "s|EXAMPLE|$(basename $(notdir $@))|" $<  > $@
393
394$(BUILD_DIR):
395	mkdir $@
396
397#######################################
398# clean up
399#######################################
400clean:
401	-rm -fR $(BUILD_DIR)
402
403#######################################
404# dependencies
405#######################################
406-include $(wildcard $(BUILD_DIR)/*.d)
407
408# *** EOF ***
409