summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2017-03-13 06:01:23 (GMT)
committerAlexey Neyman <stilor@att.net>2017-03-13 08:08:13 (GMT)
commit11b52ab6d7aef83f624dccc81e0b479c5155fe31 (patch)
treed733452d526801596917ceb6958c51ae63ae56ac /scripts
parentb090e0f74d1ca0c0c45ec416c139f709a8e28f61 (diff)
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 <stilor@att.net>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build/cc/100-gcc.sh2
-rw-r--r--scripts/build/internals.sh31
-rw-r--r--scripts/functions17
3 files changed, 40 insertions, 10 deletions
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