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

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

commit 48da64f9c299d8694118b52696625f2410c96c1c
Author: YAMAMOTO Takashi <yamam...@midokura.com>
AuthorDate: Fri Apr 3 21:19:15 2020 +0900

    Redo "Fix make target dependencies"
    
    Change-Id: I7180145d90913fd3acc94487b9f7b9753dcdc8da
    Signed-off-by: liuhaitao <liuhai...@xiaomi.com>
---
 tools/LibTargets.mk | 69 +++++++++++++++++++++++++++++++++--------------------
 tools/Makefile.unix | 16 +++++--------
 tools/Makefile.win  | 16 +++++--------
 3 files changed, 55 insertions(+), 46 deletions(-)

diff --git a/tools/LibTargets.mk b/tools/LibTargets.mk
index c6f281c..39c8399 100644
--- a/tools/LibTargets.mk
+++ b/tools/LibTargets.mk
@@ -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)
diff --git a/tools/Makefile.unix b/tools/Makefile.unix
index 8f71e71..ea30e05 100644
--- a/tools/Makefile.unix
+++ b/tools/Makefile.unix
@@ -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.
diff --git a/tools/Makefile.win b/tools/Makefile.win
index 92c1570..46eb557 100644
--- a/tools/Makefile.win
+++ b/tools/Makefile.win
@@ -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.

Reply via email to