d664e32394
For config-only components, component.mk should now contain "COMPONENT_CONFIG_ONLY := 1" Also refactored some of the generation of linker paths, library list. This required cleaning up the way the bootloader project works, it's now mostly independent from the parent.
67 lines
2.5 KiB
Makefile
67 lines
2.5 KiB
Makefile
#
|
|
# Partition table
|
|
#
|
|
# The partition table is not a real component that gets linked into
|
|
# the project. Instead, it is a standalone project to generate
|
|
# the partition table binary as part of the build process. This
|
|
# binary is then added to the list of files for esptool.py to flash.
|
|
#
|
|
.PHONY: partition_table partition_table-flash partition_table-clean
|
|
|
|
# NB: gen_esp32part.py lives in the sdk/bin/ dir not component dir
|
|
GEN_ESP32PART := $(PYTHON) $(COMPONENT_PATH)/gen_esp32part.py -q
|
|
|
|
# Has a matching value in bootloader_support esp_flash_partitions.h
|
|
PARTITION_TABLE_OFFSET := 0x8000
|
|
|
|
# if CONFIG_PARTITION_TABLE_FILENAME is unset, means we haven't re-generated config yet...
|
|
ifneq ("$(CONFIG_PARTITION_TABLE_FILENAME)","")
|
|
|
|
ifndef PARTITION_TABLE_CSV_PATH
|
|
# Path to partition CSV file is relative to project path for custom
|
|
# partition CSV files, but relative to component dir otherwise.$
|
|
PARTITION_TABLE_ROOT := $(call dequote,$(if $(CONFIG_PARTITION_TABLE_CUSTOM),$(PROJECT_PATH),$(COMPONENT_PATH)))
|
|
PARTITION_TABLE_CSV_PATH := $(call dequote,$(abspath $(PARTITION_TABLE_ROOT)/$(subst $(quote),,$(CONFIG_PARTITION_TABLE_FILENAME))))
|
|
endif
|
|
|
|
PARTITION_TABLE_CSV_NAME := $(notdir $(PARTITION_TABLE_CSV_PATH))
|
|
|
|
PARTITION_TABLE_BIN := $(BUILD_DIR_BASE)/$(PARTITION_TABLE_CSV_NAME:.csv=.bin)
|
|
|
|
ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
|
|
PARTITION_TABLE_BIN_UNSIGNED := $(PARTITION_TABLE_BIN:.bin=-unsigned.bin)
|
|
# add an extra signing step for secure partition table
|
|
$(PARTITION_TABLE_BIN): $(PARTITION_TABLE_BIN_UNSIGNED) $(SDKCONFIG_MAKEFILE) $(SECURE_BOOT_SIGNING_KEY)
|
|
$(ESPSECUREPY) sign_data --keyfile $(SECURE_BOOT_SIGNING_KEY) -o $@ $<
|
|
else
|
|
# secure bootloader disabled, both files are the same
|
|
PARTITION_TABLE_BIN_UNSIGNED := $(PARTITION_TABLE_BIN)
|
|
endif
|
|
|
|
$(PARTITION_TABLE_BIN_UNSIGNED): $(PARTITION_TABLE_CSV_PATH) $(SDKCONFIG_MAKEFILE)
|
|
@echo "Building partitions from $(PARTITION_TABLE_CSV_PATH)..."
|
|
$(GEN_ESP32PART) $< $@
|
|
|
|
all_binaries: $(PARTITION_TABLE_BIN)
|
|
|
|
PARTITION_TABLE_FLASH_CMD = $(ESPTOOLPY_SERIAL) write_flash $(PARTITION_TABLE_OFFSET) $(PARTITION_TABLE_BIN)
|
|
ESPTOOL_ALL_FLASH_ARGS += $(PARTITION_TABLE_OFFSET) $(PARTITION_TABLE_BIN)
|
|
|
|
partition_table: $(PARTITION_TABLE_BIN)
|
|
@echo "Partition table binary generated. Contents:"
|
|
@echo $(SEPARATOR)
|
|
$(GEN_ESP32PART) $<
|
|
@echo $(SEPARATOR)
|
|
@echo "Partition flashing command:"
|
|
@echo "$(PARTITION_TABLE_FLASH_CMD)"
|
|
|
|
partition_table-flash: $(PARTITION_TABLE_BIN)
|
|
@echo "Flashing partition table..."
|
|
$(PARTITION_TABLE_FLASH_CMD)
|
|
|
|
partition_table-clean:
|
|
rm -f $(PARTITION_TABLE_BIN)
|
|
|
|
clean: partition_table-clean
|
|
|
|
endif
|