scripts/build/binutils/elf2flt.sh
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 2926 d304c8a7bfa8
child 3090 a221c86d9b33
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@1345
     1
# This file adds functions to build elf2flt
yann@1345
     2
# Copyright 2009 John Williams
yann@1345
     3
# Copyright 2007 Yann E. MORIN
yann@1345
     4
# Licensed under the GPL v2. See COPYING in the root of this package
yann@1345
     5
yann@1755
     6
# Default: do nothing
yann@2926
     7
do_elf2flt_get()        { :; }
yann@2926
     8
do_elf2flt_extract()    { :; }
yann@2928
     9
do_elf2flt_for_build()  { :; }
yann@2926
    10
do_elf2flt_for_host()   { :; }
yann@1755
    11
yann@1755
    12
if [ -n "${CT_ARCH_BINFMT_FLAT}" ]; then
yann@1755
    13
yann@1345
    14
# Download elf2flt
yann@1345
    15
do_elf2flt_get() {
yann@1345
    16
    CT_GetCVS "elf2flt-cvs-${CT_ELF2FLT_VERSION}"           \
yann@1345
    17
              ":pserver:anonymous@cvs.uclinux.org:/var/cvs" \
yann@1345
    18
              "elf2flt"                                     \
yann@1345
    19
              "" \
yann@1345
    20
              "elf2flt-cvs-${CT_ELF2FLT_VERSION}"
yann@1345
    21
}
yann@1345
    22
yann@1345
    23
# Extract elf2flt
yann@1345
    24
do_elf2flt_extract() {
yann@1345
    25
    CT_Extract "elf2flt-cvs-${CT_ELF2FLT_VERSION}"
yann@1901
    26
    CT_Patch "elf2flt-cvs" "${CT_ELF2FLT_VERSION}"
yann@1345
    27
}
yann@1345
    28
yann@2928
    29
# Build elf2flt for build -> target
yann@2928
    30
do_elf2flt_for_build() {
yann@2928
    31
    local -a elf2flt_opts
yann@2928
    32
yann@2928
    33
    case "${CT_TOOLCHAIN_TYPE}" in
yann@2928
    34
        native|cross)   return 0;;
yann@2928
    35
    esac
yann@2928
    36
yann@2928
    37
    CT_DoStep INFO "Installing elf2flt for build"
yann@2928
    38
    CT_mkdir_pushd "${CT_BUILD_DIR}/build-elf2flt-build-${CT_BUILD}"
yann@2928
    39
yann@2928
    40
    elf2flt_opts+=( "host=${CT_BUILD}" )
yann@2928
    41
    elf2flt_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
yann@2928
    42
    elf2flt_opts+=( "binutils_bld=${CT_BUILD_DIR}/build-binutils-build-${CT_HOST}" )
yann@2928
    43
yann@2928
    44
    do_elf2flt_backend "${elf2flt_opts[@]}"
yann@2928
    45
yann@2928
    46
    CT_Popd
yann@2928
    47
    CT_EndStep
yann@2928
    48
}
yann@2928
    49
yann@2926
    50
# Build elf2flt for host -> target
yann@2926
    51
do_elf2flt_for_host() {
yann@2926
    52
    local -a elf2flt_opts
yann@1345
    53
yann@2926
    54
    CT_DoStep INFO "Installing elf2flt for host"
yann@2926
    55
    CT_mkdir_pushd "${CT_BUILD_DIR}/build-elf2flt-host-${CT_HOST}"
yann@2926
    56
yann@2926
    57
    elf2flt_opts+=( "host=${CT_HOST}" )
yann@2926
    58
    elf2flt_opts+=( "prefix=${CT_PREFIX_DIR}" )
yann@2926
    59
    elf2flt_opts+=( "static_build=${CT_STATIC_TOOLCHAIN}" )
yann@2926
    60
    elf2flt_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
yann@2928
    61
    elf2flt_opts+=( "binutils_bld=${CT_BUILD_DIR}/build-binutils-host-${CT_HOST}" )
yann@2926
    62
yann@2926
    63
    do_elf2flt_backend "${elf2flt_opts[@]}"
yann@2926
    64
yann@2926
    65
    # Make those new tools available to the core C compilers to come.
yann@2926
    66
    # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
yann@2926
    67
    # well. Create that.
yann@2926
    68
    # Don't do it for canadian or cross-native, because the binutils
yann@2926
    69
    # are not executable on the build machine.
yann@2926
    70
    case "${CT_TOOLCHAIN_TYPE}" in
yann@2926
    71
        cross|native)
