mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
tools: fix stale archive members surviving a Kconfig-driven CSRCS change
During the Toybox port to NuttX, Claude noticed that changes in the menuconfig weren't taking affect. This issue exists for a long time on NuttX, in fact BayLibre's presentation from 2017 make jokes about our building system not been reliable: https://www.youtube.com/watch?v=XUJK2htXxKw&t=320s Stale archive members from $(AR)'s additive-only behavior can linger after Kconfig toggles change which files provide a symbol, causing dead weight or "multiple definition" link errors on incremental builds. Fixed by splitting ARCHIVE into two macros: ARCHIVE keeps the original additive behavior for apps/libapps.a, which many independent subdirectories contribute to across a build, while the new ARCHIVE_REBUILD deletes then archives for the far more common case of a single Makefile building its own self-contained $(OBJS) - all 39 such call sites now use it. Assisted-By: Claude Sonnet 5 Signed-off-by: Alan C. Assis <acassis@gmail.com>
This commit is contained in:
parent
69249fc9e6
commit
c027e7c3e4
40 changed files with 106 additions and 56 deletions
|
|
@ -183,14 +183,14 @@ $(STARTUP_OBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(STARTUP_OBJS) $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(STARTUP_OBJS) $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board$(DELIM)libboard$(LIBEXT): FORCE
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -147,14 +147,14 @@ $(STARTUP_OBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(OBJS) $(STARTUP_OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(UOBJS) $(STARTUP_OBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board$(DELIM)libboard$(LIBEXT): FORCE
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -125,10 +125,10 @@ $(sort $(COBJS) $(UCOBJS)): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
$(BIN) $(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
$(UBIN): $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
|
||||
board$(DELIM)libboard$(LIBEXT):
|
||||
ifeq ($(CONFIG_ARCH_XC5),y)
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -115,14 +115,14 @@ $(COBJS) $(UCOBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board$(DELIM)libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -148,14 +148,14 @@ $(STARTUP_OBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(STARTUP_OBJS) $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(STARTUP_OBJS) $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT): FORCE
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -417,7 +417,7 @@ $(HOSTMOBJS): %$(OBJEXT): %.m
|
|||
# The architecture-specific library
|
||||
|
||||
libarch$(LIBEXT): $(NUTTXOBJS)
|
||||
$(call ARCHIVE, $@, $(NUTTXOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(NUTTXOBJS))
|
||||
|
||||
# The "board"-specific library. Of course, there really are no boards in
|
||||
# the simulation. However, this is a good place to keep parts of the simulation
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT) EXTRADEFINES=$(EXTRADEFINES)
|
||||
|
|
|
|||
|
|
@ -147,14 +147,14 @@ $(COBJS) $(UCOBJS) $(HEAD_COBJ): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board$(DELIM)libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -120,14 +120,14 @@ $(STARTUP_OBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(OBJS) $(STARTUP_OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(UOBJS) $(STARTUP_OBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT): FORCE
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -150,14 +150,14 @@ $(STARTUP_ELF_OBJS): %$(OBJEXT): %.c
|
|||
|
||||
ifeq ($(CONFIG_BUILD_FLAT),y)
|
||||
$(BIN): $(STARTUP_ELF_OBJS) $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
else
|
||||
$(BIN): $(STARTUP_ELF_OBJS) $(UOBJS)
|
||||
$(call ARCHIVE, $@, $(UOBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(UOBJS))
|
||||
endif
|
||||
|
||||
$(KBIN): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT): FORCE
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ $(COBJS): %$(OBJEXT): %.c
|
|||
$(call COMPILE, $<, $@)
|
||||
|
||||
libarch$(LIBEXT): $(OBJS)
|
||||
$(call ARCHIVE, $@, $(OBJS))
|
||||
$(call ARCHIVE_REBUILD, $@, $(OBJS))
|
||||
|
||||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue