build: add a config option for passing the top-level make jobserver to packages that...
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 15 Sep 2012 10:21:24 +0000 (10:21 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 15 Sep 2012 10:21:24 +0000 (10:21 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33414 3c298f89-4303-0410-b956-a3cf2f4a3e73

Config.in
include/package.mk
include/toplevel.mk

index 4035978..36ca488 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -311,12 +311,21 @@ menu "Global build settings"
 
                  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
                int
                prompt "Number of package submake jobs (2-512)"
                range 2 512
                default 2
-               depends on PKG_BUILD_PARALLEL
+               depends on PKG_BUILD_PARALLEL && !PKG_BUILD_USE_JOBSERVER
                help
                  The number of jobs (-jX) to pass to packages submake.
 
index 64973b0..6b3617f 100644 (file)
@@ -15,11 +15,17 @@ PKG_MD5SUM ?= unknown
 PKG_BUILD_PARALLEL ?=
 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)
 PKG_JOBS?=-j1
 else
 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
 
 include $(INCLUDE_DIR)/prereq.mk
index d37ddb9..ba5af9c 100644 (file)
@@ -148,7 +148,7 @@ prereq:: prepare-tmpinfo .config
                        echo "WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!"; \
                fi \
        )
-       @+$(SUBMAKE) -r $@
+       @+$(SUBMAKE) -r $@ MAKE_JOBSERVER="$(filter --jobserver% -j,$(MAKEFLAGS))"
 
 help:
        cat README