yann@2926
    72
            mkdir -p "${CT_BUILDTOOLS_PREFIX_DIR}/${CT_TARGET}/bin"
yann@2926
    73
            mkdir -p "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
yann@2926
    74
            for t in elf2flt flthdr; do
yann@2926
    75
                CT_DoExecLog ALL ln -sv                                         \
yann@2926
    76
                                    "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}"    \
yann@2926
    77
                                    "${CT_BUILDTOOLS_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
yann@2926
    78
                CT_DoExecLog ALL ln -sv                                         \
yann@2926
    79
                                    "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}"    \
yann@2926
    80
                                    "${CT_BUILDTOOLS_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
yann@2926
    81
            done
yann@2926
    82
            ;;
yann@2926
    83
        *)  ;;
yann@2926
    84
    esac
yann@2926
    85
yann@2926
    86
    CT_Popd
yann@2926
    87
    CT_EndStep
yann@2926
    88
}
yann@2926
    89
yann@2926
    90
# Build elf2flt for X -> target
yann@2926
    91
#     Parameter     : description               : type      : default
yann@2926
    92
#     host          : machine to run on         : tuple     : (none)
yann@2926
    93
#     prefix        : prefix to install into    : dir       : (none)
yann@2926
    94
#     static_build  : build statcially          : bool      : no
yann@2926
    95
#     cflags        : host cflags to use        : string    : (empty)
yann@2926
    96
do_elf2flt_backend() {
yann@2926
    97
    local host
yann@2926
    98
    local prefix
yann@2926
    99
    local static_build
yann@2926
   100
    local cflags
yann@2928
   101
    local binutils_bld
yann@2928
   102
    local binutils_src
yann@2926
   103
    local arg
yann@2926
   104
yann@2926
   105
    for arg in "$@"; do
yann@2926
   106
        eval "${arg// /\\ }"
yann@2926
   107
    done
yann@1345
   108
yann@2926
   109
    binutils_src="${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}"
yann@1345
   110
yann@1345
   111
    CT_DoLog EXTRA "Configuring elf2flt"
yann@2342
   112
    CT_DoExecLog CFG                                            \
yann@2926
   113
    CFLAGS="${host_cflags}"                                     \
yann@1345
   114
    "${CT_SRC_DIR}/elf2flt-cvs-${CT_ELF2FLT_VERSION}/configure" \
yann@1345
   115
        --build=${CT_BUILD}                                     \
yann@2926
   116
        --host=${host}                                          \
yann@1345
   117
        --target=${CT_TARGET}                                   \
yann@2926
   118
        --prefix=${prefix}                                      \
yann@1345
   119
        --with-bfd-include-dir=${binutils_bld}/bfd              \
yann@1345
   120
        --with-binutils-include-dir=${binutils_src}/include     \
yann@1345
   121
        --with-libbfd=${binutils_bld}/bfd/libbfd.a              \
yann@1345
   122
        --with-libiberty=${binutils_bld}/libiberty/libiberty.a  \
yann@1345
   123
        ${elf2flt_opts}                                         \
yann@2467
   124
        "${CT_ELF2FLT_EXTRA_CONFIG_ARRAY[@]}"
yann@1345
   125
yann@1345
   126
    CT_DoLog EXTRA "Building elf2flt"
yann@2275
   127
    CT_DoExecLog ALL make ${JOBSFLAGS}
yann@1345
   128
yann@1345
   129
    CT_DoLog EXTRA "Installing elf2flt"
yann@1345
   130
    CT_DoExecLog ALL make install
yann@1345
   131
}
yann@1755
   132
yann@1755
   133
fi # CT_ARCH_BINFMT_FLAT