# $Header: /magellan-cvs/smage/include/libtool.sminc,v 1.3 2008/04/02 16:30:00 niro Exp $ # libtool related functions # fixes broken dependencies in *.la files # broken: dependency_libs=' -L/var/tmp/magebuild/gcc-4.2.3/build/i686-pc-linux-gnu/libstdc++-v3/src -L/var/tmp/magebuild/gcc-4.2.3/build/i686-pc-linux-gnu/libstdc++-v3/src/.libs -lm -lm -lm -L/var/tmp/magebuild/gcc-4.2.3/build/./gcc -L/usr/lib/gcc/i686-pc-linux-gnu/4.2.3 -L/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/../../.. -lgcc_s -lc -lgcc_s -lm -lgcc_s -lc -lgcc_s' # fixed: dependency_libs=' -lm -lm -lm -L/usr/lib/gcc/i686-pc-linux-gnu/4.2.3 -L/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/../../.. -lgcc_s -lc -lgcc_s -lm -lgcc_s -lc -lgcc_s' fix_la_file() { local file="$@" local dependency_libs local new_dependency_libs local dep if [[ -f ${file} ]] then echo "Processing file '${file}' ..." dependency_libs=$(egrep '^dependency_libs=' ${file} | sed -e "s:dependency_libs=::" -e "s:'::g" ) for dep in ${dependency_libs} do # check for ${BINDIR} [[ ${dep/${BINDIR}/} != ${dep} ]] && continue # check for ${BUILDDIR} [[ ${dep/${BUILDDIR}/} != ${dep} ]] && continue # do not add any duplicates check_dupes new_dependency_libs ${dep} || continue new_dependency_libs="${new_dependency_libs} ${dep}" done echo "new deps: ${new_dependency_libs}" sed -i "s:^\(dependency_libs=\).*:\1'${new_dependency_libs}':" ${file} fi } # checks a variable if it contains a given item # check_dupes variablename item check_dupes() { local variable="$1" local item="$2" local i for i in $(eval echo \$${variable}) do # found so abort [[ ${i} = ${item} ]] && return 1 done # if we get here, nothing was found return 0 }