Further improve build time: Try to avoid calling projects.py

This commit tries to remove the necessity to call projects.py from $(TOPDIR) to
speed up recursive builds over all projects yet again. This is a major
undertaking. There are two variables which are filled py projects.py in
$(TOPDIR): PREREQ and PREREQ_DIRS. Sadly, the latter is a path relative to
$(TOPDIR)/make, so this is kind of pointless. Unless the cache is maintained in
$(TOPDIR), a thing I tried to avoid. So this commit is only able to cache
$(PREREQ), not $(PREREQ_DIRS), which still is a hassle. Introduced defs-dirs.mk
for that, to make it accessible to make.mk, and modified all the other parts of
the machinery, too.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2019-02-28 14:48:57 +00:00
commit 3dd55cf067
5 changed files with 49 additions and 30 deletions

View file

@ -7,8 +7,19 @@ JW_BUILD_DEF_MK_INCLUDED = true
MAKEFLAGS += -r
-include $(MODDIR)/make/.cache.mk
-include $(TOPDIR)/make/.cache.mk
define try_include
ifneq ($(wildcard $(1)),)
include $(1)
endif
endef
ifneq ($(wildcard $(MODDIR)/make/.cache.mk),)
include $(MODDIR)/make/.cache.mk
endif
ifneq ($(wildcard $(TOPDIR)/make/.cache.mk),)
include $(TOPDIR)/make/.cache.mk
endif
include $(MODDIR)/make/platform.mk
include $(MODDIR)/make/projects.mk
@ -87,11 +98,6 @@ ifndef PRINTF
PRINTF := $(shell $(WHICH) printf)
endif
# makefile helpers
FIND_SUBDIRS := $(filter-out . .. nomake CVS $(IGNORE_SUBDIRS),\
$(patsubst ./%,%,$(patsubst %/,%,$(dir $(shell $(FIND) . -maxdepth 2 -mindepth 2 -a \( -iname Makefile -o -iname GNUmakefile \))))))
SUBDIRS_TO_ITERATE = $(filter-out $(IGNORE_SUBDIRS),$(SUBDIRS))
PKG_SH_EXE := /bin/bash $(MOD_SCRIPT_DIR)/pkg.sh
LOG_INSTALL_SH := $(PKG_SH_EXE) log-install
UPDATE_REPO_SH := /opt/packager-server/bin/packager-server schedule-rebuild