[haiku-commits] buildtools: btrev43028 - /

  • From: korli@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 18 Mar 2012 15:35:06 +0100 (CET)

btrev43028 adds 1 changeset to branch 'master'
old head: a2012848e3c628083a37416cb7ccc351d42fbb1e
new head: e9b8ca373a2f0b7a598718b3618140145554d4fb

----------------------------------------------------------------------------

e9b8ca3: updated optional package build script for gcc4 to make a cross 
compiler.
  
  * --arch sets the target arch, defaults to x86
  * --source-dir sets the Haiku root directory for headers.
  * tested with ppc.

                                   [ Jérôme Duval <jerome.duval@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    btrev43028
Commit:      e9b8ca373a2f0b7a598718b3618140145554d4fb
URL:         http://cgit.haiku-os.org/buildtools/commit/?id=e9b8ca3
Author:      Jérôme Duval <jerome.duval@xxxxxxxxx>
Date:        Sun Mar 18 14:31:41 2012 UTC

----------------------------------------------------------------------------

1 files changed, 66 insertions(+), 22 deletions(-)
build-gcc4-optional-package-Haiku.sh |   88 ++++++++++++++++++++++--------

----------------------------------------------------------------------------

diff --git a/build-gcc4-optional-package-Haiku.sh 
b/build-gcc4-optional-package-Haiku.sh
old mode 100755
new mode 100644
index bfdccaa..753b1be
--- a/build-gcc4-optional-package-Haiku.sh
+++ b/build-gcc4-optional-package-Haiku.sh
@@ -20,7 +20,10 @@ gccSources="$buildtoolsDir/gcc"
 buildDir="$currentDir/gcc-objects"
 binutilsBuildDir="$buildDir/binutils"
 gccBuildDir="$buildDir/gcc"
-
+targetArch=x86
+gccMakeTarget=bootstrap
+gccConfigureArgs="--enable-shared"
+binutilsConfigureArgs="--enable-shared=true"
 
 # parse the arguments
 jobArgs=
@@ -28,6 +31,29 @@ while [ $# -gt 0 ]; do
        case "$1" in
                -h|--help)      usage; exit 0;;
                -j*)            jobArgs="$1"; shift 1;;
+               --arch)
+                       case "$2" in
+                               x86)    HAIKU_GCC_MACHINE=i586-pc-haiku;;
+                               x86_64) HAIKU_GCC_MACHINE=x86_64-pc-haiku; 
targetArch=x86_64;
+                                               gccMakeTarget= ;;
+                               ppc)    HAIKU_GCC_MACHINE=powerpc-apple-haiku; 
targetArch=ppc;
+                                               gccMakeTarget= 
gccConfigureArgs="--disable-shared --disable-multilib"
+                                               
binutilsConfigureArgs="--disable-shared --disable-multilib" ;;
+                               m68k)   HAIKU_GCC_MACHINE=m68k-unknown-haiku; 
targetArch=m68k;
+                                               gccMakeTarget= 
gccConfigureArgs="--disable-shared --disable-multilib"
+                                               
binutilsConfigureArgs="--disable-shared --disable-multilib" ;;
+                               arm)    HAIKU_GCC_MACHINE=arm-unknown-haiku; 
targetArch=arm;
+                                               gccMakeTarget= 
gccConfigureArgs="--disable-shared --disable-multilib"
+                                               
binutilsConfigureArgs="--disable-shared --disable-multilib" ;;
+                               mipsel) HAIKU_GCC_MACHINE=mipsel-unknown-haiku; 
targetArch=mips;
+                                               gccMakeTarget= 
gccConfigureArgs="--disable-shared --disable-multilib"
+                                               
binutilsConfigureArgs="--disable-shared --disable-multilib" ;;
+                               *)              echo "Unsupported target 
architecture: $2"
+                                               exit 1;;
+                       esac
+                       shift 2
+                       
targetCrossToolsMachine="--target=${HAIKU_GCC_MACHINE}";;
+               --source-dir)   haikuSourceDir="$2"; shift 2;;
                *)                      break;;
        esac
 done
@@ -57,16 +83,8 @@ fi
 gccVersionedName=gcc-${gccVersion}-haiku-${gccDate}
 
 
-# get the architecture
-gccArch=`uname -m`
-case $gccArch in
-       BePC)   gccArch=x86;;
-       *)              echo "Unsupported architecture: '$gccArch'" >&2; exit 
1;;
-esac
-
-
 # check whether the installation dir does already exit
-installDir=/boot/develop/abi/$gccArch/gcc4/tools/$gccVersionedName
+installDir=/boot/develop/abi/$targetArch/gcc4/tools/$gccVersionedName
 if [ -e "$installDir" ]; then
        echo "The installation directory '$installDir' does already exist." >&2
        echo "Remove it first." >&2
