diff --git a/Makefile.include b/Makefile.include index 7407ec1d9837e10da8796e86e00ad6b0f03c912f..4dbc9b08e2771d2bea506a6f8f0dcb105f130844 100644 --- a/Makefile.include +++ b/Makefile.include @@ -312,6 +312,33 @@ APPLICATION_MODULE ?= application_$(APPLICATION) 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 + +# Add all USEMODULE modules to CFLAGS and populate BASELIBS +include $(RIOTMAKE)/modules.inc.mk + + .PHONY: all link clean flash flash-only term doc debug debug-server reset objdump help info-modules .PHONY: print-size elffile binfile hexfile .PHONY: ..in-docker-container @@ -337,6 +364,9 @@ LINKFLAGPREFIX ?= -Wl, DIRS += $(EXTERNAL_MODULE_DIRS) +# Save value to verify it is not modified later +_BASELIBS_VALUE_BEFORE_USAGE := $(BASELIBS) + # Linker rule $(ELFFILE): FORCE ifeq ($(BUILDOSXNATIVE),1) @@ -393,28 +423,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 @@ -605,12 +618,6 @@ endif # Include desvirt Makefile include $(RIOTTOOLS)/desvirt/Makefile.desvirt -# include bindist target -include $(RIOTMAKE)/bindist.inc.mk - -# Add all USEMODULE modules to CFLAGS -include $(RIOTMAKE)/modules.inc.mk - # Build a header file with all common macro definitions and undefinitions # make it phony to force re-run of the script every time even if the file exists # The script will only touch the file if anything has changed since last time. @@ -642,4 +649,12 @@ ifneq (all, $(.DEFAULT_GOAL)) $(error .DEFAULT_GOAL := $(.DEFAULT_GOAL)) endif + +# Detect if BASELIBS changed since its first use +ifneq ($(_BASELIBS_VALUE_BEFORE_USAGE),$(BASELIBS)) + $(warning $(sort $(filter-out $(_BASELIBS_VALUE_BEFORE_USAGE), $(BASELIBS)) \ + $(filter-out $(BASELIBS), $(_BASELIBS_VALUE_BEFORE_USAGE)))) + $(error BASELIBS value changed) +endif + endif # BOARD=none