# $NetBSD: transform-libtool,v 1.4 2018/08/22 20:48:36 maya Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by Johnny C. Lam. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. BUILDLINK_DIR="@BUILDLINK_DIR@" WRKSRC="@WRKSRC@" basename="@BASENAME@" dirname="@DIRNAME@" pwd="@PWD@" case $arg in ###################################################################### # Workaround software authors that don't follow the libtool # documentation and link against uninstalled libtool archives with: # # -L../package/source/dir -lfoo # # instead of the correct (according to the libtool documentation) # # ../package/source/dir/libfoo.la # # We convert the former into the latter by remembering all "local" # directories that are mentioned in -L* arguments to to libtool # wrapper, and checking to see if /libfoo.la exists when we see # "-lfoo" on the libtool command line. Avoid matching the buildlink # directory here for the WRKSRC == WRKDIR case. ###################################################################### -L${BUILDLINK_DIR}/*) ;; -L.|-L./*|-L..*|-L[!/]*|-L${WRKSRC}*) case $arg in */.libs) # ignore -L.../.libs ;; *) msg_log $wrapperlog "*** [buildlink3] Warning: libtool detected $arg" lpath="${arg#-L}" case $rellpath in *"$lpath "*) ;; *"$lpath"*) ;; *) rellpath="$rellpath $lpath" ;; esac addtocache=no ;; esac ;; -l*) lib="${arg#-l}" for dir in $rellpath; do la="$dir/lib$lib.la" if $test -f "$la"; then ldir=`cd $dir; $pwd` buildlibdir=`. $la; $echo ${buildlibdir-}` if $test -n "$buildlibdir" -a \ "$ldir" != "$buildlibdir"; then la="$buildlibdir/lib$lib.la" fi $debug_log $wrapperlog " (transform-libtool) to: $la" msg_log $wrapperlog "*** [buildlink3] Warning: libtool replaced $arg with $la" $echo "*** [buildlink3] Warning: libtool replaced $arg with $la" 1>&2 arg="$la" addtocache=no break fi done ;; ###################################################################### # Replace all references to locally-linked libtool archives with the # full paths to the archives in $buildlibdir if $buildlibdir differs # from the referenced directory. This makes linking against a symlinked # local libtool archive possible. ###################################################################### ./*.la|../*.la|[!-/]*.la|${WRKSRC}/*.la) labase=`$basename $arg` ladir=`$dirname $arg` ldir=`cd $ladir; $pwd` buildlibdir=`. $ladir/$labase; $echo ${buildlibdir-}` if $test -n "$buildlibdir" -a "$ldir" != "$buildlibdir" -a \ -e "$buildlibdir/$labase"; then arg="$buildlibdir/$labase" $debug_log $wrapperlog " (transform-libtool) to: $arg" msg_log $wrapperlog "*** [buildlink3] Warning: libtool replaced $ladir/$labase with $arg" addtocache=yes fi ;; esac