Subversion Repositories HelenOS

Rev

Rev 2073 | Rev 2131 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2073 Rev 2125
1
#!/bin/bash
1
#!/bin/bash
2
 
2
 
3
# Cross-Compiler Toolchain for ${PLATFORM}
3
# Cross-Compiler Toolchain for ${PLATFORM}
4
#  by Martin Decky <martin@decky.cz>
4
#  by Martin Decky <martin@decky.cz>
5
#
5
#
6
#  GPL'ed, copyleft
6
#  GPL'ed, copyleft
7
#
7
#
8
 
8
 
9
 
9
 
10
check_error() {
10
check_error() {
11
    if [ "$1" -ne "0" ]; then
11
    if [ "$1" -ne "0" ]; then
12
    echo
12
    echo
13
    echo "Script failed: $2"
13
    echo "Script failed: $2"
14
    exit
14
    exit
15
    fi
15
    fi
16
}
16
}
17
 
17
 
18
BINUTILS_VERSION="2.17"
18
BINUTILS_VERSION="2.17"
19
GCC_VERSION="4.1.1"
19
GCC_VERSION="4.1.1"
20
 
20
 
21
BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz"
21
BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz"
22
GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
22
GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
23
GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
23
GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
24
GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
24
GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
25
 
25
 
26
BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
26
BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
27
GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
27
GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
28
 
28
 
29
PLATFORM="i686"
29
PLATFORM="i686"
30
WORKDIR=`pwd`
30
WORKDIR=`pwd`
31
TARGET="${PLATFORM}-pc-linux-gnu"
31
TARGET="${PLATFORM}-pc-linux-gnu"
32
HOST="i686-pc-linux-gnu"
32
HOST="i686-pc-linux-gnu"
33
PREFIX="/usr/local/${PLATFORM}"
33
PREFIX="/usr/local/${PLATFORM}"
34
BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
34
BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
35
GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
35
GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
36
OBJDIR="${WORKDIR}/gcc-obj"
36
OBJDIR="${WORKDIR}/gcc-obj"
37
 
37
 
38
echo ">>> Downloading tarballs"
38
echo ">>> Downloading tarballs"
39
 
39
 
40
if [ ! -f "${BINUTILS}" ]; then
40
if [ ! -f "${BINUTILS}" ]; then
41
    wget -c "${BINUTILS_SOURCE}${BINUTILS}"
41
    wget -c "${BINUTILS_SOURCE}${BINUTILS}"
42
    check_error $? "Error downloading binutils."
42
    check_error $? "Error downloading binutils."
43
fi
43
fi
44
if [ ! -f "${GCC_CORE}" ]; then
44
if [ ! -f "${GCC_CORE}" ]; then
45
    wget -c "${GCC_SOURCE}${GCC_CORE}"
45
    wget -c "${GCC_SOURCE}${GCC_CORE}"
46
    check_error $? "Error downloading GCC Core."
46
    check_error $? "Error downloading GCC Core."
47
fi
47
fi
48
if [ ! -f "${GCC_OBJC}" ]; then
48
if [ ! -f "${GCC_OBJC}" ]; then
49
    wget -c "${GCC_SOURCE}${GCC_OBJC}"
49
    wget -c "${GCC_SOURCE}${GCC_OBJC}"
50
    check_error $? "Error downloading GCC Objective C."
50
    check_error $? "Error downloading GCC Objective C."
51
fi
51
fi
52
if [ ! -f "${GCC_CPP}" ]; then
52
if [ ! -f "${GCC_CPP}" ]; then
53
    wget -c "${GCC_SOURCE}${GCC_CPP}"
53
    wget -c "${GCC_SOURCE}${GCC_CPP}"
54
    check_error $? "Error downloading GCC C++."
54
    check_error $? "Error downloading GCC C++."
55
fi
55
fi
56
 
56
 
57
echo ">>> Creating destionation directory"
57
echo ">>> Creating destionation directory"
58
if [ ! -d "${PREFIX}" ]; then
58
if [ ! -d "${PREFIX}" ]; then
59
    mkdir -p "${PREFIX}"
59
    mkdir -p "${PREFIX}"
60
    test -d "${PREFIX}"
60
    test -d "${PREFIX}"
61
    check_error $? "Unable to create ${PREFIX}."
61
    check_error $? "Unable to create ${PREFIX}."
62
fi
62
fi
63
 
63
 
64
echo ">>> Creating GCC work directory"
64
echo ">>> Creating GCC work directory"
65
if [ ! -d "${OBJDIR}" ]; then
65
if [ ! -d "${OBJDIR}" ]; then
66
    mkdir -p "${OBJDIR}"
66
    mkdir -p "${OBJDIR}"
67
    test -d "${OBJDIR}"
67
    test -d "${OBJDIR}"
68
    check_error $? "Unable to create ${OBJDIR}."
68
    check_error $? "Unable to create ${OBJDIR}."
69
fi
69
fi
70
 
70
 
71
echo ">>> Unpacking tarballs"
71
echo ">>> Unpacking tarballs"
72
tar -xvzf "${BINUTILS}"
72
tar -xvzf "${BINUTILS}"
73
check_error $? "Error unpacking binutils."
73
check_error $? "Error unpacking binutils."
74
tar -xvjf "${GCC_CORE}"
74
tar -xvjf "${GCC_CORE}"
75
check_error $? "Error unpacking GCC Core."
75
check_error $? "Error unpacking GCC Core."
76
tar -xvjf "${GCC_OBJC}"
76
tar -xvjf "${GCC_OBJC}"
77
check_error $? "Error unpacking GCC Objective C."
77
check_error $? "Error unpacking GCC Objective C."
78
tar -xvjf "${GCC_CPP}"
78
tar -xvjf "${GCC_CPP}"
79
check_error $? "Error unpacking GCC C++."
79
check_error $? "Error unpacking GCC C++."
80
 
80
 
81
echo ">>> Compiling and installing binutils"
81
echo ">>> Compiling and installing binutils"
82
cd "${BINUTILSDIR}"
82
cd "${BINUTILSDIR}"
83
check_error $? "Change directory failed."
83
check_error $? "Change directory failed."
84
./configure "--host=${HOST}" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
84
./configure "--host=${HOST}" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
85
check_error $? "Error configuring binutils."
85
check_error $? "Error configuring binutils."
86
make all install
86
make all install
87
check_error $? "Error compiling/installing binutils."
87
check_error $? "Error compiling/installing binutils."
88
 
88
 
89
echo ">>> Compiling and installing GCC"
89
echo ">>> Compiling and installing GCC"
90
cd "${OBJDIR}"
90
cd "${OBJDIR}"
91
check_error $? "Change directory failed."
91
check_error $? "Change directory failed."
92
"${GCCDIR}/configure" "--host=${HOST}" "--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
92
"${GCCDIR}/configure" "--host=${HOST}" "--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
93
check_error $? "Error configuring GCC."
93
check_error $? "Error configuring GCC."
94
PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
94
PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc all-target-libobjc install-target-libobjc
95
check_error $? "Error compiling/installing GCC."
95
check_error $? "Error compiling/installing GCC."
96
 
96
 
97
echo
97
echo
98
echo ">>> Cross-compiler for ${TARGET} installed."
98
echo ">>> Cross-compiler for ${TARGET} installed."
99
 
99