3 # Copyright (C) 2007 Segher Boessenkool <segher@kernel.crashing.org>
4 # Copyright (C) 2009-2010 Hector Martin "marcan" <hector@marcansoft.com>
5 # Copyright (C) 2009 Andre Heider "dhewg" <dhewg@wiibrew.org>
7 # Released under the terms of the GNU GPL, version 2
8 SCRIPTDIR
=`dirname $PWD/$0`
11 BINUTILS_DIR
="binutils-$BINUTILS_VER"
12 BINUTILS_TARBALL
="binutils-$BINUTILS_VER.tar.bz2"
13 BINUTILS_URI
="http://ftp.gnu.org/gnu/binutils/$BINUTILS_TARBALL"
16 GMP_DIR
="gmp-$GMP_VER"
17 GMP_TARBALL
="gmp-$GMP_VER.tar.bz2"
18 GMP_URI
="http://ftp.gnu.org/gnu/gmp/$GMP_TARBALL"
21 MPFR_DIR
="mpfr-$MPFR_VER"
22 MPFR_TARBALL
="mpfr-$MPFR_VER.tar.bz2"
23 MPFR_URI
="http://www.mpfr.org/mpfr-$MPFR_VER/$MPFR_TARBALL"
26 MPC_DIR
="mpc-$MPC_VER"
27 MPC_TARBALL
="mpc-$MPC_VER.tar.gz"
28 MPC_URI
="http://www.multiprecision.org/mpc/download/$MPC_TARBALL"
31 GCC_DIR
="gcc-$GCC_VER"
32 GCC_CORE_TARBALL
="gcc-core-$GCC_VER.tar.bz2"
33 GCC_CORE_URI
="http://ftp.gnu.org/gnu/gcc/gcc-$GCC_VER/$GCC_CORE_TARBALL"
37 PPU_TARGET
=powerpc64-linux
40 if [ -z $MAKEOPTS ]; then
44 # End of configuration section.
54 export PATH
=$PS3LINUXDEV/bin
:$PATH
62 [ -e $PS3LINUXDEV/$BINUTILS_DIR ] && rm -rf $PS3LINUXDEV/$BINUTILS_DIR
63 [ -e $PS3LINUXDEV/$GCC_DIR ] && rm -rf $PS3LINUXDEV/$GCC_DIR
67 [ -e $PS3LINUXDEV/build_binutils
] && rm -rf $PS3LINUXDEV/build_binutils
68 [ -e $PS3LINUXDEV/build_gcc
] && rm -rf $PS3LINUXDEV/build_gcc
73 if [ -f "$PS3LINUXDEV/$2" ]; then
75 tar tf
"$PS3LINUXDEV/$2" >/dev
/null
2>&1 && DL
=0
78 if [ $DL -eq 1 ]; then
79 echo "Downloading $2..."
80 wget
"$1" -c -O "$PS3LINUXDEV/$2" || die
"Could not download $2"
85 echo "Extracting $1..."
86 tar xf
"$PS3LINUXDEV/$1" -C "$2" || die
"Error unpacking $1"
90 mkdir
-p $PS3LINUXDEV/build_binutils || die
"Error making binutils build directory $PS3LINUXDEV/build_binutils"
91 mkdir
-p $PS3LINUXDEV/build_gcc || die
"Error making gcc build directory $PS3LINUXDEV/build_gcc"
97 cd $PS3LINUXDEV/build_binutils
&& \
98 $PS3LINUXDEV/$BINUTILS_DIR/configure
--target=$TARGET \
99 --prefix=$PS3LINUXDEV --disable-werror --enable-64-bit-bfd && \
100 nice
$MAKE $MAKEOPTS && \
102 ) || die
"Error building binutils for target $TARGET"
108 cd $PS3LINUXDEV/build_gcc
&& \
109 $PS3LINUXDEV/$GCC_DIR/configure
--target=$TARGET --enable-targets=all \
110 --prefix=$PS3LINUXDEV \
111 --enable-languages=c
--without-headers \
112 --disable-nls --disable-threads --disable-shared \
113 --disable-libmudflap --disable-libssp --disable-libgomp \
114 --disable-decimal-float \
115 --enable-checking=release
$EXTRA_CONFIG_OPTS && \
116 nice
$MAKE $MAKEOPTS all-gcc
&& \
117 nice
$MAKE $MAKEOPTS all-target-libgcc
&& \
118 nice
$MAKE $MAKEOPTS install-gcc
&& \
119 nice
$MAKE $MAKEOPTS install-target-libgcc
120 ) || die
"Error building gcc for target $TARGET"
126 echo "******* Building SPU binutils"
127 buildbinutils
$SPU_TARGET
128 echo "******* Building SPU GCC"
130 echo "******* SPU toolchain built and installed"
136 echo "******* Building PowerPC binutils"
137 buildbinutils
$PPU_TARGET
138 echo "******* Building PowerPC GCC"
139 EXTRA_CONFIG_OPTS
="--with-cpu=cell" buildgcc
$PPU_TARGET
140 echo "******* PowerPC toolchain built and installed"
143 if [ -z "$PS3LINUXDEV" ]; then
144 die
"Please set PS3LINUXDEV in your environment."
148 ppu|spu|both|clean
) ;;
150 die
"Please specify build type (ppu/spu/both/clean)"
153 die
"Unknown build type $BUILDTYPE"
157 if [ "$BUILDTYPE" = "clean" ]; then
163 download
"$BINUTILS_URI" "$BINUTILS_TARBALL"
164 download
"$GMP_URI" "$GMP_TARBALL"
165 download
"$MPFR_URI" "$MPFR_TARBALL"
166 download
"$MPC_URI" "$MPC_TARBALL"
167 download
"$GCC_CORE_URI" "$GCC_CORE_TARBALL"
171 extract
"$BINUTILS_TARBALL" "$PS3LINUXDEV"
172 patch -d $PS3LINUXDEV/$BINUTILS_DIR -u -p1 -i $SCRIPTDIR/binutils-2.21
.1.
patch || die
"Error applying binutils patch"
173 extract
"$GCC_CORE_TARBALL" "$PS3LINUXDEV"
174 extract
"$GMP_TARBALL" "$PS3LINUXDEV/$GCC_DIR"
175 extract
"$MPFR_TARBALL" "$PS3LINUXDEV/$GCC_DIR"
176 extract
"$MPC_TARBALL" "$PS3LINUXDEV/$GCC_DIR"
178 # in-tree gmp, mpfr and mpc
179 mv "$PS3LINUXDEV/$GCC_DIR/$GMP_DIR" "$PS3LINUXDEV/$GCC_DIR/gmp" || die
"Error renaming $GMP_DIR -> gmp"
180 mv "$PS3LINUXDEV/$GCC_DIR/$MPFR_DIR" "$PS3LINUXDEV/$GCC_DIR/mpfr" || die
"Error renaming $MPFR_DIR -> mpfr"
181 mv "$PS3LINUXDEV/$GCC_DIR/$MPC_DIR" "$PS3LINUXDEV/$GCC_DIR/mpc" || die
"Error renaming $MPC_DIR -> mpc"
186 both
) buildppu
; buildspu
; cleanbuild
; cleansrc
;;