scripts/build/internals.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Jan 13 20:46:01 2010 +0100 (2010-01-13)
changeset 1732 6b2ae7804c6f
parent 1503 7dcef3fb5e8f
child 1817 c9654a027900
permissions -rw-r--r--
debug/gdb: staticaly link to ncurses for the native gdb

Staticaly link the native gdb (the one that runs on the target,
not the cross one that runs on the host) to ncurses.
     1 # This file contains crosstool-NG internal steps
     2 
     3 # This step is called once all components were built, to remove
     4 # un-wanted files, to add tuple aliases, and to add the final
     5 # crosstool-NG-provided files.
     6 do_finish() {
     7     local _t
     8 
     9     CT_DoStep INFO "Cleaning-up the toolchain's directory"
    10 
    11     if [ "${CT_BARE_METAL}" != "y" ]; then
    12         CT_DoLog EXTRA "Installing the populate helper"
    13         sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
    14                -e 's|@@CT_install@@|'"${install}"'|g;'  \
    15                -e 's|@@CT_bash@@|'"${bash}"'|g;'        \
    16                -e 's|@@CT_grep@@|'"${grep}"'|g;'        \
    17                -e 's|@@CT_make@@|'"${make}"'|g;'        \
    18                -e 's|@@CT_sed@@|'"${sed}"'|g;'          \
    19                "${CT_LIB_DIR}/scripts/populate.in"      \
    20                >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
    21         CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
    22     fi
    23 
    24     # Create the aliases to the target tools
    25     CT_DoLog EXTRA "Creating toolchain aliases"
    26     CT_Pushd "${CT_PREFIX_DIR}/bin"
    27     for t in "${CT_TARGET}-"*; do
    28         if [ -n "${CT_TARGET_ALIAS}" ]; then
    29             _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
    30             CT_DoExecLog ALL ln -sv "${t}" "${_t}"
    31         fi
    32         if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
    33             _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
    34             CT_DoExecLog ALL ln -sv "${t}" "${_t}"
    35         fi
    36     done
    37     CT_Popd
    38 
    39     # If using the companion libraries, we need a wrapper
    40     # that will set LD_LIBRARY_PATH approriately
    41     if [ "${CT_WRAPPER_NEEDED}" = "y" ]; then
    42         CT_DoLog EXTRA "Installing toolchain wrappers"
    43         CT_Pushd "${CT_PREFIX_DIR}/bin"
    44 
    45         # Install the wrapper
    46         case "${CT_TOOLS_WRAPPER}" in
    47             script)
    48                 CT_DoExecLog DEBUG install                              \
    49                                    -m 0755                              \
    50                                    "${CT_LIB_DIR}/scripts/wrapper.in"   \
    51                                    ".${CT_TARGET}-wrapper"
    52                 ;;
    53             exec)
    54                 _t="-s"
    55                 if [ "${CT_DEBUG_CT}" = "y" ]; then
    56                   _t="" # If debugging crosstool-NG, don't strip the wrapper
    57                 fi
    58                 CT_DoExecLog DEBUG "${CT_HOST}-gcc"                           \
    59                                    -Wall -Wextra -Wunreachable-code -Werror   \
    60                                    -O3 -static ${_t}                          \
    61                                    "${CT_LIB_DIR}/scripts/wrapper.c"          \
    62                                    -o ".${CT_TARGET}-wrapper"
    63                 ;;
    64         esac
    65 
    66         # Replace every tools with the wrapper
    67         # Do it unconditionally, even for those tools that happen to be shell
    68         # scripts, we don't know if they would in the end spawn a binary...
    69         # Just skip symlinks
    70         for _t in "${CT_TARGET}-"*; do
    71             if [ "$( LANG=C stat -c '%F' "${_t}" )" != "symbolic link" ]; then
    72                 CT_DoExecLog ALL mv "${_t}" ".${_t}"
    73                 CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
    74             fi
    75         done
    76 
    77         # Get rid of the wrapper, we're using hardlinks
    78         CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
    79         CT_Popd
    80     fi
    81 
    82     CT_DoLog EXTRA "Removing access to the build system tools"
    83     CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools"
    84 
    85     # Remove the generated documentation files
    86     if [ "${CT_REMOVE_DOCS}" = "y" ]; then
    87         CT_DoLog EXTRA "Removing installed documentation"
    88         CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{man,info}
    89         CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{man,info}
    90         CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{man,info}
    91     fi
    92 
    93     CT_EndStep
    94 }