Changes in tools/toolchain.sh [603c8740:9d5bb4e] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/toolchain.sh

    r603c8740 r9d5bb4e  
    2929#
    3030
    31 GMP_MAIN=<<EOF
    32 #define GCC_GMP_VERSION_NUM(a, b, c) \
    33         (((a) << 16L) | ((b) << 8) | (c))
    34 
    35 #define GCC_GMP_VERSION \
    36         GCC_GMP_VERSION_NUM(__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL)
    37 
    38 #if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,3,2)
    39         choke me
    40 #endif
    41 EOF
    42 
    43 MPFR_MAIN=<<EOF
    44 #if MPFR_VERSION < MPFR_VERSION_NUM(2, 4, 2)
    45 choke me
    46         #endif
    47 EOF
    48 
    49 MPC_MAIN=<<EOF
    50 #if MPC_VERSION < MPC_VERSION_NUM(0, 8, 1)
    51         choke me
    52 #endif
    53 EOF
    54 
    55 BINUTILS_VERSION="2.21"
    56 GCC_VERSION="4.6.0"
    57 
    58 BASEDIR="`pwd`"
    59 BINUTILS="binutils-${BINUTILS_VERSION}.tar.bz2"
    60 GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
    61 GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
    62 GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
    63 
    64 #
    65 # Check if the library described in the argument
    66 # exists and has acceptable version.
    67 #
    68 check_dependency() {
    69         DEPENDENCY="$1"
    70         HEADER="$2"
    71         BODY="$3"
    72        
    73         FNAME="/tmp/conftest-$$"
    74        
    75         echo "#include ${HEADER}" > "${FNAME}.c"
    76         echo >> "${FNAME}.c"
    77         echo "int main()" >> "${FNAME}.c"
    78         echo "{" >> "${FNAME}.c"
    79         echo "${BODY}" >> "${FNAME}.c"
    80         echo "  return 0;" >> "${FNAME}.c"
    81         echo "}" >> "${FNAME}.c"
    82        
    83         cc -c -o "${FNAME}.o" "${FNAME}.c" 2> "${FNAME}.log"
    84         RC="$?"
    85        
    86         if [ "$RC" -ne "0" ] ; then
    87                 echo " ${DEPENDENCY} not found, too old or compiler error."
    88                 echo " Please recheck manually the source file \"${FNAME}.c\"."
    89                 echo " The compilation of the toolchain is probably going to fail,"
    90                 echo " you have been warned."
    91                 echo
    92                 echo " ===== Compiler output ====="
    93                 cat "${FNAME}.log"
    94                 echo " ==========================="
    95                 echo
    96         else
    97                 echo " ${DEPENDENCY} found"
    98                 rm -f "${FNAME}.log" "${FNAME}.o" "${FNAME}.c"
    99         fi
    100 }
    101 
    102 check_dependecies() {
    103         echo ">>> Basic dependency check"
    104         check_dependency "GMP" "<gmp.h>" "${GMP_MAIN}"
    105         check_dependency "MPFR" "<mpfr.h>" "${MPFR_MAIN}"
    106         check_dependency "MPC" "<mpc.h>" "${MPC_MAIN}"
    107         echo
    108 }
    109 
    11031check_error() {
    11132        if [ "$1" -ne "0" ]; then
     
    14162        echo " ia32       IA-32 (x86, i386)"
    14263        echo " ia64       IA-64 (Itanium)"
    143         echo " mips32     MIPS little-endian 32b"
    144         echo " mips32eb   MIPS big-endian 32b"
    145         echo " mips64     MIPS little-endian 64b"
     64        echo " mips32     MIPS little-endian"
     65        echo " mips32eb   MIPS big-endian"
    14666        echo " ppc32      32-bit PowerPC"
    14767        echo " ppc64      64-bit PowerPC"
    14868        echo " sparc64    SPARC V9"
    14969        echo " all        build all targets"
    150         echo " parallel   same as 'all', but in parallel"
    151         echo
    152         echo "The toolchain will be installed to the directory specified by"
    153         echo "the CROSS_PREFIX environment variable. If the variable is not"
    154         echo "defined, /usr/local/cross will be used by default."
    15570        echo
    15671       
     
    202117        echo " - native C library with headers"
    203118        echo
    204 }
    205 
    206 download_fetch() {
     119       
     120        show_countdown 10
     121}
     122
     123download_check() {
    207124        SOURCE="$1"
    208125        FILE="$2"
     
    218135}
    219136
    220 source_check() {
    221         FILE="$1"
    222        
    223         if [ ! -f "${FILE}" ]; then
    224                 echo
    225                 echo "File ${FILE} not found."
    226                
    227                 exit 4
    228         fi
    229 }
    230 
    231137cleanup_dir() {
    232138        DIR="$1"
     
    262168}
    263169
    264 prepare() {
    265         show_dependencies
    266         check_dependecies
    267         show_countdown 10
    268        
    269         BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
    270         GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
    271        
    272         download_fetch "${BINUTILS_SOURCE}" "${BINUTILS}" "c84c5acc9d266f1a7044b51c85a823f5"
    273         download_fetch "${GCC_SOURCE}" "${GCC_CORE}" "b1957f3209080b2f55bc3756d3a62b7c"
    274         download_fetch "${GCC_SOURCE}" "${GCC_OBJC}" "120d4675366ee82ea52f9ed65b57da04"
    275         download_fetch "${GCC_SOURCE}" "${GCC_CPP}" "a30090fa655d0db4c970740d353c81f1"
     170patch_binutils() {
     171        PLATFORM="$1"
     172       
     173        if [ "${PLATFORM}" == "arm32" ] ; then
     174                patch -p1 <<EOF
     175diff -Naur binutils-2.20.orig/gas/config/tc-arm.c binutils-2.20/gas/config/tc-arm.c
     176--- binutils-2.20.orig/gas/config/tc-arm.c      2009-08-30 00:10:59.000000000 +0200
     177+++ binutils-2.20/gas/config/tc-arm.c   2009-11-02 14:25:11.000000000 +0100
     178@@ -2485,8 +2485,9 @@
     179       know (frag->tc_frag_data.first_map == NULL);
     180       frag->tc_frag_data.first_map = symbolP;
     181     }
     182-  if (frag->tc_frag_data.last_map != NULL)
     183+  if (frag->tc_frag_data.last_map != NULL) {
     184     know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP));
     185+  }
     186   frag->tc_frag_data.last_map = symbolP;
     187 }
     188EOF
     189                check_error $? "Error patching binutils"
     190        fi
    276191}
    277192
     
    280195        TARGET="$2"
    281196       
    282         WORKDIR="${BASEDIR}/${PLATFORM}"
     197        BINUTILS_VERSION="2.20"
     198        GCC_VERSION="4.5.1"
     199       
     200        BINUTILS="binutils-${BINUTILS_VERSION}.tar.bz2"
     201        GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
     202        GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
     203        GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
     204       
     205        BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
     206        GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
     207       
     208        WORKDIR="`pwd`"
    283209        BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
    284210        GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
     
    286212       
    287213        if [ -z "${CROSS_PREFIX}" ] ; then
    288                 CROSS_PREFIX="/usr/local/cross"
     214                CROSS_PREFIX="/usr/local"
    289215        fi
    290216       
     
    292218       
    293219        echo ">>> Downloading tarballs"
    294         source_check "${BASEDIR}/${BINUTILS}"
    295         source_check "${BASEDIR}/${GCC_CORE}"
    296         source_check "${BASEDIR}/${GCC_OBJC}"
    297         source_check "${BASEDIR}/${GCC_CPP}"
     220        download_check "${BINUTILS_SOURCE}" "${BINUTILS}" "ee2d3e996e9a2d669808713360fa96f8"
     221        download_check "${GCC_SOURCE}" "${GCC_CORE}" "dc8959e31b01a65ce10d269614815054"
     222        download_check "${GCC_SOURCE}" "${GCC_OBJC}" "3c11b7037896e967eddf8178af2ddd98"
     223        download_check "${GCC_SOURCE}" "${GCC_CPP}" "b294953ff0bb2f20c7acb2bf005d832a"
    298224       
    299225        echo ">>> Removing previous content"
    300226        cleanup_dir "${PREFIX}"
    301         cleanup_dir "${WORKDIR}"
     227        cleanup_dir "${OBJDIR}"
     228        cleanup_dir "${BINUTILSDIR}"
     229        cleanup_dir "${GCCDIR}"
    302230       
    303231        create_dir "${PREFIX}" "destination directory"
     
    305233       
    306234        echo ">>> Unpacking tarballs"
    307         cd "${WORKDIR}"
    308         check_error $? "Change directory failed."
    309        
    310         unpack_tarball "${BASEDIR}/${BINUTILS}" "binutils"
    311         unpack_tarball "${BASEDIR}/${GCC_CORE}" "GCC Core"
    312         unpack_tarball "${BASEDIR}/${GCC_OBJC}" "Objective C"
    313         unpack_tarball "${BASEDIR}/${GCC_CPP}" "C++"
     235        unpack_tarball "${BINUTILS}" "binutils"
     236        unpack_tarball "${GCC_CORE}" "GCC Core"
     237        unpack_tarball "${GCC_OBJC}" "Objective C"
     238        unpack_tarball "${GCC_CPP}" "C++"
    314239       
    315240        echo ">>> Processing binutils (${PLATFORM})"
    316241        cd "${BINUTILSDIR}"
    317242        check_error $? "Change directory failed."
     243        patch_binutils "${PLATFORM}"
    318244       
    319245        change_title "binutils: configure (${PLATFORM})"
     
    337263        check_error $? "Error compiling/installing GCC."
    338264       
    339         cd "${BASEDIR}"
     265        cd "${WORKDIR}"
    340266        check_error $? "Change directory failed."
    341267       
    342268        echo ">>> Cleaning up"
    343         cleanup_dir "${WORKDIR}"
     269        cleanup_dir "${OBJDIR}"
     270        cleanup_dir "${BINUTILSDIR}"
     271        cleanup_dir "${GCCDIR}"
    344272       
    345273        echo
     
    351279fi
    352280
     281show_dependencies
     282
    353283case "$1" in
    354284        "amd64")
    355                 prepare
    356285                build_target "amd64" "amd64-linux-gnu"
    357286                ;;
    358287        "arm32")
    359                 prepare
    360288                build_target "arm32" "arm-linux-gnu"
    361289                ;;
    362290        "ia32")
    363                 prepare
    364291                build_target "ia32" "i686-pc-linux-gnu"
    365292                ;;
    366293        "ia64")
    367                 prepare
    368294                build_target "ia64" "ia64-pc-linux-gnu"
    369295                ;;
     296        "ia64")
     297                build_target "ia64" "ia64-pc-linux-gnu"
     298                ;;
    370299        "mips32")
    371                 prepare
    372300                build_target "mips32" "mipsel-linux-gnu"
    373301                ;;
    374302        "mips32eb")
    375                 prepare
    376303                build_target "mips32eb" "mips-linux-gnu"
    377304                ;;
    378         "mips64")
    379                 prepare
    380                 build_target "mips64" "mips64el-linux-gnu"
    381                 ;;
    382305        "ppc32")
    383                 prepare
    384306                build_target "ppc32" "ppc-linux-gnu"
    385307                ;;
    386308        "ppc64")
    387                 prepare
    388309                build_target "ppc64" "ppc64-linux-gnu"
    389310                ;;
    390311        "sparc64")
    391                 prepare
    392312                build_target "sparc64" "sparc64-linux-gnu"
    393313                ;;
    394314        "all")
    395                 prepare
    396315                build_target "amd64" "amd64-linux-gnu"
    397316                build_target "arm32" "arm-linux-gnu"
    398317                build_target "ia32" "i686-pc-linux-gnu"
    399318                build_target "ia64" "ia64-pc-linux-gnu"
     319                build_target "ia64" "ia64-pc-linux-gnu"
    400320                build_target "mips32" "mipsel-linux-gnu"
    401321                build_target "mips32eb" "mips-linux-gnu"
    402                 build_target "mips64" "mips64el-linux-gnu"
    403322                build_target "ppc32" "ppc-linux-gnu"
    404323                build_target "ppc64" "ppc64-linux-gnu"
    405324                build_target "sparc64" "sparc64-linux-gnu"
    406325                ;;
    407         "parallel")
    408                 prepare
    409                 build_target "amd64" "amd64-linux-gnu" &
    410                 build_target "arm32" "arm-linux-gnu" &
    411                 build_target "ia32" "i686-pc-linux-gnu" &
    412                 build_target "ia64" "ia64-pc-linux-gnu" &
    413                 build_target "mips32" "mipsel-linux-gnu" &
    414                 build_target "mips32eb" "mips-linux-gnu" &
    415                 build_target "mips64" "mips64el-linux-gnu" &
    416                 build_target "ppc32" "ppc-linux-gnu" &
    417                 build_target "ppc64" "ppc64-linux-gnu" &
    418                 build_target "sparc64" "sparc64-linux-gnu" &
    419                 wait
    420                 ;;
    421326        *)
    422327                show_usage
Note: See TracChangeset for help on using the changeset viewer.