diff --git a/arch/arm64/src/Makefile b/arch/arm64/src/Makefile index 4dd63205b5..35fa194f2e 100644 --- a/arch/arm64/src/Makefile +++ b/arch/arm64/src/Makefile @@ -70,7 +70,19 @@ UOBJS = $(UAOBJS) $(UCOBJS) KBIN = libkarch$(LIBEXT) BIN = libarch$(LIBEXT) -LDFLAGS += $(addprefix -T,$(call CONVERT_PATH,$(ARCHSCRIPT))) $(EXTRALINKCMDS) +$(foreach lib,$(notdir $(wildcard $(APPDIR)$(DELIM)staging$(DELIM)*$(LIBEXT))), \ + $(foreach elib,$(EXTRA_LIBS), \ + $(if $(filter $(notdir $(elib)),$(lib)), \ + $(eval NAMEFULL_LIBS+=$(elib)), \ + $(if $(filter $(notdir $(elib)),$(patsubst lib%$(LIBEXT),-l%,$(lib))), \ + $(eval NAMESPEC_LIBS+=$(elib)) \ + ) \ + ) \ + ) \ + ) + +EXTRA_LIBS := $(filter-out $(NAMEFULL_LIBS) $(NAMESPEC_LIBS),$(EXTRA_LIBS)) +EXTRA_LIBS += $(wildcard $(APPDIR)$(DELIM)staging$(DELIM)*$(LIBEXT)) # Override in Make.defs if linker is not 'ld' @@ -86,6 +98,8 @@ endif BOARDMAKE = $(if $(wildcard board$(DELIM)Makefile),y,) +ARCHSCRIPT := $(call CONVERT_PATH,$(ARCHSCRIPT)) +LDFLAGS += $(addprefix -T,$(addsuffix .tmp,$(ARCHSCRIPT))) $(EXTRALINKCMDS) LIBPATHS += -L $(call CONVERT_PATH,$(TOPDIR)$(DELIM)staging) ifeq ($(BOARDMAKE),y) LIBPATHS += -L $(call CONVERT_PATH,$(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board) @@ -125,7 +139,7 @@ board$(DELIM)libboard$(LIBEXT): $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" define LINK_ALLSYMS - $(Q) $(TOPDIR)/tools/mkallsyms.sh $(NUTTX) $(CROSSDEV) > allsyms.tmp + $(Q) $(TOPDIR)/tools/mkallsyms.py $(NUTTX) allsyms.tmp $(Q) $(call COMPILE, allsyms.tmp, allsyms$(OBJEXT), -x c) $(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ -o $(NUTTX) $(HEAD_OBJ) allsyms$(OBJEXT) $(EXTRA_OBJS) \ @@ -133,7 +147,10 @@ define LINK_ALLSYMS $(Q) $(call DELFILE, allsyms.tmp allsyms$(OBJEXT)) endef -nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(ARCHSCRIPT) +$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) + $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) + +nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(Q) echo "LD: nuttx" ifneq ($(CONFIG_ALLSYMS),y) $(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ @@ -152,6 +169,7 @@ ifneq ($(CONFIG_WINDOWS_NATIVE),y) grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ sort > $(TOPDIR)$(DELIM)System.map endif + $(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT))) # This is part of the top-level export target # Note that there may not be a head object if layout is handled @@ -188,6 +206,7 @@ clean: ifeq ($(BOARDMAKE),y) $(Q) $(MAKE) -C board clean endif + $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT))) $(call DELFILE, $(KBIN)) $(call DELFILE, $(BIN)) ifneq ($(EXTRADELFILE),)