scripts/build/internals.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 1503 7dcef3fb5e8f
child 1817 c9654a027900
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
     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 }