From 60d8d8fcc5005cdd8cff9861a803e5fa6a8fd725 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 23 Nov 2009 19:34:55 +0000 Subject: [PATCH] * Added -j option to configure. It is passed to the build_cross_tools[_gcc4] script which in turn passes it to make. Cores and hyperthreads are plentiful these days; no need to let most of them idle when building the cross tools. * Sorted the configure options alphabetically again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34199 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- build/scripts/build_cross_tools | 22 +++++----- build/scripts/build_cross_tools_gcc4 | 24 +++++------ configure | 63 +++++++++++++++------------- 3 files changed, 55 insertions(+), 54 deletions(-) diff --git a/build/scripts/build_cross_tools b/build/scripts/build_cross_tools index 7233047377..1d32a45838 100755 --- a/build/scripts/build_cross_tools +++ b/build/scripts/build_cross_tools @@ -1,21 +1,19 @@ #!/bin/sh -# parameters [ ] +# parameters # get and check the parameters -if [ $# -lt 2 ]; then - echo Usage: $0 ' [ ]' >&2 +if [ $# -lt 3 ]; then + echo Usage: $0 ' ' >&2 exit 1 fi haikuSourceDir=$1 buildToolsDir=$2/legacy +haikuOutputDir=$3 +shift 3 +additionalMakeArgs=$* -if [ $# -lt 3 ]; then - haikuOutputDir=$haikuSourceDir/generated -else - haikuOutputDir=$3 -fi if [ ! -d $haikuSourceDir ]; then echo "No such directory: \"$haikuSourceDir\"" >&2 @@ -66,8 +64,8 @@ cd $binutilsObjDir CFLAGS="-O2" CXXFLAGS="-O2" $buildToolsDir/binutils/configure \ --prefix=$installDir --target=i586-pc-haiku --disable-nls \ --enable-shared=yes --disable-werror || exit 1 -make || exit 1 -make install || exit 1 +make $additionalMakeArgs || exit 1 +make $additionalMakeArgs install || exit 1 PATH=$PATH:$installDir/bin export PATH @@ -112,13 +110,13 @@ eval "sed $sedExpr Makefile.bak > Makefile" || exit 1 rm Makefile.bak # make gcc -make cross || { +make $additionalMakeArgs cross || { echo "ERROR: Building gcc failed." >&2 exit 1 } # install gcc -make install-gcc-cross || { +make $additionalMakeArgs install-gcc-cross || { echo "ERROR: Installing the cross compiler failed." >&2 exit 1 } diff --git a/build/scripts/build_cross_tools_gcc4 b/build/scripts/build_cross_tools_gcc4 index ed8cf99870..4084bb0762 100755 --- a/build/scripts/build_cross_tools_gcc4 +++ b/build/scripts/build_cross_tools_gcc4 @@ -1,16 +1,20 @@ #!/bin/sh # -# parameters [ ] +# parameters # get and check the parameters -if [ $# -lt 3 ]; then - echo Usage: $0 ' [ ]' >&2 +if [ $# -lt 4 ]; then + echo Usage: $0 ' ' \ + '' >&2 exit 1 fi haikuMachine=$1 haikuSourceDir=$2 buildToolsDir=$3 +haikuOutputDir=$4 +shift 4 +additionalMakeArgs=$* case $(uname) in FreeBSD|OpenBSD) @@ -37,12 +41,6 @@ arm-*) ;; esac -if [ $# -lt 4 ]; then - haikuOutputDir=$haikuSourceDir/generated -else - haikuOutputDir=$4 -fi - if [ ! -d $haikuSourceDir ]; then echo "No such directory: \"$haikuSourceDir\"" >&2 exit 1 @@ -105,8 +103,8 @@ cd $binutilsObjDir CFLAGS="-O2" CXXFLAGS="-O2" $binutilsSourceDir/configure \ --prefix=$installDir --target=$haikuMachine --disable-nls \ --disable-shared --disable-werror $binutilsConfigureArgs || exit 1 -$MAKE || exit 1 -$MAKE install || exit 1 +$MAKE $additionalMakeArgs || exit 1 +$MAKE $additionalMakeArgs install || exit 1 export PATH=$PATH:$installDir/bin @@ -140,13 +138,13 @@ CFLAGS="-O2" CXXFLAGS="-O2" $gccSourceDir/configure --prefix=$installDir \ $gccConfigureArgs || exit 1 # make gcc -$MAKE || { +$MAKE $additionalMakeArgs || { echo "ERROR: Building gcc failed." >&2 exit 1 } # install gcc -$MAKE install || { +$MAKE $additionalMakeArgs install || { echo "ERROR: Installing the cross compiler failed." >&2 exit 1 } diff --git a/configure b/configure index 6097b9b545..bb94fb17a8 100755 --- a/configure +++ b/configure @@ -12,6 +12,20 @@ usage() Usage: $0 options: + --alternative-gcc-output-dir + Build a Haiku installation that supports running + executables built with a gcc version incompatible + with the primary gcc (e.g. gcc 2 executables under + a gcc 4 Haiku or vice versa). specifies the + output directory of the other gcc. The directory + must already be fully configured. + Note, that a sub-jam will be executed when + building Haiku. When using a jam that is not + simply invoked by "jam", the JAM build variable + needs to be set accordingly. + To disable building the alternative libraries + the variable HAIKU_ADD_ALTERNATIVE_GCC_LIBS can be + unset in the UserBuildConfig file. --bochs-debug Enables bochs serial debug emulation (activated via kernel settings file). --build-cross-tools @@ -27,20 +41,6 @@ options: will not be binary compatible with BeOS R5. specifies the target architecture, either "x86", "ppc", "m68k", "arm" or "mipsel". - --alternative-gcc-output-dir - Build a Haiku installation that supports running - executables built with a gcc version incompatible - with the primary gcc (e.g. gcc 2 executables under - a gcc 4 Haiku or vice versa). specifies the - output directory of the other gcc. The directory - must already be fully configured. - Note, that a sub-jam will be executed when - building Haiku. When using a jam that is not - simply invoked by "jam", the JAM build variable - needs to be set accordingly. - To disable building the alternative libraries - the variable HAIKU_ADD_ALTERNATIVE_GCC_LIBS can be - unset in the UserBuildConfig file. --cross-tools-prefix Assume cross compilation. should be a path to the directory where the cross @@ -55,6 +55,7 @@ options: official -- the official Haiku distribution. compatible -- a Haiku Compatible (tm) distro. default -- any other distro (default value). + --enable-multiuser Enable experimental multiuser support. --help Prints out this help. --include-gpl-addons Include GPL licensed add-ons. --include-patented-code Enable code that is known to implemented patented @@ -64,7 +65,9 @@ options: option only disables code that is currently known to be problematic. --include-3rdparty Include 3rdparty/ in the build system. - --enable-multiuser Enable experimental multiuser support. + -j Only relevant for --build-cross-tools and + --build-cross-tools-gcc4. Is passed on to the + make building the build tools. --target=TARGET Select build target platform. [default=${target}] valid targets=r5,bone,dano,haiku --use-gcc-pipe Build with GCC option -pipe. Speeds up the build @@ -278,6 +281,7 @@ crossToolsPrefix= buildCrossTools= buildCrossToolsScript="$sourceDir/build/scripts/build_cross_tools" buildCrossToolsMachine= +buildCrossToolsJobs= alternativeGCCOutputDir= addAlternativeGCCLibs= @@ -302,6 +306,14 @@ set_default_value HAIKU_UNARFLAGS x # while [ $# -gt 0 ] ; do case "$1" in + --alternative-gcc-output-dir) + assertparam "$1" $# + cd $2 || exit 1 + alternativeGCCOutputDir=`pwd` + addAlternativeGCCLibs=1 + cd $currentDir + shift 2 + ;; --bochs-debug) bochsDebug=1; shift 1;; --build-cross-tools) assertparam "$1" $#; buildCrossTools=$2; shift 2;; --build-cross-tools-gcc4) @@ -320,24 +332,11 @@ while [ $# -gt 0 ] ; do buildCrossToolsMachine=$haikuGCCMachine shift 3 ;; - --alternative-gcc-output-dir) - assertparam "$1" $# - cd $2 || exit 1 - alternativeGCCOutputDir=`pwd` - addAlternativeGCCLibs=1 - cd $currentDir - shift 2 - ;; --cross-tools-prefix) assertparam "$1" $# crossToolsPrefix=$2 shift 2 ;; - --help | -h) usage; exit 0;; - --include-gpl-addons) includeGPLAddOns=1; shift 1;; - --include-patented-code) includePatentedCode=1; shift 1;; - --include-3rdparty) include3rdParty=1; shift 1;; - --enable-multiuser) enableMultiuser=1; shift 1;; --distro-compatibility) assertparam "$1" $# distroCompatibility=$2 @@ -351,6 +350,12 @@ while [ $# -gt 0 ] ; do esac shift 2 ;; + --enable-multiuser) enableMultiuser=1; shift 1;; + --help | -h) usage; exit 0;; + --include-gpl-addons) includeGPLAddOns=1; shift 1;; + --include-patented-code) includePatentedCode=1; shift 1;; + --include-3rdparty) include3rdParty=1; shift 1;; + -j*) buildCrossToolsJobs="$1"; shift 1;; --target=*) target=`echo $1 | cut -d'=' -f2-`; shift 1;; --use-gcc-pipe) useGCCPipe=1; shift 1;; --use-32bit) use32bit=1; shift 1;; @@ -433,7 +438,7 @@ mkdir -p "$buildOutputDir" || exit 1 # build cross tools from sources if [ -n "$buildCrossTools" ]; then "$buildCrossToolsScript" $buildCrossToolsMachine "$sourceDir" \ - "$buildCrossTools" "$outputDir" || exit 1 + "$buildCrossTools" "$outputDir" $buildCrossToolsJobs || exit 1 crossToolsPrefix="$outputDir/cross-tools/bin/${haikuGCCMachine}-" fi