Changes in tools/toolchain.sh [12735849:b886b60] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/toolchain.sh

    r12735849 rb886b60  
    3636        GCC_GMP_VERSION_NUM(__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL)
    3737
    38 #if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4, 3, 2)
     38#if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,3,2)
    3939        choke me
    4040#endif
     
    5555BINUTILS_VERSION="2.23.1"
    5656BINUTILS_RELEASE=""
    57 BINUTILS_PATCHES="toolchain-binutils-2.23.1.patch"
    5857GCC_VERSION="4.8.1"
    59 GCC_PATCHES="toolchain-gcc-4.8.1-targets.patch toolchain-gcc-4.8.1-headers.patch"
    60 GDB_VERSION="7.6.1"
    61 GDB_PATCHES="toolchain-gdb-7.6.1.patch"
     58GDB_VERSION="7.6"
    6259
    6360BASEDIR="`pwd`"
    64 SRCDIR="$(readlink -f $(dirname "$0"))"
    6561BINUTILS="binutils-${BINUTILS_VERSION}${BINUTILS_RELEASE}.tar.bz2"
    6662GCC="gcc-${GCC_VERSION}.tar.bz2"
    6763GDB="gdb-${GDB_VERSION}.tar.bz2"
    68 
    69 REAL_INSTALL=true
    70 USE_HELENOS_TARGET=false
    71 INSTALL_DIR="${BASEDIR}/PKG"
    7264
    7365#
     
    143135        echo
    144136        echo "Syntax:"
    145         echo " $0 [--no-install] [--helenos-target] <platform>"
     137        echo " $0 <platform>"
    146138        echo
    147139        echo "Possible target platforms are:"
     
    156148        echo " ppc64      64-bit PowerPC"
    157149        echo " sparc64    SPARC V9"
     150        echo " sparc32    SPARC V8"
    158151        echo " all        build all targets"
    159152        echo " parallel   same as 'all', but all in parallel"
    160153        echo " 2-way      same as 'all', but 2-way parallel"
    161154        echo
    162         echo "The toolchain is installed into directory specified by the"
    163         echo "CROSS_PREFIX environment variable. If the variable is not"
    164         echo "defined, /usr/local/cross/ is used as default."
    165         echo
    166         echo "If --no-install is present, the toolchain still uses the"
    167         echo "CROSS_PREFIX as the target directory but the installation"
    168         echo "copies the files into PKG/ subdirectory without affecting"
    169         echo "the actual root file system. That is only useful if you do"
    170         echo "not want to run the script under the super user."
    171         echo
    172         echo "The --helenos-target will build HelenOS-specific toolchain"
    173         echo "(i.e. it will use *-helenos-* triplet instead of *-linux-*)."
    174         echo "This toolchain is installed into /usr/local/cross-helenos by"
    175         echo "default. The settings can be changed by setting environment"
    176         echo "variable CROSS_HELENOS_PREFIX."
    177         echo "Using the HelenOS-specific toolchain is still an experimental"
    178         echo "feature that is not fully supported."
     155        echo "The toolchain will be installed to the directory specified by"
     156        echo "the CROSS_PREFIX environment variable. If the variable is not"
     157        echo "defined, /usr/local/cross will be used by default."
    179158        echo
    180159       
     
    276255}
    277256
    278 check_dirs() {
    279         OUTSIDE="$1"
    280         BASE="$2"
    281         ORIGINAL="`pwd`"
    282        
    283         cd "${OUTSIDE}"
    284         check_error $? "Unable to change directory to ${OUTSIDE}."
    285         ABS_OUTSIDE="`pwd`"
    286        
    287         cd "${BASE}"
    288         check_error $? "Unable to change directory to ${BASE}."
    289         ABS_BASE="`pwd`"
    290        
    291         cd "${ORIGINAL}"
    292         check_error $? "Unable to change directory to ${ORIGINAL}."
    293        
    294         BASE_LEN="${#ABS_BASE}"
    295         OUTSIDE_TRIM="${ABS_OUTSIDE:0:${BASE_LEN}}"
    296        
    297         if [ "${OUTSIDE_TRIM}" == "${ABS_BASE}" ] ; then
    298                 echo
    299                 echo "CROSS_PREFIX cannot reside within the working directory."
    300                
    301                 exit 5
    302         fi
    303 }
    304 
    305257unpack_tarball() {
    306258        FILE="$1"
     
    312264        tar -xjf "${FILE}"
    313265        check_error $? "Error unpacking ${DESC}."
    314 }
    315 
    316 patch_sources() {
    317         PATCH_FILE="$1"
    318         PATCH_STRIP="$2"
    319         DESC="$3"
    320        
    321         change_title "Patching ${DESC}"
    322         echo " >>> Patching ${DESC} with ${PATCH_FILE}"
    323        
    324         patch -t "-p${PATCH_STRIP}" <"$PATCH_FILE"
    325         check_error $? "Error patching ${DESC}."
    326266}
    327267
     
    337277        download_fetch "${BINUTILS_SOURCE}" "${BINUTILS}" "33adb18c3048d057ac58d07a3f1adb38"
    338278        download_fetch "${GCC_SOURCE}" "${GCC}" "3b2386c114cd74185aa3754b58a79304"
    339         download_fetch "${GDB_SOURCE}" "${GDB}" "fbc4dab4181e6e9937075b43a4ce2732"
    340 }
    341 
    342 set_target_from_platform() {
    343         case "$1" in
    344                 "amd64")
    345                         LINUX_TARGET="amd64-linux-gnu"
    346                         HELENOS_TARGET="amd64-helenos"
    347                         ;;
    348                 "arm32")
    349                         LINUX_TARGET="arm-linux-gnueabi"
    350                         HELENOS_TARGET="arm-helenos-gnueabi"
    351                         ;;
    352                 "ia32")
    353                         LINUX_TARGET="i686-pc-linux-gnu"
    354                         HELENOS_TARGET="i686-pc-helenos"
    355                         ;;
    356                 "ia64")
    357                         LINUX_TARGET="ia64-pc-linux-gnu"
    358                         HELENOS_TARGET="ia64-pc-helenos"
    359                         ;;
    360                 "mips32")
    361                         LINUX_TARGET="mipsel-linux-gnu"
    362                         HELENOS_TARGET="mipsel-helenos"
    363                         ;;
    364                 "mips32eb")
    365                         LINUX_TARGET="mips-linux-gnu"
    366                         HELENOS_TARGET="mips-helenos"
    367                         ;;
    368                 "mips64")
    369                         LINUX_TARGET="mips64el-linux-gnu"
    370                         HELENOS_TARGET="mips64el-helenos"
    371                         ;;
    372                 "ppc32")
    373                         LINUX_TARGET="ppc-linux-gnu"
    374                         HELENOS_TARGET="ppc-helenos"
    375                         ;;
    376                 "ppc64")
    377                         LINUX_TARGET="ppc64-linux-gnu"
    378                         HELENOS_TARGET="ppc64-helenos"
    379                         ;;
    380                 "sparc64")
    381                         LINUX_TARGET="sparc64-linux-gnu"
    382                         HELENOS_TARGET="sparc64-helenos"
    383                         ;;
    384                 *)
    385                         check_error 1 "No target known for $1."
    386                         ;;
    387         esac
     279        download_fetch "${GDB_SOURCE}" "${GDB}" "fda57170e4d11cdde74259ca575412a8"
    388280}
    389281
    390282build_target() {
    391283        PLATFORM="$1"
    392         # This sets the *_TARGET variables
    393         set_target_from_platform "$PLATFORM"
    394         if $USE_HELENOS_TARGET; then
    395                 TARGET="$HELENOS_TARGET"
    396         else
    397                 TARGET="$LINUX_TARGET"
    398         fi
     284        TARGET="$2"
    399285       
    400286        WORKDIR="${BASEDIR}/${PLATFORM}"
     
    407293                CROSS_PREFIX="/usr/local/cross"
    408294        fi
    409         if [ -z "${CROSS_HELENOS_PREFIX}" ] ; then
    410                 CROSS_HELENOS_PREFIX="/usr/local/cross-helenos"
    411         fi
    412        
    413         if $USE_HELENOS_TARGET; then
    414                 PREFIX="${CROSS_HELENOS_PREFIX}/${PLATFORM}"
    415         else
    416                 PREFIX="${CROSS_PREFIX}/${PLATFORM}"
    417         fi
     295       
     296        PREFIX="${CROSS_PREFIX}/${PLATFORM}"
    418297       
    419298        echo ">>> Downloading tarballs"
     
    423302       
    424303        echo ">>> Removing previous content"
    425         $REAL_INSTALL && cleanup_dir "${PREFIX}"
     304        cleanup_dir "${PREFIX}"
    426305        cleanup_dir "${WORKDIR}"
    427306       
    428         $REAL_INSTALL && create_dir "${PREFIX}" "destination directory"
     307        create_dir "${PREFIX}" "destination directory"
    429308        create_dir "${OBJDIR}" "GCC object directory"
    430        
    431         check_dirs "${PREFIX}" "${WORKDIR}"
    432309       
    433310        echo ">>> Unpacking tarballs"
     
    439316        unpack_tarball "${BASEDIR}/${GDB}" "GDB"
    440317       
    441         echo ">>> Applying patches"
    442         for p in $BINUTILS_PATCHES; do
    443                 patch_sources "${SRCDIR}/${p}" 0 "binutils"
    444         done
    445         for p in $GCC_PATCHES; do
    446                 patch_sources "${SRCDIR}/${p}" 0 "GCC"
    447         done
    448         for p in $GDB_PATCHES; do
    449                 patch_sources "${SRCDIR}/${p}" 0 "GDB"
    450         done
    451        
    452318        echo ">>> Processing binutils (${PLATFORM})"
    453319        cd "${BINUTILSDIR}"
     
    455321       
    456322        change_title "binutils: configure (${PLATFORM})"
    457         CFLAGS=-Wno-error ./configure \
    458                 "--target=${TARGET}" \
    459                 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \
    460                 --disable-nls --disable-werror
     323        CFLAGS=-Wno-error ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --disable-nls --disable-werror
    461324        check_error $? "Error configuring binutils."
    462325       
    463326        change_title "binutils: make (${PLATFORM})"
    464         make all
    465         check_error $? "Error compiling binutils."
    466        
    467         change_title "binutils: install (${PLATFORM})"
    468         if $REAL_INSTALL; then
    469                 make install
    470         else
    471                 make install "DESTDIR=${INSTALL_DIR}"
    472         fi
    473         check_error $? "Error installing binutils."
    474        
     327        make all install
     328        check_error $? "Error compiling/installing binutils."
    475329       
    476330        echo ">>> Processing GCC (${PLATFORM})"
     
    479333       
    480334        change_title "GCC: configure (${PLATFORM})"
    481         PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" "${GCCDIR}/configure" \
    482                 "--target=${TARGET}" \
    483                 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \
    484                 --with-gnu-as --with-gnu-ld --disable-nls --disable-threads \
    485                 --enable-languages=c,objc,c++,obj-c++ \
    486                 --disable-multilib --disable-libgcj --without-headers \
    487                 --disable-shared --enable-lto --disable-werror
     335        "${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 --enable-lto --disable-werror
    488336        check_error $? "Error configuring GCC."
    489337       
    490338        change_title "GCC: make (${PLATFORM})"
    491         PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all-gcc
    492         check_error $? "Error compiling GCC."
    493        
    494         change_title "GCC: install (${PLATFORM})"
    495         if $REAL_INSTALL; then
    496                 PATH="${PATH}:${PREFIX}/bin" make install-gcc
    497         else
    498                 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install-gcc "DESTDIR=${INSTALL_DIR}"
    499         fi
    500         check_error $? "Error installing GCC."
    501        
     339        PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
     340        check_error $? "Error compiling/installing GCC."
    502341       
    503342        echo ">>> Processing GDB (${PLATFORM})"
     
    506345       
    507346        change_title "GDB: configure (${PLATFORM})"
    508         PATH="$PATH:${INSTALL_DIR}/${PREFIX}/bin" ./configure \
    509                 "--target=${TARGET}" \
    510                 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-"
     347        ./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-"
    511348        check_error $? "Error configuring GDB."
    512349       
    513350        change_title "GDB: make (${PLATFORM})"
    514         PATH="${PATH}:${PREFIX}/bin:${INSTALL_DIR}/${PREFIX}/bin" make all
    515         check_error $? "Error compiling GDB."
    516        
    517         change_title "GDB: make (${PLATFORM})"
    518         if $REAL_INSTALL; then
    519                 PATH="${PATH}:${PREFIX}/bin" make install
    520         else
    521                 PATH="${PATH}:${INSTALL_DIR}/${PREFIX}/bin" make install "DESTDIR=${INSTALL_DIR}"
    522         fi
    523         check_error $? "Error installing GDB."
    524        
     351        make all install
     352        check_error $? "Error compiling/installing GDB."
    525353       
    526354        cd "${BASEDIR}"
     
    533361        echo ">>> Cross-compiler for ${TARGET} installed."
    534362}
    535 
    536 while [ "$#" -gt 1 ]; do
    537         case "$1" in
    538                 --no-install)
    539                         REAL_INSTALL=false
    540                         shift
    541                         ;;
    542                 --helenos-target)
    543                         USE_HELENOS_TARGET=true
    544                         shift
    545                         ;;
    546                 *)
    547                         show_usage
    548                         ;;
    549         esac
    550 done
    551363
    552364if [ "$#" -lt "1" ]; then
     
    555367
    556368case "$1" in
    557         amd64|arm32|ia32|ia64|mips32|mips32eb|mips64|ppc32|ppc64|sparc64)
    558                 prepare
    559                 build_target "$1"
     369        "amd64")
     370                prepare
     371                build_target "amd64" "amd64-linux-gnu"
     372                ;;
     373        "arm32")
     374                prepare
     375                build_target "arm32" "arm-linux-gnueabi"
     376                ;;
     377        "ia32")
     378                prepare
     379                build_target "ia32" "i686-pc-linux-gnu"
     380                ;;
     381        "ia64")
     382                prepare
     383                build_target "ia64" "ia64-pc-linux-gnu"
     384                ;;
     385        "mips32")
     386                prepare
     387                build_target "mips32" "mipsel-linux-gnu"
     388                ;;
     389        "mips32eb")
     390                prepare
     391                build_target "mips32eb" "mips-linux-gnu"
     392                ;;
     393        "mips64")
     394                prepare
     395                build_target "mips64" "mips64el-linux-gnu"
     396                ;;
     397        "ppc32")
     398                prepare
     399                build_target "ppc32" "ppc-linux-gnu"
     400                ;;
     401        "ppc64")
     402                prepare
     403                build_target "ppc64" "ppc64-linux-gnu"
     404                ;;
     405        "sparc64")
     406                prepare
     407                build_target "sparc64" "sparc64-linux-gnu"
     408                ;;
     409        "sparc32")
     410                prepare
     411                build_target "sparc32" "sparc-leon3-linux-gnu"
    560412                ;;
    561413        "all")
    562414                prepare
    563                 build_target "amd64"
    564                 build_target "arm32"
    565                 build_target "ia32"
    566                 build_target "ia64"
    567                 build_target "mips32"
    568                 build_target "mips32eb"
    569                 build_target "mips64"
    570                 build_target "ppc32"
    571                 build_target "ppc64"
    572                 build_target "sparc64"
     415                build_target "amd64" "amd64-linux-gnu"
     416                build_target "arm32" "arm-linux-gnueabi"
     417                build_target "ia32" "i686-pc-linux-gnu"
     418                build_target "ia64" "ia64-pc-linux-gnu"
     419                build_target "mips32" "mipsel-linux-gnu"
     420                build_target "mips32eb" "mips-linux-gnu"
     421                build_target "mips64" "mips64el-linux-gnu"
     422                build_target "ppc32" "ppc-linux-gnu"
     423                build_target "ppc64" "ppc64-linux-gnu"
     424                build_target "sparc64" "sparc64-linux-gnu"
     425                build_target "sparc32" "sparc-leon3-linux-gnu"
    573426                ;;
    574427        "parallel")
    575428                prepare
    576                 build_target "amd64" &
    577                 build_target "arm32" &
    578                 build_target "ia32" &
    579                 build_target "ia64" &
    580                 build_target "mips32" &
    581                 build_target "mips32eb" &
    582                 build_target "mips64" &
    583                 build_target "ppc32" &
    584                 build_target "ppc64" &
    585                 build_target "sparc64" &
     429                build_target "amd64" "amd64-linux-gnu" &
     430                build_target "arm32" "arm-linux-gnueabi" &
     431                build_target "ia32" "i686-pc-linux-gnu" &
     432                build_target "ia64" "ia64-pc-linux-gnu" &
     433                build_target "mips32" "mipsel-linux-gnu" &
     434                build_target "mips32eb" "mips-linux-gnu" &
     435                build_target "mips64" "mips64el-linux-gnu" &
     436                build_target "ppc32" "ppc-linux-gnu" &
     437                build_target "ppc64" "ppc64-linux-gnu" &
     438                build_target "sparc64" "sparc64-linux-gnu" &
     439                build_target "sparc32" "sparc-leon3-linux-gnu" &
    586440                wait
    587441                ;;
    588442        "2-way")
    589443                prepare
    590                 build_target "amd64" &
    591                 build_target "arm32" &
    592                 wait
    593                
    594                 build_target "ia32" &
    595                 build_target "ia64" &
    596                 wait
    597                
    598                 build_target "mips32" &
    599                 build_target "mips32eb" &
    600                 wait
    601                
    602                 build_target "mips64" &
    603                 build_target "ppc32" &
    604                 wait
    605                
    606                 build_target "ppc64" &
    607                 build_target "sparc64" &
     444                build_target "amd64" "amd64-linux-gnu" &
     445                build_target "arm32" "arm-linux-gnueabi" &
     446                wait
     447               
     448                build_target "ia32" "i686-pc-linux-gnu" &
     449                build_target "ia64" "ia64-pc-linux-gnu" &
     450                wait
     451               
     452                build_target "mips32" "mipsel-linux-gnu" &
     453                build_target "mips32eb" "mips-linux-gnu" &
     454                wait
     455               
     456                build_target "mips64" "mips64el-linux-gnu" &
     457                build_target "ppc32" "ppc-linux-gnu" &
     458                wait
     459               
     460                build_target "ppc64" "ppc64-linux-gnu" &
     461                build_target "sparc64" "sparc64-linux-gnu" &
     462                wait
     463
     464                build_target "sparc32" "sparc-leon3-linux-gnu" &
    608465                wait
    609466                ;;
Note: See TracChangeset for help on using the changeset viewer.