You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sys-apps/prefix-chain-utils/files/prefix-chain-wrapper.in

79 lines
2.0 KiB

#!/usr/bin/env bash
link_dirs=()
opts=()
chost="@GENTOO_PORTAGE_CHOST@"
prefix="@GENTOO_PORTAGE_EPREFIX@"
absprefix=${prefix}
if [[ ${CHOST} == *"-winnt"* ]]; then
# we may get called from windows binary, like pkgdata in dev-libs/icu
# in this case, PATH elements get the "/dev/fs/C/WINDOWS/SUA" prefix
absprefix=$(winpath2unix "$(unixpath2win "${absprefix}")")
fi
mode=link
orig_args=("$@")
for opt in "$@"; do
case "$opt" in
-L) link_dirs=("${link_dirs[@]}" "-L$1"); shift ;;
-L*) link_dirs=("${link_dirs[@]}" "${opt}") ;;
*)
case "${opt}" in
-v)
# -v done right: only use mode version if -v is the _only_
# argument on the command line.
[[ ${#orig_args[@]} -gt 1 ]] || mode=version
;;
--version) mode=version ;;
-c|-E|-S) mode=compile ;;
-print-search-dirs) mode=dirs ;;
esac
opts=("${opts[@]}" "${opt}")
;;
esac
done
save_ifs=$IFS
IFS=':'
new_path=
for p in $PATH; do
IFS=$save_ifs
[[ "${p#${absprefix}}" != "${p}" ]] && continue
if [[ -z "${new_path}" ]]; then
new_path="${p}"
else
new_path="${new_path}:${p}"
fi
done
IFS=$save_ifs
PATH=${new_path}
# toolchain-prefix-wrapper's ld-wrapper understands '-R' for aix and hpux too.
# parity (winnt) understands -rpath only ...
case "${chost}" in
*-winnt*) rpath_opt="-Wl,-rpath," ;;
*) rpath_opt="-Wl,-R," ;;
esac
pfx_link=("-L${prefix}/usr/lib" "-L${prefix}/lib")
pfx_link_r=("${rpath_opt}${prefix}/lib" "${rpath_opt}${prefix}/usr/lib")
pfx_comp=("-I${prefix}/include" "-I${prefix}/usr/include")
case "$mode" in
link) exec "$(basename $0)" "${link_dirs[@]}" "${pfx_link[@]}" "${opts[@]}" "${pfx_comp[@]}" "${pfx_link_r[@]}" ;;
compile) exec "$(basename $0)" "${link_dirs[@]}" "${opts[@]}" "${pfx_comp[@]}" ;;
version) exec "$(basename $0)" "${orig_args[@]}" ;;
dirs)
"$(basename $0)" "${orig_args[@]}" | while read line; do
if [[ "${line}" == "libraries: ="* ]]; then
echo "libraries: =${prefix}/usr/lib:${prefix}/lib:${line#"libraries: ="}"
else
echo "${line}"
fi
done
;;
*) echo "cannot infer $0's mode from comamnd line arguments"; exit 1 ;;
esac