From 7b43a9413a0724c3b34317aecd7581cadc65a90f Mon Sep 17 00:00:00 2001
From: cuiziwei <cuiziwei@xiaomi.com>
Date: Fri, 10 May 2024 21:17:34 +0800
Subject: [PATCH] arch/EXTRA_LIBS: link all staging library.

Signed-off-by: cuiziwei <cuiziwei@xiaomi.com>
---
 arch/x86/src/Makefile    | 14 ++++++++++++++
 arch/x86_64/src/Makefile | 14 ++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/arch/x86/src/Makefile b/arch/x86/src/Makefile
index 76e5b1abfb..53e6d701b8 100644
--- a/arch/x86/src/Makefile
+++ b/arch/x86/src/Makefile
@@ -53,6 +53,20 @@ OBJS = $(AOBJS) $(COBJS)
 
 # Override in Make.defs if linker is not 'ld'
 
+$(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))
+
 LDSTARTGROUP ?= --start-group
 LDENDGROUP ?= --end-group
 LDFLAGS += $(addprefix -T,$(call CONVERT_PATH,$(ARCHSCRIPT))) -static
diff --git a/arch/x86_64/src/Makefile b/arch/x86_64/src/Makefile
index c436a6996e..59029876bd 100644
--- a/arch/x86_64/src/Makefile
+++ b/arch/x86_64/src/Makefile
@@ -53,6 +53,20 @@ BIN  = libarch$(LIBEXT)
 
 # Override in Make.defs if linker is not 'ld'
 
+$(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))
+
 LDSTARTGROUP ?= --start-group
 LDENDGROUP ?= --end-group