diff --git a/make/defs-cpp.mk b/make/defs-cpp.mk index a67a8a6c..5ea3075a 100644 --- a/make/defs-cpp.mk +++ b/make/defs-cpp.mk @@ -280,7 +280,8 @@ ifeq ($(TARGET_TRIPLET),arm-none-eabi) PROJECT_LDFLAGS += -nostartfiles # garbage collect unused input sections - PROJECT_LDFLAGS += -Xlinker --gc-sections + PROJECT_LDFLAGS += -Xlinker --gc-sections + PROJECT_LDFLAGS += -Xlinker --print-gc-sections # create map file PROJECT_LDFLAGS += -Wl,-Map,"$(EXE_MAP)" @@ -367,16 +368,6 @@ ifeq ($(TARGET_TRIPLET),arm-none-eabi) LD_DEFINE_SYMBOLS += _sbrk endif - # ----- tagged templates - #MCU_LD_DIR = $(wildcard $(firstword $(call $(TAGGED_TMPL_DIRS),ld))) - #MCU_LD_DIR = $(firstword $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(wildcard $(repo)/$(tag)/ld)))) - #MCU_LD_DIR = $(firstword $(wildcard $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(repo)/$(tag)/ld)))) - MCU_LD_CHECK_DIRS = $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(repo)/$(tag)/ld)) - MCU_LD_DIRS = $(wildcard $(MCU_LD_CHECK_DIRS)) - MCU_LD_DIR = $(firstword $(MCU_LD_DIRS)) - - PROJECT_LDFLAGS += -L$(MCU_LD_DIR) $(addprefix -T ,$(sort $(notdir $(wildcard $(MCU_LD_DIR)/*.ld)))) - endif PROJECT_LDFLAGS += $(addprefix -u ,$(LD_DEFINE_SYMBOLS)) diff --git a/make/mcu-flash.mk b/make/mcu-flash.mk index 19685abd..6b56e7cc 100644 --- a/make/mcu-flash.mk +++ b/make/mcu-flash.mk @@ -27,9 +27,9 @@ flash-clean-hex: %.hex: %.bin $(OBJCOPY) $(MCU_OBJCOPY_FETCH_OPTS) -I binary -O ihex $< $@.tmp mv $@.tmp $@ -flash-push: +flash-push: $(MCU_FLASH_PUSH_FILE_HEX) # see http://openocd.org/doc/html/Flash-Programming.html - $(MCU_OPENOCD) -c "program $(MCU_FLASH_PUSH_FILE_HEX) verify reset exit $(MCU_FLASH_PUSH_OFFSET)" + $(MCU_OPENOCD) -c "program $< verify reset exit $(MCU_FLASH_PUSH_OFFSET)" %-flash-push: MCU_FLASH_PUSH_FILE_HEX=$* make flash-push diff --git a/make/rules.mk b/make/rules.mk index 818568b0..16d2c694 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -334,15 +334,15 @@ endif ifeq ($(USE_PROJECT_LIB),true) ifeq ($(LIBTYPE),shared) - $(EXE) $(EXE_BIN): $(OBJ) $(LIB_SO) - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_SO) + $(EXE) $(EXE_BIN): $(OBJ) $(LD_SCRIPTS) $(LIB_SO) + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LD_SCRIPTS) $(LIB_SO) else - $(EXE) $(EXE_BIN): $(OBJ) $(LIB_A) - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_A) + $(EXE) $(EXE_BIN): $(OBJ) $(LD_SCRIPTS) $(LIB_A) + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LD_SCRIPTS) $(LIB_A) endif else - $(EXE) $(EXE_BIN): $(OBJ) - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) + $(EXE) $(EXE_BIN): $(OBJ) $(LD_SCRIPTS) + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LD_SCRIPTS) endif $(EXE) $(EXE_BIN): diff --git a/make/run.mk b/make/run.mk index f98c71c7..a4511855 100644 --- a/make/run.mk +++ b/make/run.mk @@ -36,6 +36,19 @@ CHECK_CONF_EXE ?= $(firstword $(wildcard $(PROJECTS_DIR)/valdi/bin/ LOCAL_CFLAGS += -DEXE_NAME=\"$(EXE)\" LOCAL_CXXFLAGS += -DEXE_NAME=\"$(EXE)\" +# ----- linker scripts from tagged templates +#BUILD_LD_DIR = $(wildcard $(firstword $(call $(TAGGED_TMPL_DIRS),ld))) +#BUILD_LD_DIR = $(firstword $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(wildcard $(repo)/$(tag)/ld)))) +#BUILD_LD_DIR = $(firstword $(wildcard $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(repo)/$(tag)/ld)))) + +#BUILD_LD_TMPL_DIRS ?= $(foreach tag,$(TAGGED_TMPL_TAGS),$(foreach repo,$(TOPDIR)/tmpl/tagged $(MODDIR)/tmpl/tagged,$(repo)/$(tag)/ld)) +#BUILD_LD_DIRS += $(wildcard $(BUILD_LD_TMPL_DIRS)) +#PROJECT_LDFLAGS += $(foreach d,$(BUILD_LD_DIRS),-L$(d) $(addprefix -T ,$(sort $(notdir $(wildcard $(d)/*.ld))))) + +BUILD_LD_DIRS = $(call uniq,$(dir $(foreach d,$(BUILD_LD_CHECK_DIRS),$(wildcard $(d)/*.ld)))) +LD_SCRIPTS = $(foreach d,$(BUILD_LD_DIRS),$(wildcard $(d)/*.ld)) +PROJECT_LDFLAGS += $(foreach d,$(BUILD_LD_DIRS),-L$(d) $(addprefix -T ,$(sort $(notdir $(wildcard $(d)/*.ld))))) + include $(MODDIR)/make/profiler.mk BUILD_HDR = include $(MODDIR)/make/rules.mk