Wirepas SDK
makefile_bootloader.mk
Go to the documentation of this file.
1include makefile_common.mk
2
3# Include build-time make variables that depend on the selected configuration
4include $(BUILD_VARIABLES_MK)
5
6.DEFAULT_GOAL := all
7
8unprotected ?= false
9
10
11BOOTLOADER_SRC := $(BUILDPREFIX_BOOTLOADER)bootloader.a
12
13# Bootloader build variables
14BL_BUILDPREFIX := $(BUILDPREFIX_BOOTLOADER)
15
16# Linker for the bootloader
17ifndef MCU_RAM_VAR
18LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR).ld
19else
20LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR)_$(MCU_RAM_VAR).ld
21endif
22
23
24BOOTLOADER_ELF := $(BL_BUILDPREFIX)bootloader.elf
25
26# Include bootloader makefile
27-include bootloader/makefile
28
29# Include board part (for BOARD_HW_xx defines)
30-include board/makefile
31
32# Include HAL drivers code (needed to build power.c (DCDC))
33-include $(HAL_API_PATH)makefile
34INCLUDES += -iquote$(API_PATH) -I$(UTIL_PATH)
35
36OBJS_ = $(SRCS:.c=.o)
37OBJS = $(addprefix $(BL_BUILDPREFIX), $(OBJS_))
38
39# Files to be cleaned
40CLEAN := $(OBJS) $(BOOTLOADER_ELF) $(BOOTLOADER_HEX)
41
42$(BOOTLOADER_SRC): FORCE
43 @echo "$(COLOR_INFO)Select bootloader from the image folder$(COLOR_END)"
44 $(DD)$(MKDIR) $(@D)
45 $(eval key_type=$(shell $(BOOT_CONF) --in_file $(BOOTLOADER_CONFIG_INI) --get_key_type))
46 $(DD)$(FMW_SEL) --firmware_path=$(FIRMWARE_PATH)\
47 --firmware_type="wp_bootloader"\
48 --archive_path=$(ARCHIVE_PATH)\
49 --extract_path=$(EXTRACT_PATH)\
50 --version=$(MIN_BOOTLOADER_VERSION)\
51 --output_path=$(@D)\
52 --output_name="bootloader"\
53 --key_type=$(key_type)\
54 --unlocked=$(unprotected)\
55 --mcu=$(MCU)\
56 --mcu_sub=$(MCU_SUB)\
57 --mcu_mem_var=$(MCU_MEM_VAR)
58
59$(BL_BUILDPREFIX)%.o : %.c
60 @echo "$(COLOR_CC)CC$(COLOR_END) $<"
61 $(DD)$(MKDIR) $(@D)
62 $(D)$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
63
64
65$(BOOTLOADER_ELF): $(OBJS) $(BOOTLOADER_SRC)
66 $(DD)$(MKDIR) $(@D)
67 @echo "$(COLOR_INFO)Linking with the provided lib:$(COLOR_END) $(BOOTLOADER_SRC)"
68 $(D)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(BOOTLOADER_SRC) \
69 -Wl,--defsym,__bl_length__=$(bootloader_area_length) \
70 -Wl,-Map=$(BL_BUILDPREFIX)bootloader.map \
71 -Wl,-T,$(LDSCRIPT) $(LIBS)
72
73$(BOOTLOADER_HEX): $(BOOTLOADER_ELF)
74 $(DD)$(MKDIR) $(@D)
75 @echo "$(COLOR_INFO)Generating:$(COLOR_END) $@"
76 $(D)$(OBJCOPY) $(BOOTLOADER_ELF) -O ihex $@
77
78.PHONY: all
79all: $(BOOTLOADER_HEX)
80
81clean:
82 $(D)$(RM) -rf $(CLEAN)
83
84# Special ruel to force other rule to run every time
85FORCE: