OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [build_mips_toolchain/] [build_mips_toolchain] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
#!/bin/sh
2
# this script was written by Sergio Johann Filho [sergio.johann@acad.pucrs.br]
3
#
4
# mods performed on GCC sources for the MIPS I target (new flags added):
5
# -mpatfree - don't use patented MIPS instructions (swl, swr, lwl, lwr)
6
# -mnohwmult - don't generate multiplication instructions (mult, multu)
7
# -mnohwdiv - don't generate division instructions (div, divu)
8
#
9
# in order to build the toolchain, we need some basic tools:
10
# flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential libncurses5-dev
11
#
12
# you don't need to run this script as root. after completion, just move the
13
# mips-elf/ directory to its place (e.g /usr/local) and add the tools directory
14
# to the PATH environment variable (export $PATH:=$PATH:/usr/local/mips-elf/
15
# gcc-4.9.3/bin). alternatively, the compiler may be left anywhere in the user
16
# home directory.
17
#
18
# to test the toolchain:
19
#
20
# mips-elf-gcc -Tidt.ld hello.c -o hello
21
# mips-elf-run hello
22
#
23
# to run under the control of gdb:
24
#
25
# mips-elf-gdb hello
26
#   break main
27
#   target sim
28
#   load
29
#   run
30
#   next
31
#   next
32
#   quit
33
#
34
 
35
binutils_base="binutils-2.27"
36
gcc_base="gcc-4.9.3"
37
newlib_base="newlib-2.2.0"
38
gdb_base="gdb-7.9.1"
39
 
40
root_dir=`pwd`
41
 
42
TARGET=mips-elf
43
PREFIX=${root_dir}/$TARGET/${gcc_base}
44
BUILD=i686-linux-gnu
45
 
46
# setup our toolchain new path
47
export PATH=$PREFIX/bin:$PATH
48
 
49
dl_dir="${root_dir}/download"
50
src_dir="${root_dir}/source"
51
bld_dir="${root_dir}/build"
52
install_dir="${root_dir}/install"
53
 
54
mkdir $src_dir
55
mkdir $bld_dir
56
mkdir $install_dir
57
mkdir $dl_dir
58
 
59
# download all sources
60
cd $dl_dir
61
wget -c ftp://ftp.gnu.org/gnu/binutils/${binutils_base}.tar.bz2
62
wget -c ftp://ftp.gnu.org/gnu/gcc/${gcc_base}/${gcc_base}.tar.bz2
63
wget -c ftp://sources.redhat.com/pub/newlib/${newlib_base}.tar.gz
64
wget -c ftp://ftp.gnu.org/gnu/gdb/${gdb_base}.tar.gz
65
 
66
# unpack everything
67
cd $src_dir
68
tar -jxvf ${dl_dir}/"${binutils_base}.tar.bz2"
69
tar -jxvf ${dl_dir}/"${gcc_base}.tar.bz2"
70
tar -zxvf ${dl_dir}/"${newlib_base}.tar.gz"
71
tar -zxvf ${dl_dir}/"${gdb_base}.tar.gz"
72
 
73
# patch GCC
74
cp ${root_dir}/mips.c ${src_dir}/${gcc_base}/gcc/config/mips/
75
cp ${root_dir}/mips.md ${src_dir}/${gcc_base}/gcc/config/mips/
76
cp ${root_dir}/mips.opt ${src_dir}/${gcc_base}/gcc/config/mips/
77
 
78
#
79
# build binutils
80
#
81
cd $bld_dir
82
mkdir $binutils_base
83
cd $binutils_base
84
${src_dir}/${binutils_base}/configure --prefix=$PREFIX --target=$TARGET
85
        --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld \
86
        --disable-nls --disable-werror
87
make
88
make install
89
 
90
#
91
# build GCC
92
#
93
cd ${src_dir}/${gcc_base}
94
./contrib/download_prerequisites
95
 
96
cd $bld_dir
97
mkdir ${gcc_base}-initial
98
cd ${gcc_base}-initial
99
${src_dir}/${gcc_base}/configure --prefix=$PREFIX --target=$TARGET \
100
        --with-gnu-as --with-gnu-ld --enable-languages=c \
101
        --with-newlib --without-headers
102
make
103
make install
104
 
105
# build libgcc.a
106
make all-target-libgcc CFLAGS_FOR_TARGET="-g -O2 -mpatfree"
107
make install-target-libgcc
108
 
109
#
110
# build newlib
111
#
112
cd $bld_dir
113
mkdir $newlib_base
114
cd $newlib_base
115
${src_dir}/${newlib_base}/configure --prefix=$PREFIX --target=$TARGET \
116
        --disable-newlib-supplied-syscalls CFLAGS_FOR_TARGET="-mpatfree"
117
make
118
make install
119
 
120
#
121
# build GDB
122
#
123
cd $bld_dir
124
mkdir $gdb_base
125
cd $gdb_base
126
${src_dir}/${gdb_base}/configure --prefix=$PREFIX --target=$TARGET
127
make
128
make install
129
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.