Subversion Repositories HelenOS

Rev

Rev 3478 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2128 jermar 1
#!/bin/bash
2
 
3
# Cross-Compiler Toolchain for ${PLATFORM}
4
#  by Martin Decky <martin@decky.cz>
5
#
6
#  GPL'ed, copyleft
7
#
8
 
9
 
10
check_error() {
11
    if [ "$1" -ne "0" ]; then
12
    echo
13
    echo "Script failed: $2"
14
    exit
15
    fi
16
}
17
 
3369 decky 18
if [ -z "${CROSS_PREFIX}" ] ; then
19
    CROSS_PREFIX="/usr/local"
20
fi
21
 
2578 jermar 22
BINUTILS_VERSION="2.18"
3389 jermar 23
GCC_VERSION="4.3.2"
3759 pillai 24
GDB_VERSION="6.8"
2128 jermar 25
 
26
BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz"
27
GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
28
GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
29
GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
3759 pillai 30
GDB="gdb-${GDB_VERSION}.tar.bz2"
2128 jermar 31
 
32
BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
33
GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
3759 pillai 34
GDB_SOURCE="ftp://ftp.gnu.org/gnu/gdb/"
2128 jermar 35
 
36
PLATFORM="arm"
37
WORKDIR=`pwd`
38
TARGET="${PLATFORM}-linux-gnu"
3369 decky 39
PREFIX="${CROSS_PREFIX}/${PLATFORM}"
2128 jermar 40
BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
41
GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
42
OBJDIR="${WORKDIR}/gcc-obj"
3759 pillai 43
GDBDIR="${WORKDIR}/gdb-${GDB_VERSION}"
2128 jermar 44
 
45
echo ">>> Downloading tarballs"
46
 
47
if [ ! -f "${BINUTILS}" ]; then
48
    wget -c "${BINUTILS_SOURCE}${BINUTILS}"
49
    check_error $? "Error downloading binutils."
50
fi
51
if [ ! -f "${GCC_CORE}" ]; then
52
    wget -c "${GCC_SOURCE}${GCC_CORE}"
53
    check_error $? "Error downloading GCC Core."
54
fi
55
if [ ! -f "${GCC_OBJC}" ]; then
56
    wget -c "${GCC_SOURCE}${GCC_OBJC}"
57
    check_error $? "Error downloading GCC Objective C."
58
fi
59
if [ ! -f "${GCC_CPP}" ]; then
60
    wget -c "${GCC_SOURCE}${GCC_CPP}"
61
    check_error $? "Error downloading GCC C++."
62
fi
3759 pillai 63
if [ ! -f "${GDB}" ]; then
64
    wget -c "${GDB_SOURCE}${GDB}"
65
    check_error $? "Error downloading GDB."
66
fi
2128 jermar 67
 
68
echo ">>> Creating destionation directory"
69
if [ ! -d "${PREFIX}" ]; then
70
    mkdir -p "${PREFIX}"
71
    test -d "${PREFIX}"
72
    check_error $? "Unable to create ${PREFIX}."
73
fi
74
 
75
echo ">>> Creating GCC work directory"
76
if [ ! -d "${OBJDIR}" ]; then
77
    mkdir -p "${OBJDIR}"
78
    test -d "${OBJDIR}"
79
    check_error $? "Unable to create ${OBJDIR}."
80
fi
81
 
82
echo ">>> Unpacking tarballs"
83
tar -xvzf "${BINUTILS}"
84
check_error $? "Error unpacking binutils."
85
tar -xvjf "${GCC_CORE}"
86
check_error $? "Error unpacking GCC Core."
87
tar -xvjf "${GCC_OBJC}"
88
check_error $? "Error unpacking GCC Objective C."
89
tar -xvjf "${GCC_CPP}"
90
check_error $? "Error unpacking GCC C++."
3759 pillai 91
tar -xvjf "${GDB}"
92
check_error $? "Error unpacking GDB."
2128 jermar 93
 
94
echo ">>> Compiling and installing binutils"
95
cd "${BINUTILSDIR}"
96
check_error $? "Change directory failed."
2139 decky 97
./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
2128 jermar 98
check_error $? "Error configuring binutils."
99
make all install
100
check_error $? "Error compiling/installing binutils."
101
 
102
echo ">>> Compiling and installing GCC"
103
cd "${OBJDIR}"
104
check_error $? "Change directory failed."
2139 decky 105
"${GCCDIR}/configure" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --with-gnu-as --with-gnu-ld --disable-nls --disable-threads --enable-languages=c,objc,c++,obj-c++ --disable-multilib --disable-libgcj --without-headers --disable-shared
2128 jermar 106
check_error $? "Error configuring GCC."
107
PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
108
check_error $? "Error compiling/installing GCC."
109
 
3759 pillai 110
echo ">>> Compiling and installing Cross GDB for arm arch"
111
cd "${GDBDIR}"
112
check_error $? "Change directory failed."
113
./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--disable-nls" "--program-prefix=${TARGET}-"
114
check_error $? "Error configuring GDB."
115
PATH="${PATH}:${PREFIX}/bin" make all install
116
check_error $? "Error compiling/installing GDB."
117
 
2128 jermar 118
echo
3759 pillai 119
echo ">>> Cross-compiler and Debugger for ${TARGET} installed."