Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: tools/trusted_cross_toolchains/mips_tc_build.sh

Issue 11036032: [MIPS] Script to build a trusted mipsel-linux-gnu cross toolchain from source. (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/trusted_cross_toolchains/mips_tc_build.sh
diff --git a/tools/trusted_cross_toolchains/mips_tc_build.sh b/tools/trusted_cross_toolchains/mips_tc_build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..af069fcb5cb93025d73d5672df8fd7ab9592fb71
--- /dev/null
+++ b/tools/trusted_cross_toolchains/mips_tc_build.sh
@@ -0,0 +1,184 @@
+#!/bin/bash
+#
+# Copyright 2012 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can
+# be found in the LICENSE file.
+
+# This script is intended to build a mipsel-linux-gnu cross compilation
+# toolchain that runs on x86 linux and generates code for a little-endian,
+# hard-float, mips32 target.
+#
+# It expects the host machine to have relatively recent versions of GMP (4.2.0
+# or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC.
+#
+# Common way to get those is:
+# sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev
+set -eu
Mark Seaborn 2012/10/04 15:10:46 Nit: add an empty line before this to separate it
+
+arch="mips32"
+
+top_dir=`pwd`
+bld_dir="$top_dir/obj"
Mark Seaborn 2012/10/04 15:10:46 Can you make these less cryptic, please? i.e. "bu
+tar_dir="$top_dir/tars"
+src_dir="$top_dir/src"
+ins_nam="mips-toolchain"
+ins_dir="$top_dir/$ins_nam"
+sys_dir="$ins_dir/sysroot"
+
+export PATH=$ins_dir/bin:/usr/sbin:/usr/bin:/sbin:/bin
Mark Seaborn 2012/10/04 15:10:46 Please do export PATH=$ins_dir/bin:$PATH so that t
+
+echo -n "cleaning up"
+rm -rf $bld_dir
+echo -n "."
+rm -rf $sys_dir
+echo -n "."
+rm -rf $ins_dir
+echo -n "."
+rm -rf $src_dir
+echo "done"
+
+# get the code
+echo "downloading the sources"
+
+mkdir -p $tar_dir
+cd $tar_dir
+
+
+
+if [ ! -f 'binutils-2.22.tar.bz2' ]; then
+ wget http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2
Mark Seaborn 2012/10/04 15:10:46 Can you write wget http://ftp.gnu.org/gnu/binuti
+fi
+checksum=`sha1sum binutils-2.22.tar.bz2 | cut -d ' ' -f 1`
+if [ "$checksum" != "65b304a0b9a53a686ce50a01173d1f40f8efe404" ]; then
+ echo "binutils-2.22.tar.bz2 sha1sum failed, file deleted"
Mark Seaborn 2012/10/04 15:10:46 Please indent blocks by 2 spaces
+ rm -f binutils-2.22.tar.bz2
+ exit
Mark Seaborn 2012/10/04 15:10:46 This should be "exit 1" since this is an error
+fi
+
+
+
+if [ ! -f 'gcc-4.6.3.tar.bz2' ]; then
Mark Seaborn 2012/10/04 15:10:46 There's a lot of duplication here. Can you factor
+ wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.3/gcc-4.6.3.tar.bz2
+fi
+checksum=`sha1sum gcc-4.6.3.tar.bz2 | cut -d ' ' -f 1`
+if [ "$checksum" != "ce317ca5c8185b58bc9300182b534608c578637f" ]; then
+ echo "gcc-4.6.3.tar.bz2 sha1sum failed, file deleted"
+ rm -f gcc-4.6.3.tar.bz2
+ exit
+fi
+
+
+
+if [ ! -f 'linux-2.6.38.4.tar.gz' ]; then
+ wget http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/linux-2.6.38.4.tar.gz
+fi
+checksum=`sha1sum linux-2.6.38.4.tar.gz | cut -d ' ' -f 1`
+if [ "$checksum" != "377fa5cf5f1d0c396759b1c4d147330e7e5b6d7f" ]; then
+ echo "linux-2.6.38.4.tar.gz sha1sum failed, file deleted"
+ rm -f linux-2.6.38.4.tar.gz
+ exit
+fi
+
+
+
+if [ ! -f 'gdb-7.5.tar.gz' ]; then
+ wget http://ftp.gnu.org/gnu/gdb/gdb-7.5.tar.gz
+fi
+checksum=`sha1sum gdb-7.5.tar.gz | cut -d ' ' -f 1`
+if [ "$checksum" != "57b58bc5b959e420d9aeb4cfeaa3b2fd7c685a10" ]; then
+ echo "gdb-7.5.tar.gz sha1sum failed, file deleted"
+ rm -f gdb-7.5.tar.gz
+ exit
+fi
+
+svn export -r 20996 svn://svn.eglibc.org/branches/eglibc-2_14 eglibc-2_14
+
+
+
+cd $top_dir
+
+#untar all
Mark Seaborn 2012/10/04 15:10:46 Please put a space after '#' in comments. And cap
+echo -n "unpacking the sources"
+mkdir -p $src_dir
+cd $src_dir
+tar xjf $tar_dir/binutils-2.22.tar.bz2
+echo -n "."
+tar xjf $tar_dir/gcc-4.6.3.tar.bz2
+echo -n "."
+tar xzf $tar_dir/linux-2.6.38.4.tar.gz linux-2.6.38.4
+echo -n "."
+tar xzf $tar_dir/gdb-7.5.tar.gz
+echo -n "."
+#tar xzf $tar_dir/eglibc-2_14.tar.gz
Mark Seaborn 2012/10/04 15:10:46 Please remove this commented-out line
+mv $tar_dir/eglibc-2_14 .
+echo "done"
+cd $top_dir
+
+#prepare the code
+cd $src_dir/eglibc-2_14/libc/ && ln -s ../ports ports && cd -
Mark Seaborn 2012/10/04 15:10:46 Can you replace "&&" with a newline, please? Same
+
+cd $src_dir/binutils-2.22/gas/config && OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);" && NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);" && FILE_NAME="$PWD/tc-mips.c" && sed -i "s/$OLD_TEXT/$NEW_TEXT/g" "$FILE_NAME" && cd -
+
+
+#build the toolchain
+echo "building the toolchain"
+mkdir -p $bld_dir/binutils/
+cd $bld_dir/binutils/
+$src_dir/binutils-2.22/configure --prefix=$ins_dir --target=mipsel-linux-gnu --with-sysroot=$sys_dir
+make --jobs=3 all-binutils all-gas all-ld || exit 1
Mark Seaborn 2012/10/04 15:10:46 "|| exit 1" isn't necessary since you have "set -e
+make --jobs=3 install-binutils install-gas install-ld || exit 1
+mkdir -p $bld_dir/gcc/initial
Mark Seaborn 2012/10/04 15:10:46 For readability, can you separate the build of eac
+cd $bld_dir/gcc/initial
+$src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgomp --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-mips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enable-languages=c --with-newlib --without-headers --disable-shared --disable-threads --disable-libquadmath --disable-libatomic
+make --jobs=3 all || exit 1
+make --jobs=3 install || exit 1
+cd $src_dir/linux-2.6.38.4
+make headers_install ARCH=mips INSTALL_HDR_PATH=$sys_dir/usr || exit 1
+export BUILD_CC=gcc
+export AR=mipsel-linux-gnu-ar
+export RANLIB=mipsel-linux-gnu-ranlib
+export CC=mipsel-linux-gnu-gcc
+export CXX=mipsel-linux-gnu-g++
+mkdir -p $bld_dir/eglibc/initial
+cd $bld_dir/eglibc/initial
+$src_dir/eglibc-2_14/libc/configure --prefix=/usr --with-headers=$sys_dir/usr/include --build=i686-pc-linux-gnu --host=mipsel-linux-gnu --disable-profile --without-gd --without-cvs --enable-add-ons
+make --jobs=3 install-headers install_root=$sys_dir install-bootstrap-headers=yes || exit 1
+mkdir -p $sys_dir/usr/lib
+make csu/subdir_lib && cp csu/crt1.o csu/crti.o csu/crtn.o $sys_dir/usr/lib || exit 1
+mipsel-linux-gnu-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $sys_dir/usr/lib/libc.so
+unset BUILD_CC AR RANLIB CC CXX
+mkdir -p $bld_dir/gcc/intermediate
+cd $bld_dir/gcc/intermediate
+$src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgomp --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-mips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enable-languages=c --with-sysroot=$sys_dir --disable-libquadmath --disable-libatomic
+make --jobs=3 all || exit 1
+make --jobs=3 install || exit 1
+export BUILD_CC=gcc
+export AR=mipsel-linux-gnu-ar
+export RANLIB=mipsel-linux-gnu-ranlib
+export CC=mipsel-linux-gnu-gcc
+export CXX=mipsel-linux-gnu-g++
+mkdir -p $bld_dir/eglibc/final
+cd $bld_dir/eglibc/final
+$src_dir/eglibc-2_14/libc/configure --prefix=/usr --with-headers=$sys_dir/usr/include --build=i686-pc-linux-gnu --host=mipsel-linux-gnu --disable-profile --without-gd --without-cvs --enable-add-ons
+make --jobs=3 all || exit 1
+make --jobs=3 install install_root=$sys_dir || exit 1
+unset BUILD_CC AR RANLIB CC CXX
+mkdir -p $bld_dir/gcc/final
+cd $bld_dir/gcc/final
+$src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgomp --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-mips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enable-languages=c,c++ --with-sysroot=$sys_dir --enable-__cxa_atexit
+make --jobs=3 all || exit 1
+make --jobs=3 install || exit 1
+mkdir -p $bld_dir/gdb/
+cd $bld_dir/gdb/
+$src_dir/gdb-7.5/configure --prefix=$ins_dir --target=mipsel-linux-gnu
+make --jobs=3 all-gdb
+make --jobs=3 install-gdb
+echo "done"
+
+#Make toolchain tarball
+echo -n "packing the toolchain..."
+cd $top_dir
+tar czf mips-toolchain.tar.gz $ins_nam
+
+echo "done"
+echo
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698