esp-idf/components/esp_system/component.mk
Mahavir Jain e0d29d4ada esp_system: create ld template to abstract few common settings
PMS aware chips require prefetch padding size for instruction fetch, or
some memory alignment considerations. These settings are now exposed
through kconfig options (hidden) and used through common ld template.
This shall help to add and manage future chips support easily for
these considerations.

Closes IDF-3624
2021-09-02 16:13:17 +08:00

60 lines
1.9 KiB
Makefile

ifdef IS_BOOTLOADER_BUILD
ifndef CONFIG_IDF_ENV_FPGA
COMPONENT_CONFIG_ONLY := 1
else
COMPONENT_SRCDIRS := .
COMPONENT_OBJS += fpga_overrides.o
endif
else
SOC_NAME := $(IDF_TARGET)
COMPONENT_SRCDIRS := .
COMPONENT_ADD_INCLUDEDIRS := include port/public_compat
COMPONENT_PRIV_INCLUDEDIRS := port/include port
COMPONENT_ADD_LDFRAGMENTS += linker.lf app.lf
COMPONENT_DEPENDS := esp_phy
ifndef CONFIG_IDF_ENV_FPGA
COMPONENT_OBJEXCLUDE += fpga_overrides.o
endif
# Force linking UBSAN hooks. If UBSAN is not enabled, the hooks will ultimately be removed
# due to -ffunction-sections -Wl,--gc-sections options.
COMPONENT_ADD_LDFLAGS += -u __ubsan_include
include $(COMPONENT_PATH)/port/soc/$(SOC_NAME)/component.mk
# disable stack protection in files which are involved in initialization of that feature
startup.o stack_check.o: CFLAGS := $(filter-out -fstack-protector%, $(CFLAGS))
ld_input := $(COMPONENT_PATH)/ld/esp32/memory.ld.in
ld_output := $(COMPONENT_BUILD_DIR)/ld/memory.ld
sections_ld := $(COMPONENT_BUILD_DIR)/ld/sections.ld
#Linker scripts used to link the final application.
#Warning: These linker scripts are only used when the normal app is compiled; the bootloader
#specifies its own scripts.
LINKER_SCRIPTS += $(ld_output) $(sections_ld)
#ld_include_panic_highint_hdl is added as an undefined symbol because otherwise the
#linker will ignore panic_highint_hdl.S as it has no other files depending on any
#symbols in it.
COMPONENT_ADD_LDFLAGS += -u ld_include_panic_highint_hdl \
$(addprefix -T ,$(LINKER_SCRIPTS)) \
# Preprocess memory.ld.in linker script into memory.ld
#
# The library doesn't really depend on memory.ld, but it
# saves us from having to add the target to a Makefile.projbuild
$(COMPONENT_LIBRARY): $(ld_output)
$(ld_output): $(ld_input) ../include/sdkconfig.h
mkdir -p $(COMPONENT_BUILD_DIR)/ld
$(CC) -I ../include -I $(COMPONENT_PATH)/ld -C -P -x c -E $< -o $@
COMPONENT_EXTRA_CLEAN := $(ld_output) $(sections_ld)
endif