89 lines
2.5 KiB
Bash
89 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Libtool does not support spaces in dependency_libs entries
|
|
# so we won't worry overly about them either.
|
|
|
|
fix_la_files() {
|
|
if ! grep --help &> /dev/null
|
|
then
|
|
echo "Grep not functional. Aborting."
|
|
return 1
|
|
elif ! sed --help &> /dev/null
|
|
then
|
|
echo "Sed not functional. Aborting."
|
|
return 1
|
|
elif ! uniq --help &> /dev/null
|
|
then
|
|
echo "Uniq not functional. Aborting."
|
|
elif ! sort --help &> /dev/null
|
|
then
|
|
echo "Sort not functional. Aborting."
|
|
fi
|
|
declare lafile
|
|
for lafile in "$@"
|
|
do
|
|
local dependency_libs=""
|
|
local inh_link_flags=""
|
|
local new_dep_libs=""
|
|
local libladir=""
|
|
local librpath=""
|
|
local dep_libs=""
|
|
local lib=""
|
|
|
|
dep_libs="$(grep '^dependency_libs=' $lafile)"
|
|
dep_libs="${dep_libs#dependency_libs=\'}"
|
|
dep_libs="${dep_libs%\'}"
|
|
|
|
inh_link_flags="$(grep '^inherited_linker_flags=' $lafile)"
|
|
inh_link_flags="${inh_link_flags#inherited_linker_flags=\'}"
|
|
inh_link_flags="${inh_link_flags%\'}"
|
|
|
|
|
|
for entry in $dep_libs
|
|
do
|
|
if [[ "${entry#-L}" != "${entry}" ]]
|
|
then
|
|
[[ ${entry/X11R6\/lib} != ${entry} ]] && entry="${entry/X11R6\/}"
|
|
[[ ${entry/local\/lib} != ${entry} ]] && entry="${entry/local\/}"
|
|
[[ ${entry/usr\/lib*\/pkgconfig\/..\/..} != ${entry} ]] && entry="${entry/\/lib*\/pkgconfig\/..\/..}"
|
|
[[ ${entry/usr\/lib*\/pkgconfig\/..} != ${entry} ]] && entry="${entry/\/pkgconfig\/..}"
|
|
libladir="${libladir} ${entry}"
|
|
elif [[ "${entry#-R}" != "${entry}" ]]
|
|
then
|
|
librpath="${librpath} ${entry}"
|
|
elif [[ "${entry#-l}" != "${entry}" ]]
|
|
then
|
|
new_dep_libs="${new_dep_libs} ${entry}"
|
|
elif [[ "${entry%.la}" != "${entry}" ]]
|
|
then
|
|
libladir="${libladir} -L${entry%/*.la}"
|
|
lib="${entry%.la}"
|
|
lib="${lib##*\/lib}"
|
|
lib="-l${lib}"
|
|
new_dep_libs="${new_dep_libs} ${lib}"
|
|
|
|
elif [[ "${entry}" == "-pthread" ]]
|
|
then
|
|
if [[ ${inh_link_flags} != *-pthread* ]]
|
|
then
|
|
inh_link_flags="${inh_link_flags} -pthread"
|
|
fi
|
|
else
|
|
echo $lafile
|
|
echo "${entry}"
|
|
echo "Holy Moley, Dorothy, we ain't in Kansas and Luke, I'm not your father"
|
|
return 1
|
|
fi
|
|
done
|
|
libladir=( $(printf '%s' "$(for i in ${libladir}; do printf '%s\n' $i; done)"|sort|uniq) )
|
|
librpath=( $(printf '%s' "$(for i in ${librpath}; do printf '%s\n' $i; done)"|sort|uniq) )
|
|
new_dep_libs=( ${librpath[@]} ${libladir[@]} ${new_dep_libs} )
|
|
new_dep_libs=" ${new_dep_libs[@]}"
|
|
sed -i \
|
|
-e "/^dependency_libs/ c\dependency_libs='${new_dep_libs}'" \
|
|
-e "/^inherited_linker_flags/ c\inherited_linker_flags='${inh_link_flags}'" \
|
|
${lafile}
|
|
done
|
|
}
|
|
|
|
fix_la_files "$@"
|