This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit cc46e7303d7f43740bfe6cfbfeb553abe18098fd
Author: raul_chen <[email protected]>
AuthorDate: Fri Jul 17 10:25:55 2026 +0800

    arch/arm/ameba: pack fwlib/wifi archives from an explicit object list
    
    The make PREBUILD packed the fwlib/wifi static archives with `ar crs <a>
    <objdir>/*.o`.  The glob also picks up stale objects left in the obj dir 
from a
    previous configuration (e.g. a renamed/removed SDK source), which can pull a
    duplicate/old translation unit into the image (seen on RTL8720F as a 
spurious
    ROM-overlay symbol from an old log.o).  Accumulate the exact object list the
    loop compiled and `ar` that instead, removing the archive first so it is
    rebuilt from precisely the current sources.
    
    Assisted-by: Claude Code:claude-opus-4-8
    Signed-off-by: raul_chen <[email protected]>
---
 arch/arm/src/rtl8720f/ameba_board.mk  | 12 ++++++++----
 arch/arm/src/rtl8721dx/ameba_board.mk | 12 ++++++++----
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/arch/arm/src/rtl8720f/ameba_board.mk 
b/arch/arm/src/rtl8720f/ameba_board.mk
index 2d0413ac9a1..28f9283943c 100644
--- a/arch/arm/src/rtl8720f/ameba_board.mk
+++ b/arch/arm/src/rtl8720f/ameba_board.mk
@@ -268,7 +268,7 @@ define PREBUILD
        $(Q) $(AMEBA_NP_PREBUILD)
        $(Q) echo "GEN: libameba_fwlib.a (fwlib from SDK source)"
        $(Q) mkdir -p $(AMEBA_PREBUILT_LIBS)$(DELIM)fwlib_obj
-       $(Q) rebuild_fwlib=0; \
+       $(Q) rebuild_fwlib=0; fwlib_objs=""; \
             for src in $(AMEBA_FWLIB_SRCS); do \
               obj=$(AMEBA_PREBUILT_LIBS)/fwlib_obj/`basename $$src .c`.o; \
               if [ "$$src" -nt "$$obj" ] 2>/dev/null || [ ! -f "$$obj" ]; then 
\
@@ -276,14 +276,16 @@ define PREBUILD
                   $(AMEBA_FWLIB_INC) -c $$src -o $$obj || exit 1; \
                 rebuild_fwlib=1; \
               fi; \
+              fwlib_objs="$$fwlib_objs $$obj"; \
             done; \
             if [ "$$rebuild_fwlib" = "1" ] || [ ! -f "$(AMEBA_FWLIB_A)" ]; 
