Subversion Repositories HelenOS

Rev

Rev 3478 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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.  
  18. if [ -z "${CROSS_PREFIX}" ] ; then
  19.     CROSS_PREFIX="/usr/local"
  20. fi
  21.  
  22. BINUTILS_VERSION="2.18"
  23. GCC_VERSION="4.3.2"
  24. GDB_VERSION="6.8"
  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"
  30. GDB="gdb-${GDB_VERSION}.tar.bz2"
  31.  
  32. BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
  33. GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
  34. GDB_SOURCE="ftp://ftp.gnu.org/gnu/gdb/"
  35.  
  36. PLATFORM="arm"
  37. WORKDIR=`pwd`
  38. TARGET="${PLATFORM}-linux-gnu"
  39. PREFIX="${CROSS_PREFIX}/${PLATFORM}"
  40. BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
  41. GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
  42. OBJDIR="${WORKDIR}/gcc-obj"
  43. GDBDIR="${WORKDIR}/gdb-${GDB_VERSION}"
  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
  63. if [ ! -f "${GDB}" ]; then
  64.     wget -c "${GDB_SOURCE}${GDB}"
  65.     check_error $? "Error downloading GDB."
  66. fi
  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++."
  91. tar -xvjf "${GDB}"
  92. check_error $? "Error unpacking GDB."
  93.  
  94. echo ">>> Compiling and installing binutils"
  95. cd "${BINUTILSDIR}"
  96. check_error $? "Change directory failed."
  97. ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
  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."
  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
  106. check_error $? "Error configuring GCC."
  107. PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
  108. check_error $? "Error compiling/installing GCC."
  109.  
  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.  
  118. echo
  119. echo ">>> Cross-compiler and Debugger for ${TARGET} installed."
  120.