#!/bim/sh
function add_dep_lib()
{
local TARGET=$1
local LIB_SEARCH_DIRS=$2
local LIB_DIR=$3
local USR_LIB_SEARCH_DIRS=$4
local USR_LIB_DIR=$5
local libs=`arm-none-linux-readelf -a ${TARGET} |grep "shared library" |awk /
'{print $5}' |awk -F/ '{print $NF}' |sed 's//[//' |sed 's//]//'`
echo "processing libraries for [${TARGET}] ...." [ -z "${libs}" ] /
&& echo "not found depend libraries for [${TARGET}], let's return now" /
&& return
echo "found depend library :${libs}"
for lib in ${libs}
do
echo "looking for ${lib} ..."
local exsit=0
for lib_dir in ${LIB_DIR} ${USR_LIB_DIR}
do [-r ${lib_dir}/${lib}] /
&& exsit=1 /
&& break
done
[${exsit} -eq 1] /
&& echo"${lib} aready existed, continue" /
&& comtinue
local found=0
for lib_dir in ${LIB_SEARCH_DIRS}
do [-r ${lib_dir}/${lib}] /
&& found=1 /
&& cp -aL ${lib_dir}/${lib} ${LIB_DIR}
local link_text=""
local link_target=""
[${found} -eq 1] /
&& ls -l ${lib_dir}/${lib} | grep "^l.*$">/dev/null /
&& link_text=`ls -l ${lib_dir}/${lib}`
link_target=`echo ${link_text} |awk '{print $NF}'`
["${link_target}" !=""] /
&& cp -L ${lib_dir}/${link_target} ${LIB_DIR}
[${found} -eq 1] /
&& echo "copied ${lib}, Let't go deep " /
&& add_dep_lib ${lib_dir}/${lib} ${LIB_SEARCH_DIRS} ${LIB_DIR} /
${USR_LIB_SEARCH_DIRS} ${USR_LIB_DIR}/
&& echo "${lib} depend library copeid break" /
&& break
done
[${found} -eq 1 ] && continue
for lib_dir in ${USR_LIB_SEARCH_DIRS}
do
[ -r ${lib_dir}/${lib} ] /
&& found =1 /
&& cp -aL ${lib_dir}/${lib} ${USR_LIB_DIR}
local link_text=""
local link_target=""
[${found} -eq 1 ] /
&& ls -l ${lib_dir}/${lib} | grep "^l.*$" >/dev/null /
&& link_text=`ls -l ${lib_dir}/${lib}`
link_target = `echo ${link_text} |awk '{print $NF}'`
["${link_target}"!=""] /
&& cp -L ${lib_dir}/${link_target} ${USR_LIB_DIR}
[${found} -eq 1 ] /
$echo "copy ${lib} go deep..." /
&& add_dep_lib ${lib_dir}/${lib} ${LIB_SEARCH_DIRS} ${LIB_DIR}
${USR_LIB_SEARCH_DIRS} ${USR_LIB_DIR}
&& echo "finish to process ${lib} depend library let's break" /
&& break
done
[${found} -eq 0] /
&& echo "error:not found ${lib}'s check search paths"
&& exit 1
done
}
LANG="en_US.utf8"
add_dep_lib $1 $2 $3 "$4" $5