1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-07-02 20:31:07 +03:00

build: add a config option for passing the top-level make jobserver to packages that have parallel build enabled, significantly improves parallelization and gets rid of CPU overcommit during intra-package parallel builds

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33414 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2012-09-15 10:21:24 +00:00
parent 9d164b87ca
commit 1f87d10e85
3 changed files with 18 additions and 3 deletions

View File

@ -311,12 +311,21 @@ menu "Global build settings"
If you are unsure, select N. If you are unsure, select N.
config PKG_BUILD_USE_JOBSERVER
bool
prompt "Use top-level make jobserver for packages"
depends on PKG_BUILD_PARALLEL
default y
help
This passes the main make process jobserver fds to package builds,
enabling full parallelization across different packages
config PKG_BUILD_JOBS config PKG_BUILD_JOBS
int int
prompt "Number of package submake jobs (2-512)" prompt "Number of package submake jobs (2-512)"
range 2 512 range 2 512
default 2 default 2
depends on PKG_BUILD_PARALLEL depends on PKG_BUILD_PARALLEL && !PKG_BUILD_USE_JOBSERVER
help help
The number of jobs (-jX) to pass to packages submake. The number of jobs (-jX) to pass to packages submake.

View File

@ -15,11 +15,17 @@ PKG_MD5SUM ?= unknown
PKG_BUILD_PARALLEL ?= PKG_BUILD_PARALLEL ?=
PKG_INFO_DIR := $(STAGING_DIR)/pkginfo PKG_INFO_DIR := $(STAGING_DIR)/pkginfo
ifneq ($(CONFIG_PKG_BUILD_USE_JOBSERVER),)
MAKE_J:=$(MAKE_JOBSERVER)
else
MAKE_J:=-j$(CONFIG_PKG_BUILD_JOBS)
endif
ifeq ($(strip $(PKG_BUILD_PARALLEL)),0) ifeq ($(strip $(PKG_BUILD_PARALLEL)),0)
PKG_JOBS?=-j1 PKG_JOBS?=-j1
else else
PKG_JOBS?=$(if $(PKG_BUILD_PARALLEL)$(CONFIG_PKG_DEFAULT_PARALLEL),\ PKG_JOBS?=$(if $(PKG_BUILD_PARALLEL)$(CONFIG_PKG_DEFAULT_PARALLEL),\
$(if $(CONFIG_PKG_BUILD_PARALLEL),-j$(CONFIG_PKG_BUILD_JOBS),-j1),-j1) $(if $(CONFIG_PKG_BUILD_PARALLEL),$(MAKE_J),-j1),-j1)
endif endif
include $(INCLUDE_DIR)/prereq.mk include $(INCLUDE_DIR)/prereq.mk

View File

@ -148,7 +148,7 @@ prereq:: prepare-tmpinfo .config
echo "WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!"; \ echo "WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!"; \
fi \ fi \
) )
@+$(SUBMAKE) -r $@ @+$(SUBMAKE) -r $@ MAKE_JOBSERVER="$(filter --jobserver% -j,$(MAKEFLAGS))"
help: help:
cat README cat README