#!@BUILDLINK_SHELL@ # # $NetBSD: fake-la,v 1.11 2004/02/21 10:35:57 jlam Exp $ AR="@AR@" AWK="@AWK@" BASENAME="@BASENAME@" CC="@CC@" CP="@CP@" DIRNAME="@DIRNAME@" ECHO="@ECHO@" LIBTOOL="@LIBTOOL@ --quiet" MKDIR="@MKDIR@" MV="@MV@" RM="@RM@" SED="@SED@" TEST="@TEST@" BUILDLINK_DIR="@BUILDLINK_DIR@" reallib="$1" realdir=`${DIRNAME} $reallib` libname=`${BASENAME} $reallib` tmpdir=${BUILDLINK_DIR}/.tmp case $libname in *.so) # no version in name which happens e.g. for libpthread.so on Linux # Suse 8.1, Slackware 8.1 and others, but there, the library is a link # to a library with a version in it libbase=`${ECHO} $libname | ${SED} -e "s/\.so$//"` if ${TEST} -h $reallib; then liblinked=`ls -l $reallib | ${AWK} '{print $NF}'` version=`${ECHO} $liblinked | ${SED} -e "s/.*\.so\.//;s/\./:/g"` else # bail out ${ECHO} "could not determine version of $reallib" exit 1 fi ;; *.so.[0-9]*) libbase=`${ECHO} $libname | ${SED} -e "s/\.so\.[0-9.]*$//"` version=`${ECHO} $libname | ${SED} -e "s/.*\.so\.//;s/\./:/g"` ;; *[0-9].dylib) libbase=`${ECHO} $libname | ${SED} -e "s/\.[0-9.]*\.dylib$//"` version=`${ECHO} $libname | ${SED} -e "s/^[^.]*\.\([0-9]*\.[0-9]*\)\.dylib/\1/;s/\./:/g"` ;; *.a) libbase=`${ECHO} $libname | ${SED} -e "s/\.a$//"` ltlib="$realdir/$libbase.la" # If there's already a libtool .la file, use it. if ${TEST} -e "$ltlib" ; then current=`${SED} -n -e'/^current=[[:digit:]]/{ s/^current=//; p; };' "$ltlib"` rev=`${SED} -n -e'/^revision=[[:digit:]]/{ s/^revision=//; p; };' "$ltlib"` current=$(($current + 0)) rev=$(($rev + 0)) version="$current.$rev" else # Try looking inside the archive sublibname=`${AR} t "$reallib" | ${AWK} ' /.*\.so\..*/ { print $1 ; exit } '` case $sublibname in *.so.*) version=`${ECHO} "$sublibname" | ${SED} -e "s/.*\.so\.//;s/\./:/g"` ;; *) version="0" ;; esac fi ;; *) # bail out ${ECHO} "$0: unknown library type for $libname" exit 1 ;; esac if ${TEST} ! -f $tmpdir/inst/$libbase.la; then PATH="@PATH@"; export PATH ${MKDIR} $tmpdir/inst cd $tmpdir ${ECHO} "static int i;" > nonempty.c # create a nonempty input file ${LIBTOOL} --mode=compile ${CC} -c nonempty.c ${LIBTOOL} --mode=link ${CC} @LDFLAGS@ -o $libbase.la nonempty.lo -rpath $tmpdir/inst -version-info $version ${LIBTOOL} --mode=install ${CP} $libbase.la $tmpdir/inst >/dev/null # Reset the ld.so cache as "libtool --mode=install" may have executed # ldconfig to add "$tmpdir/inst" to the cache. # @RESET_LD_SO_CACHE@ >/dev/null 2>&1 fi dlname=`${SED} -n -e"/^dlname='/{ s/^dlname='//; s/'$//; p; };" "$tmpdir/inst/$libbase.la"` library_names=`${SED} -n -e"/^library_names='/{ s/^library_names='//; s/'$//; p; };" "$tmpdir/inst/$libbase.la"` old_library=`${SED} -n -e"/^old_library='/{ s/^old_library='//; s/'$//; p; };" "$tmpdir/inst/$libbase.la"` for file in $dlname $library_names $old_library do if ! [ -e $realdir/$file ] then removal_pattern="$removal_pattern -e s,$file\([^.0-9]\),\1,g" fi done ${SED} -e "s,$tmpdir/inst,$realdir,g" $removal_pattern $tmpdir/inst/$libbase.la