From 8600f3ce56f67a2a0d7b4a14eb9e8b1f0ec49dec Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 12 Mar 2017 16:56:19 -0700 Subject: Move tools alias creation to a common function ... and in addition to final toolchain aliasing, use it when configuring multilibs for glibc/musl. Note that uClibc does not need it, it is explicitly selecting the tools using CROSS_PREFIX. Signed-off-by: Alexey Neyman diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh index 95fb72b..7d91d78 100644 --- a/scripts/build/internals.sh +++ b/scripts/build/internals.sh @@ -103,25 +103,8 @@ do_finish() { # Create the aliases to the target tools CT_DoLog EXTRA "Creating toolchain aliases" - CT_Pushd "${CT_PREFIX_DIR}/bin" - for t in "${CT_TARGET}-"*; do - if [ -n "${CT_TARGET_ALIAS}" ]; then - _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;') - CT_DoExecLog ALL ln -sfv "${t}" "${_t}" - fi - if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then - _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}") - if [ "${_t}" = "${t}" ]; then - CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'" - else - CT_DoExecLog ALL ln -sfv "${t}" "${_t}" - fi - fi - done - CT_Popd - - CT_DoLog EXTRA "Removing access to the build system tools" - CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools" + CT_SymlinkTools "${CT_PREFIX_DIR}/bin" "${CT_PREFIX_DIR}/bin" \ + "${CT_TARGET_ALIAS}" "${CT_TARGET_ALIAS_SED_EXPR}" # Remove the generated documentation files if [ "${CT_REMOVE_DOCS}" = "y" ]; then diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index 569183a..a630633 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -297,6 +297,8 @@ do_libc_backend_once() { # or even after they get installed... echo "ac_cv_path_BASH_SHELL=/bin/bash" >>config.cache + CT_SymlinkToolsMultilib + # Configure with --prefix the way we want it on the target... # There are a whole lot of settings here. You'll probably want # to read up on what they all mean, and customize a bit, possibly diff --git a/scripts/build/libc/musl.sh b/scripts/build/libc/musl.sh index 4ccb84c..3d6fe04 100644 --- a/scripts/build/libc/musl.sh +++ b/scripts/build/libc/musl.sh @@ -102,6 +102,8 @@ do_libc_backend_once() { extra_config+=( "--includedir=/usr/include/${hdr_install_subdir}" ) fi + CT_SymlinkToolsMultilib + # NOTE: musl handles the build/host/target a little bit differently # then one would expect: # build : not used diff --git a/scripts/functions b/scripts/functions index 969e9bf..8b12d8e 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1762,3 +1762,56 @@ CT_IterateMultilibs() { multi_index=$((multi_index+1)) done } + +# Create symbolic links in buildtools for binutils using a different +# target name. +# Usage: +# CT_SymlinkTools BIN-DIR SRC-DIR NEW-PREFIX SED-EXPR +CT_SymlinkTools() +{ + local bindir="$1" + local srcdir="$2" + local newpfx="$3" + local sedexpr="$4" + local dirpfx + local t _t + + # if bindir==srcdir, create symlinks just with the filename + if [ "${bindir}" != "${srcdir}" ]; then + dirpfx="${srcdir}/" + fi + + CT_Pushd "${srcdir}" + for t in "${CT_TARGET}-"*; do + if [ -n "${newpfx}" -a "${newpfx}" != "${CT_TARGET}" ]; then + _t="${newpfx}-${t#${CT_TARGET}-}" + CT_DoExecLog ALL ln -sfv "${dirpfx}${t}" "${bindir}/${_t}" + fi + if [ -n "${sedexpr}" ]; then + _t=$( echo "${t}" | sed -r -e "${sedexpr}" ) + if [ "${_t}" = "${t}" ]; then + CT_DoLog WARN "The sed expression '${sedexpr}' has no effect on '${t}'" + else + CT_DoExecLog ALL ln -sfv "${dirpfx}${t}" "${bindir}/${_t}" + fi + fi + done + CT_Popd +} + +# Create symbolic links for multilib iterator. Expects ${multi_target} +# variable to indicate the desired triplet for the tools. +CT_SymlinkToolsMultilib() +{ + # Make configure detect ${target}-tool binaries even if it is different + # from configured tuple. Only symlink to final tools if they're executable + # on build. + CT_SymlinkTools "${CT_BUILDTOOLS_PREFIX_DIR}/bin" \ + "${CT_BUILDTOOLS_PREFIX_DIR}/bin" "${multi_target}" + case "${CT_TOOLCHAIN_TYPE}" in + native|cross) + CT_SymlinkTools "${CT_BUILDTOOLS_PREFIX_DIR}/bin" \ + "${CT_PREFIX_DIR}/bin" "${multi_target}" + ;; + esac +} -- cgit v0.10.2-6-g49f6