summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/build/internals.sh19
-rw-r--r--scripts/wrapper.in15
2 files changed, 34 insertions, 0 deletions
diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh
index acaf864..51272e6 100644
--- a/scripts/build/internals.sh
+++ b/scripts/build/internals.sh
@@ -4,6 +4,8 @@
# un-wanted files, to add tuple aliases, and to add the final
# crosstool-NG-provided files.
do_finish() {
+ local _t
+
CT_DoStep INFO "Cleaning-up the toolchain's directory"
CT_DoLog EXTRA "Removing access to the build system tools"
@@ -39,6 +41,23 @@ do_finish() {
done
CT_Popd
+ # If using the companion libraries, we need a wrapper
+ # that will set LD_LIBRARY_PATH approriately
+ if [ "${CT_GMP_MPFR}" = "y" \
+ -o "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+ CT_DoLog EXTRA "Installing toolchain wrappers"
+ CT_Pushd "${CT_PREFIX_DIR}/bin"
+ sed -r -e 's|@@CT_bash@@|'"${bash}"'|g;' \
+ "${CT_LIB_DIR}/scripts/wrapper.in" \
+ >".${CT_TARGET}-wrapper"
+ CT_DoExecLog ALL chmod 755 ".${CT_TARGET}-wrapper"
+ for t in "${CT_TARGET}-"*; do
+ CT_DoExecLog ALL mv "${t}" ".${t}"
+ CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${t}"
+ done
+ CT_Popd
+ fi
+
# Remove the generated documentation files
if [ "${CT_REMOVE_DOCS}" = "y" ]; then
CT_DoLog EXTRA "Removing installed documentation"
diff --git a/scripts/wrapper.in b/scripts/wrapper.in
new file mode 100644
index 0000000..70cb5d3
--- /dev/null
+++ b/scripts/wrapper.in
@@ -0,0 +1,15 @@
+#!@@CT_bash@@
+# There are bashisms on the last line
+
+dirname="$(dirname "${0}")"
+basename="$(basename "${0}")"
+
+ld_lib_path="$(dirname "${dirname}")/lib"
+
+case ":${LD_LIBRARY_PATH}:" in
+ *":${ld_lib_path}:"*) ;;
+ *) LD_LIBRARY_PATH="${ld_lib_path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}";;
+esac
+
+export LD_LIBRARY_PATH
+exec -a "${basename}" "${dirname}/.${basename}" "$@"