Redo "Fix make target dependencies"

Change-Id: I7180145d90913fd3acc94487b9f7b9753dcdc8da
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
This commit is contained in:
YAMAMOTO Takashi 2020-04-03 21:19:15 +09:00 committed by Abdelatif Guettouche
parent 7faf3c0254
commit 48da64f9c2
3 changed files with 55 additions and 46 deletions

View file

@ -40,109 +40,109 @@
#
# Possible kernel-mode builds
libs$(DELIM)libc$(DELIM)libkc$(LIBEXT): context
libs$(DELIM)libc$(DELIM)libkc$(LIBEXT): pass2dep
$(Q) $(MAKE) -C libs$(DELIM)libc TOPDIR="$(TOPDIR)" libkc$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libkc$(LIBEXT): libs$(DELIM)libc$(DELIM)libkc$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
libs$(DELIM)libnx$(DELIM)libknx$(LIBEXT): context
libs$(DELIM)libnx$(DELIM)libknx$(LIBEXT): pass2dep
$(Q) $(MAKE) -C libs$(DELIM)libnx TOPDIR="$(TOPDIR)" libknx$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libknx$(LIBEXT): libs$(DELIM)libnx$(DELIM)libknx$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
mm$(DELIM)libkmm$(LIBEXT): context
mm$(DELIM)libkmm$(LIBEXT): pass2dep
$(Q) $(MAKE) -C mm TOPDIR="$(TOPDIR)" libkmm$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libkmm$(LIBEXT): mm$(DELIM)libkmm$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
$(ARCH_SRC)$(DELIM)libkarch$(LIBEXT): context
$(ARCH_SRC)$(DELIM)libkarch$(LIBEXT): pass2dep
$(Q) $(MAKE) -C $(ARCH_SRC) TOPDIR="$(TOPDIR)" libkarch$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libkarch$(LIBEXT): $(ARCH_SRC)$(DELIM)libkarch$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
pass1$(DELIM)libpass1$(LIBEXT): context
pass1$(DELIM)libpass1$(LIBEXT): pass2dep
$(Q) $(MAKE) -C pass1 TOPDIR="$(TOPDIR)" libpass1$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libpass1$(LIBEXT): pass1$(DELIM)libpass1$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
sched$(DELIM)libsched$(LIBEXT): context
sched$(DELIM)libsched$(LIBEXT): pass2dep
$(Q) $(MAKE) -C sched TOPDIR="$(TOPDIR)" libsched$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libsched$(LIBEXT): sched$(DELIM)libsched$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
net$(DELIM)libnet$(LIBEXT): context
net$(DELIM)libnet$(LIBEXT): pass2dep
$(Q) $(MAKE) -C net TOPDIR="$(TOPDIR)" libnet$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libnet$(LIBEXT): net$(DELIM)libnet$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
boards$(DELIM)libboards$(LIBEXT): context
boards$(DELIM)libboards$(LIBEXT): pass2dep
$(Q) $(MAKE) -C boards TOPDIR="$(TOPDIR)" libboards$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libboards$(LIBEXT): boards$(DELIM)libboards$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
crypto$(DELIM)libcrypto$(LIBEXT): context
crypto$(DELIM)libcrypto$(LIBEXT): pass2dep
$(Q) $(MAKE) -C crypto TOPDIR="$(TOPDIR)" libcrypto$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libcrypto$(LIBEXT): crypto$(DELIM)libcrypto$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
fs$(DELIM)libfs$(LIBEXT): context
fs$(DELIM)libfs$(LIBEXT): pass2dep
$(Q) $(MAKE) -C fs TOPDIR="$(TOPDIR)" libfs$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libfs$(LIBEXT): fs$(DELIM)libfs$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
drivers$(DELIM)libdrivers$(LIBEXT): context
drivers$(DELIM)libdrivers$(LIBEXT): pass2dep
$(Q) $(MAKE) -C drivers TOPDIR="$(TOPDIR)" libdrivers$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libdrivers$(LIBEXT): drivers$(DELIM)libdrivers$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
binfmt$(DELIM)libbinfmt$(LIBEXT): context
binfmt$(DELIM)libbinfmt$(LIBEXT): pass2dep
$(Q) $(MAKE) -C binfmt TOPDIR="$(TOPDIR)" libbinfmt$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libbinfmt$(LIBEXT): binfmt$(DELIM)libbinfmt$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
graphics$(DELIM)libgraphics$(LIBEXT): context
graphics$(DELIM)libgraphics$(LIBEXT): pass2dep
$(Q) $(MAKE) -C graphics TOPDIR="$(TOPDIR)" libgraphics$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libgraphics$(LIBEXT): graphics$(DELIM)libgraphics$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
audio$(DELIM)libaudio$(LIBEXT): context
audio$(DELIM)libaudio$(LIBEXT): pass2dep
$(Q) $(MAKE) -C audio TOPDIR="$(TOPDIR)" libaudio$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libaudio$(LIBEXT): audio$(DELIM)libaudio$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
video$(DELIM)libvideo$(LIBEXT): context
video$(DELIM)libvideo$(LIBEXT): pass2dep
$(Q) $(MAKE) -C video TOPDIR="$(TOPDIR)" libvideo$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libvideo$(LIBEXT): video$(DELIM)libvideo$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
wireless$(DELIM)libwireless$(LIBEXT): context
wireless$(DELIM)libwireless$(LIBEXT): pass2dep
$(Q) $(MAKE) -C wireless TOPDIR="$(TOPDIR)" libwireless$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libwireless$(LIBEXT): wireless$(DELIM)libwireless$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
openamp$(DELIM)libopenamp$(LIBEXT): context
openamp$(DELIM)libopenamp$(LIBEXT): pass2dep
$(Q) $(MAKE) -C openamp TOPDIR="$(TOPDIR)" libopenamp$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libopenamp$(LIBEXT): openamp$(DELIM)libopenamp$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
syscall$(DELIM)libstubs$(LIBEXT): context
syscall$(DELIM)libstubs$(LIBEXT): pass2dep
$(Q) $(MAKE) -C syscall TOPDIR="$(TOPDIR)" libstubs$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
staging$(DELIM)libstubs$(LIBEXT): syscall$(DELIM)libstubs$(LIBEXT)
@ -150,10 +150,11 @@ staging$(DELIM)libstubs$(LIBEXT): syscall$(DELIM)libstubs$(LIBEXT)
# Special case
$(ARCH_SRC)$(DELIM)libarch$(LIBEXT): context
ifeq ($(CONFIG_BUILD_FLAT),y)
$(ARCH_SRC)$(DELIM)libarch$(LIBEXT): pass2dep
$(Q) $(MAKE) -C $(ARCH_SRC) TOPDIR="$(TOPDIR)" libarch$(LIBEXT) EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)"
else
$(ARCH_SRC)$(DELIM)libarch$(LIBEXT): pass1dep
$(Q) $(MAKE) -C $(ARCH_SRC) TOPDIR="$(TOPDIR)" libarch$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
endif
@ -162,43 +163,59 @@ staging$(DELIM)libarch$(LIBEXT): $(ARCH_SRC)$(DELIM)libarch$(LIBEXT)
# Possible user-mode builds
libs$(DELIM)libc$(DELIM)libc$(LIBEXT): context
ifeq ($(CONFIG_BUILD_FLAT),y)
libs$(DELIM)libc$(DELIM)libc$(LIBEXT): pass2dep
else
libs$(DELIM)libc$(DELIM)libc$(LIBEXT): pass1dep
endif
$(Q) $(MAKE) -C libs$(DELIM)libc TOPDIR="$(TOPDIR)" libc$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libc$(LIBEXT): libs$(DELIM)libc$(DELIM)libc$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
libs$(DELIM)libnx$(DELIM)libnx$(LIBEXT): context
ifeq ($(CONFIG_BUILD_FLAT),y)
libs$(DELIM)libnx$(DELIM)libnx$(LIBEXT): pass2dep
else
libs$(DELIM)libnx$(DELIM)libnx$(LIBEXT): pass1dep
endif
$(Q) $(MAKE) -C libs$(DELIM)libnx TOPDIR="$(TOPDIR)" libnx$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libnx$(LIBEXT): libs$(DELIM)libnx$(DELIM)libnx$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
mm$(DELIM)libmm$(LIBEXT): context
ifeq ($(CONFIG_BUILD_FLAT),y)
mm$(DELIM)libmm$(LIBEXT): pass2dep
else
mm$(DELIM)libmm$(LIBEXT): pass1dep
endif
$(Q) $(MAKE) -C mm TOPDIR="$(TOPDIR)" libmm$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libmm$(LIBEXT): mm$(DELIM)libmm$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
libs$(DELIM)libxx$(DELIM)libxx$(LIBEXT): context
libs$(DELIM)libxx$(DELIM)libxx$(LIBEXT): pass1dep
$(Q) $(MAKE) -C libs$(DELIM)libxx TOPDIR="$(TOPDIR)" libxx$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libxx$(LIBEXT): libs$(DELIM)libxx$(DELIM)libxx$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
libs$(DELIM)libdsp$(DELIM)libdsp$(LIBEXT): context
libs$(DELIM)libdsp$(DELIM)libdsp$(LIBEXT): pass2dep
$(Q) $(MAKE) -C libs$(DELIM)libdsp TOPDIR="$(TOPDIR)" libdsp$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libdsp$(LIBEXT): libs$(DELIM)libdsp$(DELIM)libdsp$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
$(APPDIR)$(DELIM)libapps$(LIBEXT): context
ifeq ($(CONFIG_BUILD_FLAT),y)
$(APPDIR)$(DELIM)libapps$(LIBEXT): pass2dep
else
$(APPDIR)$(DELIM)libapps$(LIBEXT): pass1dep
endif
$(Q) $(MAKE) -C $(APPDIR) TOPDIR="$(TOPDIR)" EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libapps$(LIBEXT): $(APPDIR)$(DELIM)libapps$(LIBEXT)
$(Q) $(call INSTALL_LIB,$<,$@)
syscall$(DELIM)libproxies$(LIBEXT): context
syscall$(DELIM)libproxies$(LIBEXT): pass1dep
$(Q) $(MAKE) -C syscall TOPDIR="$(TOPDIR)" libproxies$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
staging$(DELIM)libproxies$(LIBEXT): syscall$(DELIM)libproxies$(LIBEXT)

