scripts/build/companion_tools.sh
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
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
richard@1727
     1
# Wrapper to build the companion tools facilities
richard@1727
     2
richard@1727
     3
# List all companion tools facilities, and parse their scripts
richard@1727
     4
CT_COMP_TOOLS_FACILITY_LIST=
richard@1727
     5
for f in "${CT_LIB_DIR}/scripts/build/companion_tools/"*.sh; do
richard@1727
     6
    _f="$(basename "${f}" .sh)"
richard@1727
     7
    _f="${_f#???-}"
richard@1727
     8
    __f="CT_COMP_TOOLS_${_f}"
richard@1727
     9
    if [ "${!__f}" = "y" ]; then
richard@1727
    10
        CT_DoLog DEBUG "Enabling companion tools '${_f}'"
richard@1727
    11
        . "${f}"
richard@1727
    12
        CT_COMP_TOOLS_FACILITY_LIST="${CT_COMP_TOOLS_FACILITY_LIST} ${_f}"
richard@1727
    13
    else
richard@1727
    14
        CT_DoLog DEBUG "Disabling companion tools '${_f}'"
richard@1727
    15
    fi
richard@1727
    16
done
richard@1727
    17
richard@1727
    18
# Download the companion tools facilities
richard@1727
    19
do_companion_tools_get() {
richard@1727
    20
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    21
        do_companion_tools_${f}_get
richard@1727
    22
    done
richard@1727
    23
}
richard@1727
    24
richard@1727
    25
# Extract and patch the companion tools facilities
richard@1727
    26
do_companion_tools_extract() {
richard@1727
    27
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    28
        do_companion_tools_${f}_extract
richard@1727
    29
    done
richard@1727
    30
}
richard@1727
    31
richard@1727
    32
# Build the companion tools facilities
richard@1727
    33
do_companion_tools() {
richard@1727
    34
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    35
        do_companion_tools_${f}_build
richard@1727
    36
    done
richard@1727
    37
}
richard@1727
    38