Bläddra i källkod

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.
Phil Sutter 14 år sedan
förälder
incheckning
6d3405b416
5 ändrade filer med 40 tillägg och 2 borttagningar
  1. 29 0
      Config.in
  2. 1 1
      mk/kernel-build.mk
  3. 8 1
      mk/pkg-bottom.mk
  4. 1 0
      package/asterisk/Makefile
  5. 1 0
      package/net-snmp/Makefile

+ 29 - 0
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"

+ 1 - 1
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 \

+ 8 - 1
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}),)

+ 1 - 0
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/
 

+ 1 - 0
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/}