Changeset 5a65d29 in mainline


Ignore:
Timestamp:
2013-07-19T14:36:31Z (11 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f03c3da
Parents:
6c9f1a6
Message:

Add HelenOS-specific toolchain patches

It is possible to build '*-helenos-*' toolchain, that is the triplet
would contain the word 'helenos' instead of 'linux' and GCC would
provide some HelenOS-specific macros.

The toolchain can be built with the toolchain.sh script, just provide
—helenos-target as a parameter.

Changes to the autotool/configuration scripts would be added later.

Location:
tools
Files:
4 added
1 edited

Legend:

Unmodified
Added
Removed
  • tools/toolchain.sh

    r6c9f1a6 r5a65d29  
    5555BINUTILS_VERSION="2.23.1"
    5656BINUTILS_RELEASE=""
     57BINUTILS_PATCHES="toolchain-binutils-2.23.1.patch"
    5758GCC_VERSION="4.8.1"
     59GCC_PATCHES="toolchain-gcc-4.8.1-targets.patch toolchain-gcc-4.8.1-headers.patch"
    5860GDB_VERSION="7.6"
     61GDB_PATCHES="toolchain-gdb-7.6.patch"
    5962
    6063BASEDIR="`pwd`"
     
    6467
    6568REAL_INSTALL=true
     69USE_HELENOS_TARGET=false
    6670INSTALL_DIR="${BASEDIR}/PKG"
    6771
     
    138142        echo
    139143        echo "Syntax:"
    140         echo " $0 [--no-install] <platform>"
     144        echo " $0 [--no-install] [--helenos-target] <platform>"
    141145        echo
    142146        echo "Possible target platforms are:"
     
    158162        echo "CROSS_PREFIX environment variable. If the variable is not"
    159163        echo "defined, /usr/local/cross/ is used as default."
     164        echo
    160165        echo "If --no-install is present, the toolchain still uses the"
    161166        echo "CROSS_PREFIX as the target directory but the installation"
     
    163168        echo "the actual root file system. That is only useful if you do"
    164169        echo "not want to run the script under the super user."
     170        echo
     171        echo "The --helenos-target will build HelenOS-specific toolchain"
     172        echo "(i.e. it will use *-helenos-* triplet instead of *-linux-*)."
     173        echo "This toolchain is installed into /usr/local/cross-helenos by"
     174        echo "default. The settings can be changed by setting environment"
     175        echo "variable CROSS_HELENOS_PREFIX."
    165176        echo
    166177       
     
    273284}
    274285
     286patch_sources() {
     287        PATCH_FILE="$1"
     288        PATCH_STRIP="$2"
     289        DESC="$3"
     290       
     291        change_title "Patching ${DESC}"
     292        echo " >>> Patching ${DESC} with ${PATCH_FILE}"
     293       
     294        patch -t "-p${PATCH_STRIP}" <"$PATCH_FILE"
     295        check_error $? "Error patching ${DESC}."
     296}
     297
    275298prepare() {
    276299        show_dependencies
     
    290313        case "$1" in
    291314                "amd64")
    292                         TARGET="amd64-linux-gnu"
     315                        LINUX_TARGET="amd64-linux-gnu"
     316                        HELENOS_TARGET="amd64-helenos"
    293317                        ;;
    294318                "arm32")
    295                         TARGET="arm-linux-gnueabi"
     319                        LINUX_TARGET="arm-linux-gnueabi"
     320                        HELENOS_TARGET="arm-helenos-gnueabi"
    296321                        ;;
    297322                "ia32")
    298                         TARGET="i686-pc-linux-gnu"
     323                        LINUX_TARGET="i686-pc-linux-gnu"
     324                        HELENOS_TARGET="i686-pc-helenos"
    299325                        ;;
    300326                "ia64")
    301                         TARGET="ia64-pc-linux-gnu"
     327                        LINUX_TARGET="ia64-pc-linux-gnu"
     328                        HELENOS_TARGET="ia64-pc-helenos"
    302329                        ;;
    303330                "mips32")
    304                         TARGET="mipsel-linux-gnu"
     331                        LINUX_TARGET="mipsel-linux-gnu"
     332                        HELENOS_TARGET="mipsel-helenos"
    305333                        ;;
    306334                "mips32eb")
    307                         TARGET="mips-linux-gnu"
     335                        LINUX_TARGET="mips-linux-gnu"
     336                        HELENOS_TARGET="mips-helenos"
    308337                        ;;
    309338                "mips64")
    310                         TARGET="mips64el-linux-gnu"
     339                        LINUX_TARGET="mips64el-linux-gnu"
     340                        HELENOS_TARGET="mips64el-helenos"
    311341                        ;;
    312342                "ppc32")
    313                         TARGET="ppc-linux-gnu"
     343                        LINUX_TARGET="ppc-linux-gnu"
     344                        HELENOS_TARGET="ppc-helenos"
    314345                        ;;
    315346                "ppc64")
    316                         TARGET="ppc64-linux-gnu"
     347                        LINUX_TARGET="ppc64-linux-gnu"
     348                        HELENOS_TARGET="ppc64-helenos"
    317349                        ;;
    318350                "sparc64")
    319                         TARGET="sparc64-linux-gnu"
     351                        LINUX_TARGET="sparc64-linux-gnu"
     352                        HELENOS_TARGET="sparc64-helenos"
    320353                        ;;
    321354                *)
     
    327360build_target() {
    328361        PLATFORM="$1"
    329         # This sets the TARGET variable
     362        # This sets the *_TARGET variables
    330363        set_target_from_platform "$PLATFORM"
     364        if $USE_HELENOS_TARGET; then
     365                TARGET="$HELENOS_TARGET"
     366        else
     367                TARGET="$LINUX_TARGET"
     368        fi
    331369       
    332370        WORKDIR="${BASEDIR}/${PLATFORM}"
     
    339377                CROSS_PREFIX="/usr/local/cross"
    340378        fi
    341        
    342         PREFIX="${CROSS_PREFIX}/${PLATFORM}"
     379        if [ -z "${CROSS_HELENOS_PREFIX}" ] ; then
     380                CROSS_HELENOS_PREFIX="/usr/local/cross-helenos"
     381        fi
     382       
     383        if $USE_HELENOS_TARGET; then
     384                PREFIX="${CROSS_HELENOS_PREFIX}/${PLATFORM}"
     385        else
     386                PREFIX="${CROSS_PREFIX}/${PLATFORM}"
     387        fi
    343388       
    344389        echo ">>> Downloading tarballs"
     
    362407        unpack_tarball "${BASEDIR}/${GDB}" "GDB"
    363408       
     409        echo ">>> Applying patches"
     410        for p in $BINUTILS_PATCHES; do
     411                patch_sources "${BASEDIR}/${p}" 0 "binutils"
     412        done
     413        for p in $GCC_PATCHES; do
     414                patch_sources "${BASEDIR}/${p}" 0 "GCC"
     415        done
     416        for p in $GDB_PATCHES; do
     417                patch_sources "${BASEDIR}/${p}" 0 "GDB"
     418        done
    364419       
    365420        echo ">>> Processing binutils (${PLATFORM})"
     
    447502}
    448503
    449 if [ "$1" = "--no-install" ]; then
    450         REAL_INSTALL=false
    451         shift
    452 fi
     504while [ "$#" -gt 1 ]; do
     505        case "$1" in
     506                --no-install)
     507                        REAL_INSTALL=false
     508                        shift
     509                        ;;
     510                --helenos-target)
     511                        USE_HELENOS_TARGET=true
     512                        shift
     513                        ;;
     514                *)
     515                        show_usage
     516                        ;;
     517        esac
     518done
    453519
    454520if [ "$#" -lt "1" ]; then
Note: See TracChangeset for help on using the changeset viewer.