scripts/build/internals.sh
author Remy Bohmer <linux@bohmer.net>
Sun Jul 11 22:23:34 2010 +0200 (2010-07-11)
changeset 2021 3e52a1510f87
parent 1970 cdd761ad2d1a
child 2034 c3967b2c49b4
permissions -rw-r--r--
debug/gdb: Fix compilation for Mingw hosts

GDB requires PDcurses instead of ncurses while running on Windows.
So, do not always compile ncurses in case GDB needs to build.

PDcurses is provided by an earlier build step and is not described in
this file.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
[yann.morin.1998@anciense.nib.fr: we already have a way to detect ncurses usage]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1225
     1
# This file contains crosstool-NG internal steps
yann@1225
     2
yann@1225
     3
# This step is called once all components were built, to remove
yann@1225
     4
# un-wanted files, to add tuple aliases, and to add the final
yann@1225
     5
# crosstool-NG-provided files.
yann@1225
     6
do_finish() {
yann@1401
     7
    local _t
yann@1401
     8
yann@1225
     9
    CT_DoStep INFO "Cleaning-up the toolchain's directory"
yann@1225
    10
yann@1225
    11
    if [ "${CT_BARE_METAL}" != "y" ]; then
yann@1225
    12
        CT_DoLog EXTRA "Installing the populate helper"
yann@1225
    13
        sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
yann@1225
    14
               -e 's|@@CT_install@@|'"${install}"'|g;'  \
yann@1225
    15
               -e 's|@@CT_bash@@|'"${bash}"'|g;'        \
yann@1225
    16
               -e 's|@@CT_grep@@|'"${grep}"'|g;'        \
yann@1225
    17
               -e 's|@@CT_make@@|'"${make}"'|g;'        \
yann@1225
    18
               -e 's|@@CT_sed@@|'"${sed}"'|g;'          \
yann@1225
    19
               "${CT_LIB_DIR}/scripts/populate.in"      \
yann@1225
    20
               >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
yann@1225
    21
        CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
yann@1225
    22
    fi
yann@1225
    23
yann@1225
    24
    # Create the aliases to the target tools
yann@1225
    25
    CT_DoLog EXTRA "Creating toolchain aliases"
yann@1225
    26
    CT_Pushd "${CT_PREFIX_DIR}/bin"
yann@1225
    27
    for t in "${CT_TARGET}-"*; do
yann@1225
    28
        if [ -n "${CT_TARGET_ALIAS}" ]; then
yann@1225
    29
            _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
yann@1225
    30
            CT_DoExecLog ALL ln -sv "${t}" "${_t}"
yann@1225
    31
        fi
yann@1225
    32
        if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
yann@1225
    33
            _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
yann@2004
    34
            if [ "${_t}" = "${t}" ]; then
yann@2004
    35
                CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
yann@2004
    36
            else
yann@2004
    37
                CT_DoExecLog ALL ln -sv "${t}" "${_t}"
yann@2004
    38
            fi
yann@1225
    39
        fi
yann@1225
    40
    done
yann@1225
    41
    CT_Popd
yann@1225
    42
yann@1401
    43
    # If using the companion libraries, we need a wrapper
yann@1401
    44
    # that will set LD_LIBRARY_PATH approriately
yann@1495
    45
    if [ "${CT_WRAPPER_NEEDED}" = "y" ]; then
yann@1401
    46
        CT_DoLog EXTRA "Installing toolchain wrappers"
yann@1401
    47
        CT_Pushd "${CT_PREFIX_DIR}/bin"
yann@1402
    48
titus@1961
    49
        case "$CT_SYS_OS" in
titus@1961
    50
            Darwin|FreeBSD)
titus@1961
    51
                # wrapper does not work (when using readlink -m)
titus@1961
    52
                CT_DoLog WARN "Forcing usage of binary tool wrapper"
titus@1961
    53
                CT_TOOLS_WRAPPER="exec"
titus@1961
    54
                ;;
titus@1961
    55
        esac
yann@1493
    56
        # Install the wrapper
yann@1493
    57
        case "${CT_TOOLS_WRAPPER}" in
yann@1493
    58
            script)
yann@1493
    59
                CT_DoExecLog DEBUG install                              \
yann@1493
    60
                                   -m 0755                              \
yann@1493
    61
                                   "${CT_LIB_DIR}/scripts/wrapper.in"   \
yann@1493
    62
                                   ".${CT_TARGET}-wrapper"
yann@1493
    63
                ;;
yann@1493
    64
            exec)
yann@1518
    65
                CT_DoExecLog DEBUG "${CT_HOST}-gcc"                           \
titus@1970
    66
                                   -Wall -Wextra -Werror                      \
titus@1970
    67
                                   -Os                                        \
yann@1518
    68
                                   "${CT_LIB_DIR}/scripts/wrapper.c"          \
yann@1518
    69
                                   -o ".${CT_TARGET}-wrapper"
titus@1970
    70
                if [ "${CT_DEBUG_CT}" != "y" ]; then
titus@1970
    71
                    # If not debugging crosstool-NG, strip the wrapper
titus@1970
    72
                    CT_DoExecLog DEBUG "${CT_HOST}-strip" ".${CT_TARGET}-wrapper"
titus@1970
    73
                fi
yann@1493
    74
                ;;
yann@1493
    75
        esac
yann@1402
    76
yann@1402
    77
        # Replace every tools with the wrapper
yann@1402
    78
        # Do it unconditionally, even for those tools that happen to be shell
yann@1402
    79
        # scripts, we don't know if they would in the end spawn a binary...
yann@1402
    80
        # Just skip symlinks
Yann@1408
    81
        for _t in "${CT_TARGET}-"*; do
titus@1955
    82
            if [ ! -L "${_t}" ]; then
yann@1413
    83
                CT_DoExecLog ALL mv "${_t}" ".${_t}"
Yann@1408
    84
                CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
yann@1402
    85
            fi
yann@1401
    86
        done
yann@1402
    87
yann@1402
    88
        # Get rid of the wrapper, we're using hardlinks
yann@1402
    89
        CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
yann@1401
    90
        CT_Popd
yann@1401
    91
    fi
yann@1401
    92
yann@1518
    93
    CT_DoLog EXTRA "Removing access to the build system tools"
yann@1518
    94
    CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools"
yann@1518
    95
yann@1225
    96
    # Remove the generated documentation files
yann@1225
    97
    if [ "${CT_REMOVE_DOCS}" = "y" ]; then
yann@1225
    98
        CT_DoLog EXTRA "Removing installed documentation"
yann@1225
    99
        CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{man,info}
yann@1225
   100
        CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{man,info}
yann@1225
   101
        CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{man,info}
yann@1225
   102
    fi
yann@1225
   103
yann@1817
   104
    # Remove headers installed by native companion libraries
yann@1817
   105
    CT_DoForceRmdir "${CT_PREFIX_DIR}/include"
yann@1817
   106
yann@1225
   107
    CT_EndStep
yann@1225
   108
}