scripts/build/internals.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Apr 24 15:39:53 2011 +0200 (2011-04-24)
changeset 2408 560670f2ce09
parent 2381 0ca0f85a4b2a
child 2425 055e505f28be
permissions -rw-r--r--
internals/finish: do not remove ${PREFIX}/include

gcc installs the C++ headers in ${PREFIX}/include/ but we trash
that directory at the end of the build.

We previously removed that directory as it contained the companion
libraries header files. But it's been some time now that we isntall
the companion libraries in their own dedicated place, so we do not
need to remove that directory.

Until we have a better fix, just keep that directory for now.

Reported-by: Bob Rossi <bob@brasko.net>
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@2213
     8
    local _type
titus@2089
     9
    local strip_args
yann@2301
    10
    local gcc_version
yann@1401
    11
yann@1225
    12
    CT_DoStep INFO "Cleaning-up the toolchain's directory"
yann@1225
    13
linux@2060
    14
    if [ "${CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES}" = "y" ]; then
titus@2089
    15
        case "$CT_HOST" in
titus@2089
    16
            *darwin*)
titus@2089
    17
                strip_args=""
titus@2089
    18
                ;;
titus@2089
    19
            *)
titus@2089
    20
                strip_args="--strip-all -v"
titus@2089
    21
                ;;
titus@2089
    22
        esac
linux@2060
    23
        CT_DoLog INFO "Stripping all toolchain executables"
linux@2060
    24
        CT_Pushd "${CT_PREFIX_DIR}"
yann@2301
    25
        gcc_version=$( "./bin/${CT_TARGET}-gcc" -dumpversion )
yann@2301
    26
        for _t in "bin/${CT_TARGET}-"*                                      \
yann@2301
    27
                  "${CT_TARGET}/bin/"*                                      \
yann@2301
    28
                  "libexec/gcc/${CT_TARGET}/${gcc_version}/"*               \
yann@2301
    29
                  "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \
yann@2213
    30
        ; do
yann@2213
    31
            _type="$( file "${_t}" |cut -d ' ' -f 2- )"
yann@2213
    32
            case "${_type}" in
yann@2357
    33
                *script*executable*)
yann@2213
    34
                    ;;
yann@2213
    35
                *executable*)
yann@2213
    36
                    CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}"
yann@2213
    37
                    ;;
yann@2213
    38
            esac
linux@2060
    39
        done
linux@2060
    40
        CT_Popd
linux@2060
    41
    fi
linux@2060
    42
yann@1225
    43
    if [ "${CT_BARE_METAL}" != "y" ]; then
yann@1225
    44
        CT_DoLog EXTRA "Installing the populate helper"
yann@1225
    45
        sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
yann@1225
    46
               -e 's|@@CT_install@@|'"${install}"'|g;'  \
yann@1225
    47
               -e 's|@@CT_bash@@|'"${bash}"'|g;'        \
yann@1225
    48
               -e 's|@@CT_grep@@|'"${grep}"'|g;'        \
yann@1225
    49
               -e 's|@@CT_make@@|'"${make}"'|g;'        \
yann@1225
    50
               -e 's|@@CT_sed@@|'"${sed}"'|g;'          \
yann@1225
    51
               "${CT_LIB_DIR}/scripts/populate.in"      \
yann@1225
    52
               >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
yann@1225
    53
        CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
yann@1225
    54
    fi
yann@1225
    55
yann@2034
    56
    if [ "${CT_LIBC_XLDD}" = "y" ]; then
yann@2034
    57
        CT_DoLog EXTRA "Installing a cross-ldd helper"
yann@2184
    58
        sed -r -e 's|@@CT_VERSION@@|'"${CT_VERSION}"'|g;'   \
yann@2185
    59
               -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;'     \
yann@2187
    60
               -e 's|@@CT_BITS@@|'"${CT_ARCH_BITNESS}"'|g;' \
yann@2185
    61
               -e 's|@@CT_install@@|'"${install}"'|g;'      \
yann@2185
    62
               -e 's|@@CT_bash@@|'"${bash}"'|g;'            \
yann@2185
    63
               -e 's|@@CT_grep@@|'"${grep}"'|g;'            \
yann@2185
    64
               -e 's|@@CT_make@@|'"${make}"'|g;'            \
yann@2185
    65
               -e 's|@@CT_sed@@|'"${sed}"'|g;'              \
yann@2185
    66
               "${CT_LIB_DIR}/scripts/xldd.in"              \
yann@2034
    67
               >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd"
yann@2034
    68
        CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd"
yann@2034
    69
    fi
yann@2034
    70
yann@1225
    71
    # Create the aliases to the target tools
yann@1225
    72
    CT_DoLog EXTRA "Creating toolchain aliases"
yann@1225
    73
    CT_Pushd "${CT_PREFIX_DIR}/bin"
yann@1225
    74
    for t in "${CT_TARGET}-"*; do
yann@1225
    75
        if [ -n "${CT_TARGET_ALIAS}" ]; then
yann@1225
    76
            _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
yann@1225
    77
            CT_DoExecLog ALL ln -sv "${t}" "${_t}"
yann@1225
    78
        fi
yann@1225
    79
        if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
yann@1225
    80
            _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
yann@2004
    81
            if [ "${_t}" = "${t}" ]; then
yann@2004
    82
                CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
yann@2004
    83
            else
yann@2004
    84
                CT_DoExecLog ALL ln -sv "${t}" "${_t}"
yann@2004
    85
            fi
yann@1225
    86
        fi
yann@1225
    87
    done
yann@1225
    88
    CT_Popd
yann@1225
    89
yann@1518
    90
    CT_DoLog EXTRA "Removing access to the build system tools"
yann@1518
    91
    CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools"
yann@1518
    92
yann@1225
    93
    # Remove the generated documentation files
yann@1225
    94
    if [ "${CT_REMOVE_DOCS}" = "y" ]; then
yann@1225
    95
        CT_DoLog EXTRA "Removing installed documentation"
yann@2236
    96
        CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{,share/}{man,info}
yann@2236
    97
        CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{,share/}{man,info}
yann@2236
    98
        CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{,share/}{man,info}
yann@1225
    99
    fi
yann@1225
   100
yann@2117
   101
    # Remove the lib* symlinks, now:
yann@2117
   102
    # The symlinks are needed only during the build process.
yann@2117
   103
    # The final gcc will still search those dirs, but will also search
yann@2117
   104
    # the standard lib/ dirs, so we can get rid of the symlinks
yann@2117
   105
    for d in                            \
yann@2117
   106
        "${CT_PREFIX_DIR}"              \
yann@2117
   107
        "${CT_PREFIX_DIR}/${CT_TARGET}" \
yann@2117
   108
    ; do
yann@2117
   109
        CT_DoExecLog ALL rm -f "${d}/lib32"
yann@2117
   110
        CT_DoExecLog ALL rm -f "${d}/lib64"
yann@2117
   111
    done
yann@2117
   112
yann@2163
   113
    # Also remove the lib/ symlink out-side of sysroot
yann@2117
   114
    if [ "${CT_USE_SYSROOT}" = "y" ]; then
yann@2117
   115
        CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/${CT_TARGET}/lib"
yann@2117
   116
    fi
yann@2117
   117
yann@1225
   118
    CT_EndStep
yann@1225
   119
}