arch/*/src/Makefile: Avoid uncessary relinking of the nuttx binary.

The goal is to only execute recipes when there is an actual change in
the prerequisites.

There are several issues which cause the nuttx binary target to be
re-made every time the top level make is run.

1. Previously the target nuttx$(EXEEXT), was used, but make resolved
this in the relative directory make -C $(ARCH_SRC), and couldn’t find
it (need an absolute path: `$(TOPDIR)/..).

2. The .tmp prerequisite for nuttx was always deleted

3. libboard's recipe had a sub-make which may or may not update that
target. This was a phony target, and was therefore always considered out
of date.

These issues were causing the nuttx recipe to be run every make, which
was hiding some missing prerequisites:

1. the .config is a prerequisite for the .tmp target
2. libapps.a (and other linklibs) are pre-requisites for nuttx

Changes:

The changes are only in the build system, and only for arm.

Track nuttx$(EXEEXT) via vpath so Make knows when it's already up to
date without an explicit path. Add $(TOPDIR)/.config as a dependency
to the linker script preprocessing so config changes trigger
re-preprocessing.

Keep the .tmp linker script on disk (clean already removes it) so
timestamp-based dependency checking works across builds. These .tmp
files need to be added to the gitignore or the CI will complain.

Use FORCE pattern for board/libboard to ensure it's always checked
but use the actual library file as the link dependency so nuttx is
only re-linked when library content changes. Add staging libs as
dependency to nuttx link rule so changed app libs trigger re-link.

Signed-off-by: Liam Hickey <williamhickey@geotab.com>
This commit is contained in:
Liam Hickey
2026-04-09 08:38:18 -04:00
committed by Alin Jerpelea
parent aff8ea572a
commit 13ba91a33f
9 changed files with 62 additions and 37 deletions
+4
View File
@@ -37,6 +37,10 @@ etctmp/
*.pyc *.pyc
*.mapfile *.mapfile
*.SystemMap *.SystemMap
*.ld.tmp
*.script.tmp
*.script.dfu.tmp
*.linkcmd.tmp
*~ *~
\#*\# \#*\#
.\#* .\#*
+9 -6
View File
@@ -161,6 +161,8 @@ VPATH += chip
VPATH += common VPATH += common
VPATH += $(ARCH_SUBDIR) VPATH += $(ARCH_SUBDIR)
vpath nuttx$(EXEEXT) $(TOPDIR)
ifeq ($(CONFIG_ARM_TOOLCHAIN_IAR),y) ifeq ($(CONFIG_ARM_TOOLCHAIN_IAR),y)
VPATH += common$(DELIM)iar VPATH += common$(DELIM)iar
else # ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU),y) else # ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU),y)
@@ -170,8 +172,6 @@ endif
all: $(HEAD_OBJ) $(BIN) all: $(HEAD_OBJ) $(BIN)
.PHONY: board$(DELIM)libboard$(LIBEXT)
$(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S $(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -192,9 +192,13 @@ endif
$(KBIN): $(OBJS) $(KBIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
board$(DELIM)libboard$(LIBEXT): board$(DELIM)libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
.PHONY: FORCE
FORCE:
# When multiple linking, these two additional linking objects will be included # When multiple linking, these two additional linking objects will be included
ifeq ($(CONFIG_MM_KASAN_GLOBAL),y) ifeq ($(CONFIG_MM_KASAN_GLOBAL),y)
@@ -218,10 +222,10 @@ define LINK_ALLSYMS_KASAN
$(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP) $(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
endef endef
$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(TOPDIR)$(DELIM).config
$(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@)
nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(addprefix $(TOPDIR)$(DELIM)staging$(DELIM),$(LINKLIBS))
$(Q) echo "LD: nuttx" $(Q) echo "LD: nuttx"
ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),) ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),)
$(Q) $(LD) $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ $(Q) $(LD) $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
@@ -242,7 +246,6 @@ ifneq ($(CONFIG_WINDOWS_NATIVE),y)
grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
sort > $(TOPDIR)$(DELIM)System.map sort > $(TOPDIR)$(DELIM)System.map
endif endif
$(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
# This is part of the top-level export target # This is part of the top-level export target
# Note that there may not be a head object if layout is handled # Note that there may not be a head object if layout is handled
+9 -6
View File
@@ -132,9 +132,9 @@ VPATH += chip
VPATH += common VPATH += common
VPATH += $(ARCH_SUBDIR) VPATH += $(ARCH_SUBDIR)
all: $(HEAD_OBJ) $(BIN) vpath nuttx$(EXEEXT) $(TOPDIR)
.PHONY: board$(DELIM)libboard$(LIBEXT) all: $(HEAD_OBJ) $(BIN)
$(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S $(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -156,9 +156,13 @@ endif
$(KBIN): $(OBJS) $(KBIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
board$(DELIM)libboard$(LIBEXT): board$(DELIM)libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
.PHONY: FORCE
FORCE:
# When multiple linking, these two additional linking objects will be included # When multiple linking, these two additional linking objects will be included
ifeq ($(CONFIG_MM_KASAN_GLOBAL),y) ifeq ($(CONFIG_MM_KASAN_GLOBAL),y)
@@ -182,10 +186,10 @@ define LINK_ALLSYMS_KASAN
$(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP) $(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
endef endef
$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(TOPDIR)$(DELIM).config
$(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@)
nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(addprefix $(TOPDIR)$(DELIM)staging$(DELIM),$(LINKLIBS))
$(Q) echo "LD: nuttx" $(Q) echo "LD: nuttx"
ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),) ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),)
$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ $(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
@@ -206,7 +210,6 @@ ifneq ($(CONFIG_WINDOWS_NATIVE),y)
grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
sort > $(TOPDIR)$(DELIM)System.map sort > $(TOPDIR)$(DELIM)System.map
endif endif
$(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
# This is part of the top-level export target # This is part of the top-level export target
# Note that there may not be a head object if layout is handled # Note that there may not be a head object if layout is handled
+9 -6
View File
@@ -133,9 +133,9 @@ VPATH += $(SBI_DIR)
VPATH += $(ARCH_SUBDIR) VPATH += $(ARCH_SUBDIR)
VPATH += $(CHIP_DIR) VPATH += $(CHIP_DIR)
all: $(HEAD_OBJ) $(BIN) vpath nuttx$(EXEEXT) $(TOPDIR)
.PHONY: board/libboard$(LIBEXT) all: $(HEAD_OBJ) $(BIN)
$(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S $(AOBJS) $(UAOBJS) $(HEAD_OBJ): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -157,9 +157,13 @@ endif
$(KBIN): $(OBJS) $(KBIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
board/libboard$(LIBEXT): board/libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
.PHONY: FORCE
FORCE:
# When multiple linking, these two additional linking objects will be included # When multiple linking, these two additional linking objects will be included
ifeq ($(CONFIG_MM_KASAN_GLOBAL),y) ifeq ($(CONFIG_MM_KASAN_GLOBAL),y)
@@ -183,10 +187,10 @@ define LINK_ALLSYMS_KASAN
$(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP) $(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
endef endef
$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(TOPDIR)$(DELIM).config
$(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@)
nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(addprefix $(TOPDIR)$(DELIM)staging$(DELIM),$(LINKLIBS))
$(Q) echo "LD: nuttx" $(Q) echo "LD: nuttx"
ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),) ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),)
$(Q) $(LD) $(LDENTRY) $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ $(Q) $(LD) $(LDENTRY) $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
@@ -207,7 +211,6 @@ ifneq ($(CONFIG_WINDOWS_NATIVE),y)
grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
sort > $(TOPDIR)/System.map sort > $(TOPDIR)/System.map
endif endif
$(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
# This is part of the top-level export target # This is part of the top-level export target
# Note that there may not be a head object if layout is handled # Note that there may not be a head object if layout is handled
+6 -2
View File
@@ -106,6 +106,8 @@ else
endif endif
DEPPATH = $(patsubst %,--dep-path %,$(subst :, ,$(VPATH))) DEPPATH = $(patsubst %,--dep-path %,$(subst :, ,$(VPATH)))
vpath nuttx$(EXEEXT) $(TOPDIR)
CFLAGS += -fvisibility=default CFLAGS += -fvisibility=default
HOSTCFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \ HOSTCFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \
$(ARCHCFLAGS) $(HOSTINCLUDES) $(EXTRAFLAGS) -D__SIM__ \ $(ARCHCFLAGS) $(HOSTINCLUDES) $(EXTRAFLAGS) -D__SIM__ \
@@ -401,7 +403,7 @@ RELLIBS += -lboard
all: sim_head$(OBJEXT) libarch$(LIBEXT) all: sim_head$(OBJEXT) libarch$(LIBEXT)
.PHONY: export_startup clean distclean cleanrel depend board/libboard$(LIBEXT) .PHONY: export_startup clean distclean cleanrel depend FORCE
$(AOBJS): %$(OBJEXT): %.S $(AOBJS): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -428,9 +430,11 @@ libarch$(LIBEXT): $(NUTTXOBJS)
# the simulation. However, this is a good place to keep parts of the simulation # the simulation. However, this is a good place to keep parts of the simulation
# that are not hardware-related. # that are not hardware-related.
board/libboard$(LIBEXT): board/libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
FORCE:
# A partially linked object containing only NuttX code (no interface to host OS) # A partially linked object containing only NuttX code (no interface to host OS)
# Change the names of most symbols that conflict with libc symbols. # Change the names of most symbols that conflict with libc symbols.
# Generate the final NuttX binary by linking the host-specific objects with the NuttX # Generate the final NuttX binary by linking the host-specific objects with the NuttX
+10 -6
View File
@@ -105,9 +105,9 @@ endif
VPATH = chip:common:$(ARCH_SUBDIR) VPATH = chip:common:$(ARCH_SUBDIR)
all: libarch$(LIBEXT) vpath nuttx$(EXEEXT) $(TOPDIR)
.PHONY: board/libboard$(LIBEXT) all: libarch$(LIBEXT)
$(AOBJS): %$(OBJEXT): %.S $(AOBJS): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -129,9 +129,13 @@ endif
$(KBIN): $(OBJS) $(KBIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
board/libboard$(LIBEXT): board/libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
.PHONY: FORCE
FORCE:
ifeq ($(CONFIG_ALLSYMS),y) ifeq ($(CONFIG_ALLSYMS),y)
EXTRA_LIBS += allsyms$(OBJEXT) EXTRA_LIBS += allsyms$(OBJEXT)
endif endif
@@ -154,10 +158,10 @@ define LINK_ALLSYMS_KASAN
$(LDSTARTGROUP) $(EXTRA_LIBS) --no-relax $(LDLIBS) $(LDENDGROUP) $(LDSTARTGROUP) $(EXTRA_LIBS) --no-relax $(LDLIBS) $(LDENDGROUP)
endef endef
$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(TOPDIR)$(DELIM).config
$(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@)
nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(addprefix $(TOPDIR)$(DELIM)staging$(DELIM),$(LINKLIBS))
@echo "LD: nuttx$(EXEEXT)" @echo "LD: nuttx$(EXEEXT)"
ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),) ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),)
@@ -170,7 +174,6 @@ else
$(Q) $(call LINK_ALLSYMS_KASAN) $(Q) $(call LINK_ALLSYMS_KASAN)
$(Q) $(call LINK_ALLSYMS_KASAN) $(Q) $(call LINK_ALLSYMS_KASAN)
endif endif
$(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
ifneq ($(CONFIG_WINDOWS_NATIVE),y) ifneq ($(CONFIG_WINDOWS_NATIVE),y)
$(Q) $(NM) $(NUTTX) | \ $(Q) $(NM) $(NUTTX) | \
@@ -217,6 +220,7 @@ clean:
ifeq ($(BOARDMAKE),y) ifeq ($(BOARDMAKE),y)
$(Q) $(MAKE) -C board clean $(Q) $(MAKE) -C board clean
endif endif
$(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
$(call DELFILE, libarch$(LIBEXT)) $(call DELFILE, libarch$(LIBEXT))
$(call CLEAN) $(call CLEAN)
+9 -6
View File
@@ -135,9 +135,9 @@ VPATH += common/espressif
VPATH += $(ARCH_SUBDIR) VPATH += $(ARCH_SUBDIR)
VPATH += $(CHIP_DIR) VPATH += $(CHIP_DIR)
all: $(STARTUP_OBJS) libarch$(LIBEXT) vpath nuttx$(EXEEXT) $(TOPDIR)
.PHONY: board/libboard$(LIBEXT) all: $(STARTUP_OBJS) libarch$(LIBEXT)
$(AOBJS) $(UAOBJS) $(HEAD_AOBJ): %$(OBJEXT): %.S $(AOBJS) $(UAOBJS) $(HEAD_AOBJ): %$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@) $(call ASSEMBLE, $<, $@)
@@ -159,9 +159,13 @@ endif
$(KBIN): $(OBJS) $(KBIN): $(OBJS)
$(call ARCHIVE, $@, $(OBJS)) $(call ARCHIVE, $@, $(OBJS))
board/libboard$(LIBEXT): board/libboard$(LIBEXT): FORCE
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
.PHONY: FORCE
FORCE:
define LINK_ALLSYMS define LINK_ALLSYMS
$(Q) $(TOPDIR)/tools/mkallsyms.py $(NUTTX) allsyms.tmp --orderbyname $(CONFIG_SYMTAB_ORDEREDBYNAME) $(Q) $(TOPDIR)/tools/mkallsyms.py $(NUTTX) allsyms.tmp --orderbyname $(CONFIG_SYMTAB_ORDEREDBYNAME)
$(Q) $(call COMPILE, allsyms.tmp, allsyms$(OBJEXT), -x c) $(Q) $(call COMPILE, allsyms.tmp, allsyms$(OBJEXT), -x c)
@@ -171,10 +175,10 @@ define LINK_ALLSYMS
$(Q) $(call DELFILE, allsyms.tmp allsyms$(OBJEXT)) $(Q) $(call DELFILE, allsyms.tmp allsyms$(OBJEXT))
endef endef
$(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(addsuffix .tmp,$(ARCHSCRIPT)): $(ARCHSCRIPT) $(TOPDIR)$(DELIM).config
$(call PREPROCESS, $(patsubst %.tmp,%,$@), $@) $(call PREPROCESS, $(patsubst %.tmp,%,$@), $@)
nuttx$(EXEEXT): $(STARTUP_OBJS) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) nuttx$(EXEEXT): $(STARTUP_OBJS) board/libboard$(LIBEXT) $(addsuffix .tmp,$(ARCHSCRIPT)) $(addprefix $(TOPDIR)$(DELIM)staging$(DELIM),$(LINKLIBS))
$(Q) echo "LD: nuttx" $(Q) echo "LD: nuttx"
ifneq ($(CONFIG_ALLSYMS),y) ifneq ($(CONFIG_ALLSYMS),y)
$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \ $(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
@@ -193,7 +197,6 @@ ifneq ($(CONFIG_WINDOWS_NATIVE),y)
grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
sort > $(TOPDIR)/System.map sort > $(TOPDIR)/System.map
endif endif
$(Q) $(call DELFILE, $(addsuffix .tmp,$(ARCHSCRIPT)))
# This is part of the top-level export target # This is part of the top-level export target
+2 -2
View File
@@ -91,9 +91,9 @@ endif
# To ensure uname information is newest, # To ensure uname information is newest,
# add lib_utsname.o to phony target for force rebuild # add lib_utsname.o to phony target for force rebuild
#if !defined(CONFIG_LIBC_UNAME_DISABLE_TIMESTAMP) ifeq ($(CONFIG_LIBC_UNAME_DISABLE_TIMESTAMP),)
.PHONY: bin$(DELIM)lib_utsname$(OBJEXT) kbin$(DELIM)lib_utsname$(OBJEXT) .PHONY: bin$(DELIM)lib_utsname$(OBJEXT) kbin$(DELIM)lib_utsname$(OBJEXT)
#endif endif
# Add the misc directory to the build # Add the misc directory to the build
+4 -3
View File
@@ -266,11 +266,12 @@ tools/mkconfig$(HOSTEXEEXT): prebuild
include/nuttx/config.h: $(TOPDIR)/.config tools/mkconfig$(HOSTEXEEXT) include/nuttx/config.h: $(TOPDIR)/.config tools/mkconfig$(HOSTEXEEXT)
$(Q) grep -v "CONFIG_BASE_DEFCONFIG" "$(TOPDIR)/.config" > "$(TOPDIR)/.config.tmp" $(Q) grep -v "CONFIG_BASE_DEFCONFIG" "$(TOPDIR)/.config" > "$(TOPDIR)/.config.tmp"
$(Q) if ! cmp -s "$(TOPDIR)/.config.tmp" "$(TOPDIR)/.config.orig" ; then \ $(Q) if ! cmp -s "$(TOPDIR)/.config.tmp" "$(TOPDIR)/.config.orig" ; then \
sed -i.bak -e "/CONFIG_BASE_DEFCONFIG/ { /-dirty/! s/\"$$/-dirty\"/; }" "$(TOPDIR)/.config" ; \ sed -e "/CONFIG_BASE_DEFCONFIG/ { /-dirty/! s/\"$$/-dirty\"/; }" "$(TOPDIR)/.config" > "$(TOPDIR)/.config.dirty" ; \
else \ else \
sed -i.bak "s/-dirty//g" "$(TOPDIR)/.config"; \ sed "s/-dirty//g" "$(TOPDIR)/.config" > "$(TOPDIR)/.config.dirty"; \
fi fi
$(Q) rm -f "$(TOPDIR)/.config.tmp" "$(TOPDIR)/.config.bak" $(Q) rm -f "$(TOPDIR)/.config.tmp"
$(Q) $(call TESTANDREPLACEFILE, $(TOPDIR)/.config.dirty, $(TOPDIR)/.config)
$(Q) tools/mkconfig $(TOPDIR) > $@.tmp $(Q) tools/mkconfig $(TOPDIR) > $@.tmp
$(Q) $(call TESTANDREPLACEFILE, $@.tmp, $@) $(Q) $(call TESTANDREPLACEFILE, $@.tmp, $@)