source: mainline/contrib/toolchain/toolchain.mipseb32.sh@ 7f341820

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 7f341820 was d4668392, checked in by Martin Decky <martin@…>, 17 years ago

unify binutils and GCC versions in toolchain scripts

  • Property mode set to 100755
File size: 3.5 KB
Line 
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
10check_error() {
11 if [ "$1" -ne "0" ]; then
12 echo
13 echo "Script failed: $2"
14 exit
15 fi
16}
17
18if [ -z "${CROSS_PREFIX}" ] ; then
19 CROSS_PREFIX="/usr/local"
20fi
21
22BINUTILS_VERSION="2.19"
23GCC_VERSION="4.3.2"
24
25BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz"
26GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
27GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
28GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
29
30BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
31GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
32
33PLATFORM="mips"
34WORKDIR=`pwd`
35TARGET="${PLATFORM}-sgi-irix5"
36PREFIX="${CROSS_PREFIX}/${PLATFORM}"
37BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
38GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
39OBJDIR="${WORKDIR}/gcc-obj"
40
41echo ">>> Downloading tarballs"
42
43if [ ! -f "${BINUTILS}" ]; then
44 wget -c "${BINUTILS_SOURCE}${BINUTILS}"
45 check_error $? "Error downloading binutils."
46fi
47if [ ! -f "${GCC_CORE}" ]; then
48 wget -c "${GCC_SOURCE}${GCC_CORE}"
49 check_error $? "Error downloading GCC Core."
50fi
51if [ ! -f "${GCC_OBJC}" ]; then
52 wget -c "${GCC_SOURCE}${GCC_OBJC}"
53 check_error $? "Error downloading GCC Objective C."
54fi
55if [ ! -f "${GCC_CPP}" ]; then
56 wget -c "${GCC_SOURCE}${GCC_CPP}"
57 check_error $? "Error downloading GCC C++."
58fi
59
60echo ">>> Creating destionation directory"
61if [ ! -d "${PREFIX}" ]; then
62 mkdir -p "${PREFIX}"
63 test -d "${PREFIX}"
64 check_error $? "Unable to create ${PREFIX}."
65fi
66
67echo ">>> Creating GCC work directory"
68if [ ! -d "${OBJDIR}" ]; then
69 mkdir -p "${OBJDIR}"
70 test -d "${OBJDIR}"
71 check_error $? "Unable to create ${OBJDIR}."
72fi
73
74echo ">>> Unpacking tarballs"
75tar -xvzf "${BINUTILS}"
76check_error $? "Error unpacking binutils."
77tar -xvjf "${GCC_CORE}"
78check_error $? "Error unpacking GCC Core."
79tar -xvjf "${GCC_OBJC}"
80check_error $? "Error unpacking GCC Objective C."
81tar -xvjf "${GCC_CPP}"
82check_error $? "Error unpacking GCC C++."
83
84echo ">>> Compiling and installing binutils"
85cd "${BINUTILSDIR}"
86check_error $? "Change directory failed."
87patch -p1 <<EOF
88diff -Naur binutils-2.19.orig/bfd/elfxx-mips.c binutils-2.19/bfd/elfxx-mips.c
89--- binutils-2.19.orig/bfd/elfxx-mips.c 2008-08-18 20:14:04.000000000 +0200
90+++ binutils-2.19/bfd/elfxx-mips.c 2009-01-18 18:14:47.292011299 +0100
91@@ -1409,7 +1409,7 @@
92 function, or 0 if we can't decide which function that is. */
93
94 static unsigned long
95-mips16_stub_symndx (asection *sec, const Elf_Internal_Rela *relocs,
96+mips16_stub_symndx (asection *sec __attribute__((unused)), const Elf_Internal_Rela *relocs,
97 const Elf_Internal_Rela *relend)
98 {
99 const Elf_Internal_Rela *rel;
100EOF
101check_error $? "Error patching binutils"
102./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
103check_error $? "Error configuring binutils."
104make all install
105check_error $? "Error compiling/installing binutils."
106
107echo ">>> Compiling and installing GCC"
108cd "${OBJDIR}"
109check_error $? "Change directory failed."
110"${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
111check_error $? "Error configuring GCC."
112PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
113check_error $? "Error compiling/installing GCC."
114
115echo
116echo ">>> Cross-compiler for ${TARGET} installed."
Note: See TracBrowser for help on using the repository browser.