Linker script generator produces build/esp32/esp32.common.ld from components/esp32/ld/esp32.common.ld.in This works fine until IDF is downgraded to V3.1 which uses components/esp32/ld/esp32.common.ld and doesn't track build/esp32/esp32.common.ld at all. At this point, the linker runs in the build/esp32 directory and "-T esp32.common.ld" picks up the linker script generated .ld file, which causes mis-builds. As reported on forums: https://esp32.com/viewtopic.php?f=13&t=9684&p=40105
50 lines
1.8 KiB
Makefile
50 lines
1.8 KiB
Makefile
ifdef CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION
|
|
|
|
PHY_INIT_DATA_OBJ = $(BUILD_DIR_BASE)/phy_init_data.o
|
|
PHY_INIT_DATA_BIN = $(BUILD_DIR_BASE)/phy_init_data.bin
|
|
|
|
# Command to flash PHY init data partition
|
|
PHY_INIT_DATA_FLASH_CMD = $(ESPTOOLPY_SERIAL) write_flash $(PHY_DATA_OFFSET) $(PHY_INIT_DATA_BIN)
|
|
ESPTOOL_ALL_FLASH_ARGS += $(PHY_DATA_OFFSET) $(PHY_INIT_DATA_BIN)
|
|
|
|
ESP32_COMPONENT_PATH := $(COMPONENT_PATH)
|
|
|
|
$(PHY_INIT_DATA_OBJ): $(ESP32_COMPONENT_PATH)/phy_init_data.h $(BUILD_DIR_BASE)/include/sdkconfig.h
|
|
$(summary) CC $(notdir $@)
|
|
printf "#include \"phy_init_data.h\"\n" | $(CC) -I $(BUILD_DIR_BASE)/include -I $(ESP32_COMPONENT_PATH) -I $(ESP32_COMPONENT_PATH)/include -c -o $@ -xc -
|
|
|
|
$(PHY_INIT_DATA_BIN): $(PHY_INIT_DATA_OBJ)
|
|
$(summary) BIN $(notdir $@)
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
phy_init_data: $(PHY_INIT_DATA_BIN)
|
|
|
|
phy_init_data-flash: $(BUILD_DIR_BASE)/phy_init_data.bin
|
|
@echo "Flashing PHY init data..."
|
|
$(PHY_INIT_DATA_FLASH_CMD)
|
|
|
|
phy_init_data-clean:
|
|
rm -f $(PHY_INIT_DATA_BIN) $(PHY_INIT_DATA_OBJ)
|
|
|
|
all: phy_init_data
|
|
flash: phy_init_data
|
|
|
|
endif # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION
|
|
|
|
|
|
# Enable psram cache bug workaround in compiler if selected
|
|
ifdef CONFIG_SPIRAM_CACHE_WORKAROUND
|
|
CFLAGS+=-mfix-esp32-psram-cache-issue
|
|
CXXFLAGS+=-mfix-esp32-psram-cache-issue
|
|
endif
|
|
|
|
# Enable dynamic esp_timer overflow value if building unit tests
|
|
ifneq ("$(filter esp32,$(TEST_COMPONENTS_LIST))","")
|
|
CPPFLAGS += -DESP_TIMER_DYNAMIC_OVERFLOW_VAL
|
|
endif
|
|
ESP32_LINKER_SCRIPT_TEMPLATE := $(COMPONENT_PATH)/ld/esp32.project.ld.in
|
|
ESP32_LINKER_SCRIPT_OUTPUT_DIR := $(abspath $(BUILD_DIR_BASE)/esp32)
|
|
|
|
# Target to generate linker script generator from fragments presented by each of
|
|
# the components
|
|
$(eval $(call ldgen_process_template, $(ESP32_LINKER_SCRIPT_TEMPLATE), $(ESP32_LINKER_SCRIPT_OUTPUT_DIR)/esp32.project.ld))
|