From fb10a181a0957b695b308ef306c8e873dcd438cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Harter?= <gaetan.harter@fu-berlin.de> Date: Mon, 23 Apr 2018 13:59:39 +0200 Subject: [PATCH] make: Add 'BUILDDEPS' variable BUILDDEPS are files / make targets that should be build before compiling. It can include packages source download, generating headers, modules. It is the equivalent of `APPDEPS` but not limited to the application. It cannot be done right now with `APPDEPS` as it is used in `BASELIBS` and fixing it requires changing mips using it for source files. --- Makefile.include | 6 +++--- makefiles/vars.inc.mk | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile.include b/Makefile.include index 4dbc9b08e2..449b8c61dd 100644 --- a/Makefile.include +++ b/Makefile.include @@ -387,7 +387,7 @@ endif # RIOTNOLINK $(ELFFILE): $(BASELIBS) $(Q)$(_LINK) -o $@ -$(BINDIR)/$(APPLICATION_MODULE).a: $(RIOTBUILD_CONFIG_HEADER_C) $(USEPKG:%=$(BINDIR)/%.a) $(APPDEPS) +$(BINDIR)/$(APPLICATION_MODULE).a: $(RIOTBUILD_CONFIG_HEADER_C) $(USEPKG:%=$(BINDIR)/%.a) $(APPDEPS) $(BUILDDEPS) $(Q)DIRS="$(DIRS)" "$(MAKE)" -C $(APPDIR) -f $(RIOTMAKE)/application.inc.mk $(BINDIR)/$(APPLICATION_MODULE).a: FORCE @@ -425,14 +425,14 @@ endef # The `clean` needs to be serialized before everything else. ifneq (, $(filter clean, $(MAKECMDGOALS))) - all $(BASELIBS) $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) $(RIOTBUILD_CONFIG_HEADER_C) pkg-prepare: clean + all $(BASELIBS) $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) $(RIOTBUILD_CONFIG_HEADER_C) pkg-prepare $(BUILDDEPS): clean endif .PHONY: pkg-prepare $(USEPKG:%=$(BINDIR)/%.a) pkg-prepare: -@for i in $(USEPKG) ; do "$(MAKE)" -C $(RIOTPKG)/$$i prepare ; done -$(USEPKG:%=$(BINDIR)/%.a): $(RIOTBUILD_CONFIG_HEADER_C) pkg-prepare +$(USEPKG:%=$(BINDIR)/%.a): $(RIOTBUILD_CONFIG_HEADER_C) pkg-prepare $(BUILDDEPS) @mkdir -p $(BINDIR) $(QQ)"$(MAKE)" -C $(RIOTPKG)/$(patsubst $(BINDIR)/%.a,%,$@) diff --git a/makefiles/vars.inc.mk b/makefiles/vars.inc.mk index b0cbac7474..300fedbb2d 100644 --- a/makefiles/vars.inc.mk +++ b/makefiles/vars.inc.mk @@ -17,6 +17,7 @@ export USEMODULE # Sys Module dependencies of the application. Set i export USEPKG # Pkg dependencies (third party modules) of the application. Set in the application's Makefile. export DISABLE_MODULE # Used in the application's Makefile to suppress DEFAULT_MODULEs. export APPDEPS # Files / Makefile targets that need to be created before the application can be build. Set in the application's Makefile. +# BUILDDEPS # Files / Makefile targets that need to be created before starting to build. export RIOTBASE # The root folder of RIOT. The folder where this very file lives in. export RIOTCPU # For third party CPUs this folder is the base of the CPUs. -- GitLab