Changes in tools/toolchain.sh [603c8740:71e3289] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/toolchain.sh

    r603c8740 r71e3289  
    2828# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2929#
    30 
    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 }
    10930
    11031check_error() {
     
    14869        echo " sparc64    SPARC V9"
    14970        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."
    15571        echo
    15672       
     
    202118        echo " - native C library with headers"
    203119        echo
    204 }
    205 
    206 download_fetch() {
     120       
     121        show_countdown 10
     122}
     123
     124download_check() {
    207125        SOURCE="$1"
    208126        FILE="$2"
     
    218136}
    219137
    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 
    231138cleanup_dir() {
    232139        DIR="$1"
     
    262169}
    263170
    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"
     171patch_binutils() {
     172        PLATFORM="$1"
     173       
     174        if [ "${PLATFORM}" == "arm32" ] ; then
     175                patch -p1 <<EOF
     176diff -Naur binutils-2.20.orig/gas/config/tc-arm.c binutils-2.20/gas/config/tc-arm.c
     177--- binutils-2.20.orig/gas/config/tc-arm.c      2009-08-30 00:10:59.000000000 +0200
     178+++ binutils-2.20/gas/config/tc-arm.c   2009-11-02 14:25:11.000000000 +0100
     179@@ -2485,8 +2485,9 @@
     180       know (frag->tc_frag_data.first_map == NULL);
     181       frag->tc_frag_data.first_map = symbolP;
     182     }
     183-  if (frag->tc_frag_data.last_map != NULL)
     184+  if (frag->tc_frag_data.last_map != NULL) {
     185     know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP));
     186+  }
     187   frag->tc_frag_data.last_map = symbolP;
     188 }
     189EOF
     190                check_error $? "Error patching binutils"
     191        fi
    276192}
    277193
     
    280196        TARGET="$2"
    281197       
    282         WORKDIR="${BASEDIR}/${PLATFORM}"
     198        BINUTILS_VERSION="2.20"
     199        GCC_VERSION="4.5.1"
     200       
     201        BINUTILS="binutils-${BINUTILS_VERSION}.tar.bz2"
     202        GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
     203        GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
     204        GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
     205       
     206        BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
     207        GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
     208       
     209        WORKDIR="`pwd`"
    283210        BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
    284211        GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
     
    286213       
    287214        if [ -z "${CROSS_PREFIX}" ] ; then
    288                 CROSS_PREFIX="/usr/local/cross"
     215                CROSS_PREFIX="/usr/local"
    289216        fi
    290217       
     
    292219       
    293220        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}"
     221        download_check "${BINUTILS_SOURCE}" "${BINUTILS}" "ee2d3e996e9a2d669808713360fa96f8"
     222        download_check "${GCC_SOURCE}" "${GCC_CORE}" "dc8959e31b01a65ce10d269614815054"
     223        download_check "${GCC_SOURCE}" "${GCC_OBJC}" "3c11b7037896e967eddf8178af2ddd98"
     224        download_check "${GCC_SOURCE}" "${GCC_CPP}" "b294953ff0bb2f20c7acb2bf005d832a"
    298225       
    299226        echo ">>> Removing previous content"
    300227        cleanup_dir "${PREFIX}"
    301         cleanup_dir "${WORKDIR}"
     228        cleanup_dir "${OBJDIR}"
     229        cleanup_dir "${BINUTILSDIR}"
     230        cleanup_dir "${GCCDIR}"
    302231       
    303232        create_dir "${PREFIX}" "destination directory"
     
    305234       
    306235        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++"
     236        unpack_tarball "${BINUTILS}" "binutils"
     237        unpack_tarball "${GCC_CORE}" "GCC Core"
     238        unpack_tarball "${GCC_OBJC}" "Objective C"
     239        unpack_tarball "${GCC_CPP}" "C++"
    314240       
    315241        echo ">>> Processing binutils (${PLATFORM})"
    316242        cd "${BINUTILSDIR}"
    317243        check_error $? "Change directory failed."
     244        patch_binutils "${PLATFORM}"
    318245       
    319246        change_title "binutils: configure (${PLATFORM})"
     
    337264        check_error $? "Error compiling/installing GCC."
    338265       
    339         cd "${BASEDIR}"
     266        cd "${WORKDIR}"
    340267        check_error $? "Change directory failed."
    341268       
    342269        echo ">>> Cleaning up"
    343         cleanup_dir "${WORKDIR}"
     270        cleanup_dir "${OBJDIR}"
     271        cleanup_dir "${BINUTILSDIR}"
     272        cleanup_dir "${GCCDIR}"
    344273       
    345274        echo
     
    351280fi
    352281
     282show_dependencies
     283
    353284case "$1" in
    354285        "amd64")
    355                 prepare
    356286                build_target "amd64" "amd64-linux-gnu"
    357287                ;;
    358288        "arm32")
    359                 prepare
    360289                build_target "arm32" "arm-linux-gnu"
    361290                ;;
    362291        "ia32")
    363                 prepare
    364292                build_target "ia32" "i686-pc-linux-gnu"
    365293                ;;
    366294        "ia64")
    367                 prepare
    368295                build_target "ia64" "ia64-pc-linux-gnu"
    369296                ;;
     297        "ia64")
     298                build_target "ia64" "ia64-pc-linux-gnu"
     299                ;;
    370300        "mips32")
    371                 prepare
    372301                build_target "mips32" "mipsel-linux-gnu"
    373302                ;;
    374303        "mips32eb")
    375                 prepare
    376304                build_target "mips32eb" "mips-linux-gnu"
    377305                ;;
    378306        "mips64")
    379                 prepare
    380307                build_target "mips64" "mips64el-linux-gnu"
    381308                ;;
    382309        "ppc32")
    383                 prepare
    384310                build_target "ppc32" "ppc-linux-gnu"
    385311                ;;
    386312        "ppc64")
    387                 prepare
    388313                build_target "ppc64" "ppc64-linux-gnu"
    389314                ;;
    390315        "sparc64")
    391                 prepare
    392316                build_target "sparc64" "sparc64-linux-gnu"
    393317                ;;
    394318        "all")
    395                 prepare
    396319                build_target "amd64" "amd64-linux-gnu"
    397320                build_target "arm32" "arm-linux-gnu"
    398321                build_target "ia32" "i686-pc-linux-gnu"
     322                build_target "ia64" "ia64-pc-linux-gnu"
    399323                build_target "ia64" "ia64-pc-linux-gnu"
    400324                build_target "mips32" "mipsel-linux-gnu"
     
    405329                build_target "sparc64" "sparc64-linux-gnu"
    406330                ;;
    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                 ;;
    421331        *)
    422332                show_usage
Note: See TracChangeset for help on using the changeset viewer.