From 11b52ab6d7aef83f624dccc81e0b479c5155fe31 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 12 Mar 2017 23:01:23 -0700 Subject: Create ld.so.conf Also a fix for CT_IterateMultilibs: it didn't pass multi_os_dir_gcc, so it only worked if the caller did *not* declare it as a local variable. Signed-off-by: Alexey Neyman diff --git a/scripts/build/cc/100-gcc.sh b/scripts/build/cc/100-gcc.sh index 6cdcb31..9802521 100644 --- a/scripts/build/cc/100-gcc.sh +++ b/scripts/build/cc/100-gcc.sh @@ -789,7 +789,7 @@ do_gcc_for_build() { } gcc_movelibs() { - local multi_flags multi_dir multi_os_dir multi_root multi_index multi_count + local multi_flags multi_dir multi_os_dir multi_os_dir_gcc multi_root multi_index multi_count local gcc_dir dst_dir for arg in "$@"; do diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh index 7d91d78..a1c9b55 100644 --- a/scripts/build/internals.sh +++ b/scripts/build/internals.sh @@ -1,5 +1,27 @@ # This file contains crosstool-NG internal steps +create_ldso_conf() +{ + local multi_dir multi_os_dir multi_os_dir_gcc multi_root multi_flags multi_index multi_count multi_target + local b d + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoExecLog ALL mkdir -p "${multi_root}/etc" + for b in /lib /usr/lib /usr/local/lib; do + d="${b}/${multi_os_dir}" + CT_SanitizeVarDir d + echo "${d}" >> "${multi_root}/etc/ld.so.conf" + if [ "${multi_os_dir}" != "${multi_os_dir_gcc}" ]; then + d="${b}/${multi_os_dir_gcc}" + CT_SanitizeVarDir d + echo "${d}" >> "${multi_root}/etc/ld.so.conf" + fi + done +} + # This step is called once all components were built, to remove # un-wanted files, to add tuple aliases, and to add the final # crosstool-NG-provided files. @@ -10,7 +32,14 @@ do_finish() { local gcc_version local exe_suffix - CT_DoStep INFO "Cleaning-up the toolchain's directory" + CT_DoStep INFO "Finalizing the toolchain's directory" + + if [ "${CT_SHARED_LIBS}" = "y" ]; then + # Create /etc/ld.so.conf + CT_mkdir_pushd "${CT_BUILD_DIR}/build-create-ldso" + CT_IterateMultilibs create_ldso_conf create-ldso + CT_Popd + fi if [ "${CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES}" = "y" ]; then case "$CT_HOST" in diff --git a/scripts/functions b/scripts/functions index 3ef7bf6..ab141d5 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1750,13 +1750,14 @@ CT_IterateMultilibs() { dir_postfix=_${multi_dir//\//_} dir_postfix=${dir_postfix%_.} CT_mkdir_pushd "${prefix}${dir_postfix}" - $func multi_dir="${multi_dir}" \ - multi_os_dir="${multi_os_dir}" \ - multi_flags="${multi_flags}" \ - multi_root="${multi_root}" \ - multi_target="${multi_target}" \ - multi_index="${multi_index}" \ - multi_count="${#multilibs[@]}" \ + $func multi_dir="${multi_dir}" \ + multi_os_dir="${multi_os_dir}" \ + multi_os_dir_gcc="${multi_os_dir_gcc}" \ + multi_flags="${multi_flags}" \ + multi_root="${multi_root}" \ + multi_target="${multi_target}" \ + multi_index="${multi_index}" \ + multi_count="${#multilibs[@]}" \ "$@" CT_Popd multi_index=$((multi_index+1)) @@ -1819,7 +1820,7 @@ CT_SymlinkToolsMultilib() # Helper (iterator) for CT_MultilibFixupLDSO CT__FixupLDSO() { - local multi_dir multi_os_dir multi_root multi_flags multi_index multi_count + local multi_dir multi_os_dir multi_root multi_flags multi_index multi_count multi_target local binary local ldso ldso_l ldso_f ldso_d ldso_u multilib_dir -- cgit v0.10.2-6-g49f6