then \
-              $(CROSSDEV)ar crs $(AMEBA_FWLIB_A) 
$(AMEBA_PREBUILT_LIBS)/fwlib_obj/*.o; \
+              rm -f $(AMEBA_FWLIB_A); \
+              $(CROSSDEV)ar crs $(AMEBA_FWLIB_A) $$fwlib_objs; \
             fi
        $(Q) if [ "$(CONFIG_RTL8720F_WIFI)" = "y" ]; then \
               echo "GEN: libameba_wifi.a (WHC host glue from SDK source + 
NuttX shim)"; \
               mkdir -p $(AMEBA_PREBUILT_LIBS)$(DELIM)wifi_obj; \
-              rebuild_wifi=0; \
+              rebuild_wifi=0; wifi_objs=""; \
               for src in $(AMEBA_WIFI_SRCS); do \
                 obj=$(AMEBA_PREBUILT_LIBS)/wifi_obj/`basename $$src .c`.o; \
                 if [ "$$src" -nt "$$obj" ] 2>/dev/null || [ ! -f "$$obj" ]; 
then \
@@ -291,9 +293,11 @@ define PREBUILD
                     $(AMEBA_WIFI_INC) -c $$src -o $$obj || exit 1; \
                   rebuild_wifi=1; \
                 fi; \
+                wifi_objs="$$wifi_objs $$obj"; \
               done; \
               if [ "$$rebuild_wifi" = "1" ] || [ ! -f "$(AMEBA_WIFI_A)" ]; 
then \
-                $(CROSSDEV)ar crs $(AMEBA_WIFI_A) 
$(AMEBA_PREBUILT_LIBS)/wifi_obj/*.o; \
+                rm -f $(AMEBA_WIFI_A); \
+                $(CROSSDEV)ar crs $(AMEBA_WIFI_A) $$wifi_objs; \
               fi; \
             fi
        $(Q) echo "GEN: ld.script.gen (Ameba KM4 image2)"
diff --git a/arch/arm/src/rtl8721dx/ameba_board.mk 
b/arch/arm/src/rtl8721dx/ameba_board.mk
index d3648dea965..c326add632e 100644
--- a/arch/arm/src/rtl8721dx/ameba_board.mk
+++ b/arch/arm/src/rtl8721dx/ameba_board.mk
@@ -268,7 +268,7 @@ define PREBUILD
        $(Q) $(AMEBA_NP_PREBUILD)
        $(Q) echo "GEN: libameba_fwlib.a (fwlib from SDK source)"
        $(Q) mkdir -p $(AMEBA_PREBUILT_LIBS)$(DELIM)fwlib_obj
-       $(Q) rebuild_fwlib=0; \
+       $(Q) rebuild_fwlib=0; fwlib_objs=""; \
             for src in $(AMEBA_FWLIB_SRCS); do \
               obj=$(AMEBA_PREBUILT_LIBS)/fwlib_obj/`basename $$src .c`.o; \
               if [ "$$src" -nt "$$obj" ] 2>/dev/null || [ ! -f "$$obj" ]; then 
\
@@ -276,14 +276,16 @@ define PREBUILD
                   $(AMEBA_FWLIB_INC) -c $$src -o $$obj || exit 1; \
                 rebuild_fwlib=1; \
               fi; \
+              fwlib_objs="$$fwlib_objs $$obj"; \
             done; \
             if [ "$$rebuild_fwlib" = "1" ] || [ ! -f "$(AMEBA_FWLIB_A)" ]; 
then \
-              $(CROSSDEV)ar crs $(AMEBA_FWLIB_A) 
$(AMEBA_PREBUILT_LIBS)/fwlib_obj/*.o; \
+              rm -f $(AMEBA_FWLIB_A); \
+              $(CROSSDEV)ar crs $(AMEBA_FWLIB_A) $$fwlib_objs; \
             fi
        $(Q) if [ "$(CONFIG_RTL8721DX_WIFI)" = "y" ]; then \
               echo "GEN: libameba_wifi.a (WHC host glue from SDK source + 
NuttX shim)"; \
               mkdir -p $(AMEBA_PREBUILT_LIBS)$(DELIM)wifi_obj; \
-              rebuild_wifi=0; \
+              rebuild_wifi=0; wifi_objs=""; \
               for src in $(AMEBA_WIFI_SRCS); do \
                 obj=$(AMEBA_PREBUILT_LIBS)/wifi_obj/`basename $$src .c`.o; \
                 if [ "$$src" -nt "$$obj" ] 2>/dev/null || [ ! -f "$$obj" ]; 
then \
@@ -291,9 +293,11 @@ define PREBUILD
                     $(AMEBA_WIFI_INC) -c $$src -o $$obj || exit 1; \
                   rebuild_wifi=1; \
                 fi; \
+                wifi_objs="$$wifi_objs $$obj"; \
               done; \
               if [ "$$rebuild_wifi" = "1" ] || [ ! -f "$(AMEBA_WIFI_A)" ]; 
then \
-                $(CROSSDEV)ar crs $(AMEBA_WIFI_A) 
$(AMEBA_PREBUILT_LIBS)/wifi_obj/*.o; \
+                rm -f $(AMEBA_WIFI_A); \
+                $(CROSSDEV)ar crs $(AMEBA_WIFI_A) $$wifi_objs; \
               fi; \
             fi
        $(Q) echo "GEN: ld.script.gen (Ameba AP km4 image2)"

Reply via email to