arm64/makefile: preprocess link script to make configure more flexibly
1. arm64/makefile: preprocess link script to make configure more flexibly 2. arm64/EXTRA_LIBS: link all staging library Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
parent
c5f3d3d596
commit
25bce71b14
@ -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),)
|
||||
|
Loading…
Reference in New Issue
Block a user