1 include makefile_common.mk
3 # Include build-time make variables that depend on the selected configuration
4 include $(BUILD_VARIABLES_MK)
10 # Get the right bootloader binary
12 BOOTLOADER_SRC := $(BUILDPREFIX_BOOTLOADER)bootloader.a
14 # Bootloader build variables
15 BL_BUILDPREFIX := $(BUILDPREFIX_BOOTLOADER)
17 # Linker for the bootloader
19 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR).ld
21 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR)_$(MCU_RAM_VAR).ld
25 BOOTLOADER_ELF := $(BL_BUILDPREFIX)bootloader.elf
27 # Include bootloader makefile
28 -include bootloader/makefile
30 # Include board part (for BOARD_HW_xx defines)
31 -include board/makefile
33 # Include HAL drivers code (needed to build power.c (DCDC))
34 -include $(HAL_API_PATH)makefile
35 INCLUDES += -iquote$(API_PATH) -I$(UTIL_PATH)
38 OBJS = $(addprefix $(BL_BUILDPREFIX), $(OBJS_))
41 CLEAN := $(OBJS) $(BOOTLOADER_ELF) $(BOOTLOADER_HEX)
43 $(BOOTLOADER_SRC): FORCE
44 @echo "$(COLOR_INFO)Select bootloader from the image folder$(COLOR_END)"
46 $(eval key_type=$(shell $(BOOT_CONF) --in_file $(BOOTLOADER_CONFIG_INI) --get_key_type))
47 $(DD)$(FMW_SEL) --firmware_path=$(IMAGE_PATH) \
48 --firmware_type="wp_bootloader" \
49 --version=$(MIN_BOOTLOADER_VERSION) \
51 --output_name="bootloader" \
52 --key_type=$(key_type) \
53 --unlocked=$(unprotected) \
55 --mcu_sub=$(MCU_SUB) \
56 --mcu_mem_var=$(MCU_MEM_VAR)
58 $(BL_BUILDPREFIX)%.o : %.c
59 @echo "$(COLOR_CC)CC$(COLOR_END) $<"
61 $(D)$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
64 $(BOOTLOADER_ELF): $(OBJS) $(BOOTLOADER_SRC)
66 @echo "$(COLOR_INFO)Linking with the provided lib:$(COLOR_END) $(BOOTLOADER_SRC)"
67 $(D)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(BOOTLOADER_SRC) \
68 -Wl,--defsym,__bl_length__=$(bootloader_area_length) \
69 -Wl,-Map=$(BL_BUILDPREFIX)bootloader.map \
70 -Wl,-T,$(LDSCRIPT) $(LIBS)
72 $(BOOTLOADER_HEX): $(BOOTLOADER_ELF)
74 @echo "$(COLOR_INFO)Generating:$(COLOR_END) $@"
75 $(D)$(OBJCOPY) $(BOOTLOADER_ELF) -O ihex $@
78 all: $(BOOTLOADER_HEX)
81 $(D)$(RM) -rf $(CLEAN)
83 # Special ruel to force other rule to run every time