@@ -78,6 +96,7 @@ fi
 echo "Building binutils and gcc optional packages from the source."
 echo "sources:     $buildtoolsDir"
 echo "build dir:   $buildDir"
+echo "target arch: $targetArch"
 echo "GCC date:    $gccDate"
 echo "GCC version: $gccVersion"
 echo "install dir: $installDir"
@@ -98,19 +117,44 @@ mkdir -p "$binutilsBuildDir" "$gccBuildDir"
 # build and install the binutils
 cd "$binutilsBuildDir"
 CFLAGS="-O2" CXXFLAGS="-O2" "$binutilsSources/configure" \
-       --prefix="$installDir" --disable-nls --enable-shared=yes \
-       --with-htmldir=html-docs
+       --prefix="$installDir" $targetCrossToolsMachine --disable-nls \
+       $binutilsConfigureArgs --with-htmldir=html-docs
 make $jobArgs
 make install install-html
 
+# prepare the include files
+copy_headers()
+{
+       sourceDir=$1
+       targetDir=$2
+
+       headers="$(find $sourceDir -name \*\.h | grep -v /.svn)"
+       headers="$(echo $headers | sed -e s@$sourceDir/@@g)"
+       for f in $headers; do
+               headerTargetDir=$targetDir/$(dirname $f)
+               mkdir -p $headerTargetDir
+               cp $sourceDir/$f $headerTargetDir
+       done
+}
+
+if [ -n "$haikuSourceDir" ]; then
+       tmpIncludeDir=$currentDir/sysincludes
+       tmpLibDir=$currentDir/syslibs
+       mkdir -p $tmpIncludeDir $tmpLibDir
+       copy_headers $haikuSourceDir/headers/config $tmpIncludeDir/config
+       copy_headers $haikuSourceDir/headers/os $tmpIncludeDir/os
+       copy_headers $haikuSourceDir/headers/posix $tmpIncludeDir/posix
+       headersLibsArgs="--with-headers=$tmpIncludeDir --with-libs=$tmpLibDir"
+fi
 
 # build and install gcc
 cd "$gccBuildDir"
 CFLAGS="-O2" CXXFLAGS="-O2" "$gccSources/configure" \
-       --prefix="$installDir" --enable-shared --enable-languages=c,c++ \
-       --disable-nls --without-libiconv-prefix --disable-libstdcxx-pch \
-       --with-htmldir=html-docs --enable-frame-pointer
-make $jobArgs bootstrap
+       --prefix="$installDir" $gccConfigureArgs --enable-languages=c,c++ \
+       $targetCrossToolsMachine --disable-nls --without-libiconv-prefix \
+       --disable-libstdcxx-pch --with-htmldir=html-docs --enable-lto \
+       --enable-frame-pointer $headersLibsArgs
+make $jobArgs $gccMakeTarget
 make install-strip install-html
 
 
@@ -134,7 +178,7 @@ ln -s c++/$gccVersion $installDir/include/g++
 gccVersionYear=20$(echo $gccDate | cut -c1-2)
 gccVersionMonth=$(echo $gccDate | cut -c3-4)
 gccVersionDay=$(echo $gccDate | cut -c5-6)
-packageFile="$currentDir/gcc-${gccVersion}-${gccArch}-gcc4-${gccVersionYear}-${gccVersionMonth}-${gccVersionDay}.zip"
+packageFile="$currentDir/gcc-${gccVersion}-${targetArch}-gcc4-${gccVersionYear}-${gccVersionMonth}-${gccVersionDay}.zip"
 
 cd /boot
 zip -ry "$packageFile" `echo $installDir | cut -d/ -f3-`
@@ -142,16 +186,16 @@ zip -ry "$packageFile" `echo $installDir | cut -d/ -f3-`
 
 # add the "current" version symlink
 cd "$buildDir"
-mkdir -p develop/abi/x86/gcc4/tools/
-ln -s $gccVersionedName develop/abi/x86/gcc4/tools/current
-zip -y "$packageFile" develop/abi/x86/gcc4/tools/current
+mkdir -p develop/abi/$targetArch/gcc4/tools/
+ln -s $gccVersionedName develop/abi/$targetArch/gcc4/tools/current
+zip -y "$packageFile" develop/abi/$targetArch/gcc4/tools/current
 
 
 # add the optional package description
 cd "$buildDir"
 echo "Package:         GCC
-Version:               ${gccVersion}-haiku-${gccDate}
-Copyright:             1988-2011 Free Software Foundation, Inc.
+Version:               ${gccVersion}-${targetArch}-haiku-${gccDate}
+Copyright:             1988-2012 Free Software Foundation, Inc.
 License:               GNU GPL v3
 License:               GNU LGPL v3
 URL:                   http://www.gnu.org/software/gcc/


Other related posts:

  • » [haiku-commits] buildtools: btrev43028 - / - korli