#!/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 "$@"