View file

@ -167,8 +167,8 @@ BIN = $(NUTTXNAME)$(EXEEXT)
all: $(BIN)
.PHONY: dirlinks context clean_context check_context config oldconfig menuconfig nconfig qconfig gconfig export subdir_clean clean subdir_distclean distclean apps_clean apps_distclean
.PHONY: pass1 pass1deps pass1dep
.PHONY: pass2 pass2deps pass2dep
.PHONY: pass1 pass1dep
.PHONY: pass2 pass2dep
# Target used to copy include/nuttx/lib/math.h. If CONFIG_ARCH_MATH_H is
# defined, then there is an architecture specific math.h header file
@ -398,9 +398,7 @@ include tools/LibTargets.mk
# is an archive. Exactly what is performed during pass1 or what it generates
# is unknown to this makefile unless CONFIG_PASS1_OBJECT is defined.
pass1deps: pass1dep $(USERLIBS)
pass1: pass1deps
pass1: $(USERLIBS)
ifeq ($(CONFIG_BUILD_2PASS),y)
$(Q) if [ -z "$(CONFIG_PASS1_BUILDIR)" ]; then \
echo "ERROR: CONFIG_PASS1_BUILDIR not defined"; \
@ -417,9 +415,7 @@ ifeq ($(CONFIG_BUILD_2PASS),y)
$(Q) $(MAKE) -C $(CONFIG_PASS1_BUILDIR) TOPDIR="$(TOPDIR)" LINKLIBS="$(LINKLIBS)" USERLIBS="$(USERLIBS)" "$(CONFIG_PASS1_TARGET)"
endif
pass2deps: pass2dep $(NUTTXLIBS)
pass2: pass2deps
pass2: $(NUTTXLIBS)
$(Q) $(MAKE) -C $(ARCH_SRC) TOPDIR="$(TOPDIR)" EXTRA_OBJS="$(EXTRA_OBJS)" LINKLIBS="$(LINKLIBS)" EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)" $(BIN)
$(Q) if [ -w /tftpboot ] ; then \
cp -f $(BIN) /tftpboot/$(BIN).${CONFIG_ARCH}; \
@ -454,7 +450,7 @@ endif
# pass1 dependencies and pass1 first, then build pass2 dependencies and pass2.
# in that case, execute 'make pass1 pass2' from the command line.
$(BIN): pass1deps pass2deps pass1 pass2
$(BIN): pass1 pass2
# download
#
@ -551,7 +547,7 @@ savedefconfig: dirlinks apps_preconfig
# in tools/mkexport.sh only supports GCC and, for example, explicitly assumes
# that the archiver is 'ar'
export: pass2deps
export: $(NUTTXLIBS)
$(Q) MAKE=${MAKE} $(MKEXPORT) $(MKEXPORT_ARGS) -l "$(EXPORTLIBS)"
# General housekeeping targets: dependencies, cleaning, etc.

