Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/bin/bash | |
| 2 # | |
| 3 # Copyright 2012 The Native Client Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can | |
| 5 # be found in the LICENSE file. | |
| 6 | |
| 7 # This script is intended to build a mipsel-linux-gnu cross compilation | |
| 8 # toolchain that runs on x86 linux and generates code for a little-endian, | |
| 9 # hard-float, mips32 target. | |
| 10 # | |
| 11 # It expects the host machine to have relatively recent versions of GMP (4.2.0 | |
| 12 # or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC. | |
| 13 # | |
| 14 # Common way to get those is: | |
| 15 # sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev | |
| 16 set -eu | |
|
Mark Seaborn
2012/10/04 15:10:46
Nit: add an empty line before this to separate it
| |
| 17 | |
| 18 arch="mips32" | |
| 19 | |
| 20 top_dir=`pwd` | |
| 21 bld_dir="$top_dir/obj" | |
|
Mark Seaborn
2012/10/04 15:10:46
Can you make these less cryptic, please? i.e. "bu
| |
| 22 tar_dir="$top_dir/tars" | |
| 23 src_dir="$top_dir/src" | |
| 24 ins_nam="mips-toolchain" | |
| 25 ins_dir="$top_dir/$ins_nam" | |
| 26 sys_dir="$ins_dir/sysroot" | |
| 27 | |
| 28 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
| |
| 29 | |
| 30 echo -n "cleaning up" | |
| 31 rm -rf $bld_dir | |
| 32 echo -n "." | |
| 33 rm -rf $sys_dir | |
| 34 echo -n "." | |
| 35 rm -rf $ins_dir | |
| 36 echo -n "." | |
| 37 rm -rf $src_dir | |
| 38 echo "done" | |
| 39 | |
| 40 # get the code | |
| 41 echo "downloading the sources" | |
| 42 | |
| 43 mkdir -p $tar_dir | |
| 44 cd $tar_dir | |
| 45 | |
| 46 | |
| 47 | |
| 48 if [ ! -f 'binutils-2.22.tar.bz2' ]; then | |
| 49 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
| |
| 50 fi | |
| 51 checksum=`sha1sum binutils-2.22.tar.bz2 | cut -d ' ' -f 1` | |
| 52 if [ "$checksum" != "65b304a0b9a53a686ce50a01173d1f40f8efe404" ]; then | |
| 53 echo "binutils-2.22.tar.bz2 sha1sum failed, file deleted" | |
|
Mark Seaborn
2012/10/04 15:10:46
Please indent blocks by 2 spaces
| |
| 54 rm -f binutils-2.22.tar.bz2 | |
| 55 exit | |
|
Mark Seaborn
2012/10/04 15:10:46
This should be "exit 1" since this is an error
| |
| 56 fi | |
| 57 | |
| 58 | |
| 59 | |
| 60 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
| |
| 61 wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.3/gcc-4.6.3.tar.bz2 | |
| 62 fi | |
| 63 checksum=`sha1sum gcc-4.6.3.tar.bz2 | cut -d ' ' -f 1` | |
| 64 if [ "$checksum" != "ce317ca5c8185b58bc9300182b534608c578637f" ]; then | |
| 65 echo "gcc-4.6.3.tar.bz2 sha1sum failed, file deleted" | |
| 66 rm -f gcc-4.6.3.tar.bz2 | |
| 67 exit | |
| 68 fi | |
| 69 | |
| 70 | |
| 71 | |
| 72 if [ ! -f 'linux-2.6.38.4.tar.gz' ]; then | |
| 73 wget http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/linux-2.6.38.4.tar.g z | |
| 74 fi | |
| 75 checksum=`sha1sum linux-2.6.38.4.tar.gz | cut -d ' ' -f 1` | |
| 76 if [ "$checksum" != "377fa5cf5f1d0c396759b1c4d147330e7e5b6d7f" ]; then | |
| 77 echo "linux-2.6.38.4.tar.gz sha1sum failed, file deleted" | |
| 78 rm -f linux-2.6.38.4.tar.gz | |
| 79 exit | |
| 80 fi | |
| 81 | |
| 82 | |
| 83 | |
| 84 if [ ! -f 'gdb-7.5.tar.gz' ]; then | |
| 85 wget http://ftp.gnu.org/gnu/gdb/gdb-7.5.tar.gz | |
| 86 fi | |
| 87 checksum=`sha1sum gdb-7.5.tar.gz | cut -d ' ' -f 1` | |
| 88 if [ "$checksum" != "57b58bc5b959e420d9aeb4cfeaa3b2fd7c685a10" ]; then | |
| 89 echo "gdb-7.5.tar.gz sha1sum failed, file deleted" | |
| 90 rm -f gdb-7.5.tar.gz | |
| 91 exit | |
| 92 fi | |
| 93 | |
| 94 svn export -r 20996 svn://svn.eglibc.org/branches/eglibc-2_14 eglibc-2_14 | |
| 95 | |
| 96 | |
| 97 | |
| 98 cd $top_dir | |
| 99 | |
| 100 #untar all | |
|
Mark Seaborn
2012/10/04 15:10:46
Please put a space after '#' in comments. And cap
| |
| 101 echo -n "unpacking the sources" | |
| 102 mkdir -p $src_dir | |
| 103 cd $src_dir | |
| 104 tar xjf $tar_dir/binutils-2.22.tar.bz2 | |
| 105 echo -n "." | |
| 106 tar xjf $tar_dir/gcc-4.6.3.tar.bz2 | |
| 107 echo -n "." | |
| 108 tar xzf $tar_dir/linux-2.6.38.4.tar.gz linux-2.6.38.4 | |
| 109 echo -n "." | |
| 110 tar xzf $tar_dir/gdb-7.5.tar.gz | |
| 111 echo -n "." | |
| 112 #tar xzf $tar_dir/eglibc-2_14.tar.gz | |
|
Mark Seaborn
2012/10/04 15:10:46
Please remove this commented-out line
| |
| 113 mv $tar_dir/eglibc-2_14 . | |
| 114 echo "done" | |
| 115 cd $top_dir | |
| 116 | |
| 117 #prepare the code | |
| 118 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
| |
| 119 | |
| 120 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_li ne, \"%s\", msg);" && FILE_NAME="$PWD/tc-mips.c" && sed -i "s/$OLD_TEXT/$NEW_TEX T/g" "$FILE_NAME" && cd - | |
| 121 | |
| 122 | |
| 123 #build the toolchain | |
| 124 echo "building the toolchain" | |
| 125 mkdir -p $bld_dir/binutils/ | |
| 126 cd $bld_dir/binutils/ | |
| 127 $src_dir/binutils-2.22/configure --prefix=$ins_dir --target=mipsel-linux-gnu --w ith-sysroot=$sys_dir | |
| 128 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
| |
| 129 make --jobs=3 install-binutils install-gas install-ld || exit 1 | |
| 130 mkdir -p $bld_dir/gcc/initial | |
|
Mark Seaborn
2012/10/04 15:10:46
For readability, can you separate the build of eac
| |
| 131 cd $bld_dir/gcc/initial | |
| 132 $src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgom p --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-m ips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enabl e-languages=c --with-newlib --without-headers --disable-shared --disable-threads --disable-libquadmath --disable-libatomic | |
| 133 make --jobs=3 all || exit 1 | |
| 134 make --jobs=3 install || exit 1 | |
| 135 cd $src_dir/linux-2.6.38.4 | |
| 136 make headers_install ARCH=mips INSTALL_HDR_PATH=$sys_dir/usr || exit 1 | |
| 137 export BUILD_CC=gcc | |
| 138 export AR=mipsel-linux-gnu-ar | |
| 139 export RANLIB=mipsel-linux-gnu-ranlib | |
| 140 export CC=mipsel-linux-gnu-gcc | |
| 141 export CXX=mipsel-linux-gnu-g++ | |
| 142 mkdir -p $bld_dir/eglibc/initial | |
| 143 cd $bld_dir/eglibc/initial | |
| 144 $src_dir/eglibc-2_14/libc/configure --prefix=/usr --with-headers=$sys_dir/usr/in clude --build=i686-pc-linux-gnu --host=mipsel-linux-gnu --disable-profile --with out-gd --without-cvs --enable-add-ons | |
| 145 make --jobs=3 install-headers install_root=$sys_dir install-bootstrap-headers=ye s || exit 1 | |
| 146 mkdir -p $sys_dir/usr/lib | |
| 147 make csu/subdir_lib && cp csu/crt1.o csu/crti.o csu/crtn.o $sys_dir/usr/lib || exit 1 | |
| 148 mipsel-linux-gnu-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $sys_dir/ usr/lib/libc.so | |
| 149 unset BUILD_CC AR RANLIB CC CXX | |
| 150 mkdir -p $bld_dir/gcc/intermediate | |
| 151 cd $bld_dir/gcc/intermediate | |
| 152 $src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgom p --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-m ips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enabl e-languages=c --with-sysroot=$sys_dir --disable-libquadmath --disable-libatomic | |
| 153 make --jobs=3 all || exit 1 | |
| 154 make --jobs=3 install || exit 1 | |
| 155 export BUILD_CC=gcc | |
| 156 export AR=mipsel-linux-gnu-ar | |
| 157 export RANLIB=mipsel-linux-gnu-ranlib | |
| 158 export CC=mipsel-linux-gnu-gcc | |
| 159 export CXX=mipsel-linux-gnu-g++ | |
| 160 mkdir -p $bld_dir/eglibc/final | |
| 161 cd $bld_dir/eglibc/final | |
| 162 $src_dir/eglibc-2_14/libc/configure --prefix=/usr --with-headers=$sys_dir/usr/in clude --build=i686-pc-linux-gnu --host=mipsel-linux-gnu --disable-profile --with out-gd --without-cvs --enable-add-ons | |
| 163 make --jobs=3 all || exit 1 | |
| 164 make --jobs=3 install install_root=$sys_dir || exit 1 | |
| 165 unset BUILD_CC AR RANLIB CC CXX | |
| 166 mkdir -p $bld_dir/gcc/final | |
| 167 cd $bld_dir/gcc/final | |
| 168 $src_dir/gcc-4.6.3/configure --prefix=$ins_dir --disable-libssp --disable-libgom p --disable-libmudflap --disable-fixed-point --disable-decimal-float --with-m ips-plt --with-endian=little --with-arch=$arch --target=mipsel-linux-gnu --enabl e-languages=c,c++ --with-sysroot=$sys_dir --enable-__cxa_atexit | |
| 169 make --jobs=3 all || exit 1 | |
| 170 make --jobs=3 install || exit 1 | |
| 171 mkdir -p $bld_dir/gdb/ | |
| 172 cd $bld_dir/gdb/ | |
| 173 $src_dir/gdb-7.5/configure --prefix=$ins_dir --target=mipsel-linux-gnu | |
| 174 make --jobs=3 all-gdb | |
| 175 make --jobs=3 install-gdb | |
| 176 echo "done" | |
| 177 | |
| 178 #Make toolchain tarball | |
| 179 echo -n "packing the toolchain..." | |
| 180 cd $top_dir | |
| 181 tar czf mips-toolchain.tar.gz $ins_nam | |
| 182 | |
| 183 echo "done" | |
| 184 echo | |
| OLD | NEW |