scripts/build/internals.sh
author Titus von Boxberg <titus@v9g.de>
Sat May 22 22:01:18 2010 +0200 (2010-05-22)
changeset 1970 cdd761ad2d1a
parent 1961 e0619b242cb6
child 2004 5d6d3c28a658
permissions -rw-r--r--
scripts/build/internals.sh: compile wrapper with portable options.

static linking is not possible on MacOS, and unnessecary on other systems.
The old optimization and warning flags crash the gcc on MacOS
and (imho) are a bit overdone for this software.
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@1225
    34
            CT_DoExecLog ALL ln -sv "${t}" "${_t}"
yann@1225
    35
        fi
yann@1225
    36
    done
yann@1225
    37
    CT_Popd
yann@1225
    38
yann@1401
    39
    # If using the companion libraries, we need a wrapper
yann@1401
    40
    # that will set LD_LIBRARY_PATH approriately
yann@1495
    41
    if [ "${CT_WRAPPER_NEEDED}" = "y" ]; then
yann@1401
    42
        CT_DoLog EXTRA "Installing toolchain wrappers"
yann@1401
    43
        CT_Pushd "${CT_PREFIX_DIR}/bin"
yann@1402
    44
titus@1961
    45
        case "$CT_SYS_OS" in
titus@1961
    46
            Darwin|FreeBSD)
titus@1961
    47
                # wrapper does not work (when using readlink -m)
titus@1961
    48
                CT_DoLog WARN "Forcing usage of binary tool wrapper"
titus@1961
    49
                CT_TOOLS_WRAPPER="exec"
titus@1961
    50
                ;;
titus@1961
    51
        esac
yann@1493
    52
        # Install the wrapper
yann@1493
    53
        case "${CT_TOOLS_WRAPPER}" in
yann@1493
    54
            script)
yann@1493
    55
                CT_DoExecLog DEBUG install                              \
yann@1493
    56
                                   -m 0755                              \
yann@1493
    57
                                   "${CT_LIB_DIR}/scripts/wrapper.in"   \
yann@1493
    58
                                   ".${CT_TARGET}-wrapper"
yann@1493
    59
                ;;
yann@1493
    60
            exec)
yann@1518
    61
                CT_DoExecLog DEBUG "${CT_HOST}-gcc"                           \
titus@1970
    62
                                   -Wall -Wextra -Werror                      \
titus@1970
    63
                                   -Os                                        \
yann@1518
    64
                                   "${CT_LIB_DIR}/scripts/wrapper.c"          \
yann@1518
    65
                                   -o ".${CT_TARGET}-wrapper"
titus@1970
    66
                if [ "${CT_DEBUG_CT}" != "y" ]; then
titus@1970
    67
                    # If not debugging crosstool-NG, strip the wrapper
titus@1970
    68
                    CT_DoExecLog DEBUG "${CT_HOST}-strip" ".${CT_TARGET}-wrapper"
titus@1970
    69
                fi
yann@1493
    70
                ;;
yann@1493
    71
        esac
yann@1402
    72
yann@1402
    73
        # Replace every tools with the wrapper
yann@1402
    74
        # Do it unconditionally, even for those tools that happen to be shell
yann@1402
    75
        # scripts, we don't know if they would in the end spawn a binary...
yann@1402
    76
        # Just skip symlinks
Yann@1408
    77
        for _t in "${CT_TARGET}-"*; do
titus@1955
    78
            if [ ! -L "${_t}" ]; then
yann@1413
    79
                CT_DoExecLog ALL mv "${_t}" ".${_t}"
Yann@1408
    80
                CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
yann@1402
    81
            fi
yann@1401
    82
        done
yann@1402
    83
yann@1402
    84
        # Get rid of the wrapper, we're using hardlinks
yann@1402
    85
        CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
yann@1401
    86
        CT_Popd
yann@1401
    87
    fi
yann@1401
    88
yann@1518
    89
    CT_DoLog EXTRA "Removing access to the build system tools"
yann@1518
    90
    CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools"
yann@1518
    91
yann@1225
    92
    # Remove the generated documentation files
yann@1225
    93
    if [ "${CT_REMOVE_DOCS}" = "y" ]; then
yann@1225
    94
        CT_DoLog EXTRA "Removing installed documentation"
yann@1225
    95
        CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{man,info}
yann@1225
    96
        CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{man,info}
yann@1225
    97
        CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{man,info}
yann@1225
    98
    fi
yann@1225
    99
yann@1817
   100
    # Remove headers installed by native companion libraries
yann@1817
   101
    CT_DoForceRmdir "${CT_PREFIX_DIR}/include"
yann@1817
   102
yann@1225
   103
    CT_EndStep
yann@1225
   104
}