Skip to content

Instantly share code, notes, and snippets.

@shurizzle
Created September 15, 2012 15:32
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shurizzle/3728481 to your computer and use it in GitHub Desktop.
Save shurizzle/3728481 to your computer and use it in GitHub Desktop.
export ROOT="${HOME}/wii-linux"
export BUILDDIR="${PWD}"
export LFS_TGT=powerpc-linux
export PATH="${PATH}:${BUILDDIR}/tools/bin:${ROOT}/bin"
(
wget -c 'http://www.linuxfromscratch.org/patches/lfs/7.2/binutils-2.22-build_fix-1.patch'
wget -c 'http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz'
wget -c 'http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.1.tar.xz'
wget -c 'http://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.xz'
wget -c 'http://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz'
wget -c 'http://ftp.gnu.org/gnu/gcc/gcc-4.7.1/gcc-4.7.1.tar.gz'
wget -c 'http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.4.tar.bz2'
wget -c 'http://ftp.gnu.org/gnu/glibc/glibc-2.16.0.tar.xz'
) || exit 1
(
tar xvf binutils-2.22.tar.gz
cd binutils-2.22
patch -Np1 -i ../binutils-2.22-build_fix-1.patch || exit 1
mkdir -v ../binutils-build
cd ../binutils-build || exit 1
../binutils-2.22/configure \
--prefix="${ROOT}" \
--with-sysroot="${ROOT}" \
--with-lib-path="${ROOT}/lib" \
--target=$LFS_TGT \
--disable-nls \
--disable-werror || exit 1
make all install || exit 1
) || exit 1
(
tar -zxf gcc-4.7.1.tar.gz || exit 1
cd gcc-4.7.1 || exit 1
tar -Jxf ../mpfr-3.1.1.tar.xz || exit 1
mv -v mpfr-3.1.1 mpfr
tar -Jxf ../gmp-5.0.5.tar.xz || exit 1
mv -v gmp-5.0.5 gmp
tar -zxf ../mpc-1.0.1.tar.gz || exit 1
mv -v mpc-1.0.1 mpc
for file in $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@'"${ROOT}"'&@g' \
-e 's@/usr@'"${ROOT}"'@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "'"${ROOT}/lib/"'"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
mkdir -v ../gcc-build
cd ../gcc-build || exit 1
../gcc-4.7.1/configure \
--target=$LFS_TGT \
--prefix="${ROOT}" \
--with-sysroot="$ROOT" \
--with-newlib \
--without-headers \
--with-local-prefix="${ROOT}" \
--with-native-system-header-dir="${ROOT}/include" \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libmudflap \
--disable-libssp \
--disable-libgomp \
--disable-libquadmath \
--enable-languages=c \
--with-mpfr-include=$(pwd)/../gcc-4.7.1/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs || exit 1
make all install || exit 1
ln -vs "${ROOT}/lib/gcc/powerpc-linux/4.7.1/libgcc.a" `$LFS_TGT-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/'`
) || exit 1
(
tar -jxf linux-3.5.4.tar.bz2 || exit 1
cd linux-3.5.4 || exit 1
cp arch/powerpc/configs/wii_defconfig .config || exit 1
make ARCH=powerpc CROSS_COMPILE=powerpc-linux- mrproper || exit 1
make ARCH=powerpc CROSS_COMPILE=powerpc-linux- headers_check || exit 1
make ARCH=powerpc CROSS_COMPILE=powerpc-linux- INSTALL_HDR_PATH=dest headers_install || exit 1
mkdir "${ROOT}/include"
cp -rv dest/include/* "${ROOT}/include" || exit 1
) || exit 1
(
tar -Jxf glibc-2.16.0.tar.xz || exit 1
cd glibc-2.16.0 || exit 1
sed -i 's/ -lgcc_s//' Makeconfig
mkdir -v ../glibc-build
cd ../glibc-build || exit 1
../glibc-2.16.0/configure \
--prefix="${ROOT}" \
--host=$LFS_TGT \
--build=$(../glibc-2.16.0/scripts/config.guess) \
--disable-profile \
--enable-add-ons \
--enable-kernel=3.5.4 \
--with-headers="${ROOT}/include" \
libc_cv_forced_unwind=yes \
libc_cv_ctors_header=yes \
libc_cv_c_cleanup=yes
make all install
) || exit 1
(
rm -rf gcc-4.7.1 gcc-build
tar -zxf gcc-4.7.1.tar.gz || exit 1
cd gcc-4.7.1 || exit 1
tar -Jxf ../mpfr-3.1.1.tar.xz || exit 1
mv -v mpfr-3.1.1 mpfr
tar -Jxf ../gmp-5.0.5.tar.xz || exit 1
mv -v gmp-5.0.5 gmp
tar -zxf ../mpc-1.0.1.tar.gz || exit 1
mv -v mpc-1.0.1 mpc
for file in $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@'"${ROOT}"'&@g' \
-e 's@/usr@'"${ROOT}"'@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "'"${ROOT}/lib/"'"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
cp -v gcc/Makefile.in{,.tmp}
sed 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp > gcc/Makefile.in
mkdir -v ../gcc-build
cd ../gcc-build || exit 1
../gcc-4.7.1/configure \
--target=$LFS_TGT \
--prefix="${ROOT}" \
--with-sysroot=$LFS \
--with-local-prefix="${ROOT}" \
--with-native-system-header-dir="${ROOT}/include" \
--disable-nls \
--enable-shared \
--disable-multilib \
--disable-bootstrap \
--enable-threads=posix \
--disable-libgomp \
--enable-languages=c,c++ \
--with-mpfr-include=$(pwd)/../gcc-4.7.1/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs || exit 1
make all install || exit 1
) || exit 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment