scripts/build/arch/powerpc.sh
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
parent 2675 7c288c777455
child 3169 9d0b37f08a10
permissions -rw-r--r--
scripts: refine static linking check to better guide the user

The current mechanism to check if static linking is possible, and the mesage
displayed on failure, can be puzzling to the unsuspecting user.

Also, the current implementation is not using the existing infrastructure,
and is thus difficult to enhance with new tests.

So, switch to using the standard CT_DoExecLog infra, and use four tests to
check for the host compiler:
- check we can run it
- check it can build a trivial program
- check it can statically link that program
- check if it statically link with libstdc++

That should cover most of the problems. Hopefully.

(At the same time, fix a typo in a comment)

Signed-off-by: Daniel Price <daniel.price@gmail.com>
[yann.morin.1998@free.fr: split original patch for self-contained changes]
[yann.morin.1998@free.fr: use steps to better see gcc's output]
[yann.morin.1998@free.fr: commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <163f86b5216fc08c672a.1353459722@nipigon.dssd.com>
Patchwork-Id: 200536
yann@520
     1
# Compute powerpc-specific values
yann@520
     2
yann@1634
     3
CT_DoArchTupleValues () {
yann@1634
     4
    # The architecture part of the tuple, override only for 64-bit
yann@1634
     5
    if [ "${CT_ARCH_64}" = "y" ]; then
yann@1634
     6
        CT_TARGET_ARCH="powerpc64"
yann@1634
     7
    fi
yann@1634
     8
yann@2723
     9
    # Only override values when ABI is not the default
mgherzan@2675
    10
    case "${CT_ARCH_powerpc_ABI}" in
yann@2723
    11
        eabi)
yann@2723
    12
            # EABI is only for bare-metal, so libc ∈ [none,newlib]
yann@2723
    13
            CT_TARGET_SYS="eabi"
yann@2723
    14
            ;;
mgherzan@2675
    15
        spe)
mgherzan@2675
    16
            case "${CT_LIBC}" in
yann@2723
    17
                none|newlib)    CT_TARGET_SYS="spe";;
yann@2723
    18
                *glibc)         CT_TARGET_SYS="gnuspe";;
yann@2723
    19
                uClibc)         CT_TARGET_SYS="uclibcgnuspe";;
mgherzan@2675
    20
            esac
mgherzan@2675
    21
            ;;
yann@1634
    22
    esac
yann@1634
    23
yann@1634
    24
    # Add extra flags for SPE if needed
mgherzan@2675
    25
    if [ "${CT_ARCH_powerpc_ABI_SPE}" = "y" ]; then
yann@1634
    26
        CT_ARCH_TARGET_CFLAGS="-mabi=spe -mspe"
yann@1634
    27
        CT_ARCH_CC_CORE_EXTRA_CONFIG="--enable-e500_double"
yann@1634
    28
        CT_ARCH_CC_EXTRA_CONFIG="--enable-e500_double"
yann@1634
    29
    fi
yann@1634
    30
}