asterisk/third-party/pjproject/dependency_utils

97 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
[ "x${SED}" = "x" ] && SED=sed
[ "x${GREP}" = "x" ] && GREP=grep
[ "x${REALPATH}" = "x" ] && REALPATH=realpath
[ "x${DIRNAME}" = "x" ] && DIRNAME=dirname
[ "x${BASENAME}" = "x" ] && BASENAME=basename
[ "x${GREP}" = "x" ] && GREP=grep
if [ "x${TARGET_NAME}" = "x" ] ; then
if [ ! -f build.mak ] ; then
exit 0;
fi
TARGET_NAME=$(${SED} -n -r -e "s/export\s+TARGET_NAME\s*:=\s*(.*)/\1/gp" build.mak)
fi
getlibname() {
dep="$1"
libdir=$(${DIRNAME} $(${DIRNAME} "${dep}"))/lib
depname=$(${BASENAME} "${dep}")
depprefix="${depname%%-${TARGET_NAME}.depend}"
case ${depprefix} in
.pjlib)
libfile=libpj
;;
.pjsua-lib)
libfile=libpjsua
;;
.*)
libfile=lib${depprefix#.*}
;;
esac
echo "${libdir}/${libfile}-${TARGET_NAME}.a"
}
gendepfile() {
pjdf="$1"
astdf="${pjdf%*.depend}.astdep"
dirname=$(${DIRNAME} "${astdf}")
lines=$(grep -E -o -- "[.][.]/[^ ]+" "${pjdf}" | sort -u | wc -l)
libname=$(getlibname "${pjdf}")
backslash="\\"
echo "${libname}: ${backslash}" >"${astdf}"
for dep in $(grep -E -o -- "[.][.]/[^ ]+" "${pjdf}" | sort -u) ; do
( echo "${dep}" | grep -Eq "(test|/bin/)" ; ) && continue
newdep=$( cd "${dirname}" ; ${REALPATH} -L --relative-to=../../ "${dep}" ; )
lines=$(( ${lines} - 1 ))
if [ ${lines} -eq 0 ] ; then
echo "source/${newdep}" >>"${astdf}"
else
echo "source/${newdep} ${backslash}" >>"${astdf}"
fi
done
echo >>"${astdf}"
}
getpjdepname () {
lib="$1"
builddir=$(${DIRNAME} $(${DIRNAME} "${lib}"))/build
libname=$(${BASENAME} "${lib}")
libprefix="${libname%%-${TARGET_NAME}.a}"
nolib=$(echo "${libprefix}" | ${SED} -r -e "s@^lib@@g")
case ${nolib} in
pj)
depfile=.pjlib
;;
pjsua)
depfile=.pjsua-lib
;;
resample)
depfile=resample/.libresample
;;
*)
depfile=.${nolib}
;;
esac
echo "${builddir}/${depfile}-${TARGET_NAME}.depend"
}
case $1 in
getpjdepname)
shift
for lib in $@ ; do getpjdepname "${lib}" ; done
;;
gendepfile)
shift
for dep in $@ ; do gendepfile "${dep}" ; done
;;
getlibname)
shift
for dep in $@ ; do getlibname "${dep}" ; done
;;
*)
echo Invalid command
exit 1
;;
esac