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