scripts/build/debug/400-ltrace.sh
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
parent 2345 7ac35671d133
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@479
     1
# Build script for ltrace
yann@479
     2
yann@479
     3
do_debug_ltrace_get() {
yann@1687
     4
    CT_GetFile "ltrace_${CT_LTRACE_VERSION}.orig" .tar.gz               \
yann@1687
     5
               {ftp,http}://ftp.de.debian.org/debian/pool/main/l/ltrace/
yann@479
     6
    # Create a link so that the following steps are easier to do:
yann@1688
     7
    CT_Pushd "${CT_TARBALLS_DIR}"
yann@523
     8
    ltrace_ext=$(CT_GetFileExtension "ltrace_${CT_LTRACE_VERSION}.orig")
yann@1687
     9
    ln -sf "ltrace_${CT_LTRACE_VERSION}.orig${ltrace_ext}"              \
yann@1687
    10
           "ltrace-${CT_LTRACE_VERSION}${ltrace_ext}"
yann@1688
    11
    CT_Popd
yann@479
    12
}
yann@479
    13
yann@479
    14
do_debug_ltrace_extract() {
yann@1126
    15
    CT_Extract "ltrace-${CT_LTRACE_VERSION}"
yann@1901
    16
    CT_Patch "ltrace" "${CT_LTRACE_VERSION}"
yann@479
    17
}
yann@479
    18
yann@479
    19
do_debug_ltrace_build() {
yann@1820
    20
    local ltrace_host
yann@1820
    21
yann@479
    22
    CT_DoStep INFO "Installing ltrace"
yann@479
    23
yann@973
    24
    CT_DoLog EXTRA "Copying sources to build dir"
yann@1678
    25
    CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/ltrace-${CT_LTRACE_VERSION}" \
yann@1678
    26
                            "${CT_BUILD_DIR}/build-ltrace"
yann@1678
    27
    CT_Pushd "${CT_BUILD_DIR}/build-ltrace"
yann@973
    28
yann@479
    29
    CT_DoLog EXTRA "Configuring ltrace"
jocke@1685
    30
    # ltrace-0.5.3, and later, don't use GNU Autotools configure script anymore
jocke@1685
    31
    if [ "${CT_LTRACE_0_5_3_or_later}" = "y" ]; then
yann@1820
    32
        case "${CT_ARCH}:${CT_ARCH_BITNESS}" in
yann@1821
    33
            x86:32)     ltrace_host="i386";;
yann@1821
    34
            x86:64)     ltrace_host="x86_64";;
yann@1821
    35
            powerpc:*)  ltrace_host="ppc";;
horst@2253
    36
            mips:*)     ltrace_host="mipsel";;
yann@1821
    37
            *)          ltrace_host="${CT_ARCH}";;
yann@1820
    38
        esac
yann@2345
    39
        CT_DoExecLog CFG                \
yann@1820
    40
        CC="${CT_TARGET}-${CT_CC}"      \
titus@2630
    41
        AR="${CT_TARGET}-ar"            \
yann@1820
    42
        HOST="${ltrace_host}"           \
titus@2630
    43
        HOST_OS="${CT_TARGET_KERNEL}"   \
yann@1820
    44
        CFLAGS="${CT_TARGET_CFLAGS}"    \
yann@2345
    45
        ./configure --prefix=/usr
jocke@1685
    46
    else
anthony@2154
    47
        CT_DoExecLog CFG        \
jocke@1685
    48
        ./configure             \
jocke@1685
    49
            --build=${CT_BUILD} \
jocke@1685
    50
            --host=${CT_TARGET} \
jocke@1685
    51
            --prefix=/usr
jocke@1685
    52
    fi
yann@479
    53
yann@479
    54
    CT_DoLog EXTRA "Building ltrace"
yann@669
    55
    CT_DoExecLog ALL make
yann@479
    56
yann@479
    57
    CT_DoLog EXTRA "Installing ltrace"
yann@1219
    58
    CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
yann@479
    59
yann@479
    60
    CT_Popd
yann@479
    61
    CT_EndStep
yann@479
    62
}
yann@479
    63