Wirepas SDK
makefile_bootloader.mk
Go to the documentation of this file.
1 include makefile_common.mk
2 
3 # Include build-time make variables that depend on the selected configuration
4 include $(BUILD_VARIABLES_MK)
5 
6 .DEFAULT_GOAL := all
7 
8 unprotected ?= false
9 
10 
11 BOOTLOADER_SRC := $(BUILDPREFIX_BOOTLOADER)bootloader.a
12 
13 # Bootloader build variables
14 BL_BUILDPREFIX := $(BUILDPREFIX_BOOTLOADER)
15 
16 # Linker for the bootloader
17 ifndef MCU_RAM_VAR
18 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR).ld
19 else
20 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR)_$(MCU_RAM_VAR).ld
21 endif
22 
23 
24 BOOTLOADER_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
34 INCLUDES += -iquote$(API_PATH) -I$(UTIL_PATH)
35 
36 OBJS_ = $(SRCS:.c=.o)
37 OBJS = $(addprefix $(BL_BUILDPREFIX), $(OBJS_))
38 
39 # Files to be cleaned
40 CLEAN := $(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
79 all: $(BOOTLOADER_HEX)
80 
81 clean:
82  $(D)$(RM) -rf $(CLEAN)
83 
84 # Special ruel to force other rule to run every time
85 FORCE: