From fb27a801afe1a9d8a2222c060f146b6d04e7f9c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Harter?= <gaetan.harter@fu-berlin.de> Date: Wed, 20 Jun 2018 19:08:19 +0200 Subject: [PATCH] Makefile.include: process pkg/*/Makefile.include before using BASELIBS They can define PSEUDOMODULES which is used to populate BASELIBS. It means they must be processed before using BASELIBS immediate value. This moved the processing of all `Makefile.include` before using `BASELIBS`. It is also moved before setting `BASELIBS` in `modules.inc.mk to keep the order logical (it would work anyway thanks to deferred variables evaluation). This fixes the problems for `make -C tests/unittests` --- Makefile.include | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Makefile.include b/Makefile.include index 45f1ff95ab..49eb367a2c 100644 --- a/Makefile.include +++ b/Makefile.include @@ -311,6 +311,25 @@ BASELIBS += $(BINDIR)/$(APPLICATION_MODULE).a BASELIBS += $(APPDEPS) +# add extra include paths for packages in $(USEMODULE) +export USEMODULE_INCLUDES = + +include $(RIOTBASE)/sys/Makefile.include +include $(RIOTBASE)/drivers/Makefile.include + +# include Makefile.includes for packages in $(USEPKG) +$(RIOTPKG)/%/Makefile.include:: + $(Q)"$(MAKE)" -C $(RIOTPKG)/$* Makefile.include + +$(info $(USEPKG:%=$(RIOTPKG)/%/Makefile.include)) +.PHONY: $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) +-include $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) + +USEMODULE_INCLUDES_ = $(shell echo $(USEMODULE_INCLUDES) | tr ' ' '\n' | awk '!a[$$0]++' | tr '\n' ' ') + +INCLUDES += $(USEMODULE_INCLUDES_:%=-I%) + + # include bindist target include $(RIOTMAKE)/bindist.inc.mk @@ -399,28 +418,11 @@ endef @$(COLOR_ECHO) '$(COLOR_GREEN)Building application "$(APPLICATION)" for "$(BOARD)" with MCU "$(MCU)".$(COLOR_RESET)' @$(COLOR_ECHO) -# add extra include paths for packages in $(USEMODULE) -export USEMODULE_INCLUDES = - -include $(RIOTBASE)/sys/Makefile.include -include $(RIOTBASE)/drivers/Makefile.include - # 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 endif -# include Makefile.includes for packages in $(USEPKG) -$(RIOTPKG)/%/Makefile.include:: - $(Q)"$(MAKE)" -C $(RIOTPKG)/$* Makefile.include - -.PHONY: $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) --include $(USEPKG:%=$(RIOTPKG)/%/Makefile.include) - -USEMODULE_INCLUDES_ = $(shell echo $(USEMODULE_INCLUDES) | tr ' ' '\n' | awk '!a[$$0]++' | tr '\n' ' ') - -INCLUDES += $(USEMODULE_INCLUDES_:%=-I%) - .PHONY: pkg-prepare $(USEPKG:%=$(BINDIR)/%.a) pkg-prepare: -@for i in $(USEPKG) ; do "$(MAKE)" -C $(RIOTPKG)/$$i prepare ; done -- GitLab