Author: bonefish Date: 2009-11-23 20:34:55 +0100 (Mon, 23 Nov 2009) New Revision: 34199 Changeset: http://dev.haiku-os.org/changeset/34199/haiku Modified: haiku/trunk/build/scripts/build_cross_tools haiku/trunk/build/scripts/build_cross_tools_gcc4 haiku/trunk/configure Log: * Added -j<n> 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. Modified: haiku/trunk/build/scripts/build_cross_tools =================================================================== --- haiku/trunk/build/scripts/build_cross_tools 2009-11-23 15:17:50 UTC (rev 34198) +++ haiku/trunk/build/scripts/build_cross_tools 2009-11-23 19:34:55 UTC (rev 34199) @@ -1,21 +1,19 @@ #!/bin/sh -# parameters <haiku sourcedir> <buildtools dir> [ <haiku output dir> ] +# parameters <haiku sourcedir> <buildtools dir> <haiku output dir> # get and check the parameters -if [ $# -lt 2 ]; then - echo Usage: $0 '<haiku sourcedir> <buildtools dir> [ <haiku output dir> ]' >&2 +if [ $# -lt 3 ]; then + echo Usage: $0 '<haiku sourcedir> <buildtools dir> <haiku output dir>' >&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 @@ 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 @@ 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 } Modified: haiku/trunk/build/scripts/build_cross_tools_gcc4 =================================================================== --- haiku/trunk/build/scripts/build_cross_tools_gcc4 2009-11-23 15:17:50 UTC (rev 34198) +++ haiku/trunk/build/scripts/build_cross_tools_gcc4 2009-11-23 19:34:55 UTC (rev 34199) @@ -1,16 +1,20 @@ #!/bin/sh # -# parameters <machine> <haiku sourcedir> <buildtools dir> [ <haiku output dir> ] +# parameters <machine> <haiku sourcedir> <buildtools dir> <haiku output dir> # get and check the parameters -if [ $# -lt 3 ]; then - echo Usage: $0 '<machine> <haiku sourcedir> <buildtools dir> [ <haiku output dir> ]' >&2 +if [ $# -lt 4 ]; then + echo Usage: $0 '<machine> <haiku sourcedir> <buildtools dir>' \ + '<haiku output dir>' >&2 exit 1 fi haikuMachine=$1 haikuSourceDir=$2 buildToolsDir=$3 +haikuOutputDir=$4 +shift 4 +additionalMakeArgs=$* case $(uname) in FreeBSD|OpenBSD) @@ -37,12 +41,6 @@ ;; 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 @@ 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 @@ $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 } Modified: haiku/trunk/configure =================================================================== --- haiku/trunk/configure 2009-11-23 15:17:50 UTC (rev 34198) +++ haiku/trunk/configure 2009-11-23 19:34:55 UTC (rev 34199) @@ -12,6 +12,20 @@ Usage: $0 <options> options: + --alternative-gcc-output-dir <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). <dir> 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 <build tools dir> @@ -27,20 +41,6 @@ will not be binary compatible with BeOS R5. <arch> specifies the target architecture, either "x86", "ppc", "m68k", "arm" or "mipsel". - --alternative-gcc-output-dir <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). <dir> 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 <prefix> Assume cross compilation. <prefix> should be a path to the directory where the cross @@ -55,6 +55,7 @@ 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 @@ 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<n> 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 @@ buildCrossTools= buildCrossToolsScript="$sourceDir/build/scripts/build_cross_tools" buildCrossToolsMachine= +buildCrossToolsJobs= alternativeGCCOutputDir= addAlternativeGCCLibs= @@ -302,6 +306,14 @@ # 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 @@ 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 @@ 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 @@ # 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