diff --git a/sc2/build/unix/build.sh b/sc2/build/unix/build.sh index 30172e198..291d29ac2 100644 --- a/sc2/build/unix/build.sh +++ b/sc2/build/unix/build.sh @@ -58,6 +58,22 @@ fi # Load the configuration functions . build/unix/build.config +BUILD_THREADS="" +for i in "$@"; do + shift + if [ "`printf "%s" "$i" | cut -c1-2`" = "-j" ]; then + num="`printf "%s" "$i" | cut -c3-`" + if [ -z "$num" ] || [ "$num" -gt 0 ] 2>/dev/null; then + BUILD_THREADS="-j$num" + else + usage 1>&2 + exit 1 + fi + else + set -- "$@" "$i" + fi +done + case "$1" in cleanall) build_cleanall @@ -93,7 +109,7 @@ export "${BUILD_PROJECT}_OBJS" if [ $# -lt 2 ]; then build_check_config build_check_dependencies - build_compile + build_compile $BUILD_THREADS exit $? fi @@ -115,7 +131,7 @@ case "$2" in install) build_check_config build_check_dependencies - build_check_compile + build_check_compile $BUILD_THREADS build_install ;; *) diff --git a/sc2/build/unix/build_functions b/sc2/build/unix/build_functions index 5c31d4cde..ded52ab16 100644 --- a/sc2/build/unix/build_functions +++ b/sc2/build/unix/build_functions @@ -22,11 +22,11 @@ usage() { echo "Main build script" echo echo "Syntax:" - echo " ./build.sh " + echo " ./build.sh [-j[#JOBS]] " echo " ./build.sh config" echo " ./build.sh depend" echo " ./build.sh clean" - echo " ./build.sh install" + echo " ./build.sh [-j[#JOBS]] install" echo " ./build.sh cleanall" echo " ./build.sh distclean" echo @@ -103,6 +103,8 @@ build_depend() { # Compile the lot. # With the depend info set up, we can leave everything to make. +# $1 - additional arguments to pass to make (at the moment just +# an optional -j arg for parallel builds). build_compile() { local CFLAGS LDFLAGS TARGET_FILE DEPEND_FILE OBJDIR @@ -119,7 +121,7 @@ build_compile() { BUILD_ROOT= \ TARGET_FILE=$TARGET_FILE DEPEND_FILE=$DEPEND_FILE \ SED=$SED \ - $MAKE -f Makefile.build "$TARGET_FILE" + $MAKE $1 -f Makefile.build "$TARGET_FILE" eval "${TARGET}_post_build" } @@ -170,12 +172,14 @@ build_check_dependencies() { } # Description: check if the program is compiled, and otherwise compile +# $1 - additional arguments to pass to make (at the moment just +# an optional -j arg for parallel builds). build_check_compile() { local NAME eval NAME="\${${BUILD_PROJECT}_NAME}" [ ! -e "$NAME" ] || return - build_compile || exit $? + build_compile "$1" || exit $? } # Make a directory path, with mode and owner specified.