diff --git a/Config.in b/Config.in index 651cbdef5..ab8fbf8e4 100644 --- a/Config.in +++ b/Config.in @@ -268,7 +268,7 @@ menu "Global build settings" config PKG_DEFAULT_PARALLEL bool - prompt "Always parallelize the default package build rule (Dangerous)" + prompt "Parallelize the default package build rule (May break build)" depends on PKG_BUILD_PARALLEL default n help @@ -278,7 +278,21 @@ menu "Global build settings" packages with multiple jobs that are probably not tested in a parallel build environment. - Say N. Only say Y for testing. + Only say Y, if you don't mind fixing broken packages. + Before reporting build bugs, set this to N and re-run the build. + + config TOOLCHAIN_PARALLEL + bool + prompt "Parallelize the toolchain build (May break build)" + depends on PKG_BUILD_PARALLEL + default n + help + Build the toolchain with parallel make jobs. + This speeds up the toolchain build on SMP machines, but may + break the build for certain toolchain versions. + + If you say Y, toolchain build might break. + Before reporting build bugs, set this to N and re-run the build. comment "Stripping options" diff --git a/include/toolchain-build.mk b/include/toolchain-build.mk index 6defe63ed..a0bc4061f 100644 --- a/include/toolchain-build.mk +++ b/include/toolchain-build.mk @@ -11,6 +11,8 @@ REAL_STAGING_DIR_HOST:=$(STAGING_DIR_HOST) STAGING_DIR_HOST:=$(TOOLCHAIN_DIR) BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN) +TOOLCHAIN_JOBS?=$(if $(CONFIG_TOOLCHAIN_PARALLEL),-j$(CONFIG_PKG_BUILD_JOBS)) + include $(INCLUDE_DIR)/host-build.mk HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile index 5682698bc..d829098e5 100644 --- a/toolchain/binutils/Makefile +++ b/toolchain/binutils/Makefile @@ -79,7 +79,7 @@ define Host/Configure endef define Host/Compile - $(MAKE) -C $(HOST_BUILD_DIR) all + $(MAKE) $(TOOLCHAIN_JOBS) -C $(HOST_BUILD_DIR) all endef define Host/Install diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk index e2277207b..8c293dd33 100644 --- a/toolchain/gcc/common.mk +++ b/toolchain/gcc/common.mk @@ -173,7 +173,7 @@ endif GCC_MAKE:= \ export SHELL="$(BASH)"; \ - $(MAKE) \ + $(MAKE) $(TOOLCHAIN_JOBS) \ CFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" \ CXXFLAGS_FOR_TARGET="$(TARGET_CFLAGS)" diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile index 362548aae..d3d4d85cd 100644 --- a/toolchain/uClibc/Makefile +++ b/toolchain/uClibc/Makefile @@ -109,7 +109,7 @@ UCLIBC_MAKE = PATH='$(TARGET_PATH)' $(MAKE) -C $(HOST_BUILD_DIR) \ define Host/Compile $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(HOST_BUILD_DIR)/Rules.mak - $(UCLIBC_MAKE) PREFIX= all + $(UCLIBC_MAKE) $(TOOLCHAIN_JOBS) PREFIX= all $(UCLIBC_MAKE) PREFIX="$(TOOLCHAIN_DIR)/" install_runtime install_dev $(CP) $(HOST_BUILD_DIR)/libc/libc_so.a $(TOOLCHAIN_DIR)/lib/ $(CP) $(HOST_BUILD_DIR)/libpthread/*/libpthread_so.a $(TOOLCHAIN_DIR)/lib/