10e3d5408SPeter Wemm#!/bin/sh 20e3d5408SPeter Wemm############################################################################## 34a1a9510SRong-En Fan# Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. # 40e3d5408SPeter Wemm# # 50e3d5408SPeter Wemm# Permission is hereby granted, free of charge, to any person obtaining a # 60e3d5408SPeter Wemm# copy of this software and associated documentation files (the "Software"), # 70e3d5408SPeter Wemm# to deal in the Software without restriction, including without limitation # 80e3d5408SPeter Wemm# the rights to use, copy, modify, merge, publish, distribute, distribute # 90e3d5408SPeter Wemm# with modifications, sublicense, and/or sell copies of the Software, and to # 100e3d5408SPeter Wemm# permit persons to whom the Software is furnished to do so, subject to the # 110e3d5408SPeter Wemm# following conditions: # 120e3d5408SPeter Wemm# # 130e3d5408SPeter Wemm# The above copyright notice and this permission notice shall be included in # 140e3d5408SPeter Wemm# all copies or substantial portions of the Software. # 150e3d5408SPeter Wemm# # 160e3d5408SPeter Wemm# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # 170e3d5408SPeter Wemm# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # 180e3d5408SPeter Wemm# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # 190e3d5408SPeter Wemm# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # 200e3d5408SPeter Wemm# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # 210e3d5408SPeter Wemm# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # 220e3d5408SPeter Wemm# DEALINGS IN THE SOFTWARE. # 230e3d5408SPeter Wemm# # 240e3d5408SPeter Wemm# Except as contained in this notice, the name(s) of the above copyright # 250e3d5408SPeter Wemm# holders shall not be used in advertising or otherwise to promote the sale, # 260e3d5408SPeter Wemm# use or other dealings in this Software without prior written # 270e3d5408SPeter Wemm# authorization. # 280e3d5408SPeter Wemm############################################################################## 290e3d5408SPeter Wemm# 300e3d5408SPeter Wemm# Author: Thomas E. Dickey <dickey@clark.net> 1996 310e3d5408SPeter Wemm# 324a1a9510SRong-En Fan# $Id: shlib,v 1.10 2005/06/25 22:41:17 tom Exp $ 330e3d5408SPeter Wemm# Use this script as a wrapper when running executables linked to shared 340e3d5408SPeter Wemm# libraries on systems that use the $LD_LIBRARY_PATH variable and don't embed 350e3d5408SPeter Wemm# the soname's path within the linked executable (such as IRIX), e.g, 360e3d5408SPeter Wemm# 370e3d5408SPeter Wemm# shlib knight 380e3d5408SPeter Wemm# 390e3d5408SPeter Wemm# Setting LD_LIBRARY_PATH, overrides/supplements the loader's normal search 400e3d5408SPeter Wemm# path, and works on most systems. The drawback is that then the environment 410e3d5408SPeter Wemm# variable has to be set to run the programs within this directory tree. 420e3d5408SPeter Wemm# 430e3d5408SPeter Wemm# For Linux (and other systems using the GNU loader), we can use the rpath 440e3d5408SPeter Wemm# directive, which embeds the pathname of the library within the executable. 450e3d5408SPeter Wemm# Using the Linux loader's rpath directive introduces a constraint, since 460e3d5408SPeter Wemm# it's embedded into the binary, and means that the binary cannot be moved 470e3d5408SPeter Wemm# around (though it'll work if the $exec_prefix convention that puts the bin 480e3d5408SPeter Wemm# and lib directories under the same parent is followed). 490e3d5408SPeter Wemm# 500e3d5408SPeter Wemm# Using the actual soname (e.g., ../lib/libncurses.so) alone, is a more 510e3d5408SPeter Wemm# flexible solution; you can link without having to set the environment 520e3d5408SPeter Wemm# variable, and on some systems (IRIX) you can even run the resulting binaries 530e3d5408SPeter Wemm# without setting LD_LIBRARY_PATH. 540e3d5408SPeter Wemm# 550e3d5408SPeter Wemm# Using a conventional link, with -L and -l options on Linux results in a 560e3d5408SPeter Wemm# statically linked executable, which we don't want at all. 570e3d5408SPeter Wemm# 5815589c42SPeter Wemm# Special cases: 5915589c42SPeter Wemm# 6015589c42SPeter Wemm# BeOS R4.5 uses $LIBRARY_PATH rather than $LD_LIBRARY_PATH. 614a1a9510SRong-En Fan# Cygwin uses $PATH 624a1a9510SRong-En Fan# Mac OS X uses $DYLD_LIBRARY_PATH 634a1a9510SRong-En Fan# 644a1a9510SRong-En Fan# Other cases not handled by this script: 654a1a9510SRong-En Fan# 664a1a9510SRong-En Fan# AIX uses $LIBPATH 674a1a9510SRong-En Fan# IRIX64 may use $LD_LIBRARY64_PATH or $LD_LIBRARYN32_PATH 684a1a9510SRong-En Fan# Solaris may use $LD_LIBRARY_PATH_64 694a1a9510SRong-En Fan# 704a1a9510SRong-En FanCDPATH= 710e3d5408SPeter Wemm# 720e3d5408SPeter Wemm# Make sure that we use the PATH that was set in run_tic.sh 734a1a9510SRong-En Fanif test -n "$SHLIB_PATH" ; then 744a1a9510SRong-En Fan PATH=$SHLIB_PATH 750e3d5408SPeter Wemm export PATH 760e3d5408SPeter Wemmfi 770e3d5408SPeter Wemm 784a1a9510SRong-En Fan# Find the lib-directory for this build tree 790e3d5408SPeter Wemmq="" 804a1a9510SRong-En Fanfor p in lib ../lib ../../lib ../../../lib 810e3d5408SPeter Wemmdo 820e3d5408SPeter Wemm if test -d $p; then 834a1a9510SRong-En Fan q=`cd $p; pwd` 844a1a9510SRong-En Fan elif test -f configure && test ! -d ../$p ; then 854a1a9510SRong-En Fan break 860e3d5408SPeter Wemm fi 870e3d5408SPeter Wemmdone 884a1a9510SRong-En Fan 894a1a9510SRong-En Fan# Set the environment variable. 900e3d5408SPeter Wemmif test -n "$q" ; then 914a1a9510SRong-En Fan system= 924a1a9510SRong-En Fan if test -n "$SHLIB_HOST" ; then 934a1a9510SRong-En Fan system="$SHLIB_HOST" 944a1a9510SRong-En Fan elif test -n "$PATHEXT" ; then 954a1a9510SRong-En Fan system=cygwin 9615589c42SPeter Wemm elif test -n "$LIBRARY_PATH" ; then 974a1a9510SRong-En Fan system=beos 984a1a9510SRong-En Fan elif test -n "$DYLD_LIBRARY_PATH" ; then 994a1a9510SRong-En Fan system=darwin 1004a1a9510SRong-En Fan elif test -n "$LD_LIBRARY_PATH"; then 1014a1a9510SRong-En Fan system=unix 1020e3d5408SPeter Wemm else 1034a1a9510SRong-En Fan for r in $q/*.* 1044a1a9510SRong-En Fan do 1054a1a9510SRong-En Fan if test -f "$r" 1064a1a9510SRong-En Fan then 1074a1a9510SRong-En Fan case $r in 1084a1a9510SRong-En Fan *.dll) 1094a1a9510SRong-En Fan system=cygwin 1104a1a9510SRong-En Fan ;; 1114a1a9510SRong-En Fan *.dylib) 1124a1a9510SRong-En Fan system=darwin 1134a1a9510SRong-En Fan ;; 1144a1a9510SRong-En Fan esac 1150e3d5408SPeter Wemm fi 1164a1a9510SRong-En Fan test -n "$system" && break 1174a1a9510SRong-En Fan done 1180e3d5408SPeter Wemm fi 1194a1a9510SRong-En Fan 1204a1a9510SRong-En Fan case .$system in 1214a1a9510SRong-En Fan .cygwin*) 1224a1a9510SRong-En Fan variable=PATH 1234a1a9510SRong-En Fan ;; 1244a1a9510SRong-En Fan .beos*) 1254a1a9510SRong-En Fan variable=LIBRARY_PATH 1264a1a9510SRong-En Fan ;; 1274a1a9510SRong-En Fan .darwin*) 1284a1a9510SRong-En Fan variable=DYLD_LIBRARY_PATH 1294a1a9510SRong-En Fan ;; 1304a1a9510SRong-En Fan *) 1314a1a9510SRong-En Fan variable=LD_LIBRARY_PATH 1324a1a9510SRong-En Fan ;; 1334a1a9510SRong-En Fan esac 1344a1a9510SRong-En Fan 1354a1a9510SRong-En Fan eval 'test -z "$'$variable'" && '$variable'=":"' 1364a1a9510SRong-En Fan eval $variable'="$q:$'$variable'"' 1374a1a9510SRong-En Fan eval 'export '$variable 1384a1a9510SRong-En Fanfi 1394a1a9510SRong-En Fan 1400e3d5408SPeter Wemmeval "$*" 141