View file

@ -156,8 +156,8 @@ BIN = $(NUTTXNAME)$(EXEEXT)
all: $(BIN)
.PHONY: dirlinks context clean_context check_context configenv config oldconfig menuconfig nconfig export subdir_clean clean subdir_distclean distclean apps_clean apps_distclean
.PHONY: pass1 pass1deps pass1dep
.PHONY: pass2 pass2deps pass2dep
.PHONY: pass1 pass1dep
.PHONY: pass2 pass2dep
# Target used to copy include\nuttx\math.h. If CONFIG_ARCH_MATH_H is
# defined, then there is an architecture specific math.h header file
@ -372,9 +372,7 @@ include tools/LibTargets.mk
# is an archive. Exactly what is performed during pass1 or what it generates
# is unknown to this makefile unless CONFIG_PASS1_OBJECT is defined.
pass1deps: pass1dep $(USERLIBS)
pass1: pass1deps
pass1: $(USERLIBS)
ifeq ($(CONFIG_BUILD_2PASS),y)
$(Q) if [ -z "$(CONFIG_PASS1_BUILDIR)" ]; then \
echo "ERROR: CONFIG_PASS1_BUILDIR not defined"; \
@ -391,9 +389,7 @@ ifeq ($(CONFIG_BUILD_2PASS),y)
$(Q) $(MAKE) -C $(CONFIG_PASS1_BUILDIR) TOPDIR="$(TOPDIR)" LINKLIBS="$(LINKLIBS)" USERLIBS="$(USERLIBS)" "$(CONFIG_PASS1_TARGET)"
endif
pass2deps: pass2dep $(NUTTXLIBS)
pass2: pass2deps
pass2: $(NUTTXLIBS)
$(Q) $(MAKE) -C $(ARCH_SRC) TOPDIR="$(TOPDIR)" EXTRA_OBJS="$(EXTRA_OBJS)" LINKLIBS="$(LINKLIBS)" EXTRAFLAGS="$(KDEFINE) $(EXTRAFLAGS)" $(BIN)
ifeq ($(CONFIG_INTELHEX_BINARY),y)
@echo "CP: $(NUTTXNAME).hex"
@ -417,7 +413,7 @@ endif
# pass1 dependencies and pass1 first, then build pass2 dependencies and pass2.
# in that case, execute 'make pass1 pass2' from the command line.
$(BIN): pass1deps pass2deps pass1 pass2
$(BIN): pass1 pass2
# download
#
@ -500,7 +496,7 @@ savedefconfig: dirlinks apps_preconfig
# in tools\mkexport.sh only supports GCC and, for example, explicitly assumes
# that the archiver is 'ar'
export: pass2deps
export: ${NUTTXLIBS}
$(Q) $(MKEXPORT) $(MKEXPORT_ARGS) -l "$(EXPORTLIBS)"
# General housekeeping targets: dependencies, cleaning, etc.