From 6d3405b4161a9cf5f1e16ebeb8426dadb48dbe71 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Fri, 28 Aug 2009 22:56:27 +0200 Subject: core: allow selecting parallel builds The value of CONFIG_ADK_MAKE_JOBS is being passed to make via the option '-j', in order to have it run multiple jobs simultaneously. This is done for all kernel builds, and per default for each package using the default BUILD_STYLE of 'auto', unless the package makefile defines PKG_NOPARALLEL to a non-empty string. --- Config.in | 29 +++++++++++++++++++++++++++++ mk/kernel-build.mk | 2 +- mk/pkg-bottom.mk | 9 ++++++++- package/asterisk/Makefile | 1 + package/net-snmp/Makefile | 1 + 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Config.in b/Config.in index 2f741cdc9..903ec2cf5 100644 --- a/Config.in +++ b/Config.in @@ -15,5 +15,34 @@ config ADK_HAVE_DOT_CONFIG bool default y +menu "ADK settings" + +config ADK_MAKE_JOBS + int + default 1 if ! ADK_MAKE_PARALLEL + +config ADK_MAKE_PARALLEL + prompt "Enable parallel building of packages that claim to support it" + boolean + default n + +config ADK_MAKE_JOBS + prompt "How many jobs to use" + int + default 2 + depends on ADK_MAKE_PARALLEL + help + The number specified here will be passed to make as N in '-jN' + +config ADK_FORCE_PARALLEL + prompt "Force parallel building of all packages (DANGEROUS)" + bool + default n + depends on ADK_MAKE_PARALLEL + help + Do not enable this! It's for testing purposes only. + +endmenu + source "target/Config.in" source "package/Config.in" diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index 62c6290b5..0eb1e0a39 100644 --- a/mk/kernel-build.mk +++ b/mk/kernel-build.mk @@ -34,7 +34,7 @@ $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config $(TRACE) target/$(DEVICE)-kernel-compile - $(MAKE) ${KERNEL_MAKE_OPTS} $(MAKE_TRACE) + $(MAKE) ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} $(MAKE_TRACE) $(TRACE) target/$(DEVICE)-kernel-modules-install rm -rf $(LINUX_BUILD_DIR)/modules $(MAKE) ${KERNEL_MAKE_OPTS} DEPMOD=true \ diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk index 36a998a82..05c123ed2 100644 --- a/mk/pkg-bottom.mk +++ b/mk/pkg-bottom.mk @@ -70,6 +70,13 @@ endif @${MAKE} post-configure $(MAKE_TRACE) touch $@ +# do a parallel build if requested && package doesn't force disable it +ifeq (${PKG_BUILD_PARALLEL},y) +ifeq ($(strip ${PKG_NOPARALLEL}),) +MAKE_FLAGS+= -j${ADK_MAKE_JOBS} +endif +endif + pre-build: do-build: post-build: @@ -78,7 +85,7 @@ ${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE} @$(CMD_TRACE) "compiling... " ifneq ($(filter auto,${BUILD_STYLE}),) cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \ - ${MAKEJOBS} ${MAKE_FLAGS} ${ALL_TARGET} $(MAKE_TRACE) + ${MAKE_FLAGS} ${ALL_TARGET} $(MAKE_TRACE) else ifneq ($(filter manual,${BUILD_STYLE}),) env ${MAKE_ENV} ${MAKE} do-build $(MAKE_TRACE) else ifeq ($(strip ${BUILD_STYLE}),) diff --git a/package/asterisk/Makefile b/package/asterisk/Makefile index e5a3609a7..b048c823c 100644 --- a/package/asterisk/Makefile +++ b/package/asterisk/Makefile @@ -10,6 +10,7 @@ PKG_MD5SUM:= 9b46f8628f43e1d3c275460ceee26646 PKG_DESCR:= Open Source PBX PKG_SECTION:= net PKG_DEPENDS:= libncurses libpthread libopenssl libcurl +PKG_NOPARALLEL:= 1 PKG_URL:= http://www.asterisk.org PKG_SITES:= http://downloads.asterisk.org/pub/telephony/asterisk/releases/ diff --git a/package/net-snmp/Makefile b/package/net-snmp/Makefile index 9fb44be22..c78efadcf 100644 --- a/package/net-snmp/Makefile +++ b/package/net-snmp/Makefile @@ -10,6 +10,7 @@ PKG_MD5SUM:= 984932520143f0c8bf7b7ce1fc9e1da1 PKG_DESCR:= SNMP Agent PKG_SECTION:= net PKG_DEPENDS:= libnetsnmp libelf +PKG_NOPARALLEL:= 1 PKG_URL:= http://www.net-snmp.org PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=net-snmp/} -- cgit v1.2.3