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 <raul_chen@realsil.com.cn>
This commit is contained in:
raul_chen
2026-07-17 08:30:47 -03:00
committed by Alan C. Assis
parent 84106b9152
commit cc46e7303d
2 changed files with 16 additions and 8 deletions
+8 -4
View File
@@ -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)"
+8 -4
View File
@@ -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)"