diff --git a/Makefile.include b/Makefile.include index 4dbc9b08e277..275d0ceefd24 100644 --- a/Makefile.include +++ b/Makefile.include @@ -364,6 +364,11 @@ LINKFLAGPREFIX ?= -Wl, DIRS += $(EXTERNAL_MODULE_DIRS) +# Define dependencies required for building (headers, downloading source files,) +BUILDDEPS += $(RIOTBUILD_CONFIG_HEADER_C) +BUILDDEPS += pkg-prepare +BUILDDEPS += $(APPDEPS) + # Save value to verify it is not modified later _BASELIBS_VALUE_BEFORE_USAGE := $(BASELIBS) @@ -387,7 +392,7 @@ endif # RIOTNOLINK $(ELFFILE): $(BASELIBS) $(Q)$(_LINK) -o $@ -$(BINDIR)/$(APPLICATION_MODULE).a: $(RIOTBUILD_CONFIG_HEADER_C) $(USEPKG:%=$(BINDIR)/%.a) $(APPDEPS) +$(BINDIR)/$(APPLICATION_MODULE).a: $(USEPKG:%=$(BINDIR)/%.a) $(BUILDDEPS) $(Q)DIRS="$(DIRS)" "$(MAKE)" -C $(APPDIR) -f $(RIOTMAKE)/application.inc.mk $(BINDIR)/$(APPLICATION_MODULE).a: FORCE @@ -425,14 +430,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) $(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): $(BUILDDEPS) @mkdir -p $(BINDIR) $(QQ)"$(MAKE)" -C $(RIOTPKG)/$(patsubst $(BINDIR)/%.a,%,$@) diff --git a/makefiles/vars.inc.mk b/makefiles/vars.inc.mk index b0cbac747491..300fedbb2d11 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.