ltmain.sh revision ee3138f1
1ee3138f1Smrg# ltmain.sh - Provide generalized library-building support services. 2ee3138f1Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 3ee3138f1Smrg# 4ee3138f1Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5ee3138f1Smrg# 2007 Free Software Foundation, Inc. 6ee3138f1Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7ee3138f1Smrg# 8ee3138f1Smrg# This program is free software; you can redistribute it and/or modify 9ee3138f1Smrg# it under the terms of the GNU General Public License as published by 10ee3138f1Smrg# the Free Software Foundation; either version 2 of the License, or 11ee3138f1Smrg# (at your option) any later version. 12ee3138f1Smrg# 13ee3138f1Smrg# This program is distributed in the hope that it will be useful, but 14ee3138f1Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15ee3138f1Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16ee3138f1Smrg# General Public License for more details. 17ee3138f1Smrg# 18ee3138f1Smrg# You should have received a copy of the GNU General Public License 19ee3138f1Smrg# along with this program; if not, write to the Free Software 20ee3138f1Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21ee3138f1Smrg# 22ee3138f1Smrg# As a special exception to the GNU General Public License, if you 23ee3138f1Smrg# distribute this file as part of a program that contains a 24ee3138f1Smrg# configuration script generated by Autoconf, you may include it under 25ee3138f1Smrg# the same distribution terms that you use for the rest of that program. 26ee3138f1Smrg 27ee3138f1Smrgbasename="s,^.*/,,g" 28ee3138f1Smrg 29ee3138f1Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30ee3138f1Smrg# is ksh but when the shell is invoked as "sh" and the current value of 31ee3138f1Smrg# the _XPG environment variable is not equal to 1 (one), the special 32ee3138f1Smrg# positional parameter $0, within a function call, is the name of the 33ee3138f1Smrg# function. 34ee3138f1Smrgprogpath="$0" 35ee3138f1Smrg 36ee3138f1Smrg# The name of this program: 37ee3138f1Smrgprogname=`echo "$progpath" | $SED $basename` 38ee3138f1Smrgmodename="$progname" 39ee3138f1Smrg 40ee3138f1Smrg# Global variables: 41ee3138f1SmrgEXIT_SUCCESS=0 42ee3138f1SmrgEXIT_FAILURE=1 43ee3138f1Smrg 44ee3138f1SmrgPROGRAM=ltmain.sh 45ee3138f1SmrgPACKAGE=libtool 46ee3138f1SmrgVERSION=1.5.24 47ee3138f1SmrgTIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)" 48ee3138f1Smrg 49ee3138f1Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 50ee3138f1Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 51ee3138f1Smrg emulate sh 52ee3138f1Smrg NULLCMD=: 53ee3138f1Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 54ee3138f1Smrg # is contrary to our usage. Disable this feature. 55ee3138f1Smrg alias -g '${1+"$@"}'='"$@"' 56ee3138f1Smrg setopt NO_GLOB_SUBST 57ee3138f1Smrgelse 58ee3138f1Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 59ee3138f1Smrgfi 60ee3138f1SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 61ee3138f1SmrgDUALCASE=1; export DUALCASE # for MKS sh 62ee3138f1Smrg 63ee3138f1Smrg# Check that we have a working $echo. 64ee3138f1Smrgif test "X$1" = X--no-reexec; then 65ee3138f1Smrg # Discard the --no-reexec flag, and continue. 66ee3138f1Smrg shift 67ee3138f1Smrgelif test "X$1" = X--fallback-echo; then 68ee3138f1Smrg # Avoid inline document here, it may be left over 69ee3138f1Smrg : 70ee3138f1Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71ee3138f1Smrg # Yippee, $echo works! 72ee3138f1Smrg : 73ee3138f1Smrgelse 74ee3138f1Smrg # Restart under the correct shell, and then maybe $echo will work. 75ee3138f1Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76ee3138f1Smrgfi 77ee3138f1Smrg 78ee3138f1Smrgif test "X$1" = X--fallback-echo; then 79ee3138f1Smrg # used as fallback echo 80ee3138f1Smrg shift 81ee3138f1Smrg cat <<EOF 82ee3138f1Smrg$* 83ee3138f1SmrgEOF 84ee3138f1Smrg exit $EXIT_SUCCESS 85ee3138f1Smrgfi 86ee3138f1Smrg 87ee3138f1Smrgdefault_mode= 88ee3138f1Smrghelp="Try \`$progname --help' for more information." 89ee3138f1Smrgmagic="%%%MAGIC variable%%%" 90ee3138f1Smrgmkdir="mkdir" 91ee3138f1Smrgmv="mv -f" 92ee3138f1Smrgrm="rm -f" 93ee3138f1Smrg 94ee3138f1Smrg# Sed substitution that helps us do robust quoting. It backslashifies 95ee3138f1Smrg# metacharacters that are still active within double-quoted strings. 96ee3138f1SmrgXsed="${SED}"' -e 1s/^X//' 97ee3138f1Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98ee3138f1Smrg# test EBCDIC or ASCII 99ee3138f1Smrgcase `echo X|tr X '\101'` in 100ee3138f1Smrg A) # ASCII based system 101ee3138f1Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102ee3138f1Smrg SP2NL='tr \040 \012' 103ee3138f1Smrg NL2SP='tr \015\012 \040\040' 104ee3138f1Smrg ;; 105ee3138f1Smrg *) # EBCDIC based system 106ee3138f1Smrg SP2NL='tr \100 \n' 107ee3138f1Smrg NL2SP='tr \r\n \100\100' 108ee3138f1Smrg ;; 109ee3138f1Smrgesac 110ee3138f1Smrg 111ee3138f1Smrg# NLS nuisances. 112ee3138f1Smrg# Only set LANG and LC_ALL to C if already set. 113ee3138f1Smrg# These must not be set unconditionally because not all systems understand 114ee3138f1Smrg# e.g. LANG=C (notably SCO). 115ee3138f1Smrg# We save the old values to restore during execute mode. 116ee3138f1Smrgfor lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 117ee3138f1Smrgdo 118ee3138f1Smrg eval "if test \"\${$lt_var+set}\" = set; then 119ee3138f1Smrg save_$lt_var=\$$lt_var 120ee3138f1Smrg $lt_var=C 121ee3138f1Smrg export $lt_var 122ee3138f1Smrg fi" 123ee3138f1Smrgdone 124ee3138f1Smrg 125ee3138f1Smrg# Make sure IFS has a sensible default 126ee3138f1Smrglt_nl=' 127ee3138f1Smrg' 128ee3138f1SmrgIFS=" $lt_nl" 129ee3138f1Smrg 130ee3138f1Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 131ee3138f1Smrg $echo "$modename: not configured to build any kind of library" 1>&2 132ee3138f1Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 133ee3138f1Smrg exit $EXIT_FAILURE 134ee3138f1Smrgfi 135ee3138f1Smrg 136ee3138f1Smrg# Global variables. 137ee3138f1Smrgmode=$default_mode 138ee3138f1Smrgnonopt= 139ee3138f1Smrgprev= 140ee3138f1Smrgprevopt= 141ee3138f1Smrgrun= 142ee3138f1Smrgshow="$echo" 143ee3138f1Smrgshow_help= 144ee3138f1Smrgexecute_dlfiles= 145ee3138f1Smrgduplicate_deps=no 146ee3138f1Smrgpreserve_args= 147ee3138f1Smrglo2o="s/\\.lo\$/.${objext}/" 148ee3138f1Smrgo2lo="s/\\.${objext}\$/.lo/" 149ee3138f1Smrgextracted_archives= 150ee3138f1Smrgextracted_serial=0 151ee3138f1Smrg 152ee3138f1Smrg##################################### 153ee3138f1Smrg# Shell function definitions: 154ee3138f1Smrg# This seems to be the best place for them 155ee3138f1Smrg 156ee3138f1Smrg# func_mktempdir [string] 157ee3138f1Smrg# Make a temporary directory that won't clash with other running 158ee3138f1Smrg# libtool processes, and avoids race conditions if possible. If 159ee3138f1Smrg# given, STRING is the basename for that directory. 160ee3138f1Smrgfunc_mktempdir () 161ee3138f1Smrg{ 162ee3138f1Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 163ee3138f1Smrg 164ee3138f1Smrg if test "$run" = ":"; then 165ee3138f1Smrg # Return a directory name, but don't create it in dry-run mode 166ee3138f1Smrg my_tmpdir="${my_template}-$$" 167ee3138f1Smrg else 168ee3138f1Smrg 169ee3138f1Smrg # If mktemp works, use that first and foremost 170ee3138f1Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 171ee3138f1Smrg 172ee3138f1Smrg if test ! -d "$my_tmpdir"; then 173ee3138f1Smrg # Failing that, at least try and use $RANDOM to avoid a race 174ee3138f1Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 175ee3138f1Smrg 176ee3138f1Smrg save_mktempdir_umask=`umask` 177ee3138f1Smrg umask 0077 178ee3138f1Smrg $mkdir "$my_tmpdir" 179ee3138f1Smrg umask $save_mktempdir_umask 180ee3138f1Smrg fi 181ee3138f1Smrg 182ee3138f1Smrg # If we're not in dry-run mode, bomb out on failure 183ee3138f1Smrg test -d "$my_tmpdir" || { 184ee3138f1Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 185ee3138f1Smrg exit $EXIT_FAILURE 186ee3138f1Smrg } 187ee3138f1Smrg fi 188ee3138f1Smrg 189ee3138f1Smrg $echo "X$my_tmpdir" | $Xsed 190ee3138f1Smrg} 191ee3138f1Smrg 192ee3138f1Smrg 193ee3138f1Smrg# func_win32_libid arg 194ee3138f1Smrg# return the library type of file 'arg' 195ee3138f1Smrg# 196ee3138f1Smrg# Need a lot of goo to handle *both* DLLs and import libs 197ee3138f1Smrg# Has to be a shell function in order to 'eat' the argument 198ee3138f1Smrg# that is supplied when $file_magic_command is called. 199ee3138f1Smrgfunc_win32_libid () 200ee3138f1Smrg{ 201ee3138f1Smrg win32_libid_type="unknown" 202ee3138f1Smrg win32_fileres=`file -L $1 2>/dev/null` 203ee3138f1Smrg case $win32_fileres in 204ee3138f1Smrg *ar\ archive\ import\ library*) # definitely import 205ee3138f1Smrg win32_libid_type="x86 archive import" 206ee3138f1Smrg ;; 207ee3138f1Smrg *ar\ archive*) # could be an import, or static 208ee3138f1Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 209ee3138f1Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 210ee3138f1Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 211ee3138f1Smrg $SED -n -e '1,100{ 212ee3138f1Smrg / I /{ 213ee3138f1Smrg s,.*,import, 214ee3138f1Smrg p 215ee3138f1Smrg q 216ee3138f1Smrg } 217ee3138f1Smrg }'` 218ee3138f1Smrg case $win32_nmres in 219ee3138f1Smrg import*) win32_libid_type="x86 archive import";; 220ee3138f1Smrg *) win32_libid_type="x86 archive static";; 221ee3138f1Smrg esac 222ee3138f1Smrg fi 223ee3138f1Smrg ;; 224ee3138f1Smrg *DLL*) 225ee3138f1Smrg win32_libid_type="x86 DLL" 226ee3138f1Smrg ;; 227ee3138f1Smrg *executable*) # but shell scripts are "executable" too... 228ee3138f1Smrg case $win32_fileres in 229ee3138f1Smrg *MS\ Windows\ PE\ Intel*) 230ee3138f1Smrg win32_libid_type="x86 DLL" 231ee3138f1Smrg ;; 232ee3138f1Smrg esac 233ee3138f1Smrg ;; 234ee3138f1Smrg esac 235ee3138f1Smrg $echo $win32_libid_type 236ee3138f1Smrg} 237ee3138f1Smrg 238ee3138f1Smrg 239ee3138f1Smrg# func_infer_tag arg 240ee3138f1Smrg# Infer tagged configuration to use if any are available and 241ee3138f1Smrg# if one wasn't chosen via the "--tag" command line option. 242ee3138f1Smrg# Only attempt this if the compiler in the base compile 243ee3138f1Smrg# command doesn't match the default compiler. 244ee3138f1Smrg# arg is usually of the form 'gcc ...' 245ee3138f1Smrgfunc_infer_tag () 246ee3138f1Smrg{ 247ee3138f1Smrg if test -n "$available_tags" && test -z "$tagname"; then 248ee3138f1Smrg CC_quoted= 249ee3138f1Smrg for arg in $CC; do 250ee3138f1Smrg case $arg in 251ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 252ee3138f1Smrg arg="\"$arg\"" 253ee3138f1Smrg ;; 254ee3138f1Smrg esac 255ee3138f1Smrg CC_quoted="$CC_quoted $arg" 256ee3138f1Smrg done 257ee3138f1Smrg case $@ in 258ee3138f1Smrg # Blanks in the command may have been stripped by the calling shell, 259ee3138f1Smrg # but not from the CC environment variable when configure was run. 260ee3138f1Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 261ee3138f1Smrg # Blanks at the start of $base_compile will cause this to fail 262ee3138f1Smrg # if we don't check for them as well. 263ee3138f1Smrg *) 264ee3138f1Smrg for z in $available_tags; do 265ee3138f1Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 266ee3138f1Smrg # Evaluate the configuration. 267ee3138f1Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 268ee3138f1Smrg CC_quoted= 269ee3138f1Smrg for arg in $CC; do 270ee3138f1Smrg # Double-quote args containing other shell metacharacters. 271ee3138f1Smrg case $arg in 272ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 273ee3138f1Smrg arg="\"$arg\"" 274ee3138f1Smrg ;; 275ee3138f1Smrg esac 276ee3138f1Smrg CC_quoted="$CC_quoted $arg" 277ee3138f1Smrg done 278ee3138f1Smrg case "$@ " in 279ee3138f1Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 280ee3138f1Smrg # The compiler in the base compile command matches 281ee3138f1Smrg # the one in the tagged configuration. 282ee3138f1Smrg # Assume this is the tagged configuration we want. 283ee3138f1Smrg tagname=$z 284ee3138f1Smrg break 285ee3138f1Smrg ;; 286ee3138f1Smrg esac 287ee3138f1Smrg fi 288ee3138f1Smrg done 289ee3138f1Smrg # If $tagname still isn't set, then no tagged configuration 290ee3138f1Smrg # was found and let the user know that the "--tag" command 291ee3138f1Smrg # line option must be used. 292ee3138f1Smrg if test -z "$tagname"; then 293ee3138f1Smrg $echo "$modename: unable to infer tagged configuration" 294ee3138f1Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 295ee3138f1Smrg exit $EXIT_FAILURE 296ee3138f1Smrg# else 297ee3138f1Smrg# $echo "$modename: using $tagname tagged configuration" 298ee3138f1Smrg fi 299ee3138f1Smrg ;; 300ee3138f1Smrg esac 301ee3138f1Smrg fi 302ee3138f1Smrg} 303ee3138f1Smrg 304ee3138f1Smrg 305ee3138f1Smrg# func_extract_an_archive dir oldlib 306ee3138f1Smrgfunc_extract_an_archive () 307ee3138f1Smrg{ 308ee3138f1Smrg f_ex_an_ar_dir="$1"; shift 309ee3138f1Smrg f_ex_an_ar_oldlib="$1" 310ee3138f1Smrg 311ee3138f1Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 312ee3138f1Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 313ee3138f1Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 314ee3138f1Smrg : 315ee3138f1Smrg else 316ee3138f1Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 317ee3138f1Smrg exit $EXIT_FAILURE 318ee3138f1Smrg fi 319ee3138f1Smrg} 320ee3138f1Smrg 321ee3138f1Smrg# func_extract_archives gentop oldlib ... 322ee3138f1Smrgfunc_extract_archives () 323ee3138f1Smrg{ 324ee3138f1Smrg my_gentop="$1"; shift 325ee3138f1Smrg my_oldlibs=${1+"$@"} 326ee3138f1Smrg my_oldobjs="" 327ee3138f1Smrg my_xlib="" 328ee3138f1Smrg my_xabs="" 329ee3138f1Smrg my_xdir="" 330ee3138f1Smrg my_status="" 331ee3138f1Smrg 332ee3138f1Smrg $show "${rm}r $my_gentop" 333ee3138f1Smrg $run ${rm}r "$my_gentop" 334ee3138f1Smrg $show "$mkdir $my_gentop" 335ee3138f1Smrg $run $mkdir "$my_gentop" 336ee3138f1Smrg my_status=$? 337ee3138f1Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 338ee3138f1Smrg exit $my_status 339ee3138f1Smrg fi 340ee3138f1Smrg 341ee3138f1Smrg for my_xlib in $my_oldlibs; do 342ee3138f1Smrg # Extract the objects. 343ee3138f1Smrg case $my_xlib in 344ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 345ee3138f1Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 346ee3138f1Smrg esac 347ee3138f1Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 348ee3138f1Smrg my_xlib_u=$my_xlib 349ee3138f1Smrg while :; do 350ee3138f1Smrg case " $extracted_archives " in 351ee3138f1Smrg *" $my_xlib_u "*) 352ee3138f1Smrg extracted_serial=`expr $extracted_serial + 1` 353ee3138f1Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 354ee3138f1Smrg *) break ;; 355ee3138f1Smrg esac 356ee3138f1Smrg done 357ee3138f1Smrg extracted_archives="$extracted_archives $my_xlib_u" 358ee3138f1Smrg my_xdir="$my_gentop/$my_xlib_u" 359ee3138f1Smrg 360ee3138f1Smrg $show "${rm}r $my_xdir" 361ee3138f1Smrg $run ${rm}r "$my_xdir" 362ee3138f1Smrg $show "$mkdir $my_xdir" 363ee3138f1Smrg $run $mkdir "$my_xdir" 364ee3138f1Smrg exit_status=$? 365ee3138f1Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 366ee3138f1Smrg exit $exit_status 367ee3138f1Smrg fi 368ee3138f1Smrg case $host in 369ee3138f1Smrg *-darwin*) 370ee3138f1Smrg $show "Extracting $my_xabs" 371ee3138f1Smrg # Do not bother doing anything if just a dry run 372ee3138f1Smrg if test -z "$run"; then 373ee3138f1Smrg darwin_orig_dir=`pwd` 374ee3138f1Smrg cd $my_xdir || exit $? 375ee3138f1Smrg darwin_archive=$my_xabs 376ee3138f1Smrg darwin_curdir=`pwd` 377ee3138f1Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 378ee3138f1Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 379ee3138f1Smrg if test -n "$darwin_arches"; then 380ee3138f1Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 381ee3138f1Smrg darwin_arch= 382ee3138f1Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 383ee3138f1Smrg for darwin_arch in $darwin_arches ; do 384ee3138f1Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 385ee3138f1Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 386ee3138f1Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 387ee3138f1Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 388ee3138f1Smrg cd "$darwin_curdir" 389ee3138f1Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 390ee3138f1Smrg done # $darwin_arches 391ee3138f1Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 392ee3138f1Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 393ee3138f1Smrg darwin_file= 394ee3138f1Smrg darwin_files= 395ee3138f1Smrg for darwin_file in $darwin_filelist; do 396ee3138f1Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 397ee3138f1Smrg lipo -create -output "$darwin_file" $darwin_files 398ee3138f1Smrg done # $darwin_filelist 399ee3138f1Smrg ${rm}r unfat-$$ 400ee3138f1Smrg cd "$darwin_orig_dir" 401ee3138f1Smrg else 402ee3138f1Smrg cd "$darwin_orig_dir" 403ee3138f1Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 404ee3138f1Smrg fi # $darwin_arches 405ee3138f1Smrg fi # $run 406ee3138f1Smrg ;; 407ee3138f1Smrg *) 408ee3138f1Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 409ee3138f1Smrg ;; 410ee3138f1Smrg esac 411ee3138f1Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 412ee3138f1Smrg done 413ee3138f1Smrg func_extract_archives_result="$my_oldobjs" 414ee3138f1Smrg} 415ee3138f1Smrg# End of Shell function definitions 416ee3138f1Smrg##################################### 417ee3138f1Smrg 418ee3138f1Smrg# Darwin sucks 419ee3138f1Smrgeval std_shrext=\"$shrext_cmds\" 420ee3138f1Smrg 421ee3138f1Smrgdisable_libs=no 422ee3138f1Smrg 423ee3138f1Smrg# Parse our command line options once, thoroughly. 424ee3138f1Smrgwhile test "$#" -gt 0 425ee3138f1Smrgdo 426ee3138f1Smrg arg="$1" 427ee3138f1Smrg shift 428ee3138f1Smrg 429ee3138f1Smrg case $arg in 430ee3138f1Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 431ee3138f1Smrg *) optarg= ;; 432ee3138f1Smrg esac 433ee3138f1Smrg 434ee3138f1Smrg # If the previous option needs an argument, assign it. 435ee3138f1Smrg if test -n "$prev"; then 436ee3138f1Smrg case $prev in 437ee3138f1Smrg execute_dlfiles) 438ee3138f1Smrg execute_dlfiles="$execute_dlfiles $arg" 439ee3138f1Smrg ;; 440ee3138f1Smrg tag) 441ee3138f1Smrg tagname="$arg" 442ee3138f1Smrg preserve_args="${preserve_args}=$arg" 443ee3138f1Smrg 444ee3138f1Smrg # Check whether tagname contains only valid characters 445ee3138f1Smrg case $tagname in 446ee3138f1Smrg *[!-_A-Za-z0-9,/]*) 447ee3138f1Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 448ee3138f1Smrg exit $EXIT_FAILURE 449ee3138f1Smrg ;; 450ee3138f1Smrg esac 451ee3138f1Smrg 452ee3138f1Smrg case $tagname in 453ee3138f1Smrg CC) 454ee3138f1Smrg # Don't test for the "default" C tag, as we know, it's there, but 455ee3138f1Smrg # not specially marked. 456ee3138f1Smrg ;; 457ee3138f1Smrg *) 458ee3138f1Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 459ee3138f1Smrg taglist="$taglist $tagname" 460ee3138f1Smrg # Evaluate the configuration. 461ee3138f1Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 462ee3138f1Smrg else 463ee3138f1Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 464ee3138f1Smrg fi 465ee3138f1Smrg ;; 466ee3138f1Smrg esac 467ee3138f1Smrg ;; 468ee3138f1Smrg *) 469ee3138f1Smrg eval "$prev=\$arg" 470ee3138f1Smrg ;; 471ee3138f1Smrg esac 472ee3138f1Smrg 473ee3138f1Smrg prev= 474ee3138f1Smrg prevopt= 475ee3138f1Smrg continue 476ee3138f1Smrg fi 477ee3138f1Smrg 478ee3138f1Smrg # Have we seen a non-optional argument yet? 479ee3138f1Smrg case $arg in 480ee3138f1Smrg --help) 481ee3138f1Smrg show_help=yes 482ee3138f1Smrg ;; 483ee3138f1Smrg 484ee3138f1Smrg --version) 485ee3138f1Smrg echo "\ 486ee3138f1Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 487ee3138f1Smrg 488ee3138f1SmrgCopyright (C) 2007 Free Software Foundation, Inc. 489ee3138f1SmrgThis is free software; see the source for copying conditions. There is NO 490ee3138f1Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 491ee3138f1Smrg exit $? 492ee3138f1Smrg ;; 493ee3138f1Smrg 494ee3138f1Smrg --config) 495ee3138f1Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 496ee3138f1Smrg # Now print the configurations for the tags. 497ee3138f1Smrg for tagname in $taglist; do 498ee3138f1Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 499ee3138f1Smrg done 500ee3138f1Smrg exit $? 501ee3138f1Smrg ;; 502ee3138f1Smrg 503ee3138f1Smrg --debug) 504ee3138f1Smrg $echo "$progname: enabling shell trace mode" 505ee3138f1Smrg set -x 506ee3138f1Smrg preserve_args="$preserve_args $arg" 507ee3138f1Smrg ;; 508ee3138f1Smrg 509ee3138f1Smrg --dry-run | -n) 510ee3138f1Smrg run=: 511ee3138f1Smrg ;; 512ee3138f1Smrg 513ee3138f1Smrg --features) 514ee3138f1Smrg $echo "host: $host" 515ee3138f1Smrg if test "$build_libtool_libs" = yes; then 516ee3138f1Smrg $echo "enable shared libraries" 517ee3138f1Smrg else 518ee3138f1Smrg $echo "disable shared libraries" 519ee3138f1Smrg fi 520ee3138f1Smrg if test "$build_old_libs" = yes; then 521ee3138f1Smrg $echo "enable static libraries" 522ee3138f1Smrg else 523ee3138f1Smrg $echo "disable static libraries" 524ee3138f1Smrg fi 525ee3138f1Smrg exit $? 526ee3138f1Smrg ;; 527ee3138f1Smrg 528ee3138f1Smrg --finish) mode="finish" ;; 529ee3138f1Smrg 530ee3138f1Smrg --mode) prevopt="--mode" prev=mode ;; 531ee3138f1Smrg --mode=*) mode="$optarg" ;; 532ee3138f1Smrg 533ee3138f1Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 534ee3138f1Smrg 535ee3138f1Smrg --quiet | --silent) 536ee3138f1Smrg show=: 537ee3138f1Smrg preserve_args="$preserve_args $arg" 538ee3138f1Smrg ;; 539ee3138f1Smrg 540ee3138f1Smrg --tag) 541ee3138f1Smrg prevopt="--tag" 542ee3138f1Smrg prev=tag 543ee3138f1Smrg preserve_args="$preserve_args --tag" 544ee3138f1Smrg ;; 545ee3138f1Smrg --tag=*) 546ee3138f1Smrg set tag "$optarg" ${1+"$@"} 547ee3138f1Smrg shift 548ee3138f1Smrg prev=tag 549ee3138f1Smrg preserve_args="$preserve_args --tag" 550ee3138f1Smrg ;; 551ee3138f1Smrg 552ee3138f1Smrg -dlopen) 553ee3138f1Smrg prevopt="-dlopen" 554ee3138f1Smrg prev=execute_dlfiles 555ee3138f1Smrg ;; 556ee3138f1Smrg 557ee3138f1Smrg -*) 558ee3138f1Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 559ee3138f1Smrg $echo "$help" 1>&2 560ee3138f1Smrg exit $EXIT_FAILURE 561ee3138f1Smrg ;; 562ee3138f1Smrg 563ee3138f1Smrg *) 564ee3138f1Smrg nonopt="$arg" 565ee3138f1Smrg break 566ee3138f1Smrg ;; 567ee3138f1Smrg esac 568ee3138f1Smrgdone 569ee3138f1Smrg 570ee3138f1Smrgif test -n "$prevopt"; then 571ee3138f1Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 572ee3138f1Smrg $echo "$help" 1>&2 573ee3138f1Smrg exit $EXIT_FAILURE 574ee3138f1Smrgfi 575ee3138f1Smrg 576ee3138f1Smrgcase $disable_libs in 577ee3138f1Smrgno) 578ee3138f1Smrg ;; 579ee3138f1Smrgshared) 580ee3138f1Smrg build_libtool_libs=no 581ee3138f1Smrg build_old_libs=yes 582ee3138f1Smrg ;; 583ee3138f1Smrgstatic) 584ee3138f1Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 585ee3138f1Smrg ;; 586ee3138f1Smrgesac 587ee3138f1Smrg 588ee3138f1Smrg# If this variable is set in any of the actions, the command in it 589ee3138f1Smrg# will be execed at the end. This prevents here-documents from being 590ee3138f1Smrg# left over by shells. 591ee3138f1Smrgexec_cmd= 592ee3138f1Smrg 593ee3138f1Smrgif test -z "$show_help"; then 594ee3138f1Smrg 595ee3138f1Smrg # Infer the operation mode. 596ee3138f1Smrg if test -z "$mode"; then 597ee3138f1Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 598ee3138f1Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 599ee3138f1Smrg case $nonopt in 600ee3138f1Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 601ee3138f1Smrg mode=link 602ee3138f1Smrg for arg 603ee3138f1Smrg do 604ee3138f1Smrg case $arg in 605ee3138f1Smrg -c) 606ee3138f1Smrg mode=compile 607ee3138f1Smrg break 608ee3138f1Smrg ;; 609ee3138f1Smrg esac 610ee3138f1Smrg done 611ee3138f1Smrg ;; 612ee3138f1Smrg *db | *dbx | *strace | *truss) 613ee3138f1Smrg mode=execute 614ee3138f1Smrg ;; 615ee3138f1Smrg *install*|cp|mv) 616ee3138f1Smrg mode=install 617ee3138f1Smrg ;; 618ee3138f1Smrg *rm) 619ee3138f1Smrg mode=uninstall 620ee3138f1Smrg ;; 621ee3138f1Smrg *) 622ee3138f1Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 623ee3138f1Smrg test -n "$execute_dlfiles" && mode=execute 624ee3138f1Smrg 625ee3138f1Smrg # Just use the default operation mode. 626ee3138f1Smrg if test -z "$mode"; then 627ee3138f1Smrg if test -n "$nonopt"; then 628ee3138f1Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 629ee3138f1Smrg else 630ee3138f1Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 631ee3138f1Smrg fi 632ee3138f1Smrg fi 633ee3138f1Smrg ;; 634ee3138f1Smrg esac 635ee3138f1Smrg fi 636ee3138f1Smrg 637ee3138f1Smrg # Only execute mode is allowed to have -dlopen flags. 638ee3138f1Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 639ee3138f1Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 640ee3138f1Smrg $echo "$help" 1>&2 641ee3138f1Smrg exit $EXIT_FAILURE 642ee3138f1Smrg fi 643ee3138f1Smrg 644ee3138f1Smrg # Change the help message to a mode-specific one. 645ee3138f1Smrg generic_help="$help" 646ee3138f1Smrg help="Try \`$modename --help --mode=$mode' for more information." 647ee3138f1Smrg 648ee3138f1Smrg # These modes are in order of execution frequency so that they run quickly. 649ee3138f1Smrg case $mode in 650ee3138f1Smrg # libtool compile mode 651ee3138f1Smrg compile) 652ee3138f1Smrg modename="$modename: compile" 653ee3138f1Smrg # Get the compilation command and the source file. 654ee3138f1Smrg base_compile= 655ee3138f1Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 656ee3138f1Smrg suppress_opt=yes 657ee3138f1Smrg suppress_output= 658ee3138f1Smrg arg_mode=normal 659ee3138f1Smrg libobj= 660ee3138f1Smrg later= 661ee3138f1Smrg 662ee3138f1Smrg for arg 663ee3138f1Smrg do 664ee3138f1Smrg case $arg_mode in 665ee3138f1Smrg arg ) 666ee3138f1Smrg # do not "continue". Instead, add this to base_compile 667ee3138f1Smrg lastarg="$arg" 668ee3138f1Smrg arg_mode=normal 669ee3138f1Smrg ;; 670ee3138f1Smrg 671ee3138f1Smrg target ) 672ee3138f1Smrg libobj="$arg" 673ee3138f1Smrg arg_mode=normal 674ee3138f1Smrg continue 675ee3138f1Smrg ;; 676ee3138f1Smrg 677ee3138f1Smrg normal ) 678ee3138f1Smrg # Accept any command-line options. 679ee3138f1Smrg case $arg in 680ee3138f1Smrg -o) 681ee3138f1Smrg if test -n "$libobj" ; then 682ee3138f1Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 683ee3138f1Smrg exit $EXIT_FAILURE 684ee3138f1Smrg fi 685ee3138f1Smrg arg_mode=target 686ee3138f1Smrg continue 687ee3138f1Smrg ;; 688ee3138f1Smrg 689ee3138f1Smrg -static | -prefer-pic | -prefer-non-pic) 690ee3138f1Smrg later="$later $arg" 691ee3138f1Smrg continue 692ee3138f1Smrg ;; 693ee3138f1Smrg 694ee3138f1Smrg -no-suppress) 695ee3138f1Smrg suppress_opt=no 696ee3138f1Smrg continue 697ee3138f1Smrg ;; 698ee3138f1Smrg 699ee3138f1Smrg -Xcompiler) 700ee3138f1Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 701ee3138f1Smrg continue # The current "srcfile" will either be retained or 702ee3138f1Smrg ;; # replaced later. I would guess that would be a bug. 703ee3138f1Smrg 704ee3138f1Smrg -Wc,*) 705ee3138f1Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 706ee3138f1Smrg lastarg= 707ee3138f1Smrg save_ifs="$IFS"; IFS=',' 708ee3138f1Smrg for arg in $args; do 709ee3138f1Smrg IFS="$save_ifs" 710ee3138f1Smrg 711ee3138f1Smrg # Double-quote args containing other shell metacharacters. 712ee3138f1Smrg # Many Bourne shells cannot handle close brackets correctly 713ee3138f1Smrg # in scan sets, so we specify it separately. 714ee3138f1Smrg case $arg in 715ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 716ee3138f1Smrg arg="\"$arg\"" 717ee3138f1Smrg ;; 718ee3138f1Smrg esac 719ee3138f1Smrg lastarg="$lastarg $arg" 720ee3138f1Smrg done 721ee3138f1Smrg IFS="$save_ifs" 722ee3138f1Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 723ee3138f1Smrg 724ee3138f1Smrg # Add the arguments to base_compile. 725ee3138f1Smrg base_compile="$base_compile $lastarg" 726ee3138f1Smrg continue 727ee3138f1Smrg ;; 728ee3138f1Smrg 729ee3138f1Smrg * ) 730ee3138f1Smrg # Accept the current argument as the source file. 731ee3138f1Smrg # The previous "srcfile" becomes the current argument. 732ee3138f1Smrg # 733ee3138f1Smrg lastarg="$srcfile" 734ee3138f1Smrg srcfile="$arg" 735ee3138f1Smrg ;; 736ee3138f1Smrg esac # case $arg 737ee3138f1Smrg ;; 738ee3138f1Smrg esac # case $arg_mode 739ee3138f1Smrg 740ee3138f1Smrg # Aesthetically quote the previous argument. 741ee3138f1Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 742ee3138f1Smrg 743ee3138f1Smrg case $lastarg in 744ee3138f1Smrg # Double-quote args containing other shell metacharacters. 745ee3138f1Smrg # Many Bourne shells cannot handle close brackets correctly 746ee3138f1Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 747ee3138f1Smrg # in scan sets (worked around with variable expansion), 748ee3138f1Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 749ee3138f1Smrg # at all, so we specify them separately. 750ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 751ee3138f1Smrg lastarg="\"$lastarg\"" 752ee3138f1Smrg ;; 753ee3138f1Smrg esac 754ee3138f1Smrg 755ee3138f1Smrg base_compile="$base_compile $lastarg" 756ee3138f1Smrg done # for arg 757ee3138f1Smrg 758ee3138f1Smrg case $arg_mode in 759ee3138f1Smrg arg) 760ee3138f1Smrg $echo "$modename: you must specify an argument for -Xcompile" 761ee3138f1Smrg exit $EXIT_FAILURE 762ee3138f1Smrg ;; 763ee3138f1Smrg target) 764ee3138f1Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 765ee3138f1Smrg exit $EXIT_FAILURE 766ee3138f1Smrg ;; 767ee3138f1Smrg *) 768ee3138f1Smrg # Get the name of the library object. 769ee3138f1Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 770ee3138f1Smrg ;; 771ee3138f1Smrg esac 772ee3138f1Smrg 773ee3138f1Smrg # Recognize several different file suffixes. 774ee3138f1Smrg # If the user specifies -o file.o, it is replaced with file.lo 775ee3138f1Smrg xform='[cCFSifmso]' 776ee3138f1Smrg case $libobj in 777ee3138f1Smrg *.ada) xform=ada ;; 778ee3138f1Smrg *.adb) xform=adb ;; 779ee3138f1Smrg *.ads) xform=ads ;; 780ee3138f1Smrg *.asm) xform=asm ;; 781ee3138f1Smrg *.c++) xform=c++ ;; 782ee3138f1Smrg *.cc) xform=cc ;; 783ee3138f1Smrg *.ii) xform=ii ;; 784ee3138f1Smrg *.class) xform=class ;; 785ee3138f1Smrg *.cpp) xform=cpp ;; 786ee3138f1Smrg *.cxx) xform=cxx ;; 787ee3138f1Smrg *.[fF][09]?) xform=[fF][09]. ;; 788ee3138f1Smrg *.for) xform=for ;; 789ee3138f1Smrg *.java) xform=java ;; 790ee3138f1Smrg *.obj) xform=obj ;; 791ee3138f1Smrg esac 792ee3138f1Smrg 793ee3138f1Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 794ee3138f1Smrg 795ee3138f1Smrg case $libobj in 796ee3138f1Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 797ee3138f1Smrg *) 798ee3138f1Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 799ee3138f1Smrg exit $EXIT_FAILURE 800ee3138f1Smrg ;; 801ee3138f1Smrg esac 802ee3138f1Smrg 803ee3138f1Smrg func_infer_tag $base_compile 804ee3138f1Smrg 805ee3138f1Smrg for arg in $later; do 806ee3138f1Smrg case $arg in 807ee3138f1Smrg -static) 808ee3138f1Smrg build_old_libs=yes 809ee3138f1Smrg continue 810ee3138f1Smrg ;; 811ee3138f1Smrg 812ee3138f1Smrg -prefer-pic) 813ee3138f1Smrg pic_mode=yes 814ee3138f1Smrg continue 815ee3138f1Smrg ;; 816ee3138f1Smrg 817ee3138f1Smrg -prefer-non-pic) 818ee3138f1Smrg pic_mode=no 819ee3138f1Smrg continue 820ee3138f1Smrg ;; 821ee3138f1Smrg esac 822ee3138f1Smrg done 823ee3138f1Smrg 824ee3138f1Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 825ee3138f1Smrg case $qlibobj in 826ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 827ee3138f1Smrg qlibobj="\"$qlibobj\"" ;; 828ee3138f1Smrg esac 829ee3138f1Smrg test "X$libobj" != "X$qlibobj" \ 830ee3138f1Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 831ee3138f1Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 832ee3138f1Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 833ee3138f1Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 834ee3138f1Smrg if test "X$xdir" = "X$obj"; then 835ee3138f1Smrg xdir= 836ee3138f1Smrg else 837ee3138f1Smrg xdir=$xdir/ 838ee3138f1Smrg fi 839ee3138f1Smrg lobj=${xdir}$objdir/$objname 840ee3138f1Smrg 841ee3138f1Smrg if test -z "$base_compile"; then 842ee3138f1Smrg $echo "$modename: you must specify a compilation command" 1>&2 843ee3138f1Smrg $echo "$help" 1>&2 844ee3138f1Smrg exit $EXIT_FAILURE 845ee3138f1Smrg fi 846ee3138f1Smrg 847ee3138f1Smrg # Delete any leftover library objects. 848ee3138f1Smrg if test "$build_old_libs" = yes; then 849ee3138f1Smrg removelist="$obj $lobj $libobj ${libobj}T" 850ee3138f1Smrg else 851ee3138f1Smrg removelist="$lobj $libobj ${libobj}T" 852ee3138f1Smrg fi 853ee3138f1Smrg 854ee3138f1Smrg $run $rm $removelist 855ee3138f1Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 856ee3138f1Smrg 857ee3138f1Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 858ee3138f1Smrg case $host_os in 859ee3138f1Smrg cygwin* | mingw* | pw32* | os2*) 860ee3138f1Smrg pic_mode=default 861ee3138f1Smrg ;; 862ee3138f1Smrg esac 863ee3138f1Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 864ee3138f1Smrg # non-PIC code in shared libraries is not supported 865ee3138f1Smrg pic_mode=default 866ee3138f1Smrg fi 867ee3138f1Smrg 868ee3138f1Smrg # Calculate the filename of the output object if compiler does 869ee3138f1Smrg # not support -o with -c 870ee3138f1Smrg if test "$compiler_c_o" = no; then 871ee3138f1Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 872ee3138f1Smrg lockfile="$output_obj.lock" 873ee3138f1Smrg removelist="$removelist $output_obj $lockfile" 874ee3138f1Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 875ee3138f1Smrg else 876ee3138f1Smrg output_obj= 877ee3138f1Smrg need_locks=no 878ee3138f1Smrg lockfile= 879ee3138f1Smrg fi 880ee3138f1Smrg 881ee3138f1Smrg # Lock this critical section if it is needed 882ee3138f1Smrg # We use this script file to make the link, it avoids creating a new file 883ee3138f1Smrg if test "$need_locks" = yes; then 884ee3138f1Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 885ee3138f1Smrg $show "Waiting for $lockfile to be removed" 886ee3138f1Smrg sleep 2 887ee3138f1Smrg done 888ee3138f1Smrg elif test "$need_locks" = warn; then 889ee3138f1Smrg if test -f "$lockfile"; then 890ee3138f1Smrg $echo "\ 891ee3138f1Smrg*** ERROR, $lockfile exists and contains: 892ee3138f1Smrg`cat $lockfile 2>/dev/null` 893ee3138f1Smrg 894ee3138f1SmrgThis indicates that another process is trying to use the same 895ee3138f1Smrgtemporary object file, and libtool could not work around it because 896ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together. If you 897ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better 898ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better 899ee3138f1Smrgcompiler." 900ee3138f1Smrg 901ee3138f1Smrg $run $rm $removelist 902ee3138f1Smrg exit $EXIT_FAILURE 903ee3138f1Smrg fi 904ee3138f1Smrg $echo "$srcfile" > "$lockfile" 905ee3138f1Smrg fi 906ee3138f1Smrg 907ee3138f1Smrg if test -n "$fix_srcfile_path"; then 908ee3138f1Smrg eval srcfile=\"$fix_srcfile_path\" 909ee3138f1Smrg fi 910ee3138f1Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 911ee3138f1Smrg case $qsrcfile in 912ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 913ee3138f1Smrg qsrcfile="\"$qsrcfile\"" ;; 914ee3138f1Smrg esac 915ee3138f1Smrg 916ee3138f1Smrg $run $rm "$libobj" "${libobj}T" 917ee3138f1Smrg 918ee3138f1Smrg # Create a libtool object file (analogous to a ".la" file), 919ee3138f1Smrg # but don't create it if we're doing a dry run. 920ee3138f1Smrg test -z "$run" && cat > ${libobj}T <<EOF 921ee3138f1Smrg# $libobj - a libtool object file 922ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 923ee3138f1Smrg# 924ee3138f1Smrg# Please DO NOT delete this file! 925ee3138f1Smrg# It is necessary for linking the library. 926ee3138f1Smrg 927ee3138f1Smrg# Name of the PIC object. 928ee3138f1SmrgEOF 929ee3138f1Smrg 930ee3138f1Smrg # Only build a PIC object if we are building libtool libraries. 931ee3138f1Smrg if test "$build_libtool_libs" = yes; then 932ee3138f1Smrg # Without this assignment, base_compile gets emptied. 933ee3138f1Smrg fbsd_hideous_sh_bug=$base_compile 934ee3138f1Smrg 935ee3138f1Smrg if test "$pic_mode" != no; then 936ee3138f1Smrg command="$base_compile $qsrcfile $pic_flag" 937ee3138f1Smrg else 938ee3138f1Smrg # Don't build PIC code 939ee3138f1Smrg command="$base_compile $qsrcfile" 940ee3138f1Smrg fi 941ee3138f1Smrg 942ee3138f1Smrg if test ! -d "${xdir}$objdir"; then 943ee3138f1Smrg $show "$mkdir ${xdir}$objdir" 944ee3138f1Smrg $run $mkdir ${xdir}$objdir 945ee3138f1Smrg exit_status=$? 946ee3138f1Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 947ee3138f1Smrg exit $exit_status 948ee3138f1Smrg fi 949ee3138f1Smrg fi 950ee3138f1Smrg 951ee3138f1Smrg if test -z "$output_obj"; then 952ee3138f1Smrg # Place PIC objects in $objdir 953ee3138f1Smrg command="$command -o $lobj" 954ee3138f1Smrg fi 955ee3138f1Smrg 956ee3138f1Smrg $run $rm "$lobj" "$output_obj" 957ee3138f1Smrg 958ee3138f1Smrg $show "$command" 959ee3138f1Smrg if $run eval "$command"; then : 960ee3138f1Smrg else 961ee3138f1Smrg test -n "$output_obj" && $run $rm $removelist 962ee3138f1Smrg exit $EXIT_FAILURE 963ee3138f1Smrg fi 964ee3138f1Smrg 965ee3138f1Smrg if test "$need_locks" = warn && 966ee3138f1Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 967ee3138f1Smrg $echo "\ 968ee3138f1Smrg*** ERROR, $lockfile contains: 969ee3138f1Smrg`cat $lockfile 2>/dev/null` 970ee3138f1Smrg 971ee3138f1Smrgbut it should contain: 972ee3138f1Smrg$srcfile 973ee3138f1Smrg 974ee3138f1SmrgThis indicates that another process is trying to use the same 975ee3138f1Smrgtemporary object file, and libtool could not work around it because 976ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together. If you 977ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better 978ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better 979ee3138f1Smrgcompiler." 980ee3138f1Smrg 981ee3138f1Smrg $run $rm $removelist 982ee3138f1Smrg exit $EXIT_FAILURE 983ee3138f1Smrg fi 984ee3138f1Smrg 985ee3138f1Smrg # Just move the object if needed, then go on to compile the next one 986ee3138f1Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 987ee3138f1Smrg $show "$mv $output_obj $lobj" 988ee3138f1Smrg if $run $mv $output_obj $lobj; then : 989ee3138f1Smrg else 990ee3138f1Smrg error=$? 991ee3138f1Smrg $run $rm $removelist 992ee3138f1Smrg exit $error 993ee3138f1Smrg fi 994ee3138f1Smrg fi 995ee3138f1Smrg 996ee3138f1Smrg # Append the name of the PIC object to the libtool object file. 997ee3138f1Smrg test -z "$run" && cat >> ${libobj}T <<EOF 998ee3138f1Smrgpic_object='$objdir/$objname' 999ee3138f1Smrg 1000ee3138f1SmrgEOF 1001ee3138f1Smrg 1002ee3138f1Smrg # Allow error messages only from the first compilation. 1003ee3138f1Smrg if test "$suppress_opt" = yes; then 1004ee3138f1Smrg suppress_output=' >/dev/null 2>&1' 1005ee3138f1Smrg fi 1006ee3138f1Smrg else 1007ee3138f1Smrg # No PIC object so indicate it doesn't exist in the libtool 1008ee3138f1Smrg # object file. 1009ee3138f1Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1010ee3138f1Smrgpic_object=none 1011ee3138f1Smrg 1012ee3138f1SmrgEOF 1013ee3138f1Smrg fi 1014ee3138f1Smrg 1015ee3138f1Smrg # Only build a position-dependent object if we build old libraries. 1016ee3138f1Smrg if test "$build_old_libs" = yes; then 1017ee3138f1Smrg if test "$pic_mode" != yes; then 1018ee3138f1Smrg # Don't build PIC code 1019ee3138f1Smrg command="$base_compile $qsrcfile" 1020ee3138f1Smrg else 1021ee3138f1Smrg command="$base_compile $qsrcfile $pic_flag" 1022ee3138f1Smrg fi 1023ee3138f1Smrg if test "$compiler_c_o" = yes; then 1024ee3138f1Smrg command="$command -o $obj" 1025ee3138f1Smrg fi 1026ee3138f1Smrg 1027ee3138f1Smrg # Suppress compiler output if we already did a PIC compilation. 1028ee3138f1Smrg command="$command$suppress_output" 1029ee3138f1Smrg $run $rm "$obj" "$output_obj" 1030ee3138f1Smrg $show "$command" 1031ee3138f1Smrg if $run eval "$command"; then : 1032ee3138f1Smrg else 1033ee3138f1Smrg $run $rm $removelist 1034ee3138f1Smrg exit $EXIT_FAILURE 1035ee3138f1Smrg fi 1036ee3138f1Smrg 1037ee3138f1Smrg if test "$need_locks" = warn && 1038ee3138f1Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1039ee3138f1Smrg $echo "\ 1040ee3138f1Smrg*** ERROR, $lockfile contains: 1041ee3138f1Smrg`cat $lockfile 2>/dev/null` 1042ee3138f1Smrg 1043ee3138f1Smrgbut it should contain: 1044ee3138f1Smrg$srcfile 1045ee3138f1Smrg 1046ee3138f1SmrgThis indicates that another process is trying to use the same 1047ee3138f1Smrgtemporary object file, and libtool could not work around it because 1048ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together. If you 1049ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better 1050ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better 1051ee3138f1Smrgcompiler." 1052ee3138f1Smrg 1053ee3138f1Smrg $run $rm $removelist 1054ee3138f1Smrg exit $EXIT_FAILURE 1055ee3138f1Smrg fi 1056ee3138f1Smrg 1057ee3138f1Smrg # Just move the object if needed 1058ee3138f1Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1059ee3138f1Smrg $show "$mv $output_obj $obj" 1060ee3138f1Smrg if $run $mv $output_obj $obj; then : 1061ee3138f1Smrg else 1062ee3138f1Smrg error=$? 1063ee3138f1Smrg $run $rm $removelist 1064ee3138f1Smrg exit $error 1065ee3138f1Smrg fi 1066ee3138f1Smrg fi 1067ee3138f1Smrg 1068ee3138f1Smrg # Append the name of the non-PIC object the libtool object file. 1069ee3138f1Smrg # Only append if the libtool object file exists. 1070ee3138f1Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1071ee3138f1Smrg# Name of the non-PIC object. 1072ee3138f1Smrgnon_pic_object='$objname' 1073ee3138f1Smrg 1074ee3138f1SmrgEOF 1075ee3138f1Smrg else 1076ee3138f1Smrg # Append the name of the non-PIC object the libtool object file. 1077ee3138f1Smrg # Only append if the libtool object file exists. 1078ee3138f1Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1079ee3138f1Smrg# Name of the non-PIC object. 1080ee3138f1Smrgnon_pic_object=none 1081ee3138f1Smrg 1082ee3138f1SmrgEOF 1083ee3138f1Smrg fi 1084ee3138f1Smrg 1085ee3138f1Smrg $run $mv "${libobj}T" "${libobj}" 1086ee3138f1Smrg 1087ee3138f1Smrg # Unlock the critical section if it was locked 1088ee3138f1Smrg if test "$need_locks" != no; then 1089ee3138f1Smrg $run $rm "$lockfile" 1090ee3138f1Smrg fi 1091ee3138f1Smrg 1092ee3138f1Smrg exit $EXIT_SUCCESS 1093ee3138f1Smrg ;; 1094ee3138f1Smrg 1095ee3138f1Smrg # libtool link mode 1096ee3138f1Smrg link | relink) 1097ee3138f1Smrg modename="$modename: link" 1098ee3138f1Smrg case $host in 1099ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1100ee3138f1Smrg # It is impossible to link a dll without this setting, and 1101ee3138f1Smrg # we shouldn't force the makefile maintainer to figure out 1102ee3138f1Smrg # which system we are compiling for in order to pass an extra 1103ee3138f1Smrg # flag for every libtool invocation. 1104ee3138f1Smrg # allow_undefined=no 1105ee3138f1Smrg 1106ee3138f1Smrg # FIXME: Unfortunately, there are problems with the above when trying 1107ee3138f1Smrg # to make a dll which has undefined symbols, in which case not 1108ee3138f1Smrg # even a static library is built. For now, we need to specify 1109ee3138f1Smrg # -no-undefined on the libtool link line when we can be certain 1110ee3138f1Smrg # that all symbols are satisfied, otherwise we get a static library. 1111ee3138f1Smrg allow_undefined=yes 1112ee3138f1Smrg ;; 1113ee3138f1Smrg *) 1114ee3138f1Smrg allow_undefined=yes 1115ee3138f1Smrg ;; 1116ee3138f1Smrg esac 1117ee3138f1Smrg libtool_args="$nonopt" 1118ee3138f1Smrg base_compile="$nonopt $@" 1119ee3138f1Smrg compile_command="$nonopt" 1120ee3138f1Smrg finalize_command="$nonopt" 1121ee3138f1Smrg 1122ee3138f1Smrg compile_rpath= 1123ee3138f1Smrg finalize_rpath= 1124ee3138f1Smrg compile_shlibpath= 1125ee3138f1Smrg finalize_shlibpath= 1126ee3138f1Smrg convenience= 1127ee3138f1Smrg old_convenience= 1128ee3138f1Smrg deplibs= 1129ee3138f1Smrg old_deplibs= 1130ee3138f1Smrg compiler_flags= 1131ee3138f1Smrg linker_flags= 1132ee3138f1Smrg dllsearchpath= 1133ee3138f1Smrg lib_search_path=`pwd` 1134ee3138f1Smrg inst_prefix_dir= 1135ee3138f1Smrg 1136ee3138f1Smrg avoid_version=no 1137ee3138f1Smrg dlfiles= 1138ee3138f1Smrg dlprefiles= 1139ee3138f1Smrg dlself=no 1140ee3138f1Smrg export_dynamic=no 1141ee3138f1Smrg export_symbols= 1142ee3138f1Smrg export_symbols_regex= 1143ee3138f1Smrg generated= 1144ee3138f1Smrg libobjs= 1145ee3138f1Smrg ltlibs= 1146ee3138f1Smrg module=no 1147ee3138f1Smrg no_install=no 1148ee3138f1Smrg objs= 1149ee3138f1Smrg non_pic_objects= 1150ee3138f1Smrg notinst_path= # paths that contain not-installed libtool libraries 1151ee3138f1Smrg precious_files_regex= 1152ee3138f1Smrg prefer_static_libs=no 1153ee3138f1Smrg preload=no 1154ee3138f1Smrg prev= 1155ee3138f1Smrg prevarg= 1156ee3138f1Smrg release= 1157ee3138f1Smrg rpath= 1158ee3138f1Smrg xrpath= 1159ee3138f1Smrg perm_rpath= 1160ee3138f1Smrg temp_rpath= 1161ee3138f1Smrg thread_safe=no 1162ee3138f1Smrg vinfo= 1163ee3138f1Smrg vinfo_number=no 1164ee3138f1Smrg 1165ee3138f1Smrg func_infer_tag $base_compile 1166ee3138f1Smrg 1167ee3138f1Smrg # We need to know -static, to get the right output filenames. 1168ee3138f1Smrg for arg 1169ee3138f1Smrg do 1170ee3138f1Smrg case $arg in 1171ee3138f1Smrg -all-static | -static | -static-libtool-libs) 1172ee3138f1Smrg case $arg in 1173ee3138f1Smrg -all-static) 1174ee3138f1Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1175ee3138f1Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1176ee3138f1Smrg fi 1177ee3138f1Smrg if test -n "$link_static_flag"; then 1178ee3138f1Smrg dlopen_self=$dlopen_self_static 1179ee3138f1Smrg fi 1180ee3138f1Smrg prefer_static_libs=yes 1181ee3138f1Smrg ;; 1182ee3138f1Smrg -static) 1183ee3138f1Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1184ee3138f1Smrg dlopen_self=$dlopen_self_static 1185ee3138f1Smrg fi 1186ee3138f1Smrg prefer_static_libs=built 1187ee3138f1Smrg ;; 1188ee3138f1Smrg -static-libtool-libs) 1189ee3138f1Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1190ee3138f1Smrg dlopen_self=$dlopen_self_static 1191ee3138f1Smrg fi 1192ee3138f1Smrg prefer_static_libs=yes 1193ee3138f1Smrg ;; 1194ee3138f1Smrg esac 1195ee3138f1Smrg build_libtool_libs=no 1196ee3138f1Smrg build_old_libs=yes 1197ee3138f1Smrg break 1198ee3138f1Smrg ;; 1199ee3138f1Smrg esac 1200ee3138f1Smrg done 1201ee3138f1Smrg 1202ee3138f1Smrg # See if our shared archives depend on static archives. 1203ee3138f1Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1204ee3138f1Smrg 1205ee3138f1Smrg # Go through the arguments, transforming them on the way. 1206ee3138f1Smrg while test "$#" -gt 0; do 1207ee3138f1Smrg arg="$1" 1208ee3138f1Smrg shift 1209ee3138f1Smrg case $arg in 1210ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1211ee3138f1Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1212ee3138f1Smrg ;; 1213ee3138f1Smrg *) qarg=$arg ;; 1214ee3138f1Smrg esac 1215ee3138f1Smrg libtool_args="$libtool_args $qarg" 1216ee3138f1Smrg 1217ee3138f1Smrg # If the previous option needs an argument, assign it. 1218ee3138f1Smrg if test -n "$prev"; then 1219ee3138f1Smrg case $prev in 1220ee3138f1Smrg output) 1221ee3138f1Smrg compile_command="$compile_command @OUTPUT@" 1222ee3138f1Smrg finalize_command="$finalize_command @OUTPUT@" 1223ee3138f1Smrg ;; 1224ee3138f1Smrg esac 1225ee3138f1Smrg 1226ee3138f1Smrg case $prev in 1227ee3138f1Smrg dlfiles|dlprefiles) 1228ee3138f1Smrg if test "$preload" = no; then 1229ee3138f1Smrg # Add the symbol object into the linking commands. 1230ee3138f1Smrg compile_command="$compile_command @SYMFILE@" 1231ee3138f1Smrg finalize_command="$finalize_command @SYMFILE@" 1232ee3138f1Smrg preload=yes 1233ee3138f1Smrg fi 1234ee3138f1Smrg case $arg in 1235ee3138f1Smrg *.la | *.lo) ;; # We handle these cases below. 1236ee3138f1Smrg force) 1237ee3138f1Smrg if test "$dlself" = no; then 1238ee3138f1Smrg dlself=needless 1239ee3138f1Smrg export_dynamic=yes 1240ee3138f1Smrg fi 1241ee3138f1Smrg prev= 1242ee3138f1Smrg continue 1243ee3138f1Smrg ;; 1244ee3138f1Smrg self) 1245ee3138f1Smrg if test "$prev" = dlprefiles; then 1246ee3138f1Smrg dlself=yes 1247ee3138f1Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1248ee3138f1Smrg dlself=yes 1249ee3138f1Smrg else 1250ee3138f1Smrg dlself=needless 1251ee3138f1Smrg export_dynamic=yes 1252ee3138f1Smrg fi 1253ee3138f1Smrg prev= 1254ee3138f1Smrg continue 1255ee3138f1Smrg ;; 1256ee3138f1Smrg *) 1257ee3138f1Smrg if test "$prev" = dlfiles; then 1258ee3138f1Smrg dlfiles="$dlfiles $arg" 1259ee3138f1Smrg else 1260ee3138f1Smrg dlprefiles="$dlprefiles $arg" 1261ee3138f1Smrg fi 1262ee3138f1Smrg prev= 1263ee3138f1Smrg continue 1264ee3138f1Smrg ;; 1265ee3138f1Smrg esac 1266ee3138f1Smrg ;; 1267ee3138f1Smrg expsyms) 1268ee3138f1Smrg export_symbols="$arg" 1269ee3138f1Smrg if test ! -f "$arg"; then 1270ee3138f1Smrg $echo "$modename: symbol file \`$arg' does not exist" 1271ee3138f1Smrg exit $EXIT_FAILURE 1272ee3138f1Smrg fi 1273ee3138f1Smrg prev= 1274ee3138f1Smrg continue 1275ee3138f1Smrg ;; 1276ee3138f1Smrg expsyms_regex) 1277ee3138f1Smrg export_symbols_regex="$arg" 1278ee3138f1Smrg prev= 1279ee3138f1Smrg continue 1280ee3138f1Smrg ;; 1281ee3138f1Smrg inst_prefix) 1282ee3138f1Smrg inst_prefix_dir="$arg" 1283ee3138f1Smrg prev= 1284ee3138f1Smrg continue 1285ee3138f1Smrg ;; 1286ee3138f1Smrg precious_regex) 1287ee3138f1Smrg precious_files_regex="$arg" 1288ee3138f1Smrg prev= 1289ee3138f1Smrg continue 1290ee3138f1Smrg ;; 1291ee3138f1Smrg release) 1292ee3138f1Smrg release="-$arg" 1293ee3138f1Smrg prev= 1294ee3138f1Smrg continue 1295ee3138f1Smrg ;; 1296ee3138f1Smrg objectlist) 1297ee3138f1Smrg if test -f "$arg"; then 1298ee3138f1Smrg save_arg=$arg 1299ee3138f1Smrg moreargs= 1300ee3138f1Smrg for fil in `cat $save_arg` 1301ee3138f1Smrg do 1302ee3138f1Smrg# moreargs="$moreargs $fil" 1303ee3138f1Smrg arg=$fil 1304ee3138f1Smrg # A libtool-controlled object. 1305ee3138f1Smrg 1306ee3138f1Smrg # Check to see that this really is a libtool object. 1307ee3138f1Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1308ee3138f1Smrg pic_object= 1309ee3138f1Smrg non_pic_object= 1310ee3138f1Smrg 1311ee3138f1Smrg # Read the .lo file 1312ee3138f1Smrg # If there is no directory component, then add one. 1313ee3138f1Smrg case $arg in 1314ee3138f1Smrg */* | *\\*) . $arg ;; 1315ee3138f1Smrg *) . ./$arg ;; 1316ee3138f1Smrg esac 1317ee3138f1Smrg 1318ee3138f1Smrg if test -z "$pic_object" || \ 1319ee3138f1Smrg test -z "$non_pic_object" || 1320ee3138f1Smrg test "$pic_object" = none && \ 1321ee3138f1Smrg test "$non_pic_object" = none; then 1322ee3138f1Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1323ee3138f1Smrg exit $EXIT_FAILURE 1324ee3138f1Smrg fi 1325ee3138f1Smrg 1326ee3138f1Smrg # Extract subdirectory from the argument. 1327ee3138f1Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1328ee3138f1Smrg if test "X$xdir" = "X$arg"; then 1329ee3138f1Smrg xdir= 1330ee3138f1Smrg else 1331ee3138f1Smrg xdir="$xdir/" 1332ee3138f1Smrg fi 1333ee3138f1Smrg 1334ee3138f1Smrg if test "$pic_object" != none; then 1335ee3138f1Smrg # Prepend the subdirectory the object is found in. 1336ee3138f1Smrg pic_object="$xdir$pic_object" 1337ee3138f1Smrg 1338ee3138f1Smrg if test "$prev" = dlfiles; then 1339ee3138f1Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1340ee3138f1Smrg dlfiles="$dlfiles $pic_object" 1341ee3138f1Smrg prev= 1342ee3138f1Smrg continue 1343ee3138f1Smrg else 1344ee3138f1Smrg # If libtool objects are unsupported, then we need to preload. 1345ee3138f1Smrg prev=dlprefiles 1346ee3138f1Smrg fi 1347ee3138f1Smrg fi 1348ee3138f1Smrg 1349ee3138f1Smrg # CHECK ME: I think I busted this. -Ossama 1350ee3138f1Smrg if test "$prev" = dlprefiles; then 1351ee3138f1Smrg # Preload the old-style object. 1352ee3138f1Smrg dlprefiles="$dlprefiles $pic_object" 1353ee3138f1Smrg prev= 1354ee3138f1Smrg fi 1355ee3138f1Smrg 1356ee3138f1Smrg # A PIC object. 1357ee3138f1Smrg libobjs="$libobjs $pic_object" 1358ee3138f1Smrg arg="$pic_object" 1359ee3138f1Smrg fi 1360ee3138f1Smrg 1361ee3138f1Smrg # Non-PIC object. 1362ee3138f1Smrg if test "$non_pic_object" != none; then 1363ee3138f1Smrg # Prepend the subdirectory the object is found in. 1364ee3138f1Smrg non_pic_object="$xdir$non_pic_object" 1365ee3138f1Smrg 1366ee3138f1Smrg # A standard non-PIC object 1367ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1368ee3138f1Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1369ee3138f1Smrg arg="$non_pic_object" 1370ee3138f1Smrg fi 1371ee3138f1Smrg else 1372ee3138f1Smrg # If the PIC object exists, use it instead. 1373ee3138f1Smrg # $xdir was prepended to $pic_object above. 1374ee3138f1Smrg non_pic_object="$pic_object" 1375ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1376ee3138f1Smrg fi 1377ee3138f1Smrg else 1378ee3138f1Smrg # Only an error if not doing a dry-run. 1379ee3138f1Smrg if test -z "$run"; then 1380ee3138f1Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1381ee3138f1Smrg exit $EXIT_FAILURE 1382ee3138f1Smrg else 1383ee3138f1Smrg # Dry-run case. 1384ee3138f1Smrg 1385ee3138f1Smrg # Extract subdirectory from the argument. 1386ee3138f1Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1387ee3138f1Smrg if test "X$xdir" = "X$arg"; then 1388ee3138f1Smrg xdir= 1389ee3138f1Smrg else 1390ee3138f1Smrg xdir="$xdir/" 1391ee3138f1Smrg fi 1392ee3138f1Smrg 1393ee3138f1Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1394ee3138f1Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1395ee3138f1Smrg libobjs="$libobjs $pic_object" 1396ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1397ee3138f1Smrg fi 1398ee3138f1Smrg fi 1399ee3138f1Smrg done 1400ee3138f1Smrg else 1401ee3138f1Smrg $echo "$modename: link input file \`$save_arg' does not exist" 1402ee3138f1Smrg exit $EXIT_FAILURE 1403ee3138f1Smrg fi 1404ee3138f1Smrg arg=$save_arg 1405ee3138f1Smrg prev= 1406ee3138f1Smrg continue 1407ee3138f1Smrg ;; 1408ee3138f1Smrg rpath | xrpath) 1409ee3138f1Smrg # We need an absolute path. 1410ee3138f1Smrg case $arg in 1411ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1412ee3138f1Smrg *) 1413ee3138f1Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1414ee3138f1Smrg exit $EXIT_FAILURE 1415ee3138f1Smrg ;; 1416ee3138f1Smrg esac 1417ee3138f1Smrg if test "$prev" = rpath; then 1418ee3138f1Smrg case "$rpath " in 1419ee3138f1Smrg *" $arg "*) ;; 1420ee3138f1Smrg *) rpath="$rpath $arg" ;; 1421ee3138f1Smrg esac 1422ee3138f1Smrg else 1423ee3138f1Smrg case "$xrpath " in 1424ee3138f1Smrg *" $arg "*) ;; 1425ee3138f1Smrg *) xrpath="$xrpath $arg" ;; 1426ee3138f1Smrg esac 1427ee3138f1Smrg fi 1428ee3138f1Smrg prev= 1429ee3138f1Smrg continue 1430ee3138f1Smrg ;; 1431ee3138f1Smrg xcompiler) 1432ee3138f1Smrg compiler_flags="$compiler_flags $qarg" 1433ee3138f1Smrg prev= 1434ee3138f1Smrg compile_command="$compile_command $qarg" 1435ee3138f1Smrg finalize_command="$finalize_command $qarg" 1436ee3138f1Smrg continue 1437ee3138f1Smrg ;; 1438ee3138f1Smrg xlinker) 1439ee3138f1Smrg linker_flags="$linker_flags $qarg" 1440ee3138f1Smrg compiler_flags="$compiler_flags $wl$qarg" 1441ee3138f1Smrg prev= 1442ee3138f1Smrg compile_command="$compile_command $wl$qarg" 1443ee3138f1Smrg finalize_command="$finalize_command $wl$qarg" 1444ee3138f1Smrg continue 1445ee3138f1Smrg ;; 1446ee3138f1Smrg xcclinker) 1447ee3138f1Smrg linker_flags="$linker_flags $qarg" 1448ee3138f1Smrg compiler_flags="$compiler_flags $qarg" 1449ee3138f1Smrg prev= 1450ee3138f1Smrg compile_command="$compile_command $qarg" 1451ee3138f1Smrg finalize_command="$finalize_command $qarg" 1452ee3138f1Smrg continue 1453ee3138f1Smrg ;; 1454ee3138f1Smrg shrext) 1455ee3138f1Smrg shrext_cmds="$arg" 1456ee3138f1Smrg prev= 1457ee3138f1Smrg continue 1458ee3138f1Smrg ;; 1459ee3138f1Smrg darwin_framework|darwin_framework_skip) 1460ee3138f1Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1461ee3138f1Smrg compile_command="$compile_command $arg" 1462ee3138f1Smrg finalize_command="$finalize_command $arg" 1463ee3138f1Smrg prev= 1464ee3138f1Smrg continue 1465ee3138f1Smrg ;; 1466ee3138f1Smrg *) 1467ee3138f1Smrg eval "$prev=\"\$arg\"" 1468ee3138f1Smrg prev= 1469ee3138f1Smrg continue 1470ee3138f1Smrg ;; 1471ee3138f1Smrg esac 1472ee3138f1Smrg fi # test -n "$prev" 1473ee3138f1Smrg 1474ee3138f1Smrg prevarg="$arg" 1475ee3138f1Smrg 1476ee3138f1Smrg case $arg in 1477ee3138f1Smrg -all-static) 1478ee3138f1Smrg if test -n "$link_static_flag"; then 1479ee3138f1Smrg compile_command="$compile_command $link_static_flag" 1480ee3138f1Smrg finalize_command="$finalize_command $link_static_flag" 1481ee3138f1Smrg fi 1482ee3138f1Smrg continue 1483ee3138f1Smrg ;; 1484ee3138f1Smrg 1485ee3138f1Smrg -allow-undefined) 1486ee3138f1Smrg # FIXME: remove this flag sometime in the future. 1487ee3138f1Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1488ee3138f1Smrg continue 1489ee3138f1Smrg ;; 1490ee3138f1Smrg 1491ee3138f1Smrg -avoid-version) 1492ee3138f1Smrg avoid_version=yes 1493ee3138f1Smrg continue 1494ee3138f1Smrg ;; 1495ee3138f1Smrg 1496ee3138f1Smrg -dlopen) 1497ee3138f1Smrg prev=dlfiles 1498ee3138f1Smrg continue 1499ee3138f1Smrg ;; 1500ee3138f1Smrg 1501ee3138f1Smrg -dlpreopen) 1502ee3138f1Smrg prev=dlprefiles 1503ee3138f1Smrg continue 1504ee3138f1Smrg ;; 1505ee3138f1Smrg 1506ee3138f1Smrg -export-dynamic) 1507ee3138f1Smrg export_dynamic=yes 1508ee3138f1Smrg continue 1509ee3138f1Smrg ;; 1510ee3138f1Smrg 1511ee3138f1Smrg -export-symbols | -export-symbols-regex) 1512ee3138f1Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1513ee3138f1Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1514ee3138f1Smrg exit $EXIT_FAILURE 1515ee3138f1Smrg fi 1516ee3138f1Smrg if test "X$arg" = "X-export-symbols"; then 1517ee3138f1Smrg prev=expsyms 1518ee3138f1Smrg else 1519ee3138f1Smrg prev=expsyms_regex 1520ee3138f1Smrg fi 1521ee3138f1Smrg continue 1522ee3138f1Smrg ;; 1523ee3138f1Smrg 1524ee3138f1Smrg -framework|-arch|-isysroot) 1525ee3138f1Smrg case " $CC " in 1526ee3138f1Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1527ee3138f1Smrg prev=darwin_framework_skip ;; 1528ee3138f1Smrg *) compiler_flags="$compiler_flags $arg" 1529ee3138f1Smrg prev=darwin_framework ;; 1530ee3138f1Smrg esac 1531ee3138f1Smrg compile_command="$compile_command $arg" 1532ee3138f1Smrg finalize_command="$finalize_command $arg" 1533ee3138f1Smrg continue 1534ee3138f1Smrg ;; 1535ee3138f1Smrg 1536ee3138f1Smrg -inst-prefix-dir) 1537ee3138f1Smrg prev=inst_prefix 1538ee3138f1Smrg continue 1539ee3138f1Smrg ;; 1540ee3138f1Smrg 1541ee3138f1Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1542ee3138f1Smrg # so, if we see these flags be careful not to treat them like -L 1543ee3138f1Smrg -L[A-Z][A-Z]*:*) 1544ee3138f1Smrg case $with_gcc/$host in 1545ee3138f1Smrg no/*-*-irix* | /*-*-irix*) 1546ee3138f1Smrg compile_command="$compile_command $arg" 1547ee3138f1Smrg finalize_command="$finalize_command $arg" 1548ee3138f1Smrg ;; 1549ee3138f1Smrg esac 1550ee3138f1Smrg continue 1551ee3138f1Smrg ;; 1552ee3138f1Smrg 1553ee3138f1Smrg -L*) 1554ee3138f1Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1555ee3138f1Smrg # We need an absolute path. 1556ee3138f1Smrg case $dir in 1557ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1558ee3138f1Smrg *) 1559ee3138f1Smrg absdir=`cd "$dir" && pwd` 1560ee3138f1Smrg if test -z "$absdir"; then 1561ee3138f1Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1562ee3138f1Smrg absdir="$dir" 1563ee3138f1Smrg notinst_path="$notinst_path $dir" 1564ee3138f1Smrg fi 1565ee3138f1Smrg dir="$absdir" 1566ee3138f1Smrg ;; 1567ee3138f1Smrg esac 1568ee3138f1Smrg case "$deplibs " in 1569ee3138f1Smrg *" -L$dir "*) ;; 1570ee3138f1Smrg *) 1571ee3138f1Smrg deplibs="$deplibs -L$dir" 1572ee3138f1Smrg lib_search_path="$lib_search_path $dir" 1573ee3138f1Smrg ;; 1574ee3138f1Smrg esac 1575ee3138f1Smrg case $host in 1576ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1577ee3138f1Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1578ee3138f1Smrg case :$dllsearchpath: in 1579ee3138f1Smrg *":$dir:"*) ;; 1580ee3138f1Smrg *) dllsearchpath="$dllsearchpath:$dir";; 1581ee3138f1Smrg esac 1582ee3138f1Smrg case :$dllsearchpath: in 1583ee3138f1Smrg *":$testbindir:"*) ;; 1584ee3138f1Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1585ee3138f1Smrg esac 1586ee3138f1Smrg ;; 1587ee3138f1Smrg esac 1588ee3138f1Smrg continue 1589ee3138f1Smrg ;; 1590ee3138f1Smrg 1591ee3138f1Smrg -l*) 1592ee3138f1Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1593ee3138f1Smrg case $host in 1594ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1595ee3138f1Smrg # These systems don't actually have a C or math library (as such) 1596ee3138f1Smrg continue 1597ee3138f1Smrg ;; 1598ee3138f1Smrg *-*-os2*) 1599ee3138f1Smrg # These systems don't actually have a C library (as such) 1600ee3138f1Smrg test "X$arg" = "X-lc" && continue 1601ee3138f1Smrg ;; 1602ee3138f1Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1603ee3138f1Smrg # Do not include libc due to us having libc/libc_r. 1604ee3138f1Smrg test "X$arg" = "X-lc" && continue 1605ee3138f1Smrg ;; 1606ee3138f1Smrg *-*-rhapsody* | *-*-darwin1.[012]) 1607ee3138f1Smrg # Rhapsody C and math libraries are in the System framework 1608ee3138f1Smrg deplibs="$deplibs -framework System" 1609ee3138f1Smrg continue 1610ee3138f1Smrg ;; 1611ee3138f1Smrg *-*-sco3.2v5* | *-*-sco5v6*) 1612ee3138f1Smrg # Causes problems with __ctype 1613ee3138f1Smrg test "X$arg" = "X-lc" && continue 1614ee3138f1Smrg ;; 1615ee3138f1Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1616ee3138f1Smrg # Compiler inserts libc in the correct place for threads to work 1617ee3138f1Smrg test "X$arg" = "X-lc" && continue 1618ee3138f1Smrg ;; 1619ee3138f1Smrg esac 1620ee3138f1Smrg elif test "X$arg" = "X-lc_r"; then 1621ee3138f1Smrg case $host in 1622ee3138f1Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1623ee3138f1Smrg # Do not include libc_r directly, use -pthread flag. 1624ee3138f1Smrg continue 1625ee3138f1Smrg ;; 1626ee3138f1Smrg esac 1627ee3138f1Smrg fi 1628ee3138f1Smrg deplibs="$deplibs $arg" 1629ee3138f1Smrg continue 1630ee3138f1Smrg ;; 1631ee3138f1Smrg 1632ee3138f1Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1633ee3138f1Smrg # classes, name mangling, and exception handling. 1634ee3138f1Smrg -model) 1635ee3138f1Smrg compile_command="$compile_command $arg" 1636ee3138f1Smrg compiler_flags="$compiler_flags $arg" 1637ee3138f1Smrg finalize_command="$finalize_command $arg" 1638ee3138f1Smrg prev=xcompiler 1639ee3138f1Smrg continue 1640ee3138f1Smrg ;; 1641ee3138f1Smrg 1642ee3138f1Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1643ee3138f1Smrg compiler_flags="$compiler_flags $arg" 1644ee3138f1Smrg compile_command="$compile_command $arg" 1645ee3138f1Smrg finalize_command="$finalize_command $arg" 1646ee3138f1Smrg continue 1647ee3138f1Smrg ;; 1648ee3138f1Smrg 1649ee3138f1Smrg -module) 1650ee3138f1Smrg module=yes 1651ee3138f1Smrg continue 1652ee3138f1Smrg ;; 1653ee3138f1Smrg 1654ee3138f1Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1655ee3138f1Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1656ee3138f1Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1657ee3138f1Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1658ee3138f1Smrg # -q* pass through compiler args for the IBM compiler 1659ee3138f1Smrg # -m* pass through architecture-specific compiler args for GCC 1660ee3138f1Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1661ee3138f1Smrg # compiler args for GCC 1662ee3138f1Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1663ee3138f1Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1664ee3138f1Smrg # @file GCC response files 1665ee3138f1Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1666ee3138f1Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1667ee3138f1Smrg 1668ee3138f1Smrg # Unknown arguments in both finalize_command and compile_command need 1669ee3138f1Smrg # to be aesthetically quoted because they are evaled later. 1670ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1671ee3138f1Smrg case $arg in 1672ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1673ee3138f1Smrg arg="\"$arg\"" 1674ee3138f1Smrg ;; 1675ee3138f1Smrg esac 1676ee3138f1Smrg compile_command="$compile_command $arg" 1677ee3138f1Smrg finalize_command="$finalize_command $arg" 1678ee3138f1Smrg compiler_flags="$compiler_flags $arg" 1679ee3138f1Smrg continue 1680ee3138f1Smrg ;; 1681ee3138f1Smrg 1682ee3138f1Smrg -shrext) 1683ee3138f1Smrg prev=shrext 1684ee3138f1Smrg continue 1685ee3138f1Smrg ;; 1686ee3138f1Smrg 1687ee3138f1Smrg -no-fast-install) 1688ee3138f1Smrg fast_install=no 1689ee3138f1Smrg continue 1690ee3138f1Smrg ;; 1691ee3138f1Smrg 1692ee3138f1Smrg -no-install) 1693ee3138f1Smrg case $host in 1694ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1695ee3138f1Smrg # The PATH hackery in wrapper scripts is required on Windows 1696ee3138f1Smrg # and Darwin in order for the loader to find any dlls it needs. 1697ee3138f1Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1698ee3138f1Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1699ee3138f1Smrg fast_install=no 1700ee3138f1Smrg ;; 1701ee3138f1Smrg *) no_install=yes ;; 1702ee3138f1Smrg esac 1703ee3138f1Smrg continue 1704ee3138f1Smrg ;; 1705ee3138f1Smrg 1706ee3138f1Smrg -no-undefined) 1707ee3138f1Smrg allow_undefined=no 1708ee3138f1Smrg continue 1709ee3138f1Smrg ;; 1710ee3138f1Smrg 1711ee3138f1Smrg -objectlist) 1712ee3138f1Smrg prev=objectlist 1713ee3138f1Smrg continue 1714ee3138f1Smrg ;; 1715ee3138f1Smrg 1716ee3138f1Smrg -o) prev=output ;; 1717ee3138f1Smrg 1718ee3138f1Smrg -precious-files-regex) 1719ee3138f1Smrg prev=precious_regex 1720ee3138f1Smrg continue 1721ee3138f1Smrg ;; 1722ee3138f1Smrg 1723ee3138f1Smrg -release) 1724ee3138f1Smrg prev=release 1725ee3138f1Smrg continue 1726ee3138f1Smrg ;; 1727ee3138f1Smrg 1728ee3138f1Smrg -rpath) 1729ee3138f1Smrg prev=rpath 1730ee3138f1Smrg continue 1731ee3138f1Smrg ;; 1732ee3138f1Smrg 1733ee3138f1Smrg -R) 1734ee3138f1Smrg prev=xrpath 1735ee3138f1Smrg continue 1736ee3138f1Smrg ;; 1737ee3138f1Smrg 1738ee3138f1Smrg -R*) 1739ee3138f1Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1740ee3138f1Smrg # We need an absolute path. 1741ee3138f1Smrg case $dir in 1742ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1743ee3138f1Smrg *) 1744ee3138f1Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1745ee3138f1Smrg exit $EXIT_FAILURE 1746ee3138f1Smrg ;; 1747ee3138f1Smrg esac 1748ee3138f1Smrg case "$xrpath " in 1749ee3138f1Smrg *" $dir "*) ;; 1750ee3138f1Smrg *) xrpath="$xrpath $dir" ;; 1751ee3138f1Smrg esac 1752ee3138f1Smrg continue 1753ee3138f1Smrg ;; 1754ee3138f1Smrg 1755ee3138f1Smrg -static | -static-libtool-libs) 1756ee3138f1Smrg # The effects of -static are defined in a previous loop. 1757ee3138f1Smrg # We used to do the same as -all-static on platforms that 1758ee3138f1Smrg # didn't have a PIC flag, but the assumption that the effects 1759ee3138f1Smrg # would be equivalent was wrong. It would break on at least 1760ee3138f1Smrg # Digital Unix and AIX. 1761ee3138f1Smrg continue 1762ee3138f1Smrg ;; 1763ee3138f1Smrg 1764ee3138f1Smrg -thread-safe) 1765ee3138f1Smrg thread_safe=yes 1766ee3138f1Smrg continue 1767ee3138f1Smrg ;; 1768ee3138f1Smrg 1769ee3138f1Smrg -version-info) 1770ee3138f1Smrg prev=vinfo 1771ee3138f1Smrg continue 1772ee3138f1Smrg ;; 1773ee3138f1Smrg -version-number) 1774ee3138f1Smrg prev=vinfo 1775ee3138f1Smrg vinfo_number=yes 1776ee3138f1Smrg continue 1777ee3138f1Smrg ;; 1778ee3138f1Smrg 1779ee3138f1Smrg -Wc,*) 1780ee3138f1Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1781ee3138f1Smrg arg= 1782ee3138f1Smrg save_ifs="$IFS"; IFS=',' 1783ee3138f1Smrg for flag in $args; do 1784ee3138f1Smrg IFS="$save_ifs" 1785ee3138f1Smrg case $flag in 1786ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1787ee3138f1Smrg flag="\"$flag\"" 1788ee3138f1Smrg ;; 1789ee3138f1Smrg esac 1790ee3138f1Smrg arg="$arg $wl$flag" 1791ee3138f1Smrg compiler_flags="$compiler_flags $flag" 1792ee3138f1Smrg done 1793ee3138f1Smrg IFS="$save_ifs" 1794ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1795ee3138f1Smrg ;; 1796ee3138f1Smrg 1797ee3138f1Smrg -Wl,*) 1798ee3138f1Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1799ee3138f1Smrg arg= 1800ee3138f1Smrg save_ifs="$IFS"; IFS=',' 1801ee3138f1Smrg for flag in $args; do 1802ee3138f1Smrg IFS="$save_ifs" 1803ee3138f1Smrg case $flag in 1804ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1805ee3138f1Smrg flag="\"$flag\"" 1806ee3138f1Smrg ;; 1807ee3138f1Smrg esac 1808ee3138f1Smrg arg="$arg $wl$flag" 1809ee3138f1Smrg compiler_flags="$compiler_flags $wl$flag" 1810ee3138f1Smrg linker_flags="$linker_flags $flag" 1811ee3138f1Smrg done 1812ee3138f1Smrg IFS="$save_ifs" 1813ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1814ee3138f1Smrg ;; 1815ee3138f1Smrg 1816ee3138f1Smrg -Xcompiler) 1817ee3138f1Smrg prev=xcompiler 1818ee3138f1Smrg continue 1819ee3138f1Smrg ;; 1820ee3138f1Smrg 1821ee3138f1Smrg -Xlinker) 1822ee3138f1Smrg prev=xlinker 1823ee3138f1Smrg continue 1824ee3138f1Smrg ;; 1825ee3138f1Smrg 1826ee3138f1Smrg -XCClinker) 1827ee3138f1Smrg prev=xcclinker 1828ee3138f1Smrg continue 1829ee3138f1Smrg ;; 1830ee3138f1Smrg 1831ee3138f1Smrg # Some other compiler flag. 1832ee3138f1Smrg -* | +*) 1833ee3138f1Smrg # Unknown arguments in both finalize_command and compile_command need 1834ee3138f1Smrg # to be aesthetically quoted because they are evaled later. 1835ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1836ee3138f1Smrg case $arg in 1837ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1838ee3138f1Smrg arg="\"$arg\"" 1839ee3138f1Smrg ;; 1840ee3138f1Smrg esac 1841ee3138f1Smrg ;; 1842ee3138f1Smrg 1843ee3138f1Smrg *.$objext) 1844ee3138f1Smrg # A standard object. 1845ee3138f1Smrg objs="$objs $arg" 1846ee3138f1Smrg ;; 1847ee3138f1Smrg 1848ee3138f1Smrg *.lo) 1849ee3138f1Smrg # A libtool-controlled object. 1850ee3138f1Smrg 1851ee3138f1Smrg # Check to see that this really is a libtool object. 1852ee3138f1Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1853ee3138f1Smrg pic_object= 1854ee3138f1Smrg non_pic_object= 1855ee3138f1Smrg 1856ee3138f1Smrg # Read the .lo file 1857ee3138f1Smrg # If there is no directory component, then add one. 1858ee3138f1Smrg case $arg in 1859ee3138f1Smrg */* | *\\*) . $arg ;; 1860ee3138f1Smrg *) . ./$arg ;; 1861ee3138f1Smrg esac 1862ee3138f1Smrg 1863ee3138f1Smrg if test -z "$pic_object" || \ 1864ee3138f1Smrg test -z "$non_pic_object" || 1865ee3138f1Smrg test "$pic_object" = none && \ 1866ee3138f1Smrg test "$non_pic_object" = none; then 1867ee3138f1Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1868ee3138f1Smrg exit $EXIT_FAILURE 1869ee3138f1Smrg fi 1870ee3138f1Smrg 1871ee3138f1Smrg # Extract subdirectory from the argument. 1872ee3138f1Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1873ee3138f1Smrg if test "X$xdir" = "X$arg"; then 1874ee3138f1Smrg xdir= 1875ee3138f1Smrg else 1876ee3138f1Smrg xdir="$xdir/" 1877ee3138f1Smrg fi 1878ee3138f1Smrg 1879ee3138f1Smrg if test "$pic_object" != none; then 1880ee3138f1Smrg # Prepend the subdirectory the object is found in. 1881ee3138f1Smrg pic_object="$xdir$pic_object" 1882ee3138f1Smrg 1883ee3138f1Smrg if test "$prev" = dlfiles; then 1884ee3138f1Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1885ee3138f1Smrg dlfiles="$dlfiles $pic_object" 1886ee3138f1Smrg prev= 1887ee3138f1Smrg continue 1888ee3138f1Smrg else 1889ee3138f1Smrg # If libtool objects are unsupported, then we need to preload. 1890ee3138f1Smrg prev=dlprefiles 1891ee3138f1Smrg fi 1892ee3138f1Smrg fi 1893ee3138f1Smrg 1894ee3138f1Smrg # CHECK ME: I think I busted this. -Ossama 1895ee3138f1Smrg if test "$prev" = dlprefiles; then 1896ee3138f1Smrg # Preload the old-style object. 1897ee3138f1Smrg dlprefiles="$dlprefiles $pic_object" 1898ee3138f1Smrg prev= 1899ee3138f1Smrg fi 1900ee3138f1Smrg 1901ee3138f1Smrg # A PIC object. 1902ee3138f1Smrg libobjs="$libobjs $pic_object" 1903ee3138f1Smrg arg="$pic_object" 1904ee3138f1Smrg fi 1905ee3138f1Smrg 1906ee3138f1Smrg # Non-PIC object. 1907ee3138f1Smrg if test "$non_pic_object" != none; then 1908ee3138f1Smrg # Prepend the subdirectory the object is found in. 1909ee3138f1Smrg non_pic_object="$xdir$non_pic_object" 1910ee3138f1Smrg 1911ee3138f1Smrg # A standard non-PIC object 1912ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1913ee3138f1Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1914ee3138f1Smrg arg="$non_pic_object" 1915ee3138f1Smrg fi 1916ee3138f1Smrg else 1917ee3138f1Smrg # If the PIC object exists, use it instead. 1918ee3138f1Smrg # $xdir was prepended to $pic_object above. 1919ee3138f1Smrg non_pic_object="$pic_object" 1920ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1921ee3138f1Smrg fi 1922ee3138f1Smrg else 1923ee3138f1Smrg # Only an error if not doing a dry-run. 1924ee3138f1Smrg if test -z "$run"; then 1925ee3138f1Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1926ee3138f1Smrg exit $EXIT_FAILURE 1927ee3138f1Smrg else 1928ee3138f1Smrg # Dry-run case. 1929ee3138f1Smrg 1930ee3138f1Smrg # Extract subdirectory from the argument. 1931ee3138f1Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1932ee3138f1Smrg if test "X$xdir" = "X$arg"; then 1933ee3138f1Smrg xdir= 1934ee3138f1Smrg else 1935ee3138f1Smrg xdir="$xdir/" 1936ee3138f1Smrg fi 1937ee3138f1Smrg 1938ee3138f1Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1939ee3138f1Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1940ee3138f1Smrg libobjs="$libobjs $pic_object" 1941ee3138f1Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1942ee3138f1Smrg fi 1943ee3138f1Smrg fi 1944ee3138f1Smrg ;; 1945ee3138f1Smrg 1946ee3138f1Smrg *.$libext) 1947ee3138f1Smrg # An archive. 1948ee3138f1Smrg deplibs="$deplibs $arg" 1949ee3138f1Smrg old_deplibs="$old_deplibs $arg" 1950ee3138f1Smrg continue 1951ee3138f1Smrg ;; 1952ee3138f1Smrg 1953ee3138f1Smrg *.la) 1954ee3138f1Smrg # A libtool-controlled library. 1955ee3138f1Smrg 1956ee3138f1Smrg if test "$prev" = dlfiles; then 1957ee3138f1Smrg # This library was specified with -dlopen. 1958ee3138f1Smrg dlfiles="$dlfiles $arg" 1959ee3138f1Smrg prev= 1960ee3138f1Smrg elif test "$prev" = dlprefiles; then 1961ee3138f1Smrg # The library was specified with -dlpreopen. 1962ee3138f1Smrg dlprefiles="$dlprefiles $arg" 1963ee3138f1Smrg prev= 1964ee3138f1Smrg else 1965ee3138f1Smrg deplibs="$deplibs $arg" 1966ee3138f1Smrg fi 1967ee3138f1Smrg continue 1968ee3138f1Smrg ;; 1969ee3138f1Smrg 1970ee3138f1Smrg # Some other compiler argument. 1971ee3138f1Smrg *) 1972ee3138f1Smrg # Unknown arguments in both finalize_command and compile_command need 1973ee3138f1Smrg # to be aesthetically quoted because they are evaled later. 1974ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1975ee3138f1Smrg case $arg in 1976ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1977ee3138f1Smrg arg="\"$arg\"" 1978ee3138f1Smrg ;; 1979ee3138f1Smrg esac 1980ee3138f1Smrg ;; 1981ee3138f1Smrg esac # arg 1982ee3138f1Smrg 1983ee3138f1Smrg # Now actually substitute the argument into the commands. 1984ee3138f1Smrg if test -n "$arg"; then 1985ee3138f1Smrg compile_command="$compile_command $arg" 1986ee3138f1Smrg finalize_command="$finalize_command $arg" 1987ee3138f1Smrg fi 1988ee3138f1Smrg done # argument parsing loop 1989ee3138f1Smrg 1990ee3138f1Smrg if test -n "$prev"; then 1991ee3138f1Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1992ee3138f1Smrg $echo "$help" 1>&2 1993ee3138f1Smrg exit $EXIT_FAILURE 1994ee3138f1Smrg fi 1995ee3138f1Smrg 1996ee3138f1Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 1997ee3138f1Smrg eval arg=\"$export_dynamic_flag_spec\" 1998ee3138f1Smrg compile_command="$compile_command $arg" 1999ee3138f1Smrg finalize_command="$finalize_command $arg" 2000ee3138f1Smrg fi 2001ee3138f1Smrg 2002ee3138f1Smrg oldlibs= 2003ee3138f1Smrg # calculate the name of the file, without its directory 2004ee3138f1Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2005ee3138f1Smrg libobjs_save="$libobjs" 2006ee3138f1Smrg 2007ee3138f1Smrg if test -n "$shlibpath_var"; then 2008ee3138f1Smrg # get the directories listed in $shlibpath_var 2009ee3138f1Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2010ee3138f1Smrg else 2011ee3138f1Smrg shlib_search_path= 2012ee3138f1Smrg fi 2013ee3138f1Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2014ee3138f1Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2015ee3138f1Smrg 2016ee3138f1Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2017ee3138f1Smrg if test "X$output_objdir" = "X$output"; then 2018ee3138f1Smrg output_objdir="$objdir" 2019ee3138f1Smrg else 2020ee3138f1Smrg output_objdir="$output_objdir/$objdir" 2021ee3138f1Smrg fi 2022ee3138f1Smrg # Create the object directory. 2023ee3138f1Smrg if test ! -d "$output_objdir"; then 2024ee3138f1Smrg $show "$mkdir $output_objdir" 2025ee3138f1Smrg $run $mkdir $output_objdir 2026ee3138f1Smrg exit_status=$? 2027ee3138f1Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2028ee3138f1Smrg exit $exit_status 2029ee3138f1Smrg fi 2030ee3138f1Smrg fi 2031ee3138f1Smrg 2032ee3138f1Smrg # Determine the type of output 2033ee3138f1Smrg case $output in 2034ee3138f1Smrg "") 2035ee3138f1Smrg $echo "$modename: you must specify an output file" 1>&2 2036ee3138f1Smrg $echo "$help" 1>&2 2037ee3138f1Smrg exit $EXIT_FAILURE 2038ee3138f1Smrg ;; 2039ee3138f1Smrg *.$libext) linkmode=oldlib ;; 2040ee3138f1Smrg *.lo | *.$objext) linkmode=obj ;; 2041ee3138f1Smrg *.la) linkmode=lib ;; 2042ee3138f1Smrg *) linkmode=prog ;; # Anything else should be a program. 2043ee3138f1Smrg esac 2044ee3138f1Smrg 2045ee3138f1Smrg case $host in 2046ee3138f1Smrg *cygwin* | *mingw* | *pw32*) 2047ee3138f1Smrg # don't eliminate duplications in $postdeps and $predeps 2048ee3138f1Smrg duplicate_compiler_generated_deps=yes 2049ee3138f1Smrg ;; 2050ee3138f1Smrg *) 2051ee3138f1Smrg duplicate_compiler_generated_deps=$duplicate_deps 2052ee3138f1Smrg ;; 2053ee3138f1Smrg esac 2054ee3138f1Smrg specialdeplibs= 2055ee3138f1Smrg 2056ee3138f1Smrg libs= 2057ee3138f1Smrg # Find all interdependent deplibs by searching for libraries 2058ee3138f1Smrg # that are linked more than once (e.g. -la -lb -la) 2059ee3138f1Smrg for deplib in $deplibs; do 2060ee3138f1Smrg if test "X$duplicate_deps" = "Xyes" ; then 2061ee3138f1Smrg case "$libs " in 2062ee3138f1Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2063ee3138f1Smrg esac 2064ee3138f1Smrg fi 2065ee3138f1Smrg libs="$libs $deplib" 2066ee3138f1Smrg done 2067ee3138f1Smrg 2068ee3138f1Smrg if test "$linkmode" = lib; then 2069ee3138f1Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 2070ee3138f1Smrg 2071ee3138f1Smrg # Compute libraries that are listed more than once in $predeps 2072ee3138f1Smrg # $postdeps and mark them as special (i.e., whose duplicates are 2073ee3138f1Smrg # not to be eliminated). 2074ee3138f1Smrg pre_post_deps= 2075ee3138f1Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2076ee3138f1Smrg for pre_post_dep in $predeps $postdeps; do 2077ee3138f1Smrg case "$pre_post_deps " in 2078ee3138f1Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2079ee3138f1Smrg esac 2080ee3138f1Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 2081ee3138f1Smrg done 2082ee3138f1Smrg fi 2083ee3138f1Smrg pre_post_deps= 2084ee3138f1Smrg fi 2085ee3138f1Smrg 2086ee3138f1Smrg deplibs= 2087ee3138f1Smrg newdependency_libs= 2088ee3138f1Smrg newlib_search_path= 2089ee3138f1Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 2090ee3138f1Smrg notinst_deplibs= # not-installed libtool libraries 2091ee3138f1Smrg case $linkmode in 2092ee3138f1Smrg lib) 2093ee3138f1Smrg passes="conv link" 2094ee3138f1Smrg for file in $dlfiles $dlprefiles; do 2095ee3138f1Smrg case $file in 2096ee3138f1Smrg *.la) ;; 2097ee3138f1Smrg *) 2098ee3138f1Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2099ee3138f1Smrg exit $EXIT_FAILURE 2100ee3138f1Smrg ;; 2101ee3138f1Smrg esac 2102ee3138f1Smrg done 2103ee3138f1Smrg ;; 2104ee3138f1Smrg prog) 2105ee3138f1Smrg compile_deplibs= 2106ee3138f1Smrg finalize_deplibs= 2107ee3138f1Smrg alldeplibs=no 2108ee3138f1Smrg newdlfiles= 2109ee3138f1Smrg newdlprefiles= 2110ee3138f1Smrg passes="conv scan dlopen dlpreopen link" 2111ee3138f1Smrg ;; 2112ee3138f1Smrg *) passes="conv" 2113ee3138f1Smrg ;; 2114ee3138f1Smrg esac 2115ee3138f1Smrg for pass in $passes; do 2116ee3138f1Smrg if test "$linkmode,$pass" = "lib,link" || 2117ee3138f1Smrg test "$linkmode,$pass" = "prog,scan"; then 2118ee3138f1Smrg libs="$deplibs" 2119ee3138f1Smrg deplibs= 2120ee3138f1Smrg fi 2121ee3138f1Smrg if test "$linkmode" = prog; then 2122ee3138f1Smrg case $pass in 2123ee3138f1Smrg dlopen) libs="$dlfiles" ;; 2124ee3138f1Smrg dlpreopen) libs="$dlprefiles" ;; 2125ee3138f1Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2126ee3138f1Smrg esac 2127ee3138f1Smrg fi 2128ee3138f1Smrg if test "$pass" = dlopen; then 2129ee3138f1Smrg # Collect dlpreopened libraries 2130ee3138f1Smrg save_deplibs="$deplibs" 2131ee3138f1Smrg deplibs= 2132ee3138f1Smrg fi 2133ee3138f1Smrg for deplib in $libs; do 2134ee3138f1Smrg lib= 2135ee3138f1Smrg found=no 2136ee3138f1Smrg case $deplib in 2137ee3138f1Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2138ee3138f1Smrg if test "$linkmode,$pass" = "prog,link"; then 2139ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2140ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2141ee3138f1Smrg else 2142ee3138f1Smrg compiler_flags="$compiler_flags $deplib" 2143ee3138f1Smrg fi 2144ee3138f1Smrg continue 2145ee3138f1Smrg ;; 2146ee3138f1Smrg -l*) 2147ee3138f1Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2148ee3138f1Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2149ee3138f1Smrg continue 2150ee3138f1Smrg fi 2151ee3138f1Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2152ee3138f1Smrg for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do 2153ee3138f1Smrg for search_ext in .la $std_shrext .so .a; do 2154ee3138f1Smrg # Search the libtool library 2155ee3138f1Smrg lib="$searchdir/lib${name}${search_ext}" 2156ee3138f1Smrg if test -f "$lib"; then 2157ee3138f1Smrg if test "$search_ext" = ".la"; then 2158ee3138f1Smrg found=yes 2159ee3138f1Smrg else 2160ee3138f1Smrg found=no 2161ee3138f1Smrg fi 2162ee3138f1Smrg break 2 2163ee3138f1Smrg fi 2164ee3138f1Smrg done 2165ee3138f1Smrg done 2166ee3138f1Smrg if test "$found" != yes; then 2167ee3138f1Smrg # deplib doesn't seem to be a libtool library 2168ee3138f1Smrg if test "$linkmode,$pass" = "prog,link"; then 2169ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2170ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2171ee3138f1Smrg else 2172ee3138f1Smrg deplibs="$deplib $deplibs" 2173ee3138f1Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2174ee3138f1Smrg fi 2175ee3138f1Smrg continue 2176ee3138f1Smrg else # deplib is a libtool library 2177ee3138f1Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2178ee3138f1Smrg # We need to do some special things here, and not later. 2179ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2180ee3138f1Smrg case " $predeps $postdeps " in 2181ee3138f1Smrg *" $deplib "*) 2182ee3138f1Smrg if (${SED} -e '2q' $lib | 2183ee3138f1Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2184ee3138f1Smrg library_names= 2185ee3138f1Smrg old_library= 2186ee3138f1Smrg case $lib in 2187ee3138f1Smrg */* | *\\*) . $lib ;; 2188ee3138f1Smrg *) . ./$lib ;; 2189ee3138f1Smrg esac 2190ee3138f1Smrg for l in $old_library $library_names; do 2191ee3138f1Smrg ll="$l" 2192ee3138f1Smrg done 2193ee3138f1Smrg if test "X$ll" = "X$old_library" ; then # only static version available 2194ee3138f1Smrg found=no 2195ee3138f1Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2196ee3138f1Smrg test "X$ladir" = "X$lib" && ladir="." 2197ee3138f1Smrg lib=$ladir/$old_library 2198ee3138f1Smrg if test "$linkmode,$pass" = "prog,link"; then 2199ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2200ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2201ee3138f1Smrg else 2202ee3138f1Smrg deplibs="$deplib $deplibs" 2203ee3138f1Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2204ee3138f1Smrg fi 2205ee3138f1Smrg continue 2206ee3138f1Smrg fi 2207ee3138f1Smrg fi 2208ee3138f1Smrg ;; 2209ee3138f1Smrg *) ;; 2210ee3138f1Smrg esac 2211ee3138f1Smrg fi 2212ee3138f1Smrg fi 2213ee3138f1Smrg ;; # -l 2214ee3138f1Smrg -L*) 2215ee3138f1Smrg case $linkmode in 2216ee3138f1Smrg lib) 2217ee3138f1Smrg deplibs="$deplib $deplibs" 2218ee3138f1Smrg test "$pass" = conv && continue 2219ee3138f1Smrg newdependency_libs="$deplib $newdependency_libs" 2220ee3138f1Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2221ee3138f1Smrg ;; 2222ee3138f1Smrg prog) 2223ee3138f1Smrg if test "$pass" = conv; then 2224ee3138f1Smrg deplibs="$deplib $deplibs" 2225ee3138f1Smrg continue 2226ee3138f1Smrg fi 2227ee3138f1Smrg if test "$pass" = scan; then 2228ee3138f1Smrg deplibs="$deplib $deplibs" 2229ee3138f1Smrg else 2230ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2231ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2232ee3138f1Smrg fi 2233ee3138f1Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2234ee3138f1Smrg ;; 2235ee3138f1Smrg *) 2236ee3138f1Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2237ee3138f1Smrg ;; 2238ee3138f1Smrg esac # linkmode 2239ee3138f1Smrg continue 2240ee3138f1Smrg ;; # -L 2241ee3138f1Smrg -R*) 2242ee3138f1Smrg if test "$pass" = link; then 2243ee3138f1Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2244ee3138f1Smrg # Make sure the xrpath contains only unique directories. 2245ee3138f1Smrg case "$xrpath " in 2246ee3138f1Smrg *" $dir "*) ;; 2247ee3138f1Smrg *) xrpath="$xrpath $dir" ;; 2248ee3138f1Smrg esac 2249ee3138f1Smrg fi 2250ee3138f1Smrg deplibs="$deplib $deplibs" 2251ee3138f1Smrg continue 2252ee3138f1Smrg ;; 2253ee3138f1Smrg *.la) lib="$deplib" ;; 2254ee3138f1Smrg *.$libext) 2255ee3138f1Smrg if test "$pass" = conv; then 2256ee3138f1Smrg deplibs="$deplib $deplibs" 2257ee3138f1Smrg continue 2258ee3138f1Smrg fi 2259ee3138f1Smrg case $linkmode in 2260ee3138f1Smrg lib) 2261ee3138f1Smrg valid_a_lib=no 2262ee3138f1Smrg case $deplibs_check_method in 2263ee3138f1Smrg match_pattern*) 2264ee3138f1Smrg set dummy $deplibs_check_method 2265ee3138f1Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2266ee3138f1Smrg if eval $echo \"$deplib\" 2>/dev/null \ 2267ee3138f1Smrg | $SED 10q \ 2268ee3138f1Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 2269ee3138f1Smrg valid_a_lib=yes 2270ee3138f1Smrg fi 2271ee3138f1Smrg ;; 2272ee3138f1Smrg pass_all) 2273ee3138f1Smrg valid_a_lib=yes 2274ee3138f1Smrg ;; 2275ee3138f1Smrg esac 2276ee3138f1Smrg if test "$valid_a_lib" != yes; then 2277ee3138f1Smrg $echo 2278ee3138f1Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2279ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 2280ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 2281ee3138f1Smrg $echo "*** shared version of the library, which you do not appear to have" 2282ee3138f1Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2283ee3138f1Smrg $echo "*** that it is just a static archive that I should not used here." 2284ee3138f1Smrg else 2285ee3138f1Smrg $echo 2286ee3138f1Smrg $echo "*** Warning: Linking the shared library $output against the" 2287ee3138f1Smrg $echo "*** static library $deplib is not portable!" 2288ee3138f1Smrg deplibs="$deplib $deplibs" 2289ee3138f1Smrg fi 2290ee3138f1Smrg continue 2291ee3138f1Smrg ;; 2292ee3138f1Smrg prog) 2293ee3138f1Smrg if test "$pass" != link; then 2294ee3138f1Smrg deplibs="$deplib $deplibs" 2295ee3138f1Smrg else 2296ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2297ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2298ee3138f1Smrg fi 2299ee3138f1Smrg continue 2300ee3138f1Smrg ;; 2301ee3138f1Smrg esac # linkmode 2302ee3138f1Smrg ;; # *.$libext 2303ee3138f1Smrg *.lo | *.$objext) 2304ee3138f1Smrg if test "$pass" = conv; then 2305ee3138f1Smrg deplibs="$deplib $deplibs" 2306ee3138f1Smrg elif test "$linkmode" = prog; then 2307ee3138f1Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2308ee3138f1Smrg # If there is no dlopen support or we're linking statically, 2309ee3138f1Smrg # we need to preload. 2310ee3138f1Smrg newdlprefiles="$newdlprefiles $deplib" 2311ee3138f1Smrg compile_deplibs="$deplib $compile_deplibs" 2312ee3138f1Smrg finalize_deplibs="$deplib $finalize_deplibs" 2313ee3138f1Smrg else 2314ee3138f1Smrg newdlfiles="$newdlfiles $deplib" 2315ee3138f1Smrg fi 2316ee3138f1Smrg fi 2317ee3138f1Smrg continue 2318ee3138f1Smrg ;; 2319ee3138f1Smrg %DEPLIBS%) 2320ee3138f1Smrg alldeplibs=yes 2321ee3138f1Smrg continue 2322ee3138f1Smrg ;; 2323ee3138f1Smrg esac # case $deplib 2324ee3138f1Smrg if test "$found" = yes || test -f "$lib"; then : 2325ee3138f1Smrg else 2326ee3138f1Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2327ee3138f1Smrg exit $EXIT_FAILURE 2328ee3138f1Smrg fi 2329ee3138f1Smrg 2330ee3138f1Smrg # Check to see that this really is a libtool archive. 2331ee3138f1Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2332ee3138f1Smrg else 2333ee3138f1Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2334ee3138f1Smrg exit $EXIT_FAILURE 2335ee3138f1Smrg fi 2336ee3138f1Smrg 2337ee3138f1Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2338ee3138f1Smrg test "X$ladir" = "X$lib" && ladir="." 2339ee3138f1Smrg 2340ee3138f1Smrg dlname= 2341ee3138f1Smrg dlopen= 2342ee3138f1Smrg dlpreopen= 2343ee3138f1Smrg libdir= 2344ee3138f1Smrg library_names= 2345ee3138f1Smrg old_library= 2346ee3138f1Smrg # If the library was installed with an old release of libtool, 2347ee3138f1Smrg # it will not redefine variables installed, or shouldnotlink 2348ee3138f1Smrg installed=yes 2349ee3138f1Smrg shouldnotlink=no 2350ee3138f1Smrg avoidtemprpath= 2351ee3138f1Smrg 2352ee3138f1Smrg 2353ee3138f1Smrg # Read the .la file 2354ee3138f1Smrg case $lib in 2355ee3138f1Smrg */* | *\\*) . $lib ;; 2356ee3138f1Smrg *) . ./$lib ;; 2357ee3138f1Smrg esac 2358ee3138f1Smrg 2359ee3138f1Smrg if test "$linkmode,$pass" = "lib,link" || 2360ee3138f1Smrg test "$linkmode,$pass" = "prog,scan" || 2361ee3138f1Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2362ee3138f1Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2363ee3138f1Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2364ee3138f1Smrg fi 2365ee3138f1Smrg 2366ee3138f1Smrg if test "$pass" = conv; then 2367ee3138f1Smrg # Only check for convenience libraries 2368ee3138f1Smrg deplibs="$lib $deplibs" 2369ee3138f1Smrg if test -z "$libdir"; then 2370ee3138f1Smrg if test -z "$old_library"; then 2371ee3138f1Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2372ee3138f1Smrg exit $EXIT_FAILURE 2373ee3138f1Smrg fi 2374ee3138f1Smrg # It is a libtool convenience library, so add in its objects. 2375ee3138f1Smrg convenience="$convenience $ladir/$objdir/$old_library" 2376ee3138f1Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2377ee3138f1Smrg tmp_libs= 2378ee3138f1Smrg for deplib in $dependency_libs; do 2379ee3138f1Smrg deplibs="$deplib $deplibs" 2380ee3138f1Smrg if test "X$duplicate_deps" = "Xyes" ; then 2381ee3138f1Smrg case "$tmp_libs " in 2382ee3138f1Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2383ee3138f1Smrg esac 2384ee3138f1Smrg fi 2385ee3138f1Smrg tmp_libs="$tmp_libs $deplib" 2386ee3138f1Smrg done 2387ee3138f1Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2388ee3138f1Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2389ee3138f1Smrg exit $EXIT_FAILURE 2390ee3138f1Smrg fi 2391ee3138f1Smrg continue 2392ee3138f1Smrg fi # $pass = conv 2393ee3138f1Smrg 2394ee3138f1Smrg 2395ee3138f1Smrg # Get the name of the library we link against. 2396ee3138f1Smrg linklib= 2397ee3138f1Smrg for l in $old_library $library_names; do 2398ee3138f1Smrg linklib="$l" 2399ee3138f1Smrg done 2400ee3138f1Smrg if test -z "$linklib"; then 2401ee3138f1Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2402ee3138f1Smrg exit $EXIT_FAILURE 2403ee3138f1Smrg fi 2404ee3138f1Smrg 2405ee3138f1Smrg # This library was specified with -dlopen. 2406ee3138f1Smrg if test "$pass" = dlopen; then 2407ee3138f1Smrg if test -z "$libdir"; then 2408ee3138f1Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2409ee3138f1Smrg exit $EXIT_FAILURE 2410ee3138f1Smrg fi 2411ee3138f1Smrg if test -z "$dlname" || 2412ee3138f1Smrg test "$dlopen_support" != yes || 2413ee3138f1Smrg test "$build_libtool_libs" = no; then 2414ee3138f1Smrg # If there is no dlname, no dlopen support or we're linking 2415ee3138f1Smrg # statically, we need to preload. We also need to preload any 2416ee3138f1Smrg # dependent libraries so libltdl's deplib preloader doesn't 2417ee3138f1Smrg # bomb out in the load deplibs phase. 2418ee3138f1Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 2419ee3138f1Smrg else 2420ee3138f1Smrg newdlfiles="$newdlfiles $lib" 2421ee3138f1Smrg fi 2422ee3138f1Smrg continue 2423ee3138f1Smrg fi # $pass = dlopen 2424ee3138f1Smrg 2425ee3138f1Smrg # We need an absolute path. 2426ee3138f1Smrg case $ladir in 2427ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2428ee3138f1Smrg *) 2429ee3138f1Smrg abs_ladir=`cd "$ladir" && pwd` 2430ee3138f1Smrg if test -z "$abs_ladir"; then 2431ee3138f1Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2432ee3138f1Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2433ee3138f1Smrg abs_ladir="$ladir" 2434ee3138f1Smrg fi 2435ee3138f1Smrg ;; 2436ee3138f1Smrg esac 2437ee3138f1Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2438ee3138f1Smrg 2439ee3138f1Smrg # Find the relevant object directory and library name. 2440ee3138f1Smrg if test "X$installed" = Xyes; then 2441ee3138f1Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2442ee3138f1Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2443ee3138f1Smrg dir="$ladir" 2444ee3138f1Smrg absdir="$abs_ladir" 2445ee3138f1Smrg libdir="$abs_ladir" 2446ee3138f1Smrg else 2447ee3138f1Smrg dir="$libdir" 2448ee3138f1Smrg absdir="$libdir" 2449ee3138f1Smrg fi 2450ee3138f1Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2451ee3138f1Smrg else 2452ee3138f1Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2453ee3138f1Smrg dir="$ladir" 2454ee3138f1Smrg absdir="$abs_ladir" 2455ee3138f1Smrg # Remove this search path later 2456ee3138f1Smrg notinst_path="$notinst_path $abs_ladir" 2457ee3138f1Smrg else 2458ee3138f1Smrg dir="$ladir/$objdir" 2459ee3138f1Smrg absdir="$abs_ladir/$objdir" 2460ee3138f1Smrg # Remove this search path later 2461ee3138f1Smrg notinst_path="$notinst_path $abs_ladir" 2462ee3138f1Smrg fi 2463ee3138f1Smrg fi # $installed = yes 2464ee3138f1Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2465ee3138f1Smrg 2466ee3138f1Smrg # This library was specified with -dlpreopen. 2467ee3138f1Smrg if test "$pass" = dlpreopen; then 2468ee3138f1Smrg if test -z "$libdir"; then 2469ee3138f1Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2470ee3138f1Smrg exit $EXIT_FAILURE 2471ee3138f1Smrg fi 2472ee3138f1Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2473ee3138f1Smrg # are required to link). 2474ee3138f1Smrg if test -n "$old_library"; then 2475ee3138f1Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 2476ee3138f1Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2477ee3138f1Smrg elif test -n "$dlname"; then 2478ee3138f1Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 2479ee3138f1Smrg else 2480ee3138f1Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 2481ee3138f1Smrg fi 2482ee3138f1Smrg fi # $pass = dlpreopen 2483ee3138f1Smrg 2484ee3138f1Smrg if test -z "$libdir"; then 2485ee3138f1Smrg # Link the convenience library 2486ee3138f1Smrg if test "$linkmode" = lib; then 2487ee3138f1Smrg deplibs="$dir/$old_library $deplibs" 2488ee3138f1Smrg elif test "$linkmode,$pass" = "prog,link"; then 2489ee3138f1Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 2490ee3138f1Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2491ee3138f1Smrg else 2492ee3138f1Smrg deplibs="$lib $deplibs" # used for prog,scan pass 2493ee3138f1Smrg fi 2494ee3138f1Smrg continue 2495ee3138f1Smrg fi 2496ee3138f1Smrg 2497ee3138f1Smrg 2498ee3138f1Smrg if test "$linkmode" = prog && test "$pass" != link; then 2499ee3138f1Smrg newlib_search_path="$newlib_search_path $ladir" 2500ee3138f1Smrg deplibs="$lib $deplibs" 2501ee3138f1Smrg 2502ee3138f1Smrg linkalldeplibs=no 2503ee3138f1Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2504ee3138f1Smrg test "$build_libtool_libs" = no; then 2505ee3138f1Smrg linkalldeplibs=yes 2506ee3138f1Smrg fi 2507ee3138f1Smrg 2508ee3138f1Smrg tmp_libs= 2509ee3138f1Smrg for deplib in $dependency_libs; do 2510ee3138f1Smrg case $deplib in 2511ee3138f1Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2512ee3138f1Smrg esac 2513ee3138f1Smrg # Need to link against all dependency_libs? 2514ee3138f1Smrg if test "$linkalldeplibs" = yes; then 2515ee3138f1Smrg deplibs="$deplib $deplibs" 2516ee3138f1Smrg else 2517ee3138f1Smrg # Need to hardcode shared library paths 2518ee3138f1Smrg # or/and link against static libraries 2519ee3138f1Smrg newdependency_libs="$deplib $newdependency_libs" 2520ee3138f1Smrg fi 2521ee3138f1Smrg if test "X$duplicate_deps" = "Xyes" ; then 2522ee3138f1Smrg case "$tmp_libs " in 2523ee3138f1Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2524ee3138f1Smrg esac 2525ee3138f1Smrg fi 2526ee3138f1Smrg tmp_libs="$tmp_libs $deplib" 2527ee3138f1Smrg done # for deplib 2528ee3138f1Smrg continue 2529ee3138f1Smrg fi # $linkmode = prog... 2530ee3138f1Smrg 2531ee3138f1Smrg if test "$linkmode,$pass" = "prog,link"; then 2532ee3138f1Smrg if test -n "$library_names" && 2533ee3138f1Smrg { { test "$prefer_static_libs" = no || 2534ee3138f1Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2535ee3138f1Smrg test -z "$old_library"; }; then 2536ee3138f1Smrg # We need to hardcode the library path 2537ee3138f1Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2538ee3138f1Smrg # Make sure the rpath contains only unique directories. 2539ee3138f1Smrg case "$temp_rpath " in 2540ee3138f1Smrg *" $dir "*) ;; 2541ee3138f1Smrg *" $absdir "*) ;; 2542ee3138f1Smrg *) temp_rpath="$temp_rpath $absdir" ;; 2543ee3138f1Smrg esac 2544ee3138f1Smrg fi 2545ee3138f1Smrg 2546ee3138f1Smrg # Hardcode the library path. 2547ee3138f1Smrg # Skip directories that are in the system default run-time 2548ee3138f1Smrg # search path. 2549ee3138f1Smrg case " $sys_lib_dlsearch_path " in 2550ee3138f1Smrg *" $absdir "*) ;; 2551ee3138f1Smrg *) 2552ee3138f1Smrg case "$compile_rpath " in 2553ee3138f1Smrg *" $absdir "*) ;; 2554ee3138f1Smrg *) compile_rpath="$compile_rpath $absdir" 2555ee3138f1Smrg esac 2556ee3138f1Smrg ;; 2557ee3138f1Smrg esac 2558ee3138f1Smrg case " $sys_lib_dlsearch_path " in 2559ee3138f1Smrg *" $libdir "*) ;; 2560ee3138f1Smrg *) 2561ee3138f1Smrg case "$finalize_rpath " in 2562ee3138f1Smrg *" $libdir "*) ;; 2563ee3138f1Smrg *) finalize_rpath="$finalize_rpath $libdir" 2564ee3138f1Smrg esac 2565ee3138f1Smrg ;; 2566ee3138f1Smrg esac 2567ee3138f1Smrg fi # $linkmode,$pass = prog,link... 2568ee3138f1Smrg 2569ee3138f1Smrg if test "$alldeplibs" = yes && 2570ee3138f1Smrg { test "$deplibs_check_method" = pass_all || 2571ee3138f1Smrg { test "$build_libtool_libs" = yes && 2572ee3138f1Smrg test -n "$library_names"; }; }; then 2573ee3138f1Smrg # We only need to search for static libraries 2574ee3138f1Smrg continue 2575ee3138f1Smrg fi 2576ee3138f1Smrg fi 2577ee3138f1Smrg 2578ee3138f1Smrg link_static=no # Whether the deplib will be linked statically 2579ee3138f1Smrg use_static_libs=$prefer_static_libs 2580ee3138f1Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2581ee3138f1Smrg use_static_libs=no 2582ee3138f1Smrg fi 2583ee3138f1Smrg if test -n "$library_names" && 2584ee3138f1Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2585ee3138f1Smrg if test "$installed" = no; then 2586ee3138f1Smrg notinst_deplibs="$notinst_deplibs $lib" 2587ee3138f1Smrg need_relink=yes 2588ee3138f1Smrg fi 2589ee3138f1Smrg # This is a shared library 2590ee3138f1Smrg 2591ee3138f1Smrg # Warn about portability, can't link against -module's on 2592ee3138f1Smrg # some systems (darwin) 2593ee3138f1Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2594ee3138f1Smrg $echo 2595ee3138f1Smrg if test "$linkmode" = prog; then 2596ee3138f1Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 2597ee3138f1Smrg else 2598ee3138f1Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2599ee3138f1Smrg fi 2600ee3138f1Smrg $echo "*** $linklib is not portable!" 2601ee3138f1Smrg fi 2602ee3138f1Smrg if test "$linkmode" = lib && 2603ee3138f1Smrg test "$hardcode_into_libs" = yes; then 2604ee3138f1Smrg # Hardcode the library path. 2605ee3138f1Smrg # Skip directories that are in the system default run-time 2606ee3138f1Smrg # search path. 2607ee3138f1Smrg case " $sys_lib_dlsearch_path " in 2608ee3138f1Smrg *" $absdir "*) ;; 2609ee3138f1Smrg *) 2610ee3138f1Smrg case "$compile_rpath " in 2611ee3138f1Smrg *" $absdir "*) ;; 2612ee3138f1Smrg *) compile_rpath="$compile_rpath $absdir" 2613ee3138f1Smrg esac 2614ee3138f1Smrg ;; 2615ee3138f1Smrg esac 2616ee3138f1Smrg case " $sys_lib_dlsearch_path " in 2617ee3138f1Smrg *" $libdir "*) ;; 2618ee3138f1Smrg *) 2619ee3138f1Smrg case "$finalize_rpath " in 2620ee3138f1Smrg *" $libdir "*) ;; 2621ee3138f1Smrg *) finalize_rpath="$finalize_rpath $libdir" 2622ee3138f1Smrg esac 2623ee3138f1Smrg ;; 2624ee3138f1Smrg esac 2625ee3138f1Smrg fi 2626ee3138f1Smrg 2627ee3138f1Smrg if test -n "$old_archive_from_expsyms_cmds"; then 2628ee3138f1Smrg # figure out the soname 2629ee3138f1Smrg set dummy $library_names 2630ee3138f1Smrg realname="$2" 2631ee3138f1Smrg shift; shift 2632ee3138f1Smrg libname=`eval \\$echo \"$libname_spec\"` 2633ee3138f1Smrg # use dlname if we got it. it's perfectly good, no? 2634ee3138f1Smrg if test -n "$dlname"; then 2635ee3138f1Smrg soname="$dlname" 2636ee3138f1Smrg elif test -n "$soname_spec"; then 2637ee3138f1Smrg # bleh windows 2638ee3138f1Smrg case $host in 2639ee3138f1Smrg *cygwin* | mingw*) 2640ee3138f1Smrg major=`expr $current - $age` 2641ee3138f1Smrg versuffix="-$major" 2642ee3138f1Smrg ;; 2643ee3138f1Smrg esac 2644ee3138f1Smrg eval soname=\"$soname_spec\" 2645ee3138f1Smrg else 2646ee3138f1Smrg soname="$realname" 2647ee3138f1Smrg fi 2648ee3138f1Smrg 2649ee3138f1Smrg # Make a new name for the extract_expsyms_cmds to use 2650ee3138f1Smrg soroot="$soname" 2651ee3138f1Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2652ee3138f1Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2653ee3138f1Smrg 2654ee3138f1Smrg # If the library has no export list, then create one now 2655ee3138f1Smrg if test -f "$output_objdir/$soname-def"; then : 2656ee3138f1Smrg else 2657ee3138f1Smrg $show "extracting exported symbol list from \`$soname'" 2658ee3138f1Smrg save_ifs="$IFS"; IFS='~' 2659ee3138f1Smrg cmds=$extract_expsyms_cmds 2660ee3138f1Smrg for cmd in $cmds; do 2661ee3138f1Smrg IFS="$save_ifs" 2662ee3138f1Smrg eval cmd=\"$cmd\" 2663ee3138f1Smrg $show "$cmd" 2664ee3138f1Smrg $run eval "$cmd" || exit $? 2665ee3138f1Smrg done 2666ee3138f1Smrg IFS="$save_ifs" 2667ee3138f1Smrg fi 2668ee3138f1Smrg 2669ee3138f1Smrg # Create $newlib 2670ee3138f1Smrg if test -f "$output_objdir/$newlib"; then :; else 2671ee3138f1Smrg $show "generating import library for \`$soname'" 2672ee3138f1Smrg save_ifs="$IFS"; IFS='~' 2673ee3138f1Smrg cmds=$old_archive_from_expsyms_cmds 2674ee3138f1Smrg for cmd in $cmds; do 2675ee3138f1Smrg IFS="$save_ifs" 2676ee3138f1Smrg eval cmd=\"$cmd\" 2677ee3138f1Smrg $show "$cmd" 2678ee3138f1Smrg $run eval "$cmd" || exit $? 2679ee3138f1Smrg done 2680ee3138f1Smrg IFS="$save_ifs" 2681ee3138f1Smrg fi 2682ee3138f1Smrg # make sure the library variables are pointing to the new library 2683ee3138f1Smrg dir=$output_objdir 2684ee3138f1Smrg linklib=$newlib 2685ee3138f1Smrg fi # test -n "$old_archive_from_expsyms_cmds" 2686ee3138f1Smrg 2687ee3138f1Smrg if test "$linkmode" = prog || test "$mode" != relink; then 2688ee3138f1Smrg add_shlibpath= 2689ee3138f1Smrg add_dir= 2690ee3138f1Smrg add= 2691ee3138f1Smrg lib_linked=yes 2692ee3138f1Smrg case $hardcode_action in 2693ee3138f1Smrg immediate | unsupported) 2694ee3138f1Smrg if test "$hardcode_direct" = no; then 2695ee3138f1Smrg add="$dir/$linklib" 2696ee3138f1Smrg case $host in 2697ee3138f1Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2698ee3138f1Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2699ee3138f1Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2700ee3138f1Smrg *-*-unixware7*) add_dir="-L$dir" ;; 2701ee3138f1Smrg *-*-darwin* ) 2702ee3138f1Smrg # if the lib is a module then we can not link against 2703ee3138f1Smrg # it, someone is ignoring the new warnings I added 2704ee3138f1Smrg if /usr/bin/file -L $add 2> /dev/null | 2705ee3138f1Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 2706ee3138f1Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 2707ee3138f1Smrg if test -z "$old_library" ; then 2708ee3138f1Smrg $echo 2709ee3138f1Smrg $echo "** And there doesn't seem to be a static archive available" 2710ee3138f1Smrg $echo "** The link will probably fail, sorry" 2711ee3138f1Smrg else 2712ee3138f1Smrg add="$dir/$old_library" 2713ee3138f1Smrg fi 2714ee3138f1Smrg fi 2715ee3138f1Smrg esac 2716ee3138f1Smrg elif test "$hardcode_minus_L" = no; then 2717ee3138f1Smrg case $host in 2718ee3138f1Smrg *-*-sunos*) add_shlibpath="$dir" ;; 2719ee3138f1Smrg esac 2720ee3138f1Smrg add_dir="-L$dir" 2721ee3138f1Smrg add="-l$name" 2722ee3138f1Smrg elif test "$hardcode_shlibpath_var" = no; then 2723ee3138f1Smrg add_shlibpath="$dir" 2724ee3138f1Smrg add="-l$name" 2725ee3138f1Smrg else 2726ee3138f1Smrg lib_linked=no 2727ee3138f1Smrg fi 2728ee3138f1Smrg ;; 2729ee3138f1Smrg relink) 2730ee3138f1Smrg if test "$hardcode_direct" = yes; then 2731ee3138f1Smrg add="$dir/$linklib" 2732ee3138f1Smrg elif test "$hardcode_minus_L" = yes; then 2733ee3138f1Smrg add_dir="-L$dir" 2734ee3138f1Smrg # Try looking first in the location we're being installed to. 2735ee3138f1Smrg if test -n "$inst_prefix_dir"; then 2736ee3138f1Smrg case $libdir in 2737ee3138f1Smrg [\\/]*) 2738ee3138f1Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2739ee3138f1Smrg ;; 2740ee3138f1Smrg esac 2741ee3138f1Smrg fi 2742ee3138f1Smrg add="-l$name" 2743ee3138f1Smrg elif test "$hardcode_shlibpath_var" = yes; then 2744ee3138f1Smrg add_shlibpath="$dir" 2745ee3138f1Smrg add="-l$name" 2746ee3138f1Smrg else 2747ee3138f1Smrg lib_linked=no 2748ee3138f1Smrg fi 2749ee3138f1Smrg ;; 2750ee3138f1Smrg *) lib_linked=no ;; 2751ee3138f1Smrg esac 2752ee3138f1Smrg 2753ee3138f1Smrg if test "$lib_linked" != yes; then 2754ee3138f1Smrg $echo "$modename: configuration error: unsupported hardcode properties" 2755ee3138f1Smrg exit $EXIT_FAILURE 2756ee3138f1Smrg fi 2757ee3138f1Smrg 2758ee3138f1Smrg if test -n "$add_shlibpath"; then 2759ee3138f1Smrg case :$compile_shlibpath: in 2760ee3138f1Smrg *":$add_shlibpath:"*) ;; 2761ee3138f1Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2762ee3138f1Smrg esac 2763ee3138f1Smrg fi 2764ee3138f1Smrg if test "$linkmode" = prog; then 2765ee3138f1Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2766ee3138f1Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2767ee3138f1Smrg else 2768ee3138f1Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2769ee3138f1Smrg test -n "$add" && deplibs="$add $deplibs" 2770ee3138f1Smrg if test "$hardcode_direct" != yes && \ 2771ee3138f1Smrg test "$hardcode_minus_L" != yes && \ 2772ee3138f1Smrg test "$hardcode_shlibpath_var" = yes; then 2773ee3138f1Smrg case :$finalize_shlibpath: in 2774ee3138f1Smrg *":$libdir:"*) ;; 2775ee3138f1Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2776ee3138f1Smrg esac 2777ee3138f1Smrg fi 2778ee3138f1Smrg fi 2779ee3138f1Smrg fi 2780ee3138f1Smrg 2781ee3138f1Smrg if test "$linkmode" = prog || test "$mode" = relink; then 2782ee3138f1Smrg add_shlibpath= 2783ee3138f1Smrg add_dir= 2784ee3138f1Smrg add= 2785ee3138f1Smrg # Finalize command for both is simple: just hardcode it. 2786ee3138f1Smrg if test "$hardcode_direct" = yes; then 2787ee3138f1Smrg add="$libdir/$linklib" 2788ee3138f1Smrg elif test "$hardcode_minus_L" = yes; then 2789ee3138f1Smrg add_dir="-L$libdir" 2790ee3138f1Smrg add="-l$name" 2791ee3138f1Smrg elif test "$hardcode_shlibpath_var" = yes; then 2792ee3138f1Smrg case :$finalize_shlibpath: in 2793ee3138f1Smrg *":$libdir:"*) ;; 2794ee3138f1Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2795ee3138f1Smrg esac 2796ee3138f1Smrg add="-l$name" 2797ee3138f1Smrg elif test "$hardcode_automatic" = yes; then 2798ee3138f1Smrg if test -n "$inst_prefix_dir" && 2799ee3138f1Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2800ee3138f1Smrg add="$inst_prefix_dir$libdir/$linklib" 2801ee3138f1Smrg else 2802ee3138f1Smrg add="$libdir/$linklib" 2803ee3138f1Smrg fi 2804ee3138f1Smrg else 2805ee3138f1Smrg # We cannot seem to hardcode it, guess we'll fake it. 2806ee3138f1Smrg add_dir="-L$libdir" 2807ee3138f1Smrg # Try looking first in the location we're being installed to. 2808ee3138f1Smrg if test -n "$inst_prefix_dir"; then 2809ee3138f1Smrg case $libdir in 2810ee3138f1Smrg [\\/]*) 2811ee3138f1Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2812ee3138f1Smrg ;; 2813ee3138f1Smrg esac 2814ee3138f1Smrg fi 2815ee3138f1Smrg add="-l$name" 2816ee3138f1Smrg fi 2817ee3138f1Smrg 2818ee3138f1Smrg if test "$linkmode" = prog; then 2819ee3138f1Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2820ee3138f1Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2821ee3138f1Smrg else 2822ee3138f1Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2823ee3138f1Smrg test -n "$add" && deplibs="$add $deplibs" 2824ee3138f1Smrg fi 2825ee3138f1Smrg fi 2826ee3138f1Smrg elif test "$linkmode" = prog; then 2827ee3138f1Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2828ee3138f1Smrg # is not unsupported. This is valid on all known static and 2829ee3138f1Smrg # shared platforms. 2830ee3138f1Smrg if test "$hardcode_direct" != unsupported; then 2831ee3138f1Smrg test -n "$old_library" && linklib="$old_library" 2832ee3138f1Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 2833ee3138f1Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2834ee3138f1Smrg else 2835ee3138f1Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2836ee3138f1Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2837ee3138f1Smrg fi 2838ee3138f1Smrg elif test "$build_libtool_libs" = yes; then 2839ee3138f1Smrg # Not a shared library 2840ee3138f1Smrg if test "$deplibs_check_method" != pass_all; then 2841ee3138f1Smrg # We're trying link a shared library against a static one 2842ee3138f1Smrg # but the system doesn't support it. 2843ee3138f1Smrg 2844ee3138f1Smrg # Just print a warning and add the library to dependency_libs so 2845ee3138f1Smrg # that the program can be linked against the static library. 2846ee3138f1Smrg $echo 2847ee3138f1Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 2848ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 2849ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 2850ee3138f1Smrg $echo "*** shared version of the library, which you do not appear to have." 2851ee3138f1Smrg if test "$module" = yes; then 2852ee3138f1Smrg $echo "*** But as you try to build a module library, libtool will still create " 2853ee3138f1Smrg $echo "*** a static module, that should work as long as the dlopening application" 2854ee3138f1Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2855ee3138f1Smrg if test -z "$global_symbol_pipe"; then 2856ee3138f1Smrg $echo 2857ee3138f1Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 2858ee3138f1Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2859ee3138f1Smrg $echo "*** not find such a program. So, this module is probably useless." 2860ee3138f1Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2861ee3138f1Smrg fi 2862ee3138f1Smrg if test "$build_old_libs" = no; then 2863ee3138f1Smrg build_libtool_libs=module 2864ee3138f1Smrg build_old_libs=yes 2865ee3138f1Smrg else 2866ee3138f1Smrg build_libtool_libs=no 2867ee3138f1Smrg fi 2868ee3138f1Smrg fi 2869ee3138f1Smrg else 2870ee3138f1Smrg deplibs="$dir/$old_library $deplibs" 2871ee3138f1Smrg link_static=yes 2872ee3138f1Smrg fi 2873ee3138f1Smrg fi # link shared/static library? 2874ee3138f1Smrg 2875ee3138f1Smrg if test "$linkmode" = lib; then 2876ee3138f1Smrg if test -n "$dependency_libs" && 2877ee3138f1Smrg { test "$hardcode_into_libs" != yes || 2878ee3138f1Smrg test "$build_old_libs" = yes || 2879ee3138f1Smrg test "$link_static" = yes; }; then 2880ee3138f1Smrg # Extract -R from dependency_libs 2881ee3138f1Smrg temp_deplibs= 2882ee3138f1Smrg for libdir in $dependency_libs; do 2883ee3138f1Smrg case $libdir in 2884ee3138f1Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2885ee3138f1Smrg case " $xrpath " in 2886ee3138f1Smrg *" $temp_xrpath "*) ;; 2887ee3138f1Smrg *) xrpath="$xrpath $temp_xrpath";; 2888ee3138f1Smrg esac;; 2889ee3138f1Smrg *) temp_deplibs="$temp_deplibs $libdir";; 2890ee3138f1Smrg esac 2891ee3138f1Smrg done 2892ee3138f1Smrg dependency_libs="$temp_deplibs" 2893ee3138f1Smrg fi 2894ee3138f1Smrg 2895ee3138f1Smrg newlib_search_path="$newlib_search_path $absdir" 2896ee3138f1Smrg # Link against this library 2897ee3138f1Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2898ee3138f1Smrg # ... and its dependency_libs 2899ee3138f1Smrg tmp_libs= 2900ee3138f1Smrg for deplib in $dependency_libs; do 2901ee3138f1Smrg newdependency_libs="$deplib $newdependency_libs" 2902ee3138f1Smrg if test "X$duplicate_deps" = "Xyes" ; then 2903ee3138f1Smrg case "$tmp_libs " in 2904ee3138f1Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2905ee3138f1Smrg esac 2906ee3138f1Smrg fi 2907ee3138f1Smrg tmp_libs="$tmp_libs $deplib" 2908ee3138f1Smrg done 2909ee3138f1Smrg 2910ee3138f1Smrg if test "$link_all_deplibs" != no; then 2911ee3138f1Smrg # Add the search paths of all dependency libraries 2912ee3138f1Smrg for deplib in $dependency_libs; do 2913ee3138f1Smrg case $deplib in 2914ee3138f1Smrg -L*) path="$deplib" ;; 2915ee3138f1Smrg *.la) 2916ee3138f1Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2917ee3138f1Smrg test "X$dir" = "X$deplib" && dir="." 2918ee3138f1Smrg # We need an absolute path. 2919ee3138f1Smrg case $dir in 2920ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2921ee3138f1Smrg *) 2922ee3138f1Smrg absdir=`cd "$dir" && pwd` 2923ee3138f1Smrg if test -z "$absdir"; then 2924ee3138f1Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2925ee3138f1Smrg absdir="$dir" 2926ee3138f1Smrg fi 2927ee3138f1Smrg ;; 2928ee3138f1Smrg esac 2929ee3138f1Smrg if grep "^installed=no" $deplib > /dev/null; then 2930ee3138f1Smrg path="$absdir/$objdir" 2931ee3138f1Smrg else 2932ee3138f1Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2933ee3138f1Smrg if test -z "$libdir"; then 2934ee3138f1Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2935ee3138f1Smrg exit $EXIT_FAILURE 2936ee3138f1Smrg fi 2937ee3138f1Smrg if test "$absdir" != "$libdir"; then 2938ee3138f1Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2939ee3138f1Smrg fi 2940ee3138f1Smrg path="$absdir" 2941ee3138f1Smrg fi 2942ee3138f1Smrg depdepl= 2943ee3138f1Smrg case $host in 2944ee3138f1Smrg *-*-darwin*) 2945ee3138f1Smrg # we do not want to link against static libs, 2946ee3138f1Smrg # but need to link against shared 2947ee3138f1Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2948ee3138f1Smrg if test -n "$deplibrary_names" ; then 2949ee3138f1Smrg for tmp in $deplibrary_names ; do 2950ee3138f1Smrg depdepl=$tmp 2951ee3138f1Smrg done 2952ee3138f1Smrg if test -f "$path/$depdepl" ; then 2953ee3138f1Smrg depdepl="$path/$depdepl" 2954ee3138f1Smrg fi 2955ee3138f1Smrg # do not add paths which are already there 2956ee3138f1Smrg case " $newlib_search_path " in 2957ee3138f1Smrg *" $path "*) ;; 2958ee3138f1Smrg *) newlib_search_path="$newlib_search_path $path";; 2959ee3138f1Smrg esac 2960ee3138f1Smrg fi 2961ee3138f1Smrg path="" 2962ee3138f1Smrg ;; 2963ee3138f1Smrg *) 2964ee3138f1Smrg path="-L$path" 2965ee3138f1Smrg ;; 2966ee3138f1Smrg esac 2967ee3138f1Smrg ;; 2968ee3138f1Smrg -l*) 2969ee3138f1Smrg case $host in 2970ee3138f1Smrg *-*-darwin*) 2971ee3138f1Smrg # Again, we only want to link against shared libraries 2972ee3138f1Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2973ee3138f1Smrg for tmp in $newlib_search_path ; do 2974ee3138f1Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2975ee3138f1Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 2976ee3138f1Smrg break 2977ee3138f1Smrg fi 2978ee3138f1Smrg done 2979ee3138f1Smrg path="" 2980ee3138f1Smrg ;; 2981ee3138f1Smrg *) continue ;; 2982ee3138f1Smrg esac 2983ee3138f1Smrg ;; 2984ee3138f1Smrg *) continue ;; 2985ee3138f1Smrg esac 2986ee3138f1Smrg case " $deplibs " in 2987ee3138f1Smrg *" $path "*) ;; 2988ee3138f1Smrg *) deplibs="$path $deplibs" ;; 2989ee3138f1Smrg esac 2990ee3138f1Smrg case " $deplibs " in 2991ee3138f1Smrg *" $depdepl "*) ;; 2992ee3138f1Smrg *) deplibs="$depdepl $deplibs" ;; 2993ee3138f1Smrg esac 2994ee3138f1Smrg done 2995ee3138f1Smrg fi # link_all_deplibs != no 2996ee3138f1Smrg fi # linkmode = lib 2997ee3138f1Smrg done # for deplib in $libs 2998ee3138f1Smrg dependency_libs="$newdependency_libs" 2999ee3138f1Smrg if test "$pass" = dlpreopen; then 3000ee3138f1Smrg # Link the dlpreopened libraries before other libraries 3001ee3138f1Smrg for deplib in $save_deplibs; do 3002ee3138f1Smrg deplibs="$deplib $deplibs" 3003ee3138f1Smrg done 3004ee3138f1Smrg fi 3005ee3138f1Smrg if test "$pass" != dlopen; then 3006ee3138f1Smrg if test "$pass" != conv; then 3007ee3138f1Smrg # Make sure lib_search_path contains only unique directories. 3008ee3138f1Smrg lib_search_path= 3009ee3138f1Smrg for dir in $newlib_search_path; do 3010ee3138f1Smrg case "$lib_search_path " in 3011ee3138f1Smrg *" $dir "*) ;; 3012ee3138f1Smrg *) lib_search_path="$lib_search_path $dir" ;; 3013ee3138f1Smrg esac 3014ee3138f1Smrg done 3015ee3138f1Smrg newlib_search_path= 3016ee3138f1Smrg fi 3017ee3138f1Smrg 3018ee3138f1Smrg if test "$linkmode,$pass" != "prog,link"; then 3019ee3138f1Smrg vars="deplibs" 3020ee3138f1Smrg else 3021ee3138f1Smrg vars="compile_deplibs finalize_deplibs" 3022ee3138f1Smrg fi 3023ee3138f1Smrg for var in $vars dependency_libs; do 3024ee3138f1Smrg # Add libraries to $var in reverse order 3025ee3138f1Smrg eval tmp_libs=\"\$$var\" 3026ee3138f1Smrg new_libs= 3027ee3138f1Smrg for deplib in $tmp_libs; do 3028ee3138f1Smrg # FIXME: Pedantically, this is the right thing to do, so 3029ee3138f1Smrg # that some nasty dependency loop isn't accidentally 3030ee3138f1Smrg # broken: 3031ee3138f1Smrg #new_libs="$deplib $new_libs" 3032ee3138f1Smrg # Pragmatically, this seems to cause very few problems in 3033ee3138f1Smrg # practice: 3034ee3138f1Smrg case $deplib in 3035ee3138f1Smrg -L*) new_libs="$deplib $new_libs" ;; 3036ee3138f1Smrg -R*) ;; 3037ee3138f1Smrg *) 3038ee3138f1Smrg # And here is the reason: when a library appears more 3039ee3138f1Smrg # than once as an explicit dependence of a library, or 3040ee3138f1Smrg # is implicitly linked in more than once by the 3041ee3138f1Smrg # compiler, it is considered special, and multiple 3042ee3138f1Smrg # occurrences thereof are not removed. Compare this 3043ee3138f1Smrg # with having the same library being listed as a 3044ee3138f1Smrg # dependency of multiple other libraries: in this case, 3045ee3138f1Smrg # we know (pedantically, we assume) the library does not 3046ee3138f1Smrg # need to be listed more than once, so we keep only the 3047ee3138f1Smrg # last copy. This is not always right, but it is rare 3048ee3138f1Smrg # enough that we require users that really mean to play 3049ee3138f1Smrg # such unportable linking tricks to link the library 3050ee3138f1Smrg # using -Wl,-lname, so that libtool does not consider it 3051ee3138f1Smrg # for duplicate removal. 3052ee3138f1Smrg case " $specialdeplibs " in 3053ee3138f1Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3054ee3138f1Smrg *) 3055ee3138f1Smrg case " $new_libs " in 3056ee3138f1Smrg *" $deplib "*) ;; 3057ee3138f1Smrg *) new_libs="$deplib $new_libs" ;; 3058ee3138f1Smrg esac 3059ee3138f1Smrg ;; 3060ee3138f1Smrg esac 3061ee3138f1Smrg ;; 3062ee3138f1Smrg esac 3063ee3138f1Smrg done 3064ee3138f1Smrg tmp_libs= 3065ee3138f1Smrg for deplib in $new_libs; do 3066ee3138f1Smrg case $deplib in 3067ee3138f1Smrg -L*) 3068ee3138f1Smrg case " $tmp_libs " in 3069ee3138f1Smrg *" $deplib "*) ;; 3070ee3138f1Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3071ee3138f1Smrg esac 3072ee3138f1Smrg ;; 3073ee3138f1Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3074ee3138f1Smrg esac 3075ee3138f1Smrg done 3076ee3138f1Smrg eval $var=\"$tmp_libs\" 3077ee3138f1Smrg done # for var 3078ee3138f1Smrg fi 3079ee3138f1Smrg # Last step: remove runtime libs from dependency_libs 3080ee3138f1Smrg # (they stay in deplibs) 3081ee3138f1Smrg tmp_libs= 3082ee3138f1Smrg for i in $dependency_libs ; do 3083ee3138f1Smrg case " $predeps $postdeps $compiler_lib_search_path " in 3084ee3138f1Smrg *" $i "*) 3085ee3138f1Smrg i="" 3086ee3138f1Smrg ;; 3087ee3138f1Smrg esac 3088ee3138f1Smrg if test -n "$i" ; then 3089ee3138f1Smrg tmp_libs="$tmp_libs $i" 3090ee3138f1Smrg fi 3091ee3138f1Smrg done 3092ee3138f1Smrg dependency_libs=$tmp_libs 3093ee3138f1Smrg done # for pass 3094ee3138f1Smrg if test "$linkmode" = prog; then 3095ee3138f1Smrg dlfiles="$newdlfiles" 3096ee3138f1Smrg dlprefiles="$newdlprefiles" 3097ee3138f1Smrg fi 3098ee3138f1Smrg 3099ee3138f1Smrg case $linkmode in 3100ee3138f1Smrg oldlib) 3101ee3138f1Smrg if test -n "$deplibs"; then 3102ee3138f1Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 3103ee3138f1Smrg fi 3104ee3138f1Smrg 3105ee3138f1Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3106ee3138f1Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3107ee3138f1Smrg fi 3108ee3138f1Smrg 3109ee3138f1Smrg if test -n "$rpath"; then 3110ee3138f1Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3111ee3138f1Smrg fi 3112ee3138f1Smrg 3113ee3138f1Smrg if test -n "$xrpath"; then 3114ee3138f1Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3115ee3138f1Smrg fi 3116ee3138f1Smrg 3117ee3138f1Smrg if test -n "$vinfo"; then 3118ee3138f1Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3119ee3138f1Smrg fi 3120ee3138f1Smrg 3121ee3138f1Smrg if test -n "$release"; then 3122ee3138f1Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3123ee3138f1Smrg fi 3124ee3138f1Smrg 3125ee3138f1Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3126ee3138f1Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3127ee3138f1Smrg fi 3128ee3138f1Smrg 3129ee3138f1Smrg # Now set the variables for building old libraries. 3130ee3138f1Smrg build_libtool_libs=no 3131ee3138f1Smrg oldlibs="$output" 3132ee3138f1Smrg objs="$objs$old_deplibs" 3133ee3138f1Smrg ;; 3134ee3138f1Smrg 3135ee3138f1Smrg lib) 3136ee3138f1Smrg # Make sure we only generate libraries of the form `libNAME.la'. 3137ee3138f1Smrg case $outputname in 3138ee3138f1Smrg lib*) 3139ee3138f1Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3140ee3138f1Smrg eval shared_ext=\"$shrext_cmds\" 3141ee3138f1Smrg eval libname=\"$libname_spec\" 3142ee3138f1Smrg ;; 3143ee3138f1Smrg *) 3144ee3138f1Smrg if test "$module" = no; then 3145ee3138f1Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3146ee3138f1Smrg $echo "$help" 1>&2 3147ee3138f1Smrg exit $EXIT_FAILURE 3148ee3138f1Smrg fi 3149ee3138f1Smrg if test "$need_lib_prefix" != no; then 3150ee3138f1Smrg # Add the "lib" prefix for modules if required 3151ee3138f1Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3152ee3138f1Smrg eval shared_ext=\"$shrext_cmds\" 3153ee3138f1Smrg eval libname=\"$libname_spec\" 3154ee3138f1Smrg else 3155ee3138f1Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3156ee3138f1Smrg fi 3157ee3138f1Smrg ;; 3158ee3138f1Smrg esac 3159ee3138f1Smrg 3160ee3138f1Smrg if test -n "$objs"; then 3161ee3138f1Smrg if test "$deplibs_check_method" != pass_all; then 3162ee3138f1Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3163ee3138f1Smrg exit $EXIT_FAILURE 3164ee3138f1Smrg else 3165ee3138f1Smrg $echo 3166ee3138f1Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3167ee3138f1Smrg $echo "*** objects $objs is not portable!" 3168ee3138f1Smrg libobjs="$libobjs $objs" 3169ee3138f1Smrg fi 3170ee3138f1Smrg fi 3171ee3138f1Smrg 3172ee3138f1Smrg if test "$dlself" != no; then 3173ee3138f1Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3174ee3138f1Smrg fi 3175ee3138f1Smrg 3176ee3138f1Smrg set dummy $rpath 3177ee3138f1Smrg if test "$#" -gt 2; then 3178ee3138f1Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3179ee3138f1Smrg fi 3180ee3138f1Smrg install_libdir="$2" 3181ee3138f1Smrg 3182ee3138f1Smrg oldlibs= 3183ee3138f1Smrg if test -z "$rpath"; then 3184ee3138f1Smrg if test "$build_libtool_libs" = yes; then 3185ee3138f1Smrg # Building a libtool convenience library. 3186ee3138f1Smrg # Some compilers have problems with a `.al' extension so 3187ee3138f1Smrg # convenience libraries should have the same extension an 3188ee3138f1Smrg # archive normally would. 3189ee3138f1Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3190ee3138f1Smrg build_libtool_libs=convenience 3191ee3138f1Smrg build_old_libs=yes 3192ee3138f1Smrg fi 3193ee3138f1Smrg 3194ee3138f1Smrg if test -n "$vinfo"; then 3195ee3138f1Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3196ee3138f1Smrg fi 3197ee3138f1Smrg 3198ee3138f1Smrg if test -n "$release"; then 3199ee3138f1Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3200ee3138f1Smrg fi 3201ee3138f1Smrg else 3202ee3138f1Smrg 3203ee3138f1Smrg # Parse the version information argument. 3204ee3138f1Smrg save_ifs="$IFS"; IFS=':' 3205ee3138f1Smrg set dummy $vinfo 0 0 0 3206ee3138f1Smrg IFS="$save_ifs" 3207ee3138f1Smrg 3208ee3138f1Smrg if test -n "$8"; then 3209ee3138f1Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3210ee3138f1Smrg $echo "$help" 1>&2 3211ee3138f1Smrg exit $EXIT_FAILURE 3212ee3138f1Smrg fi 3213ee3138f1Smrg 3214ee3138f1Smrg # convert absolute version numbers to libtool ages 3215ee3138f1Smrg # this retains compatibility with .la files and attempts 3216ee3138f1Smrg # to make the code below a bit more comprehensible 3217ee3138f1Smrg 3218ee3138f1Smrg case $vinfo_number in 3219ee3138f1Smrg yes) 3220ee3138f1Smrg number_major="$2" 3221ee3138f1Smrg number_minor="$3" 3222ee3138f1Smrg number_revision="$4" 3223ee3138f1Smrg # 3224ee3138f1Smrg # There are really only two kinds -- those that 3225ee3138f1Smrg # use the current revision as the major version 3226ee3138f1Smrg # and those that subtract age and use age as 3227ee3138f1Smrg # a minor version. But, then there is irix 3228ee3138f1Smrg # which has an extra 1 added just for fun 3229ee3138f1Smrg # 3230ee3138f1Smrg case $version_type in 3231ee3138f1Smrg darwin|linux|osf|windows|none) 3232ee3138f1Smrg current=`expr $number_major + $number_minor` 3233ee3138f1Smrg age="$number_minor" 3234ee3138f1Smrg revision="$number_revision" 3235ee3138f1Smrg ;; 3236ee3138f1Smrg freebsd-aout|freebsd-elf|sunos) 3237ee3138f1Smrg current="$number_major" 3238ee3138f1Smrg revision="$number_minor" 3239ee3138f1Smrg age="0" 3240ee3138f1Smrg ;; 3241ee3138f1Smrg irix|nonstopux) 3242ee3138f1Smrg current=`expr $number_major + $number_minor` 3243ee3138f1Smrg age="$number_minor" 3244ee3138f1Smrg revision="$number_minor" 3245ee3138f1Smrg lt_irix_increment=no 3246ee3138f1Smrg ;; 3247ee3138f1Smrg esac 3248ee3138f1Smrg ;; 3249ee3138f1Smrg no) 3250ee3138f1Smrg current="$2" 3251ee3138f1Smrg revision="$3" 3252ee3138f1Smrg age="$4" 3253ee3138f1Smrg ;; 3254ee3138f1Smrg esac 3255ee3138f1Smrg 3256ee3138f1Smrg # Check that each of the things are valid numbers. 3257ee3138f1Smrg case $current in 3258ee3138f1Smrg 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 3259ee3138f1Smrg *) 3260ee3138f1Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3261ee3138f1Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3262ee3138f1Smrg exit $EXIT_FAILURE 3263ee3138f1Smrg ;; 3264ee3138f1Smrg esac 3265ee3138f1Smrg 3266ee3138f1Smrg case $revision in 3267ee3138f1Smrg 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 3268ee3138f1Smrg *) 3269ee3138f1Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3270ee3138f1Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3271ee3138f1Smrg exit $EXIT_FAILURE 3272ee3138f1Smrg ;; 3273ee3138f1Smrg esac 3274ee3138f1Smrg 3275ee3138f1Smrg case $age in 3276ee3138f1Smrg 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 3277ee3138f1Smrg *) 3278ee3138f1Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3279ee3138f1Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3280ee3138f1Smrg exit $EXIT_FAILURE 3281ee3138f1Smrg ;; 3282ee3138f1Smrg esac 3283ee3138f1Smrg 3284ee3138f1Smrg if test "$age" -gt "$current"; then 3285ee3138f1Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3286ee3138f1Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287ee3138f1Smrg exit $EXIT_FAILURE 3288ee3138f1Smrg fi 3289ee3138f1Smrg 3290ee3138f1Smrg # Calculate the version variables. 3291ee3138f1Smrg major= 3292ee3138f1Smrg versuffix= 3293ee3138f1Smrg verstring= 3294ee3138f1Smrg case $version_type in 3295ee3138f1Smrg none) ;; 3296ee3138f1Smrg 3297ee3138f1Smrg darwin) 3298ee3138f1Smrg # Like Linux, but with the current version available in 3299ee3138f1Smrg # verstring for coding it into the library header 3300ee3138f1Smrg major=.`expr $current - $age` 3301ee3138f1Smrg versuffix="$major.$age.$revision" 3302ee3138f1Smrg # Darwin ld doesn't like 0 for these options... 3303ee3138f1Smrg minor_current=`expr $current + 1` 3304ee3138f1Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3305ee3138f1Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3306ee3138f1Smrg ;; 3307ee3138f1Smrg 3308ee3138f1Smrg freebsd-aout) 3309ee3138f1Smrg major=".$current" 3310ee3138f1Smrg versuffix=".$current.$revision"; 3311ee3138f1Smrg ;; 3312ee3138f1Smrg 3313ee3138f1Smrg freebsd-elf) 3314ee3138f1Smrg major=".$current" 3315ee3138f1Smrg versuffix=".$current"; 3316ee3138f1Smrg ;; 3317ee3138f1Smrg 3318ee3138f1Smrg irix | nonstopux) 3319ee3138f1Smrg if test "X$lt_irix_increment" = "Xno"; then 3320ee3138f1Smrg major=`expr $current - $age` 3321ee3138f1Smrg else 3322ee3138f1Smrg major=`expr $current - $age + 1` 3323ee3138f1Smrg fi 3324ee3138f1Smrg case $version_type in 3325ee3138f1Smrg nonstopux) verstring_prefix=nonstopux ;; 3326ee3138f1Smrg *) verstring_prefix=sgi ;; 3327ee3138f1Smrg esac 3328ee3138f1Smrg verstring="$verstring_prefix$major.$revision" 3329ee3138f1Smrg 3330ee3138f1Smrg # Add in all the interfaces that we are compatible with. 3331ee3138f1Smrg loop=$revision 3332ee3138f1Smrg while test "$loop" -ne 0; do 3333ee3138f1Smrg iface=`expr $revision - $loop` 3334ee3138f1Smrg loop=`expr $loop - 1` 3335ee3138f1Smrg verstring="$verstring_prefix$major.$iface:$verstring" 3336ee3138f1Smrg done 3337ee3138f1Smrg 3338ee3138f1Smrg # Before this point, $major must not contain `.'. 3339ee3138f1Smrg major=.$major 3340ee3138f1Smrg versuffix="$major.$revision" 3341ee3138f1Smrg ;; 3342ee3138f1Smrg 3343ee3138f1Smrg linux) 3344ee3138f1Smrg major=.`expr $current - $age` 3345ee3138f1Smrg versuffix="$major.$age.$revision" 3346ee3138f1Smrg ;; 3347ee3138f1Smrg 3348ee3138f1Smrg osf) 3349ee3138f1Smrg major=.`expr $current - $age` 3350ee3138f1Smrg versuffix=".$current.$age.$revision" 3351ee3138f1Smrg verstring="$current.$age.$revision" 3352ee3138f1Smrg 3353ee3138f1Smrg # Add in all the interfaces that we are compatible with. 3354ee3138f1Smrg loop=$age 3355ee3138f1Smrg while test "$loop" -ne 0; do 3356ee3138f1Smrg iface=`expr $current - $loop` 3357ee3138f1Smrg loop=`expr $loop - 1` 3358ee3138f1Smrg verstring="$verstring:${iface}.0" 3359ee3138f1Smrg done 3360ee3138f1Smrg 3361ee3138f1Smrg # Make executables depend on our current version. 3362ee3138f1Smrg verstring="$verstring:${current}.0" 3363ee3138f1Smrg ;; 3364ee3138f1Smrg 3365ee3138f1Smrg sunos) 3366ee3138f1Smrg major=".$current" 3367ee3138f1Smrg versuffix=".$current.$revision" 3368ee3138f1Smrg ;; 3369ee3138f1Smrg 3370ee3138f1Smrg windows) 3371ee3138f1Smrg # Use '-' rather than '.', since we only want one 3372ee3138f1Smrg # extension on DOS 8.3 filesystems. 3373ee3138f1Smrg major=`expr $current - $age` 3374ee3138f1Smrg versuffix="-$major" 3375ee3138f1Smrg ;; 3376ee3138f1Smrg 3377ee3138f1Smrg *) 3378ee3138f1Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3379ee3138f1Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3380ee3138f1Smrg exit $EXIT_FAILURE 3381ee3138f1Smrg ;; 3382ee3138f1Smrg esac 3383ee3138f1Smrg 3384ee3138f1Smrg # Clear the version info if we defaulted, and they specified a release. 3385ee3138f1Smrg if test -z "$vinfo" && test -n "$release"; then 3386ee3138f1Smrg major= 3387ee3138f1Smrg case $version_type in 3388ee3138f1Smrg darwin) 3389ee3138f1Smrg # we can't check for "0.0" in archive_cmds due to quoting 3390ee3138f1Smrg # problems, so we reset it completely 3391ee3138f1Smrg verstring= 3392ee3138f1Smrg ;; 3393ee3138f1Smrg *) 3394ee3138f1Smrg verstring="0.0" 3395ee3138f1Smrg ;; 3396ee3138f1Smrg esac 3397ee3138f1Smrg if test "$need_version" = no; then 3398ee3138f1Smrg versuffix= 3399ee3138f1Smrg else 3400ee3138f1Smrg versuffix=".0.0" 3401ee3138f1Smrg fi 3402ee3138f1Smrg fi 3403ee3138f1Smrg 3404ee3138f1Smrg # Remove version info from name if versioning should be avoided 3405ee3138f1Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 3406ee3138f1Smrg major= 3407ee3138f1Smrg versuffix= 3408ee3138f1Smrg verstring="" 3409ee3138f1Smrg fi 3410ee3138f1Smrg 3411ee3138f1Smrg # Check to see if the archive will have undefined symbols. 3412ee3138f1Smrg if test "$allow_undefined" = yes; then 3413ee3138f1Smrg if test "$allow_undefined_flag" = unsupported; then 3414ee3138f1Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3415ee3138f1Smrg build_libtool_libs=no 3416ee3138f1Smrg build_old_libs=yes 3417ee3138f1Smrg fi 3418ee3138f1Smrg else 3419ee3138f1Smrg # Don't allow undefined symbols. 3420ee3138f1Smrg allow_undefined_flag="$no_undefined_flag" 3421ee3138f1Smrg fi 3422ee3138f1Smrg fi 3423ee3138f1Smrg 3424ee3138f1Smrg if test "$mode" != relink; then 3425ee3138f1Smrg # Remove our outputs, but don't remove object files since they 3426ee3138f1Smrg # may have been created when compiling PIC objects. 3427ee3138f1Smrg removelist= 3428ee3138f1Smrg tempremovelist=`$echo "$output_objdir/*"` 3429ee3138f1Smrg for p in $tempremovelist; do 3430ee3138f1Smrg case $p in 3431ee3138f1Smrg *.$objext) 3432ee3138f1Smrg ;; 3433ee3138f1Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3434ee3138f1Smrg if test "X$precious_files_regex" != "X"; then 3435ee3138f1Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3436ee3138f1Smrg then 3437ee3138f1Smrg continue 3438ee3138f1Smrg fi 3439ee3138f1Smrg fi 3440ee3138f1Smrg removelist="$removelist $p" 3441ee3138f1Smrg ;; 3442ee3138f1Smrg *) ;; 3443ee3138f1Smrg esac 3444ee3138f1Smrg done 3445ee3138f1Smrg if test -n "$removelist"; then 3446ee3138f1Smrg $show "${rm}r $removelist" 3447ee3138f1Smrg $run ${rm}r $removelist 3448ee3138f1Smrg fi 3449ee3138f1Smrg fi 3450ee3138f1Smrg 3451ee3138f1Smrg # Now set the variables for building old libraries. 3452ee3138f1Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3453ee3138f1Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3454ee3138f1Smrg 3455ee3138f1Smrg # Transform .lo files to .o files. 3456ee3138f1Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3457ee3138f1Smrg fi 3458ee3138f1Smrg 3459ee3138f1Smrg # Eliminate all temporary directories. 3460ee3138f1Smrg #for path in $notinst_path; do 3461ee3138f1Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3462ee3138f1Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3463ee3138f1Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3464ee3138f1Smrg #done 3465ee3138f1Smrg 3466ee3138f1Smrg if test -n "$xrpath"; then 3467ee3138f1Smrg # If the user specified any rpath flags, then add them. 3468ee3138f1Smrg temp_xrpath= 3469ee3138f1Smrg for libdir in $xrpath; do 3470ee3138f1Smrg temp_xrpath="$temp_xrpath -R$libdir" 3471ee3138f1Smrg case "$finalize_rpath " in 3472ee3138f1Smrg *" $libdir "*) ;; 3473ee3138f1Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3474ee3138f1Smrg esac 3475ee3138f1Smrg done 3476ee3138f1Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3477ee3138f1Smrg dependency_libs="$temp_xrpath $dependency_libs" 3478ee3138f1Smrg fi 3479ee3138f1Smrg fi 3480ee3138f1Smrg 3481ee3138f1Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3482ee3138f1Smrg old_dlfiles="$dlfiles" 3483ee3138f1Smrg dlfiles= 3484ee3138f1Smrg for lib in $old_dlfiles; do 3485ee3138f1Smrg case " $dlprefiles $dlfiles " in 3486ee3138f1Smrg *" $lib "*) ;; 3487ee3138f1Smrg *) dlfiles="$dlfiles $lib" ;; 3488ee3138f1Smrg esac 3489ee3138f1Smrg done 3490ee3138f1Smrg 3491ee3138f1Smrg # Make sure dlprefiles contains only unique files 3492ee3138f1Smrg old_dlprefiles="$dlprefiles" 3493ee3138f1Smrg dlprefiles= 3494ee3138f1Smrg for lib in $old_dlprefiles; do 3495ee3138f1Smrg case "$dlprefiles " in 3496ee3138f1Smrg *" $lib "*) ;; 3497ee3138f1Smrg *) dlprefiles="$dlprefiles $lib" ;; 3498ee3138f1Smrg esac 3499ee3138f1Smrg done 3500ee3138f1Smrg 3501ee3138f1Smrg if test "$build_libtool_libs" = yes; then 3502ee3138f1Smrg if test -n "$rpath"; then 3503ee3138f1Smrg case $host in 3504ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3505ee3138f1Smrg # these systems don't actually have a c library (as such)! 3506ee3138f1Smrg ;; 3507ee3138f1Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3508ee3138f1Smrg # Rhapsody C library is in the System framework 3509ee3138f1Smrg deplibs="$deplibs -framework System" 3510ee3138f1Smrg ;; 3511ee3138f1Smrg *-*-netbsd*) 3512ee3138f1Smrg # Don't link with libc until the a.out ld.so is fixed. 3513ee3138f1Smrg ;; 3514ee3138f1Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3515ee3138f1Smrg # Do not include libc due to us having libc/libc_r. 3516ee3138f1Smrg ;; 3517ee3138f1Smrg *-*-sco3.2v5* | *-*-sco5v6*) 3518ee3138f1Smrg # Causes problems with __ctype 3519ee3138f1Smrg ;; 3520ee3138f1Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3521ee3138f1Smrg # Compiler inserts libc in the correct place for threads to work 3522ee3138f1Smrg ;; 3523ee3138f1Smrg *) 3524ee3138f1Smrg # Add libc to deplibs on all other systems if necessary. 3525ee3138f1Smrg if test "$build_libtool_need_lc" = "yes"; then 3526ee3138f1Smrg deplibs="$deplibs -lc" 3527ee3138f1Smrg fi 3528ee3138f1Smrg ;; 3529ee3138f1Smrg esac 3530ee3138f1Smrg fi 3531ee3138f1Smrg 3532ee3138f1Smrg # Transform deplibs into only deplibs that can be linked in shared. 3533ee3138f1Smrg name_save=$name 3534ee3138f1Smrg libname_save=$libname 3535ee3138f1Smrg release_save=$release 3536ee3138f1Smrg versuffix_save=$versuffix 3537ee3138f1Smrg major_save=$major 3538ee3138f1Smrg # I'm not sure if I'm treating the release correctly. I think 3539ee3138f1Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 3540ee3138f1Smrg # add it in twice. Is that correct? 3541ee3138f1Smrg release="" 3542ee3138f1Smrg versuffix="" 3543ee3138f1Smrg major="" 3544ee3138f1Smrg newdeplibs= 3545ee3138f1Smrg droppeddeps=no 3546ee3138f1Smrg case $deplibs_check_method in 3547ee3138f1Smrg pass_all) 3548ee3138f1Smrg # Don't check for shared/static. Everything works. 3549ee3138f1Smrg # This might be a little naive. We might want to check 3550ee3138f1Smrg # whether the library exists or not. But this is on 3551ee3138f1Smrg # osf3 & osf4 and I'm not really sure... Just 3552ee3138f1Smrg # implementing what was already the behavior. 3553ee3138f1Smrg newdeplibs=$deplibs 3554ee3138f1Smrg ;; 3555ee3138f1Smrg test_compile) 3556ee3138f1Smrg # This code stresses the "libraries are programs" paradigm to its 3557ee3138f1Smrg # limits. Maybe even breaks it. We compile a program, linking it 3558ee3138f1Smrg # against the deplibs as a proxy for the library. Then we can check 3559ee3138f1Smrg # whether they linked in statically or dynamically with ldd. 3560ee3138f1Smrg $rm conftest.c 3561ee3138f1Smrg cat > conftest.c <<EOF 3562ee3138f1Smrg int main() { return 0; } 3563ee3138f1SmrgEOF 3564ee3138f1Smrg $rm conftest 3565ee3138f1Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3566ee3138f1Smrg ldd_output=`ldd conftest` 3567ee3138f1Smrg for i in $deplibs; do 3568ee3138f1Smrg name=`expr $i : '-l\(.*\)'` 3569ee3138f1Smrg # If $name is empty we are operating on a -L argument. 3570ee3138f1Smrg if test "$name" != "" && test "$name" != "0"; then 3571ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3572ee3138f1Smrg case " $predeps $postdeps " in 3573ee3138f1Smrg *" $i "*) 3574ee3138f1Smrg newdeplibs="$newdeplibs $i" 3575ee3138f1Smrg i="" 3576ee3138f1Smrg ;; 3577ee3138f1Smrg esac 3578ee3138f1Smrg fi 3579ee3138f1Smrg if test -n "$i" ; then 3580ee3138f1Smrg libname=`eval \\$echo \"$libname_spec\"` 3581ee3138f1Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3582ee3138f1Smrg set dummy $deplib_matches 3583ee3138f1Smrg deplib_match=$2 3584ee3138f1Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3585ee3138f1Smrg newdeplibs="$newdeplibs $i" 3586ee3138f1Smrg else 3587ee3138f1Smrg droppeddeps=yes 3588ee3138f1Smrg $echo 3589ee3138f1Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3590ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 3591ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 3592ee3138f1Smrg $echo "*** shared version of the library, which I believe you do not have" 3593ee3138f1Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3594ee3138f1Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3595ee3138f1Smrg fi 3596ee3138f1Smrg fi 3597ee3138f1Smrg else 3598ee3138f1Smrg newdeplibs="$newdeplibs $i" 3599ee3138f1Smrg fi 3600ee3138f1Smrg done 3601ee3138f1Smrg else 3602ee3138f1Smrg # Error occurred in the first compile. Let's try to salvage 3603ee3138f1Smrg # the situation: Compile a separate program for each library. 3604ee3138f1Smrg for i in $deplibs; do 3605ee3138f1Smrg name=`expr $i : '-l\(.*\)'` 3606ee3138f1Smrg # If $name is empty we are operating on a -L argument. 3607ee3138f1Smrg if test "$name" != "" && test "$name" != "0"; then 3608ee3138f1Smrg $rm conftest 3609ee3138f1Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3610ee3138f1Smrg ldd_output=`ldd conftest` 3611ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3612ee3138f1Smrg case " $predeps $postdeps " in 3613ee3138f1Smrg *" $i "*) 3614ee3138f1Smrg newdeplibs="$newdeplibs $i" 3615ee3138f1Smrg i="" 3616ee3138f1Smrg ;; 3617ee3138f1Smrg esac 3618ee3138f1Smrg fi 3619ee3138f1Smrg if test -n "$i" ; then 3620ee3138f1Smrg libname=`eval \\$echo \"$libname_spec\"` 3621ee3138f1Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3622ee3138f1Smrg set dummy $deplib_matches 3623ee3138f1Smrg deplib_match=$2 3624ee3138f1Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3625ee3138f1Smrg newdeplibs="$newdeplibs $i" 3626ee3138f1Smrg else 3627ee3138f1Smrg droppeddeps=yes 3628ee3138f1Smrg $echo 3629ee3138f1Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3630ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 3631ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 3632ee3138f1Smrg $echo "*** shared version of the library, which you do not appear to have" 3633ee3138f1Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3634ee3138f1Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3635ee3138f1Smrg fi 3636ee3138f1Smrg fi 3637ee3138f1Smrg else 3638ee3138f1Smrg droppeddeps=yes 3639ee3138f1Smrg $echo 3640ee3138f1Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3641ee3138f1Smrg $echo "*** make it link in! You will probably need to install it or some" 3642ee3138f1Smrg $echo "*** library that it depends on before this library will be fully" 3643ee3138f1Smrg $echo "*** functional. Installing it before continuing would be even better." 3644ee3138f1Smrg fi 3645ee3138f1Smrg else 3646ee3138f1Smrg newdeplibs="$newdeplibs $i" 3647ee3138f1Smrg fi 3648ee3138f1Smrg done 3649ee3138f1Smrg fi 3650ee3138f1Smrg ;; 3651ee3138f1Smrg file_magic*) 3652ee3138f1Smrg set dummy $deplibs_check_method 3653ee3138f1Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3654ee3138f1Smrg for a_deplib in $deplibs; do 3655ee3138f1Smrg name=`expr $a_deplib : '-l\(.*\)'` 3656ee3138f1Smrg # If $name is empty we are operating on a -L argument. 3657ee3138f1Smrg if test "$name" != "" && test "$name" != "0"; then 3658ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3659ee3138f1Smrg case " $predeps $postdeps " in 3660ee3138f1Smrg *" $a_deplib "*) 3661ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3662ee3138f1Smrg a_deplib="" 3663ee3138f1Smrg ;; 3664ee3138f1Smrg esac 3665ee3138f1Smrg fi 3666ee3138f1Smrg if test -n "$a_deplib" ; then 3667ee3138f1Smrg libname=`eval \\$echo \"$libname_spec\"` 3668ee3138f1Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3669ee3138f1Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3670ee3138f1Smrg for potent_lib in $potential_libs; do 3671ee3138f1Smrg # Follow soft links. 3672ee3138f1Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 3673ee3138f1Smrg | grep " -> " >/dev/null; then 3674ee3138f1Smrg continue 3675ee3138f1Smrg fi 3676ee3138f1Smrg # The statement above tries to avoid entering an 3677ee3138f1Smrg # endless loop below, in case of cyclic links. 3678ee3138f1Smrg # We might still enter an endless loop, since a link 3679ee3138f1Smrg # loop can be closed while we follow links, 3680ee3138f1Smrg # but so what? 3681ee3138f1Smrg potlib="$potent_lib" 3682ee3138f1Smrg while test -h "$potlib" 2>/dev/null; do 3683ee3138f1Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3684ee3138f1Smrg case $potliblink in 3685ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3686ee3138f1Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3687ee3138f1Smrg esac 3688ee3138f1Smrg done 3689ee3138f1Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3690ee3138f1Smrg | ${SED} 10q \ 3691ee3138f1Smrg | $EGREP "$file_magic_regex" > /dev/null; then 3692ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3693ee3138f1Smrg a_deplib="" 3694ee3138f1Smrg break 2 3695ee3138f1Smrg fi 3696ee3138f1Smrg done 3697ee3138f1Smrg done 3698ee3138f1Smrg fi 3699ee3138f1Smrg if test -n "$a_deplib" ; then 3700ee3138f1Smrg droppeddeps=yes 3701ee3138f1Smrg $echo 3702ee3138f1Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3703ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 3704ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 3705ee3138f1Smrg $echo "*** shared version of the library, which you do not appear to have" 3706ee3138f1Smrg $echo "*** because I did check the linker path looking for a file starting" 3707ee3138f1Smrg if test -z "$potlib" ; then 3708ee3138f1Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3709ee3138f1Smrg else 3710ee3138f1Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3711ee3138f1Smrg $echo "*** using a file magic. Last file checked: $potlib" 3712ee3138f1Smrg fi 3713ee3138f1Smrg fi 3714ee3138f1Smrg else 3715ee3138f1Smrg # Add a -L argument. 3716ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3717ee3138f1Smrg fi 3718ee3138f1Smrg done # Gone through all deplibs. 3719ee3138f1Smrg ;; 3720ee3138f1Smrg match_pattern*) 3721ee3138f1Smrg set dummy $deplibs_check_method 3722ee3138f1Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3723ee3138f1Smrg for a_deplib in $deplibs; do 3724ee3138f1Smrg name=`expr $a_deplib : '-l\(.*\)'` 3725ee3138f1Smrg # If $name is empty we are operating on a -L argument. 3726ee3138f1Smrg if test -n "$name" && test "$name" != "0"; then 3727ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3728ee3138f1Smrg case " $predeps $postdeps " in 3729ee3138f1Smrg *" $a_deplib "*) 3730ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3731ee3138f1Smrg a_deplib="" 3732ee3138f1Smrg ;; 3733ee3138f1Smrg esac 3734ee3138f1Smrg fi 3735ee3138f1Smrg if test -n "$a_deplib" ; then 3736ee3138f1Smrg libname=`eval \\$echo \"$libname_spec\"` 3737ee3138f1Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3738ee3138f1Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3739ee3138f1Smrg for potent_lib in $potential_libs; do 3740ee3138f1Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 3741ee3138f1Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3742ee3138f1Smrg | ${SED} 10q \ 3743ee3138f1Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 3744ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3745ee3138f1Smrg a_deplib="" 3746ee3138f1Smrg break 2 3747ee3138f1Smrg fi 3748ee3138f1Smrg done 3749ee3138f1Smrg done 3750ee3138f1Smrg fi 3751ee3138f1Smrg if test -n "$a_deplib" ; then 3752ee3138f1Smrg droppeddeps=yes 3753ee3138f1Smrg $echo 3754ee3138f1Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3755ee3138f1Smrg $echo "*** I have the capability to make that library automatically link in when" 3756ee3138f1Smrg $echo "*** you link to this library. But I can only do this if you have a" 3757ee3138f1Smrg $echo "*** shared version of the library, which you do not appear to have" 3758ee3138f1Smrg $echo "*** because I did check the linker path looking for a file starting" 3759ee3138f1Smrg if test -z "$potlib" ; then 3760ee3138f1Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3761ee3138f1Smrg else 3762ee3138f1Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3763ee3138f1Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 3764ee3138f1Smrg fi 3765ee3138f1Smrg fi 3766ee3138f1Smrg else 3767ee3138f1Smrg # Add a -L argument. 3768ee3138f1Smrg newdeplibs="$newdeplibs $a_deplib" 3769ee3138f1Smrg fi 3770ee3138f1Smrg done # Gone through all deplibs. 3771ee3138f1Smrg ;; 3772ee3138f1Smrg none | unknown | *) 3773ee3138f1Smrg newdeplibs="" 3774ee3138f1Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3775ee3138f1Smrg -e 's/ -[LR][^ ]*//g'` 3776ee3138f1Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3777ee3138f1Smrg for i in $predeps $postdeps ; do 3778ee3138f1Smrg # can't use Xsed below, because $i might contain '/' 3779ee3138f1Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3780ee3138f1Smrg done 3781ee3138f1Smrg fi 3782ee3138f1Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3783ee3138f1Smrg | grep . >/dev/null; then 3784ee3138f1Smrg $echo 3785ee3138f1Smrg if test "X$deplibs_check_method" = "Xnone"; then 3786ee3138f1Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3787ee3138f1Smrg else 3788ee3138f1Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3789ee3138f1Smrg fi 3790ee3138f1Smrg $echo "*** All declared inter-library dependencies are being dropped." 3791ee3138f1Smrg droppeddeps=yes 3792ee3138f1Smrg fi 3793ee3138f1Smrg ;; 3794ee3138f1Smrg esac 3795ee3138f1Smrg versuffix=$versuffix_save 3796ee3138f1Smrg major=$major_save 3797ee3138f1Smrg release=$release_save 3798ee3138f1Smrg libname=$libname_save 3799ee3138f1Smrg name=$name_save 3800ee3138f1Smrg 3801ee3138f1Smrg case $host in 3802ee3138f1Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3803ee3138f1Smrg # On Rhapsody replace the C library is the System framework 3804ee3138f1Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3805ee3138f1Smrg ;; 3806ee3138f1Smrg esac 3807ee3138f1Smrg 3808ee3138f1Smrg if test "$droppeddeps" = yes; then 3809ee3138f1Smrg if test "$module" = yes; then 3810ee3138f1Smrg $echo 3811ee3138f1Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3812ee3138f1Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3813ee3138f1Smrg $echo "*** a static module, that should work as long as the dlopening" 3814ee3138f1Smrg $echo "*** application is linked with the -dlopen flag." 3815ee3138f1Smrg if test -z "$global_symbol_pipe"; then 3816ee3138f1Smrg $echo 3817ee3138f1Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 3818ee3138f1Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3819ee3138f1Smrg $echo "*** not find such a program. So, this module is probably useless." 3820ee3138f1Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3821ee3138f1Smrg fi 3822ee3138f1Smrg if test "$build_old_libs" = no; then 3823ee3138f1Smrg oldlibs="$output_objdir/$libname.$libext" 3824ee3138f1Smrg build_libtool_libs=module 3825ee3138f1Smrg build_old_libs=yes 3826ee3138f1Smrg else 3827ee3138f1Smrg build_libtool_libs=no 3828ee3138f1Smrg fi 3829ee3138f1Smrg else 3830ee3138f1Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 3831ee3138f1Smrg $echo "*** automatically added whenever a program is linked with this library" 3832ee3138f1Smrg $echo "*** or is declared to -dlopen it." 3833ee3138f1Smrg 3834ee3138f1Smrg if test "$allow_undefined" = no; then 3835ee3138f1Smrg $echo 3836ee3138f1Smrg $echo "*** Since this library must not contain undefined symbols," 3837ee3138f1Smrg $echo "*** because either the platform does not support them or" 3838ee3138f1Smrg $echo "*** it was explicitly requested with -no-undefined," 3839ee3138f1Smrg $echo "*** libtool will only create a static version of it." 3840ee3138f1Smrg if test "$build_old_libs" = no; then 3841ee3138f1Smrg oldlibs="$output_objdir/$libname.$libext" 3842ee3138f1Smrg build_libtool_libs=module 3843ee3138f1Smrg build_old_libs=yes 3844ee3138f1Smrg else 3845ee3138f1Smrg build_libtool_libs=no 3846ee3138f1Smrg fi 3847ee3138f1Smrg fi 3848ee3138f1Smrg fi 3849ee3138f1Smrg fi 3850ee3138f1Smrg # Done checking deplibs! 3851ee3138f1Smrg deplibs=$newdeplibs 3852ee3138f1Smrg fi 3853ee3138f1Smrg 3854ee3138f1Smrg 3855ee3138f1Smrg # move library search paths that coincide with paths to not yet 3856ee3138f1Smrg # installed libraries to the beginning of the library search list 3857ee3138f1Smrg new_libs= 3858ee3138f1Smrg for path in $notinst_path; do 3859ee3138f1Smrg case " $new_libs " in 3860ee3138f1Smrg *" -L$path/$objdir "*) ;; 3861ee3138f1Smrg *) 3862ee3138f1Smrg case " $deplibs " in 3863ee3138f1Smrg *" -L$path/$objdir "*) 3864ee3138f1Smrg new_libs="$new_libs -L$path/$objdir" ;; 3865ee3138f1Smrg esac 3866ee3138f1Smrg ;; 3867ee3138f1Smrg esac 3868ee3138f1Smrg done 3869ee3138f1Smrg for deplib in $deplibs; do 3870ee3138f1Smrg case $deplib in 3871ee3138f1Smrg -L*) 3872ee3138f1Smrg case " $new_libs " in 3873ee3138f1Smrg *" $deplib "*) ;; 3874ee3138f1Smrg *) new_libs="$new_libs $deplib" ;; 3875ee3138f1Smrg esac 3876ee3138f1Smrg ;; 3877ee3138f1Smrg *) new_libs="$new_libs $deplib" ;; 3878ee3138f1Smrg esac 3879ee3138f1Smrg done 3880ee3138f1Smrg deplibs="$new_libs" 3881ee3138f1Smrg 3882ee3138f1Smrg 3883ee3138f1Smrg # All the library-specific variables (install_libdir is set above). 3884ee3138f1Smrg library_names= 3885ee3138f1Smrg old_library= 3886ee3138f1Smrg dlname= 3887ee3138f1Smrg 3888ee3138f1Smrg # Test again, we may have decided not to build it any more 3889ee3138f1Smrg if test "$build_libtool_libs" = yes; then 3890ee3138f1Smrg if test "$hardcode_into_libs" = yes; then 3891ee3138f1Smrg # Hardcode the library paths 3892ee3138f1Smrg hardcode_libdirs= 3893ee3138f1Smrg dep_rpath= 3894ee3138f1Smrg rpath="$finalize_rpath" 3895ee3138f1Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3896ee3138f1Smrg for libdir in $rpath; do 3897ee3138f1Smrg if test -n "$hardcode_libdir_flag_spec"; then 3898ee3138f1Smrg if test -n "$hardcode_libdir_separator"; then 3899ee3138f1Smrg if test -z "$hardcode_libdirs"; then 3900ee3138f1Smrg hardcode_libdirs="$libdir" 3901ee3138f1Smrg else 3902ee3138f1Smrg # Just accumulate the unique libdirs. 3903ee3138f1Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3904ee3138f1Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3905ee3138f1Smrg ;; 3906ee3138f1Smrg *) 3907ee3138f1Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3908ee3138f1Smrg ;; 3909ee3138f1Smrg esac 3910ee3138f1Smrg fi 3911ee3138f1Smrg else 3912ee3138f1Smrg eval flag=\"$hardcode_libdir_flag_spec\" 3913ee3138f1Smrg dep_rpath="$dep_rpath $flag" 3914ee3138f1Smrg fi 3915ee3138f1Smrg elif test -n "$runpath_var"; then 3916ee3138f1Smrg case "$perm_rpath " in 3917ee3138f1Smrg *" $libdir "*) ;; 3918ee3138f1Smrg *) perm_rpath="$perm_rpath $libdir" ;; 3919ee3138f1Smrg esac 3920ee3138f1Smrg fi 3921ee3138f1Smrg done 3922ee3138f1Smrg # Substitute the hardcoded libdirs into the rpath. 3923ee3138f1Smrg if test -n "$hardcode_libdir_separator" && 3924ee3138f1Smrg test -n "$hardcode_libdirs"; then 3925ee3138f1Smrg libdir="$hardcode_libdirs" 3926ee3138f1Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3927ee3138f1Smrg case $archive_cmds in 3928ee3138f1Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3929ee3138f1Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3930ee3138f1Smrg esac 3931ee3138f1Smrg else 3932ee3138f1Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3933ee3138f1Smrg fi 3934ee3138f1Smrg fi 3935ee3138f1Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3936ee3138f1Smrg # We should set the runpath_var. 3937ee3138f1Smrg rpath= 3938ee3138f1Smrg for dir in $perm_rpath; do 3939ee3138f1Smrg rpath="$rpath$dir:" 3940ee3138f1Smrg done 3941ee3138f1Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3942ee3138f1Smrg fi 3943ee3138f1Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3944ee3138f1Smrg fi 3945ee3138f1Smrg 3946ee3138f1Smrg shlibpath="$finalize_shlibpath" 3947ee3138f1Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3948ee3138f1Smrg if test -n "$shlibpath"; then 3949ee3138f1Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3950ee3138f1Smrg fi 3951ee3138f1Smrg 3952ee3138f1Smrg # Get the real and link names of the library. 3953ee3138f1Smrg eval shared_ext=\"$shrext_cmds\" 3954ee3138f1Smrg eval library_names=\"$library_names_spec\" 3955ee3138f1Smrg set dummy $library_names 3956ee3138f1Smrg realname="$2" 3957ee3138f1Smrg shift; shift 3958ee3138f1Smrg 3959ee3138f1Smrg if test -n "$soname_spec"; then 3960ee3138f1Smrg eval soname=\"$soname_spec\" 3961ee3138f1Smrg else 3962ee3138f1Smrg soname="$realname" 3963ee3138f1Smrg fi 3964ee3138f1Smrg if test -z "$dlname"; then 3965ee3138f1Smrg dlname=$soname 3966ee3138f1Smrg fi 3967ee3138f1Smrg 3968ee3138f1Smrg lib="$output_objdir/$realname" 3969ee3138f1Smrg linknames= 3970ee3138f1Smrg for link 3971ee3138f1Smrg do 3972ee3138f1Smrg linknames="$linknames $link" 3973ee3138f1Smrg done 3974ee3138f1Smrg 3975ee3138f1Smrg # Use standard objects if they are pic 3976ee3138f1Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 3977ee3138f1Smrg 3978ee3138f1Smrg # Prepare the list of exported symbols 3979ee3138f1Smrg if test -z "$export_symbols"; then 3980ee3138f1Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 3981ee3138f1Smrg $show "generating symbol list for \`$libname.la'" 3982ee3138f1Smrg export_symbols="$output_objdir/$libname.exp" 3983ee3138f1Smrg $run $rm $export_symbols 3984ee3138f1Smrg cmds=$export_symbols_cmds 3985ee3138f1Smrg save_ifs="$IFS"; IFS='~' 3986ee3138f1Smrg for cmd in $cmds; do 3987ee3138f1Smrg IFS="$save_ifs" 3988ee3138f1Smrg eval cmd=\"$cmd\" 3989ee3138f1Smrg if len=`expr "X$cmd" : ".*"` && 3990ee3138f1Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 3991ee3138f1Smrg $show "$cmd" 3992ee3138f1Smrg $run eval "$cmd" || exit $? 3993ee3138f1Smrg skipped_export=false 3994ee3138f1Smrg else 3995ee3138f1Smrg # The command line is too long to execute in one step. 3996ee3138f1Smrg $show "using reloadable object file for export list..." 3997ee3138f1Smrg skipped_export=: 3998ee3138f1Smrg # Break out early, otherwise skipped_export may be 3999ee3138f1Smrg # set to false by a later but shorter cmd. 4000ee3138f1Smrg break 4001ee3138f1Smrg fi 4002ee3138f1Smrg done 4003ee3138f1Smrg IFS="$save_ifs" 4004ee3138f1Smrg if test -n "$export_symbols_regex"; then 4005ee3138f1Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4006ee3138f1Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4007ee3138f1Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4008ee3138f1Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4009ee3138f1Smrg fi 4010ee3138f1Smrg fi 4011ee3138f1Smrg fi 4012ee3138f1Smrg 4013ee3138f1Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4014ee3138f1Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4015ee3138f1Smrg fi 4016ee3138f1Smrg 4017ee3138f1Smrg tmp_deplibs= 4018ee3138f1Smrg for test_deplib in $deplibs; do 4019ee3138f1Smrg case " $convenience " in 4020ee3138f1Smrg *" $test_deplib "*) ;; 4021ee3138f1Smrg *) 4022ee3138f1Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 4023ee3138f1Smrg ;; 4024ee3138f1Smrg esac 4025ee3138f1Smrg done 4026ee3138f1Smrg deplibs="$tmp_deplibs" 4027ee3138f1Smrg 4028ee3138f1Smrg if test -n "$convenience"; then 4029ee3138f1Smrg if test -n "$whole_archive_flag_spec"; then 4030ee3138f1Smrg save_libobjs=$libobjs 4031ee3138f1Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4032ee3138f1Smrg else 4033ee3138f1Smrg gentop="$output_objdir/${outputname}x" 4034ee3138f1Smrg generated="$generated $gentop" 4035ee3138f1Smrg 4036ee3138f1Smrg func_extract_archives $gentop $convenience 4037ee3138f1Smrg libobjs="$libobjs $func_extract_archives_result" 4038ee3138f1Smrg fi 4039ee3138f1Smrg fi 4040ee3138f1Smrg 4041ee3138f1Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4042ee3138f1Smrg eval flag=\"$thread_safe_flag_spec\" 4043ee3138f1Smrg linker_flags="$linker_flags $flag" 4044ee3138f1Smrg fi 4045ee3138f1Smrg 4046ee3138f1Smrg # Make a backup of the uninstalled library when relinking 4047ee3138f1Smrg if test "$mode" = relink; then 4048ee3138f1Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4049ee3138f1Smrg fi 4050ee3138f1Smrg 4051ee3138f1Smrg # Do each of the archive commands. 4052ee3138f1Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4053ee3138f1Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4054ee3138f1Smrg eval test_cmds=\"$module_expsym_cmds\" 4055ee3138f1Smrg cmds=$module_expsym_cmds 4056ee3138f1Smrg else 4057ee3138f1Smrg eval test_cmds=\"$module_cmds\" 4058ee3138f1Smrg cmds=$module_cmds 4059ee3138f1Smrg fi 4060ee3138f1Smrg else 4061ee3138f1Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4062ee3138f1Smrg eval test_cmds=\"$archive_expsym_cmds\" 4063ee3138f1Smrg cmds=$archive_expsym_cmds 4064ee3138f1Smrg else 4065ee3138f1Smrg eval test_cmds=\"$archive_cmds\" 4066ee3138f1Smrg cmds=$archive_cmds 4067ee3138f1Smrg fi 4068ee3138f1Smrg fi 4069ee3138f1Smrg 4070ee3138f1Smrg if test "X$skipped_export" != "X:" && 4071ee3138f1Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4072ee3138f1Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4073ee3138f1Smrg : 4074ee3138f1Smrg else 4075ee3138f1Smrg # The command line is too long to link in one step, link piecewise. 4076ee3138f1Smrg $echo "creating reloadable object files..." 4077ee3138f1Smrg 4078ee3138f1Smrg # Save the value of $output and $libobjs because we want to 4079ee3138f1Smrg # use them later. If we have whole_archive_flag_spec, we 4080ee3138f1Smrg # want to use save_libobjs as it was before 4081ee3138f1Smrg # whole_archive_flag_spec was expanded, because we can't 4082ee3138f1Smrg # assume the linker understands whole_archive_flag_spec. 4083ee3138f1Smrg # This may have to be revisited, in case too many 4084ee3138f1Smrg # convenience libraries get linked in and end up exceeding 4085ee3138f1Smrg # the spec. 4086ee3138f1Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4087ee3138f1Smrg save_libobjs=$libobjs 4088ee3138f1Smrg fi 4089ee3138f1Smrg save_output=$output 4090ee3138f1Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4091ee3138f1Smrg 4092ee3138f1Smrg # Clear the reloadable object creation command queue and 4093ee3138f1Smrg # initialize k to one. 4094ee3138f1Smrg test_cmds= 4095ee3138f1Smrg concat_cmds= 4096ee3138f1Smrg objlist= 4097ee3138f1Smrg delfiles= 4098ee3138f1Smrg last_robj= 4099ee3138f1Smrg k=1 4100ee3138f1Smrg output=$output_objdir/$output_la-${k}.$objext 4101ee3138f1Smrg # Loop over the list of objects to be linked. 4102ee3138f1Smrg for obj in $save_libobjs 4103ee3138f1Smrg do 4104ee3138f1Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4105ee3138f1Smrg if test "X$objlist" = X || 4106ee3138f1Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4107ee3138f1Smrg test "$len" -le "$max_cmd_len"; }; then 4108ee3138f1Smrg objlist="$objlist $obj" 4109ee3138f1Smrg else 4110ee3138f1Smrg # The command $test_cmds is almost too long, add a 4111ee3138f1Smrg # command to the queue. 4112ee3138f1Smrg if test "$k" -eq 1 ; then 4113ee3138f1Smrg # The first file doesn't have a previous command to add. 4114ee3138f1Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4115ee3138f1Smrg else 4116ee3138f1Smrg # All subsequent reloadable object files will link in 4117ee3138f1Smrg # the last one created. 4118ee3138f1Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4119ee3138f1Smrg fi 4120ee3138f1Smrg last_robj=$output_objdir/$output_la-${k}.$objext 4121ee3138f1Smrg k=`expr $k + 1` 4122ee3138f1Smrg output=$output_objdir/$output_la-${k}.$objext 4123ee3138f1Smrg objlist=$obj 4124ee3138f1Smrg len=1 4125ee3138f1Smrg fi 4126ee3138f1Smrg done 4127ee3138f1Smrg # Handle the remaining objects by creating one last 4128ee3138f1Smrg # reloadable object file. All subsequent reloadable object 4129ee3138f1Smrg # files will link in the last one created. 4130ee3138f1Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4131ee3138f1Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4132ee3138f1Smrg 4133ee3138f1Smrg if ${skipped_export-false}; then 4134ee3138f1Smrg $show "generating symbol list for \`$libname.la'" 4135ee3138f1Smrg export_symbols="$output_objdir/$libname.exp" 4136ee3138f1Smrg $run $rm $export_symbols 4137ee3138f1Smrg libobjs=$output 4138ee3138f1Smrg # Append the command to create the export file. 4139ee3138f1Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4140ee3138f1Smrg fi 4141ee3138f1Smrg 4142ee3138f1Smrg # Set up a command to remove the reloadable object files 4143ee3138f1Smrg # after they are used. 4144ee3138f1Smrg i=0 4145ee3138f1Smrg while test "$i" -lt "$k" 4146ee3138f1Smrg do 4147ee3138f1Smrg i=`expr $i + 1` 4148ee3138f1Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4149ee3138f1Smrg done 4150ee3138f1Smrg 4151ee3138f1Smrg $echo "creating a temporary reloadable object file: $output" 4152ee3138f1Smrg 4153ee3138f1Smrg # Loop through the commands generated above and execute them. 4154ee3138f1Smrg save_ifs="$IFS"; IFS='~' 4155ee3138f1Smrg for cmd in $concat_cmds; do 4156ee3138f1Smrg IFS="$save_ifs" 4157ee3138f1Smrg $show "$cmd" 4158ee3138f1Smrg $run eval "$cmd" || exit $? 4159ee3138f1Smrg done 4160ee3138f1Smrg IFS="$save_ifs" 4161ee3138f1Smrg 4162ee3138f1Smrg libobjs=$output 4163ee3138f1Smrg # Restore the value of output. 4164ee3138f1Smrg output=$save_output 4165ee3138f1Smrg 4166ee3138f1Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4167ee3138f1Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4168ee3138f1Smrg fi 4169ee3138f1Smrg # Expand the library linking commands again to reset the 4170ee3138f1Smrg # value of $libobjs for piecewise linking. 4171ee3138f1Smrg 4172ee3138f1Smrg # Do each of the archive commands. 4173ee3138f1Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4174ee3138f1Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4175ee3138f1Smrg cmds=$module_expsym_cmds 4176ee3138f1Smrg else 4177ee3138f1Smrg cmds=$module_cmds 4178ee3138f1Smrg fi 4179ee3138f1Smrg else 4180ee3138f1Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4181ee3138f1Smrg cmds=$archive_expsym_cmds 4182ee3138f1Smrg else 4183ee3138f1Smrg cmds=$archive_cmds 4184ee3138f1Smrg fi 4185ee3138f1Smrg fi 4186ee3138f1Smrg 4187ee3138f1Smrg # Append the command to remove the reloadable object files 4188ee3138f1Smrg # to the just-reset $cmds. 4189ee3138f1Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 4190ee3138f1Smrg fi 4191ee3138f1Smrg save_ifs="$IFS"; IFS='~' 4192ee3138f1Smrg for cmd in $cmds; do 4193ee3138f1Smrg IFS="$save_ifs" 4194ee3138f1Smrg eval cmd=\"$cmd\" 4195ee3138f1Smrg $show "$cmd" 4196ee3138f1Smrg $run eval "$cmd" || { 4197ee3138f1Smrg lt_exit=$? 4198ee3138f1Smrg 4199ee3138f1Smrg # Restore the uninstalled library and exit 4200ee3138f1Smrg if test "$mode" = relink; then 4201ee3138f1Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4202ee3138f1Smrg fi 4203ee3138f1Smrg 4204ee3138f1Smrg exit $lt_exit 4205ee3138f1Smrg } 4206ee3138f1Smrg done 4207ee3138f1Smrg IFS="$save_ifs" 4208ee3138f1Smrg 4209ee3138f1Smrg # Restore the uninstalled library and exit 4210ee3138f1Smrg if test "$mode" = relink; then 4211ee3138f1Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4212ee3138f1Smrg 4213ee3138f1Smrg if test -n "$convenience"; then 4214ee3138f1Smrg if test -z "$whole_archive_flag_spec"; then 4215ee3138f1Smrg $show "${rm}r $gentop" 4216ee3138f1Smrg $run ${rm}r "$gentop" 4217ee3138f1Smrg fi 4218ee3138f1Smrg fi 4219ee3138f1Smrg 4220ee3138f1Smrg exit $EXIT_SUCCESS 4221ee3138f1Smrg fi 4222ee3138f1Smrg 4223ee3138f1Smrg # Create links to the real library. 4224ee3138f1Smrg for linkname in $linknames; do 4225ee3138f1Smrg if test "$realname" != "$linkname"; then 4226ee3138f1Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4227ee3138f1Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4228ee3138f1Smrg fi 4229ee3138f1Smrg done 4230ee3138f1Smrg 4231ee3138f1Smrg # If -module or -export-dynamic was specified, set the dlname. 4232ee3138f1Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 4233ee3138f1Smrg # On all known operating systems, these are identical. 4234ee3138f1Smrg dlname="$soname" 4235ee3138f1Smrg fi 4236ee3138f1Smrg fi 4237ee3138f1Smrg ;; 4238ee3138f1Smrg 4239ee3138f1Smrg obj) 4240ee3138f1Smrg if test -n "$deplibs"; then 4241ee3138f1Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 4242ee3138f1Smrg fi 4243ee3138f1Smrg 4244ee3138f1Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4245ee3138f1Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4246ee3138f1Smrg fi 4247ee3138f1Smrg 4248ee3138f1Smrg if test -n "$rpath"; then 4249ee3138f1Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4250ee3138f1Smrg fi 4251ee3138f1Smrg 4252ee3138f1Smrg if test -n "$xrpath"; then 4253ee3138f1Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4254ee3138f1Smrg fi 4255ee3138f1Smrg 4256ee3138f1Smrg if test -n "$vinfo"; then 4257ee3138f1Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4258ee3138f1Smrg fi 4259ee3138f1Smrg 4260ee3138f1Smrg if test -n "$release"; then 4261ee3138f1Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4262ee3138f1Smrg fi 4263ee3138f1Smrg 4264ee3138f1Smrg case $output in 4265ee3138f1Smrg *.lo) 4266ee3138f1Smrg if test -n "$objs$old_deplibs"; then 4267ee3138f1Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4268ee3138f1Smrg exit $EXIT_FAILURE 4269ee3138f1Smrg fi 4270ee3138f1Smrg libobj="$output" 4271ee3138f1Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4272ee3138f1Smrg ;; 4273ee3138f1Smrg *) 4274ee3138f1Smrg libobj= 4275ee3138f1Smrg obj="$output" 4276ee3138f1Smrg ;; 4277ee3138f1Smrg esac 4278ee3138f1Smrg 4279ee3138f1Smrg # Delete the old objects. 4280ee3138f1Smrg $run $rm $obj $libobj 4281ee3138f1Smrg 4282ee3138f1Smrg # Objects from convenience libraries. This assumes 4283ee3138f1Smrg # single-version convenience libraries. Whenever we create 4284ee3138f1Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 4285ee3138f1Smrg # the extraction. 4286ee3138f1Smrg reload_conv_objs= 4287ee3138f1Smrg gentop= 4288ee3138f1Smrg # reload_cmds runs $LD directly, so let us get rid of 4289ee3138f1Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 4290ee3138f1Smrg # turning comma into space.. 4291ee3138f1Smrg wl= 4292ee3138f1Smrg 4293ee3138f1Smrg if test -n "$convenience"; then 4294ee3138f1Smrg if test -n "$whole_archive_flag_spec"; then 4295ee3138f1Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4296ee3138f1Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4297ee3138f1Smrg else 4298ee3138f1Smrg gentop="$output_objdir/${obj}x" 4299ee3138f1Smrg generated="$generated $gentop" 4300ee3138f1Smrg 4301ee3138f1Smrg func_extract_archives $gentop $convenience 4302ee3138f1Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4303ee3138f1Smrg fi 4304ee3138f1Smrg fi 4305ee3138f1Smrg 4306ee3138f1Smrg # Create the old-style object. 4307ee3138f1Smrg reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 4308ee3138f1Smrg 4309ee3138f1Smrg output="$obj" 4310ee3138f1Smrg cmds=$reload_cmds 4311ee3138f1Smrg save_ifs="$IFS"; IFS='~' 4312ee3138f1Smrg for cmd in $cmds; do 4313ee3138f1Smrg IFS="$save_ifs" 4314ee3138f1Smrg eval cmd=\"$cmd\" 4315ee3138f1Smrg $show "$cmd" 4316ee3138f1Smrg $run eval "$cmd" || exit $? 4317ee3138f1Smrg done 4318ee3138f1Smrg IFS="$save_ifs" 4319ee3138f1Smrg 4320ee3138f1Smrg # Exit if we aren't doing a library object file. 4321ee3138f1Smrg if test -z "$libobj"; then 4322ee3138f1Smrg if test -n "$gentop"; then 4323ee3138f1Smrg $show "${rm}r $gentop" 4324ee3138f1Smrg $run ${rm}r $gentop 4325ee3138f1Smrg fi 4326ee3138f1Smrg 4327ee3138f1Smrg exit $EXIT_SUCCESS 4328ee3138f1Smrg fi 4329ee3138f1Smrg 4330ee3138f1Smrg if test "$build_libtool_libs" != yes; then 4331ee3138f1Smrg if test -n "$gentop"; then 4332ee3138f1Smrg $show "${rm}r $gentop" 4333ee3138f1Smrg $run ${rm}r $gentop 4334ee3138f1Smrg fi 4335ee3138f1Smrg 4336ee3138f1Smrg # Create an invalid libtool object if no PIC, so that we don't 4337ee3138f1Smrg # accidentally link it into a program. 4338ee3138f1Smrg # $show "echo timestamp > $libobj" 4339ee3138f1Smrg # $run eval "echo timestamp > $libobj" || exit $? 4340ee3138f1Smrg exit $EXIT_SUCCESS 4341ee3138f1Smrg fi 4342ee3138f1Smrg 4343ee3138f1Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4344ee3138f1Smrg # Only do commands if we really have different PIC objects. 4345ee3138f1Smrg reload_objs="$libobjs $reload_conv_objs" 4346ee3138f1Smrg output="$libobj" 4347ee3138f1Smrg cmds=$reload_cmds 4348ee3138f1Smrg save_ifs="$IFS"; IFS='~' 4349ee3138f1Smrg for cmd in $cmds; do 4350ee3138f1Smrg IFS="$save_ifs" 4351ee3138f1Smrg eval cmd=\"$cmd\" 4352ee3138f1Smrg $show "$cmd" 4353ee3138f1Smrg $run eval "$cmd" || exit $? 4354ee3138f1Smrg done 4355ee3138f1Smrg IFS="$save_ifs" 4356ee3138f1Smrg fi 4357ee3138f1Smrg 4358ee3138f1Smrg if test -n "$gentop"; then 4359ee3138f1Smrg $show "${rm}r $gentop" 4360ee3138f1Smrg $run ${rm}r $gentop 4361ee3138f1Smrg fi 4362ee3138f1Smrg 4363ee3138f1Smrg exit $EXIT_SUCCESS 4364ee3138f1Smrg ;; 4365ee3138f1Smrg 4366ee3138f1Smrg prog) 4367ee3138f1Smrg case $host in 4368ee3138f1Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4369ee3138f1Smrg esac 4370ee3138f1Smrg if test -n "$vinfo"; then 4371ee3138f1Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4372ee3138f1Smrg fi 4373ee3138f1Smrg 4374ee3138f1Smrg if test -n "$release"; then 4375ee3138f1Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4376ee3138f1Smrg fi 4377ee3138f1Smrg 4378ee3138f1Smrg if test "$preload" = yes; then 4379ee3138f1Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4380ee3138f1Smrg test "$dlopen_self_static" = unknown; then 4381ee3138f1Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4382ee3138f1Smrg fi 4383ee3138f1Smrg fi 4384ee3138f1Smrg 4385ee3138f1Smrg case $host in 4386ee3138f1Smrg *-*-rhapsody* | *-*-darwin1.[012]) 4387ee3138f1Smrg # On Rhapsody replace the C library is the System framework 4388ee3138f1Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4389ee3138f1Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4390ee3138f1Smrg ;; 4391ee3138f1Smrg esac 4392ee3138f1Smrg 4393ee3138f1Smrg case $host in 4394ee3138f1Smrg *darwin*) 4395ee3138f1Smrg # Don't allow lazy linking, it breaks C++ global constructors 4396ee3138f1Smrg if test "$tagname" = CXX ; then 4397ee3138f1Smrg compile_command="$compile_command ${wl}-bind_at_load" 4398ee3138f1Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 4399ee3138f1Smrg fi 4400ee3138f1Smrg ;; 4401ee3138f1Smrg esac 4402ee3138f1Smrg 4403ee3138f1Smrg 4404ee3138f1Smrg # move library search paths that coincide with paths to not yet 4405ee3138f1Smrg # installed libraries to the beginning of the library search list 4406ee3138f1Smrg new_libs= 4407ee3138f1Smrg for path in $notinst_path; do 4408ee3138f1Smrg case " $new_libs " in 4409ee3138f1Smrg *" -L$path/$objdir "*) ;; 4410ee3138f1Smrg *) 4411ee3138f1Smrg case " $compile_deplibs " in 4412ee3138f1Smrg *" -L$path/$objdir "*) 4413ee3138f1Smrg new_libs="$new_libs -L$path/$objdir" ;; 4414ee3138f1Smrg esac 4415ee3138f1Smrg ;; 4416ee3138f1Smrg esac 4417ee3138f1Smrg done 4418ee3138f1Smrg for deplib in $compile_deplibs; do 4419ee3138f1Smrg case $deplib in 4420ee3138f1Smrg -L*) 4421ee3138f1Smrg case " $new_libs " in 4422ee3138f1Smrg *" $deplib "*) ;; 4423ee3138f1Smrg *) new_libs="$new_libs $deplib" ;; 4424ee3138f1Smrg esac 4425ee3138f1Smrg ;; 4426ee3138f1Smrg *) new_libs="$new_libs $deplib" ;; 4427ee3138f1Smrg esac 4428ee3138f1Smrg done 4429ee3138f1Smrg compile_deplibs="$new_libs" 4430ee3138f1Smrg 4431ee3138f1Smrg 4432ee3138f1Smrg compile_command="$compile_command $compile_deplibs" 4433ee3138f1Smrg finalize_command="$finalize_command $finalize_deplibs" 4434ee3138f1Smrg 4435ee3138f1Smrg if test -n "$rpath$xrpath"; then 4436ee3138f1Smrg # If the user specified any rpath flags, then add them. 4437ee3138f1Smrg for libdir in $rpath $xrpath; do 4438ee3138f1Smrg # This is the magic to use -rpath. 4439ee3138f1Smrg case "$finalize_rpath " in 4440ee3138f1Smrg *" $libdir "*) ;; 4441ee3138f1Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4442ee3138f1Smrg esac 4443ee3138f1Smrg done 4444ee3138f1Smrg fi 4445ee3138f1Smrg 4446ee3138f1Smrg # Now hardcode the library paths 4447ee3138f1Smrg rpath= 4448ee3138f1Smrg hardcode_libdirs= 4449ee3138f1Smrg for libdir in $compile_rpath $finalize_rpath; do 4450ee3138f1Smrg if test -n "$hardcode_libdir_flag_spec"; then 4451ee3138f1Smrg if test -n "$hardcode_libdir_separator"; then 4452ee3138f1Smrg if test -z "$hardcode_libdirs"; then 4453ee3138f1Smrg hardcode_libdirs="$libdir" 4454ee3138f1Smrg else 4455ee3138f1Smrg # Just accumulate the unique libdirs. 4456ee3138f1Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4457ee3138f1Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4458ee3138f1Smrg ;; 4459ee3138f1Smrg *) 4460ee3138f1Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4461ee3138f1Smrg ;; 4462ee3138f1Smrg esac 4463ee3138f1Smrg fi 4464ee3138f1Smrg else 4465ee3138f1Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4466ee3138f1Smrg rpath="$rpath $flag" 4467ee3138f1Smrg fi 4468ee3138f1Smrg elif test -n "$runpath_var"; then 4469ee3138f1Smrg case "$perm_rpath " in 4470ee3138f1Smrg *" $libdir "*) ;; 4471ee3138f1Smrg *) perm_rpath="$perm_rpath $libdir" ;; 4472ee3138f1Smrg esac 4473ee3138f1Smrg fi 4474ee3138f1Smrg case $host in 4475ee3138f1Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4476ee3138f1Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4477ee3138f1Smrg case :$dllsearchpath: in 4478ee3138f1Smrg *":$libdir:"*) ;; 4479ee3138f1Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 4480ee3138f1Smrg esac 4481ee3138f1Smrg case :$dllsearchpath: in 4482ee3138f1Smrg *":$testbindir:"*) ;; 4483ee3138f1Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4484ee3138f1Smrg esac 4485ee3138f1Smrg ;; 4486ee3138f1Smrg esac 4487ee3138f1Smrg done 4488ee3138f1Smrg # Substitute the hardcoded libdirs into the rpath. 4489ee3138f1Smrg if test -n "$hardcode_libdir_separator" && 4490ee3138f1Smrg test -n "$hardcode_libdirs"; then 4491ee3138f1Smrg libdir="$hardcode_libdirs" 4492ee3138f1Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4493ee3138f1Smrg fi 4494ee3138f1Smrg compile_rpath="$rpath" 4495ee3138f1Smrg 4496ee3138f1Smrg rpath= 4497ee3138f1Smrg hardcode_libdirs= 4498ee3138f1Smrg for libdir in $finalize_rpath; do 4499ee3138f1Smrg if test -n "$hardcode_libdir_flag_spec"; then 4500ee3138f1Smrg if test -n "$hardcode_libdir_separator"; then 4501ee3138f1Smrg if test -z "$hardcode_libdirs"; then 4502ee3138f1Smrg hardcode_libdirs="$libdir" 4503ee3138f1Smrg else 4504ee3138f1Smrg # Just accumulate the unique libdirs. 4505ee3138f1Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4506ee3138f1Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4507ee3138f1Smrg ;; 4508ee3138f1Smrg *) 4509ee3138f1Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4510ee3138f1Smrg ;; 4511ee3138f1Smrg esac 4512ee3138f1Smrg fi 4513ee3138f1Smrg else 4514ee3138f1Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4515ee3138f1Smrg rpath="$rpath $flag" 4516ee3138f1Smrg fi 4517ee3138f1Smrg elif test -n "$runpath_var"; then 4518ee3138f1Smrg case "$finalize_perm_rpath " in 4519ee3138f1Smrg *" $libdir "*) ;; 4520ee3138f1Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4521ee3138f1Smrg esac 4522ee3138f1Smrg fi 4523ee3138f1Smrg done 4524ee3138f1Smrg # Substitute the hardcoded libdirs into the rpath. 4525ee3138f1Smrg if test -n "$hardcode_libdir_separator" && 4526ee3138f1Smrg test -n "$hardcode_libdirs"; then 4527ee3138f1Smrg libdir="$hardcode_libdirs" 4528ee3138f1Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4529ee3138f1Smrg fi 4530ee3138f1Smrg finalize_rpath="$rpath" 4531ee3138f1Smrg 4532ee3138f1Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4533ee3138f1Smrg # Transform all the library objects into standard objects. 4534ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4535ee3138f1Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4536ee3138f1Smrg fi 4537ee3138f1Smrg 4538ee3138f1Smrg dlsyms= 4539ee3138f1Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4540ee3138f1Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4541ee3138f1Smrg dlsyms="${outputname}S.c" 4542ee3138f1Smrg else 4543ee3138f1Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4544ee3138f1Smrg fi 4545ee3138f1Smrg fi 4546ee3138f1Smrg 4547ee3138f1Smrg if test -n "$dlsyms"; then 4548ee3138f1Smrg case $dlsyms in 4549ee3138f1Smrg "") ;; 4550ee3138f1Smrg *.c) 4551ee3138f1Smrg # Discover the nlist of each of the dlfiles. 4552ee3138f1Smrg nlist="$output_objdir/${outputname}.nm" 4553ee3138f1Smrg 4554ee3138f1Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 4555ee3138f1Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4556ee3138f1Smrg 4557ee3138f1Smrg # Parse the name list into a source file. 4558ee3138f1Smrg $show "creating $output_objdir/$dlsyms" 4559ee3138f1Smrg 4560ee3138f1Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4561ee3138f1Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4562ee3138f1Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4563ee3138f1Smrg 4564ee3138f1Smrg#ifdef __cplusplus 4565ee3138f1Smrgextern \"C\" { 4566ee3138f1Smrg#endif 4567ee3138f1Smrg 4568ee3138f1Smrg/* Prevent the only kind of declaration conflicts we can make. */ 4569ee3138f1Smrg#define lt_preloaded_symbols some_other_symbol 4570ee3138f1Smrg 4571ee3138f1Smrg/* External symbol declarations for the compiler. */\ 4572ee3138f1Smrg" 4573ee3138f1Smrg 4574ee3138f1Smrg if test "$dlself" = yes; then 4575ee3138f1Smrg $show "generating symbol list for \`$output'" 4576ee3138f1Smrg 4577ee3138f1Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4578ee3138f1Smrg 4579ee3138f1Smrg # Add our own program objects to the symbol list. 4580ee3138f1Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4581ee3138f1Smrg for arg in $progfiles; do 4582ee3138f1Smrg $show "extracting global C symbols from \`$arg'" 4583ee3138f1Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4584ee3138f1Smrg done 4585ee3138f1Smrg 4586ee3138f1Smrg if test -n "$exclude_expsyms"; then 4587ee3138f1Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4588ee3138f1Smrg $run eval '$mv "$nlist"T "$nlist"' 4589ee3138f1Smrg fi 4590ee3138f1Smrg 4591ee3138f1Smrg if test -n "$export_symbols_regex"; then 4592ee3138f1Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4593ee3138f1Smrg $run eval '$mv "$nlist"T "$nlist"' 4594ee3138f1Smrg fi 4595ee3138f1Smrg 4596ee3138f1Smrg # Prepare the list of exported symbols 4597ee3138f1Smrg if test -z "$export_symbols"; then 4598ee3138f1Smrg export_symbols="$output_objdir/$outputname.exp" 4599ee3138f1Smrg $run $rm $export_symbols 4600ee3138f1Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4601ee3138f1Smrg case $host in 4602ee3138f1Smrg *cygwin* | *mingw* ) 4603ee3138f1Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4604ee3138f1Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4605ee3138f1Smrg ;; 4606ee3138f1Smrg esac 4607ee3138f1Smrg else 4608ee3138f1Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4609ee3138f1Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4610ee3138f1Smrg $run eval 'mv "$nlist"T "$nlist"' 4611ee3138f1Smrg case $host in 4612ee3138f1Smrg *cygwin* | *mingw* ) 4613ee3138f1Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4614ee3138f1Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4615ee3138f1Smrg ;; 4616ee3138f1Smrg esac 4617ee3138f1Smrg fi 4618ee3138f1Smrg fi 4619ee3138f1Smrg 4620ee3138f1Smrg for arg in $dlprefiles; do 4621ee3138f1Smrg $show "extracting global C symbols from \`$arg'" 4622ee3138f1Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4623ee3138f1Smrg $run eval '$echo ": $name " >> "$nlist"' 4624ee3138f1Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4625ee3138f1Smrg done 4626ee3138f1Smrg 4627ee3138f1Smrg if test -z "$run"; then 4628ee3138f1Smrg # Make sure we have at least an empty file. 4629ee3138f1Smrg test -f "$nlist" || : > "$nlist" 4630ee3138f1Smrg 4631ee3138f1Smrg if test -n "$exclude_expsyms"; then 4632ee3138f1Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4633ee3138f1Smrg $mv "$nlist"T "$nlist" 4634ee3138f1Smrg fi 4635ee3138f1Smrg 4636ee3138f1Smrg # Try sorting and uniquifying the output. 4637ee3138f1Smrg if grep -v "^: " < "$nlist" | 4638ee3138f1Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4639ee3138f1Smrg sort -k 3 4640ee3138f1Smrg else 4641ee3138f1Smrg sort +2 4642ee3138f1Smrg fi | 4643ee3138f1Smrg uniq > "$nlist"S; then 4644ee3138f1Smrg : 4645ee3138f1Smrg else 4646ee3138f1Smrg grep -v "^: " < "$nlist" > "$nlist"S 4647ee3138f1Smrg fi 4648ee3138f1Smrg 4649ee3138f1Smrg if test -f "$nlist"S; then 4650ee3138f1Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4651ee3138f1Smrg else 4652ee3138f1Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4653ee3138f1Smrg fi 4654ee3138f1Smrg 4655ee3138f1Smrg $echo >> "$output_objdir/$dlsyms" "\ 4656ee3138f1Smrg 4657ee3138f1Smrg#undef lt_preloaded_symbols 4658ee3138f1Smrg 4659ee3138f1Smrg#if defined (__STDC__) && __STDC__ 4660ee3138f1Smrg# define lt_ptr void * 4661ee3138f1Smrg#else 4662ee3138f1Smrg# define lt_ptr char * 4663ee3138f1Smrg# define const 4664ee3138f1Smrg#endif 4665ee3138f1Smrg 4666ee3138f1Smrg/* The mapping between symbol names and symbols. */ 4667ee3138f1Smrg" 4668ee3138f1Smrg 4669ee3138f1Smrg case $host in 4670ee3138f1Smrg *cygwin* | *mingw* ) 4671ee3138f1Smrg $echo >> "$output_objdir/$dlsyms" "\ 4672ee3138f1Smrg/* DATA imports from DLLs on WIN32 can't be const, because 4673ee3138f1Smrg runtime relocations are performed -- see ld's documentation 4674ee3138f1Smrg on pseudo-relocs */ 4675ee3138f1Smrgstruct { 4676ee3138f1Smrg" 4677ee3138f1Smrg ;; 4678ee3138f1Smrg * ) 4679ee3138f1Smrg $echo >> "$output_objdir/$dlsyms" "\ 4680ee3138f1Smrgconst struct { 4681ee3138f1Smrg" 4682ee3138f1Smrg ;; 4683ee3138f1Smrg esac 4684ee3138f1Smrg 4685ee3138f1Smrg 4686ee3138f1Smrg $echo >> "$output_objdir/$dlsyms" "\ 4687ee3138f1Smrg const char *name; 4688ee3138f1Smrg lt_ptr address; 4689ee3138f1Smrg} 4690ee3138f1Smrglt_preloaded_symbols[] = 4691ee3138f1Smrg{\ 4692ee3138f1Smrg" 4693ee3138f1Smrg 4694ee3138f1Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4695ee3138f1Smrg 4696ee3138f1Smrg $echo >> "$output_objdir/$dlsyms" "\ 4697ee3138f1Smrg {0, (lt_ptr) 0} 4698ee3138f1Smrg}; 4699ee3138f1Smrg 4700ee3138f1Smrg/* This works around a problem in FreeBSD linker */ 4701ee3138f1Smrg#ifdef FREEBSD_WORKAROUND 4702ee3138f1Smrgstatic const void *lt_preloaded_setup() { 4703ee3138f1Smrg return lt_preloaded_symbols; 4704ee3138f1Smrg} 4705ee3138f1Smrg#endif 4706ee3138f1Smrg 4707ee3138f1Smrg#ifdef __cplusplus 4708ee3138f1Smrg} 4709ee3138f1Smrg#endif\ 4710ee3138f1Smrg" 4711ee3138f1Smrg fi 4712ee3138f1Smrg 4713ee3138f1Smrg pic_flag_for_symtable= 4714ee3138f1Smrg case $host in 4715ee3138f1Smrg # compiling the symbol table file with pic_flag works around 4716ee3138f1Smrg # a FreeBSD bug that causes programs to crash when -lm is 4717ee3138f1Smrg # linked before any other PIC object. But we must not use 4718ee3138f1Smrg # pic_flag when linking with -static. The problem exists in 4719ee3138f1Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4720ee3138f1Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4721ee3138f1Smrg case "$compile_command " in 4722ee3138f1Smrg *" -static "*) ;; 4723ee3138f1Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4724ee3138f1Smrg esac;; 4725ee3138f1Smrg *-*-hpux*) 4726ee3138f1Smrg case "$compile_command " in 4727ee3138f1Smrg *" -static "*) ;; 4728ee3138f1Smrg *) pic_flag_for_symtable=" $pic_flag";; 4729ee3138f1Smrg esac 4730ee3138f1Smrg esac 4731ee3138f1Smrg 4732ee3138f1Smrg # Now compile the dynamic symbol file. 4733ee3138f1Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4734ee3138f1Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4735ee3138f1Smrg 4736ee3138f1Smrg # Clean up the generated files. 4737ee3138f1Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4738ee3138f1Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4739ee3138f1Smrg 4740ee3138f1Smrg # Transform the symbol file into the correct name. 4741ee3138f1Smrg case $host in 4742ee3138f1Smrg *cygwin* | *mingw* ) 4743ee3138f1Smrg if test -f "$output_objdir/${outputname}.def" ; then 4744ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4745ee3138f1Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4746ee3138f1Smrg else 4747ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4748ee3138f1Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4749ee3138f1Smrg fi 4750ee3138f1Smrg ;; 4751ee3138f1Smrg * ) 4752ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4753ee3138f1Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4754ee3138f1Smrg ;; 4755ee3138f1Smrg esac 4756ee3138f1Smrg ;; 4757ee3138f1Smrg *) 4758ee3138f1Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4759ee3138f1Smrg exit $EXIT_FAILURE 4760ee3138f1Smrg ;; 4761ee3138f1Smrg esac 4762ee3138f1Smrg else 4763ee3138f1Smrg # We keep going just in case the user didn't refer to 4764ee3138f1Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4765ee3138f1Smrg # really was required. 4766ee3138f1Smrg 4767ee3138f1Smrg # Nullify the symbol file. 4768ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4769ee3138f1Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4770ee3138f1Smrg fi 4771ee3138f1Smrg 4772ee3138f1Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4773ee3138f1Smrg # Replace the output file specification. 4774ee3138f1Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4775ee3138f1Smrg link_command="$compile_command$compile_rpath" 4776ee3138f1Smrg 4777ee3138f1Smrg # We have no uninstalled library dependencies, so finalize right now. 4778ee3138f1Smrg $show "$link_command" 4779ee3138f1Smrg $run eval "$link_command" 4780ee3138f1Smrg exit_status=$? 4781ee3138f1Smrg 4782ee3138f1Smrg # Delete the generated files. 4783ee3138f1Smrg if test -n "$dlsyms"; then 4784ee3138f1Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 4785ee3138f1Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 4786ee3138f1Smrg fi 4787ee3138f1Smrg 4788ee3138f1Smrg exit $exit_status 4789ee3138f1Smrg fi 4790ee3138f1Smrg 4791ee3138f1Smrg if test -n "$shlibpath_var"; then 4792ee3138f1Smrg # We should set the shlibpath_var 4793ee3138f1Smrg rpath= 4794ee3138f1Smrg for dir in $temp_rpath; do 4795ee3138f1Smrg case $dir in 4796ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) 4797ee3138f1Smrg # Absolute path. 4798ee3138f1Smrg rpath="$rpath$dir:" 4799ee3138f1Smrg ;; 4800ee3138f1Smrg *) 4801ee3138f1Smrg # Relative path: add a thisdir entry. 4802ee3138f1Smrg rpath="$rpath\$thisdir/$dir:" 4803ee3138f1Smrg ;; 4804ee3138f1Smrg esac 4805ee3138f1Smrg done 4806ee3138f1Smrg temp_rpath="$rpath" 4807ee3138f1Smrg fi 4808ee3138f1Smrg 4809ee3138f1Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4810ee3138f1Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4811ee3138f1Smrg fi 4812ee3138f1Smrg if test -n "$finalize_shlibpath"; then 4813ee3138f1Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4814ee3138f1Smrg fi 4815ee3138f1Smrg 4816ee3138f1Smrg compile_var= 4817ee3138f1Smrg finalize_var= 4818ee3138f1Smrg if test -n "$runpath_var"; then 4819ee3138f1Smrg if test -n "$perm_rpath"; then 4820ee3138f1Smrg # We should set the runpath_var. 4821ee3138f1Smrg rpath= 4822ee3138f1Smrg for dir in $perm_rpath; do 4823ee3138f1Smrg rpath="$rpath$dir:" 4824ee3138f1Smrg done 4825ee3138f1Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4826ee3138f1Smrg fi 4827ee3138f1Smrg if test -n "$finalize_perm_rpath"; then 4828ee3138f1Smrg # We should set the runpath_var. 4829ee3138f1Smrg rpath= 4830ee3138f1Smrg for dir in $finalize_perm_rpath; do 4831ee3138f1Smrg rpath="$rpath$dir:" 4832ee3138f1Smrg done 4833ee3138f1Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4834ee3138f1Smrg fi 4835ee3138f1Smrg fi 4836ee3138f1Smrg 4837ee3138f1Smrg if test "$no_install" = yes; then 4838ee3138f1Smrg # We don't need to create a wrapper script. 4839ee3138f1Smrg link_command="$compile_var$compile_command$compile_rpath" 4840ee3138f1Smrg # Replace the output file specification. 4841ee3138f1Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4842ee3138f1Smrg # Delete the old output file. 4843ee3138f1Smrg $run $rm $output 4844ee3138f1Smrg # Link the executable and exit 4845ee3138f1Smrg $show "$link_command" 4846ee3138f1Smrg $run eval "$link_command" || exit $? 4847ee3138f1Smrg exit $EXIT_SUCCESS 4848ee3138f1Smrg fi 4849ee3138f1Smrg 4850ee3138f1Smrg if test "$hardcode_action" = relink; then 4851ee3138f1Smrg # Fast installation is not supported 4852ee3138f1Smrg link_command="$compile_var$compile_command$compile_rpath" 4853ee3138f1Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4854ee3138f1Smrg 4855ee3138f1Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4856ee3138f1Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4857ee3138f1Smrg else 4858ee3138f1Smrg if test "$fast_install" != no; then 4859ee3138f1Smrg link_command="$finalize_var$compile_command$finalize_rpath" 4860ee3138f1Smrg if test "$fast_install" = yes; then 4861ee3138f1Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4862ee3138f1Smrg else 4863ee3138f1Smrg # fast_install is set to needless 4864ee3138f1Smrg relink_command= 4865ee3138f1Smrg fi 4866ee3138f1Smrg else 4867ee3138f1Smrg link_command="$compile_var$compile_command$compile_rpath" 4868ee3138f1Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4869ee3138f1Smrg fi 4870ee3138f1Smrg fi 4871ee3138f1Smrg 4872ee3138f1Smrg # Replace the output file specification. 4873ee3138f1Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4874ee3138f1Smrg 4875ee3138f1Smrg # Delete the old output files. 4876ee3138f1Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4877ee3138f1Smrg 4878ee3138f1Smrg $show "$link_command" 4879ee3138f1Smrg $run eval "$link_command" || exit $? 4880ee3138f1Smrg 4881ee3138f1Smrg # Now create the wrapper script. 4882ee3138f1Smrg $show "creating $output" 4883ee3138f1Smrg 4884ee3138f1Smrg # Quote the relink command for shipping. 4885ee3138f1Smrg if test -n "$relink_command"; then 4886ee3138f1Smrg # Preserve any variables that may affect compiler behavior 4887ee3138f1Smrg for var in $variables_saved_for_relink; do 4888ee3138f1Smrg if eval test -z \"\${$var+set}\"; then 4889ee3138f1Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4890ee3138f1Smrg elif eval var_value=\$$var; test -z "$var_value"; then 4891ee3138f1Smrg relink_command="$var=; export $var; $relink_command" 4892ee3138f1Smrg else 4893ee3138f1Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4894ee3138f1Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4895ee3138f1Smrg fi 4896ee3138f1Smrg done 4897ee3138f1Smrg relink_command="(cd `pwd`; $relink_command)" 4898ee3138f1Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4899ee3138f1Smrg fi 4900ee3138f1Smrg 4901ee3138f1Smrg # Quote $echo for shipping. 4902ee3138f1Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4903ee3138f1Smrg case $progpath in 4904ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4905ee3138f1Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4906ee3138f1Smrg esac 4907ee3138f1Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4908ee3138f1Smrg else 4909ee3138f1Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4910ee3138f1Smrg fi 4911ee3138f1Smrg 4912ee3138f1Smrg # Only actually do things if our run command is non-null. 4913ee3138f1Smrg if test -z "$run"; then 4914ee3138f1Smrg # win32 will think the script is a binary if it has 4915ee3138f1Smrg # a .exe suffix, so we strip it off here. 4916ee3138f1Smrg case $output in 4917ee3138f1Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4918ee3138f1Smrg esac 4919ee3138f1Smrg # test for cygwin because mv fails w/o .exe extensions 4920ee3138f1Smrg case $host in 4921ee3138f1Smrg *cygwin*) 4922ee3138f1Smrg exeext=.exe 4923ee3138f1Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4924ee3138f1Smrg *) exeext= ;; 4925ee3138f1Smrg esac 4926ee3138f1Smrg case $host in 4927ee3138f1Smrg *cygwin* | *mingw* ) 4928ee3138f1Smrg output_name=`basename $output` 4929ee3138f1Smrg output_path=`dirname $output` 4930ee3138f1Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4931ee3138f1Smrg cwrapper="$output_path/$output_name.exe" 4932ee3138f1Smrg $rm $cwrappersource $cwrapper 4933ee3138f1Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4934ee3138f1Smrg 4935ee3138f1Smrg cat > $cwrappersource <<EOF 4936ee3138f1Smrg 4937ee3138f1Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4938ee3138f1Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4939ee3138f1Smrg 4940ee3138f1Smrg The $output program cannot be directly executed until all the libtool 4941ee3138f1Smrg libraries that it depends on are installed. 4942ee3138f1Smrg 4943ee3138f1Smrg This wrapper executable should never be moved out of the build directory. 4944ee3138f1Smrg If it is, it will not operate correctly. 4945ee3138f1Smrg 4946ee3138f1Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4947ee3138f1Smrg but could eventually absorb all of the scripts functionality and 4948ee3138f1Smrg exec $objdir/$outputname directly. 4949ee3138f1Smrg*/ 4950ee3138f1SmrgEOF 4951ee3138f1Smrg cat >> $cwrappersource<<"EOF" 4952ee3138f1Smrg#include <stdio.h> 4953ee3138f1Smrg#include <stdlib.h> 4954ee3138f1Smrg#include <unistd.h> 4955ee3138f1Smrg#include <malloc.h> 4956ee3138f1Smrg#include <stdarg.h> 4957ee3138f1Smrg#include <assert.h> 4958ee3138f1Smrg#include <string.h> 4959ee3138f1Smrg#include <ctype.h> 4960ee3138f1Smrg#include <sys/stat.h> 4961ee3138f1Smrg 4962ee3138f1Smrg#if defined(PATH_MAX) 4963ee3138f1Smrg# define LT_PATHMAX PATH_MAX 4964ee3138f1Smrg#elif defined(MAXPATHLEN) 4965ee3138f1Smrg# define LT_PATHMAX MAXPATHLEN 4966ee3138f1Smrg#else 4967ee3138f1Smrg# define LT_PATHMAX 1024 4968ee3138f1Smrg#endif 4969ee3138f1Smrg 4970ee3138f1Smrg#ifndef DIR_SEPARATOR 4971ee3138f1Smrg# define DIR_SEPARATOR '/' 4972ee3138f1Smrg# define PATH_SEPARATOR ':' 4973ee3138f1Smrg#endif 4974ee3138f1Smrg 4975ee3138f1Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4976ee3138f1Smrg defined (__OS2__) 4977ee3138f1Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 4978ee3138f1Smrg# ifndef DIR_SEPARATOR_2 4979ee3138f1Smrg# define DIR_SEPARATOR_2 '\\' 4980ee3138f1Smrg# endif 4981ee3138f1Smrg# ifndef PATH_SEPARATOR_2 4982ee3138f1Smrg# define PATH_SEPARATOR_2 ';' 4983ee3138f1Smrg# endif 4984ee3138f1Smrg#endif 4985ee3138f1Smrg 4986ee3138f1Smrg#ifndef DIR_SEPARATOR_2 4987ee3138f1Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4988ee3138f1Smrg#else /* DIR_SEPARATOR_2 */ 4989ee3138f1Smrg# define IS_DIR_SEPARATOR(ch) \ 4990ee3138f1Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4991ee3138f1Smrg#endif /* DIR_SEPARATOR_2 */ 4992ee3138f1Smrg 4993ee3138f1Smrg#ifndef PATH_SEPARATOR_2 4994ee3138f1Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4995ee3138f1Smrg#else /* PATH_SEPARATOR_2 */ 4996ee3138f1Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4997ee3138f1Smrg#endif /* PATH_SEPARATOR_2 */ 4998ee3138f1Smrg 4999ee3138f1Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5000ee3138f1Smrg#define XFREE(stale) do { \ 5001ee3138f1Smrg if (stale) { free ((void *) stale); stale = 0; } \ 5002ee3138f1Smrg} while (0) 5003ee3138f1Smrg 5004ee3138f1Smrg/* -DDEBUG is fairly common in CFLAGS. */ 5005ee3138f1Smrg#undef DEBUG 5006ee3138f1Smrg#if defined DEBUGWRAPPER 5007ee3138f1Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5008ee3138f1Smrg#else 5009ee3138f1Smrg# define DEBUG(format, ...) 5010ee3138f1Smrg#endif 5011ee3138f1Smrg 5012ee3138f1Smrgconst char *program_name = NULL; 5013ee3138f1Smrg 5014ee3138f1Smrgvoid * xmalloc (size_t num); 5015ee3138f1Smrgchar * xstrdup (const char *string); 5016ee3138f1Smrgconst char * base_name (const char *name); 5017ee3138f1Smrgchar * find_executable(const char *wrapper); 5018ee3138f1Smrgint check_executable(const char *path); 5019ee3138f1Smrgchar * strendzap(char *str, const char *pat); 5020ee3138f1Smrgvoid lt_fatal (const char *message, ...); 5021ee3138f1Smrg 5022ee3138f1Smrgint 5023ee3138f1Smrgmain (int argc, char *argv[]) 5024ee3138f1Smrg{ 5025ee3138f1Smrg char **newargz; 5026ee3138f1Smrg int i; 5027ee3138f1Smrg 5028ee3138f1Smrg program_name = (char *) xstrdup (base_name (argv[0])); 5029ee3138f1Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5030ee3138f1Smrg DEBUG("(main) program_name : %s\n",program_name); 5031ee3138f1Smrg newargz = XMALLOC(char *, argc+2); 5032ee3138f1SmrgEOF 5033ee3138f1Smrg 5034ee3138f1Smrg cat >> $cwrappersource <<EOF 5035ee3138f1Smrg newargz[0] = (char *) xstrdup("$SHELL"); 5036ee3138f1SmrgEOF 5037ee3138f1Smrg 5038ee3138f1Smrg cat >> $cwrappersource <<"EOF" 5039ee3138f1Smrg newargz[1] = find_executable(argv[0]); 5040ee3138f1Smrg if (newargz[1] == NULL) 5041ee3138f1Smrg lt_fatal("Couldn't find %s", argv[0]); 5042ee3138f1Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5043ee3138f1Smrg /* we know the script has the same name, without the .exe */ 5044ee3138f1Smrg /* so make sure newargz[1] doesn't end in .exe */ 5045ee3138f1Smrg strendzap(newargz[1],".exe"); 5046ee3138f1Smrg for (i = 1; i < argc; i++) 5047ee3138f1Smrg newargz[i+1] = xstrdup(argv[i]); 5048ee3138f1Smrg newargz[argc+1] = NULL; 5049ee3138f1Smrg 5050ee3138f1Smrg for (i=0; i<argc+1; i++) 5051ee3138f1Smrg { 5052ee3138f1Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5053ee3138f1Smrg ; 5054ee3138f1Smrg } 5055ee3138f1Smrg 5056ee3138f1SmrgEOF 5057ee3138f1Smrg 5058ee3138f1Smrg case $host_os in 5059ee3138f1Smrg mingw*) 5060ee3138f1Smrg cat >> $cwrappersource <<EOF 5061ee3138f1Smrg execv("$SHELL",(char const **)newargz); 5062ee3138f1SmrgEOF 5063ee3138f1Smrg ;; 5064ee3138f1Smrg *) 5065ee3138f1Smrg cat >> $cwrappersource <<EOF 5066ee3138f1Smrg execv("$SHELL",newargz); 5067ee3138f1SmrgEOF 5068ee3138f1Smrg ;; 5069ee3138f1Smrg esac 5070ee3138f1Smrg 5071ee3138f1Smrg cat >> $cwrappersource <<"EOF" 5072ee3138f1Smrg return 127; 5073ee3138f1Smrg} 5074ee3138f1Smrg 5075ee3138f1Smrgvoid * 5076ee3138f1Smrgxmalloc (size_t num) 5077ee3138f1Smrg{ 5078ee3138f1Smrg void * p = (void *) malloc (num); 5079ee3138f1Smrg if (!p) 5080ee3138f1Smrg lt_fatal ("Memory exhausted"); 5081ee3138f1Smrg 5082ee3138f1Smrg return p; 5083ee3138f1Smrg} 5084ee3138f1Smrg 5085ee3138f1Smrgchar * 5086ee3138f1Smrgxstrdup (const char *string) 5087ee3138f1Smrg{ 5088ee3138f1Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5089ee3138f1Smrg; 5090ee3138f1Smrg} 5091ee3138f1Smrg 5092ee3138f1Smrgconst char * 5093ee3138f1Smrgbase_name (const char *name) 5094ee3138f1Smrg{ 5095ee3138f1Smrg const char *base; 5096ee3138f1Smrg 5097ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5098ee3138f1Smrg /* Skip over the disk name in MSDOS pathnames. */ 5099ee3138f1Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5100ee3138f1Smrg name += 2; 5101ee3138f1Smrg#endif 5102ee3138f1Smrg 5103ee3138f1Smrg for (base = name; *name; name++) 5104ee3138f1Smrg if (IS_DIR_SEPARATOR (*name)) 5105ee3138f1Smrg base = name + 1; 5106ee3138f1Smrg return base; 5107ee3138f1Smrg} 5108ee3138f1Smrg 5109ee3138f1Smrgint 5110ee3138f1Smrgcheck_executable(const char * path) 5111ee3138f1Smrg{ 5112ee3138f1Smrg struct stat st; 5113ee3138f1Smrg 5114ee3138f1Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5115ee3138f1Smrg if ((!path) || (!*path)) 5116ee3138f1Smrg return 0; 5117ee3138f1Smrg 5118ee3138f1Smrg if ((stat (path, &st) >= 0) && 5119ee3138f1Smrg ( 5120ee3138f1Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5121ee3138f1Smrg#if defined (S_IXOTH) 5122ee3138f1Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5123ee3138f1Smrg#endif 5124ee3138f1Smrg#if defined (S_IXGRP) 5125ee3138f1Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5126ee3138f1Smrg#endif 5127ee3138f1Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5128ee3138f1Smrg ) 5129ee3138f1Smrg return 1; 5130ee3138f1Smrg else 5131ee3138f1Smrg return 0; 5132ee3138f1Smrg} 5133ee3138f1Smrg 5134ee3138f1Smrg/* Searches for the full path of the wrapper. Returns 5135ee3138f1Smrg newly allocated full path name if found, NULL otherwise */ 5136ee3138f1Smrgchar * 5137ee3138f1Smrgfind_executable (const char* wrapper) 5138ee3138f1Smrg{ 5139ee3138f1Smrg int has_slash = 0; 5140ee3138f1Smrg const char* p; 5141ee3138f1Smrg const char* p_next; 5142ee3138f1Smrg /* static buffer for getcwd */ 5143ee3138f1Smrg char tmp[LT_PATHMAX + 1]; 5144ee3138f1Smrg int tmp_len; 5145ee3138f1Smrg char* concat_name; 5146ee3138f1Smrg 5147ee3138f1Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5148ee3138f1Smrg 5149ee3138f1Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 5150ee3138f1Smrg return NULL; 5151ee3138f1Smrg 5152ee3138f1Smrg /* Absolute path? */ 5153ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5154ee3138f1Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5155ee3138f1Smrg { 5156ee3138f1Smrg concat_name = xstrdup (wrapper); 5157ee3138f1Smrg if (check_executable(concat_name)) 5158ee3138f1Smrg return concat_name; 5159ee3138f1Smrg XFREE(concat_name); 5160ee3138f1Smrg } 5161ee3138f1Smrg else 5162ee3138f1Smrg { 5163ee3138f1Smrg#endif 5164ee3138f1Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 5165ee3138f1Smrg { 5166ee3138f1Smrg concat_name = xstrdup (wrapper); 5167ee3138f1Smrg if (check_executable(concat_name)) 5168ee3138f1Smrg return concat_name; 5169ee3138f1Smrg XFREE(concat_name); 5170ee3138f1Smrg } 5171ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5172ee3138f1Smrg } 5173ee3138f1Smrg#endif 5174ee3138f1Smrg 5175ee3138f1Smrg for (p = wrapper; *p; p++) 5176ee3138f1Smrg if (*p == '/') 5177ee3138f1Smrg { 5178ee3138f1Smrg has_slash = 1; 5179ee3138f1Smrg break; 5180ee3138f1Smrg } 5181ee3138f1Smrg if (!has_slash) 5182ee3138f1Smrg { 5183ee3138f1Smrg /* no slashes; search PATH */ 5184ee3138f1Smrg const char* path = getenv ("PATH"); 5185ee3138f1Smrg if (path != NULL) 5186ee3138f1Smrg { 5187ee3138f1Smrg for (p = path; *p; p = p_next) 5188ee3138f1Smrg { 5189ee3138f1Smrg const char* q; 5190ee3138f1Smrg size_t p_len; 5191ee3138f1Smrg for (q = p; *q; q++) 5192ee3138f1Smrg if (IS_PATH_SEPARATOR(*q)) 5193ee3138f1Smrg break; 5194ee3138f1Smrg p_len = q - p; 5195ee3138f1Smrg p_next = (*q == '\0' ? q : q + 1); 5196ee3138f1Smrg if (p_len == 0) 5197ee3138f1Smrg { 5198ee3138f1Smrg /* empty path: current directory */ 5199ee3138f1Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5200ee3138f1Smrg lt_fatal ("getcwd failed"); 5201ee3138f1Smrg tmp_len = strlen(tmp); 5202ee3138f1Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5203ee3138f1Smrg memcpy (concat_name, tmp, tmp_len); 5204ee3138f1Smrg concat_name[tmp_len] = '/'; 5205ee3138f1Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5206ee3138f1Smrg } 5207ee3138f1Smrg else 5208ee3138f1Smrg { 5209ee3138f1Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5210ee3138f1Smrg memcpy (concat_name, p, p_len); 5211ee3138f1Smrg concat_name[p_len] = '/'; 5212ee3138f1Smrg strcpy (concat_name + p_len + 1, wrapper); 5213ee3138f1Smrg } 5214ee3138f1Smrg if (check_executable(concat_name)) 5215ee3138f1Smrg return concat_name; 5216ee3138f1Smrg XFREE(concat_name); 5217ee3138f1Smrg } 5218ee3138f1Smrg } 5219ee3138f1Smrg /* not found in PATH; assume curdir */ 5220ee3138f1Smrg } 5221ee3138f1Smrg /* Relative path | not found in path: prepend cwd */ 5222ee3138f1Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5223ee3138f1Smrg lt_fatal ("getcwd failed"); 5224ee3138f1Smrg tmp_len = strlen(tmp); 5225ee3138f1Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5226ee3138f1Smrg memcpy (concat_name, tmp, tmp_len); 5227ee3138f1Smrg concat_name[tmp_len] = '/'; 5228ee3138f1Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5229ee3138f1Smrg 5230ee3138f1Smrg if (check_executable(concat_name)) 5231ee3138f1Smrg return concat_name; 5232ee3138f1Smrg XFREE(concat_name); 5233ee3138f1Smrg return NULL; 5234ee3138f1Smrg} 5235ee3138f1Smrg 5236ee3138f1Smrgchar * 5237ee3138f1Smrgstrendzap(char *str, const char *pat) 5238ee3138f1Smrg{ 5239ee3138f1Smrg size_t len, patlen; 5240ee3138f1Smrg 5241ee3138f1Smrg assert(str != NULL); 5242ee3138f1Smrg assert(pat != NULL); 5243ee3138f1Smrg 5244ee3138f1Smrg len = strlen(str); 5245ee3138f1Smrg patlen = strlen(pat); 5246ee3138f1Smrg 5247ee3138f1Smrg if (patlen <= len) 5248ee3138f1Smrg { 5249ee3138f1Smrg str += len - patlen; 5250ee3138f1Smrg if (strcmp(str, pat) == 0) 5251ee3138f1Smrg *str = '\0'; 5252ee3138f1Smrg } 5253ee3138f1Smrg return str; 5254ee3138f1Smrg} 5255ee3138f1Smrg 5256ee3138f1Smrgstatic void 5257ee3138f1Smrglt_error_core (int exit_status, const char * mode, 5258ee3138f1Smrg const char * message, va_list ap) 5259ee3138f1Smrg{ 5260ee3138f1Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 5261ee3138f1Smrg vfprintf (stderr, message, ap); 5262ee3138f1Smrg fprintf (stderr, ".\n"); 5263ee3138f1Smrg 5264ee3138f1Smrg if (exit_status >= 0) 5265ee3138f1Smrg exit (exit_status); 5266ee3138f1Smrg} 5267ee3138f1Smrg 5268ee3138f1Smrgvoid 5269ee3138f1Smrglt_fatal (const char *message, ...) 5270ee3138f1Smrg{ 5271ee3138f1Smrg va_list ap; 5272ee3138f1Smrg va_start (ap, message); 5273ee3138f1Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5274ee3138f1Smrg va_end (ap); 5275ee3138f1Smrg} 5276ee3138f1SmrgEOF 5277ee3138f1Smrg # we should really use a build-platform specific compiler 5278ee3138f1Smrg # here, but OTOH, the wrappers (shell script and this C one) 5279ee3138f1Smrg # are only useful if you want to execute the "real" binary. 5280ee3138f1Smrg # Since the "real" binary is built for $host, then this 5281ee3138f1Smrg # wrapper might as well be built for $host, too. 5282ee3138f1Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5283ee3138f1Smrg ;; 5284ee3138f1Smrg esac 5285ee3138f1Smrg $rm $output 5286ee3138f1Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5287ee3138f1Smrg 5288ee3138f1Smrg $echo > $output "\ 5289ee3138f1Smrg#! $SHELL 5290ee3138f1Smrg 5291ee3138f1Smrg# $output - temporary wrapper script for $objdir/$outputname 5292ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5293ee3138f1Smrg# 5294ee3138f1Smrg# The $output program cannot be directly executed until all the libtool 5295ee3138f1Smrg# libraries that it depends on are installed. 5296ee3138f1Smrg# 5297ee3138f1Smrg# This wrapper script should never be moved out of the build directory. 5298ee3138f1Smrg# If it is, it will not operate correctly. 5299ee3138f1Smrg 5300ee3138f1Smrg# Sed substitution that helps us do robust quoting. It backslashifies 5301ee3138f1Smrg# metacharacters that are still active within double-quoted strings. 5302ee3138f1SmrgXsed='${SED} -e 1s/^X//' 5303ee3138f1Smrgsed_quote_subst='$sed_quote_subst' 5304ee3138f1Smrg 5305ee3138f1Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5306ee3138f1Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5307ee3138f1Smrg emulate sh 5308ee3138f1Smrg NULLCMD=: 5309ee3138f1Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5310ee3138f1Smrg # is contrary to our usage. Disable this feature. 5311ee3138f1Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5312ee3138f1Smrg setopt NO_GLOB_SUBST 5313ee3138f1Smrgelse 5314ee3138f1Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5315ee3138f1Smrgfi 5316ee3138f1SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5317ee3138f1SmrgDUALCASE=1; export DUALCASE # for MKS sh 5318ee3138f1Smrg 5319ee3138f1Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5320ee3138f1Smrg# if CDPATH is set. 5321ee3138f1Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5322ee3138f1Smrg 5323ee3138f1Smrgrelink_command=\"$relink_command\" 5324ee3138f1Smrg 5325ee3138f1Smrg# This environment variable determines our operation mode. 5326ee3138f1Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5327ee3138f1Smrg # install mode needs the following variable: 5328ee3138f1Smrg notinst_deplibs='$notinst_deplibs' 5329ee3138f1Smrgelse 5330ee3138f1Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 5331ee3138f1Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5332ee3138f1Smrg echo=\"$qecho\" 5333ee3138f1Smrg file=\"\$0\" 5334ee3138f1Smrg # Make sure echo works. 5335ee3138f1Smrg if test \"X\$1\" = X--no-reexec; then 5336ee3138f1Smrg # Discard the --no-reexec flag, and continue. 5337ee3138f1Smrg shift 5338ee3138f1Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5339ee3138f1Smrg # Yippee, \$echo works! 5340ee3138f1Smrg : 5341ee3138f1Smrg else 5342ee3138f1Smrg # Restart under the correct shell, and then maybe \$echo will work. 5343ee3138f1Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5344ee3138f1Smrg fi 5345ee3138f1Smrg fi\ 5346ee3138f1Smrg" 5347ee3138f1Smrg $echo >> $output "\ 5348ee3138f1Smrg 5349ee3138f1Smrg # Find the directory that this script lives in. 5350ee3138f1Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5351ee3138f1Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5352ee3138f1Smrg 5353ee3138f1Smrg # Follow symbolic links until we get to the real thisdir. 5354ee3138f1Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5355ee3138f1Smrg while test -n \"\$file\"; do 5356ee3138f1Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5357ee3138f1Smrg 5358ee3138f1Smrg # If there was a directory component, then change thisdir. 5359ee3138f1Smrg if test \"x\$destdir\" != \"x\$file\"; then 5360ee3138f1Smrg case \"\$destdir\" in 5361ee3138f1Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5362ee3138f1Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5363ee3138f1Smrg esac 5364ee3138f1Smrg fi 5365ee3138f1Smrg 5366ee3138f1Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5367ee3138f1Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5368ee3138f1Smrg done 5369ee3138f1Smrg 5370ee3138f1Smrg # Try to get the absolute directory name. 5371ee3138f1Smrg absdir=\`cd \"\$thisdir\" && pwd\` 5372ee3138f1Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5373ee3138f1Smrg" 5374ee3138f1Smrg 5375ee3138f1Smrg if test "$fast_install" = yes; then 5376ee3138f1Smrg $echo >> $output "\ 5377ee3138f1Smrg program=lt-'$outputname'$exeext 5378ee3138f1Smrg progdir=\"\$thisdir/$objdir\" 5379ee3138f1Smrg 5380ee3138f1Smrg if test ! -f \"\$progdir/\$program\" || \\ 5381ee3138f1Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5382ee3138f1Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5383ee3138f1Smrg 5384ee3138f1Smrg file=\"\$\$-\$program\" 5385ee3138f1Smrg 5386ee3138f1Smrg if test ! -d \"\$progdir\"; then 5387ee3138f1Smrg $mkdir \"\$progdir\" 5388ee3138f1Smrg else 5389ee3138f1Smrg $rm \"\$progdir/\$file\" 5390ee3138f1Smrg fi" 5391ee3138f1Smrg 5392ee3138f1Smrg $echo >> $output "\ 5393ee3138f1Smrg 5394ee3138f1Smrg # relink executable if necessary 5395ee3138f1Smrg if test -n \"\$relink_command\"; then 5396ee3138f1Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5397ee3138f1Smrg else 5398ee3138f1Smrg $echo \"\$relink_command_output\" >&2 5399ee3138f1Smrg $rm \"\$progdir/\$file\" 5400ee3138f1Smrg exit $EXIT_FAILURE 5401ee3138f1Smrg fi 5402ee3138f1Smrg fi 5403ee3138f1Smrg 5404ee3138f1Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5405ee3138f1Smrg { $rm \"\$progdir/\$program\"; 5406ee3138f1Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5407ee3138f1Smrg $rm \"\$progdir/\$file\" 5408ee3138f1Smrg fi" 5409ee3138f1Smrg else 5410ee3138f1Smrg $echo >> $output "\ 5411ee3138f1Smrg program='$outputname' 5412ee3138f1Smrg progdir=\"\$thisdir/$objdir\" 5413ee3138f1Smrg" 5414ee3138f1Smrg fi 5415ee3138f1Smrg 5416ee3138f1Smrg $echo >> $output "\ 5417ee3138f1Smrg 5418ee3138f1Smrg if test -f \"\$progdir/\$program\"; then" 5419ee3138f1Smrg 5420ee3138f1Smrg # Export our shlibpath_var if we have one. 5421ee3138f1Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5422ee3138f1Smrg $echo >> $output "\ 5423ee3138f1Smrg # Add our own library path to $shlibpath_var 5424ee3138f1Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5425ee3138f1Smrg 5426ee3138f1Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 5427ee3138f1Smrg # The second colon is a workaround for a bug in BeOS R4 sed 5428ee3138f1Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5429ee3138f1Smrg 5430ee3138f1Smrg export $shlibpath_var 5431ee3138f1Smrg" 5432ee3138f1Smrg fi 5433ee3138f1Smrg 5434ee3138f1Smrg # fixup the dll searchpath if we need to. 5435ee3138f1Smrg if test -n "$dllsearchpath"; then 5436ee3138f1Smrg $echo >> $output "\ 5437ee3138f1Smrg # Add the dll search path components to the executable PATH 5438ee3138f1Smrg PATH=$dllsearchpath:\$PATH 5439ee3138f1Smrg" 5440ee3138f1Smrg fi 5441ee3138f1Smrg 5442ee3138f1Smrg $echo >> $output "\ 5443ee3138f1Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5444ee3138f1Smrg # Run the actual program with our arguments. 5445ee3138f1Smrg" 5446ee3138f1Smrg case $host in 5447ee3138f1Smrg # Backslashes separate directories on plain windows 5448ee3138f1Smrg *-*-mingw | *-*-os2*) 5449ee3138f1Smrg $echo >> $output "\ 5450ee3138f1Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5451ee3138f1Smrg" 5452ee3138f1Smrg ;; 5453ee3138f1Smrg 5454ee3138f1Smrg *) 5455ee3138f1Smrg $echo >> $output "\ 5456ee3138f1Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5457ee3138f1Smrg" 5458ee3138f1Smrg ;; 5459ee3138f1Smrg esac 5460ee3138f1Smrg $echo >> $output "\ 5461ee3138f1Smrg \$echo \"\$0: cannot exec \$program \$*\" 5462ee3138f1Smrg exit $EXIT_FAILURE 5463ee3138f1Smrg fi 5464ee3138f1Smrg else 5465ee3138f1Smrg # The program doesn't exist. 5466ee3138f1Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5467ee3138f1Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5468ee3138f1Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5469ee3138f1Smrg exit $EXIT_FAILURE 5470ee3138f1Smrg fi 5471ee3138f1Smrgfi\ 5472ee3138f1Smrg" 5473ee3138f1Smrg chmod +x $output 5474ee3138f1Smrg fi 5475ee3138f1Smrg exit $EXIT_SUCCESS 5476ee3138f1Smrg ;; 5477ee3138f1Smrg esac 5478ee3138f1Smrg 5479ee3138f1Smrg # See if we need to build an old-fashioned archive. 5480ee3138f1Smrg for oldlib in $oldlibs; do 5481ee3138f1Smrg 5482ee3138f1Smrg if test "$build_libtool_libs" = convenience; then 5483ee3138f1Smrg oldobjs="$libobjs_save" 5484ee3138f1Smrg addlibs="$convenience" 5485ee3138f1Smrg build_libtool_libs=no 5486ee3138f1Smrg else 5487ee3138f1Smrg if test "$build_libtool_libs" = module; then 5488ee3138f1Smrg oldobjs="$libobjs_save" 5489ee3138f1Smrg build_libtool_libs=no 5490ee3138f1Smrg else 5491ee3138f1Smrg oldobjs="$old_deplibs $non_pic_objects" 5492ee3138f1Smrg fi 5493ee3138f1Smrg addlibs="$old_convenience" 5494ee3138f1Smrg fi 5495ee3138f1Smrg 5496ee3138f1Smrg if test -n "$addlibs"; then 5497ee3138f1Smrg gentop="$output_objdir/${outputname}x" 5498ee3138f1Smrg generated="$generated $gentop" 5499ee3138f1Smrg 5500ee3138f1Smrg func_extract_archives $gentop $addlibs 5501ee3138f1Smrg oldobjs="$oldobjs $func_extract_archives_result" 5502ee3138f1Smrg fi 5503ee3138f1Smrg 5504ee3138f1Smrg # Do each command in the archive commands. 5505ee3138f1Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5506ee3138f1Smrg cmds=$old_archive_from_new_cmds 5507ee3138f1Smrg else 5508ee3138f1Smrg # POSIX demands no paths to be encoded in archives. We have 5509ee3138f1Smrg # to avoid creating archives with duplicate basenames if we 5510ee3138f1Smrg # might have to extract them afterwards, e.g., when creating a 5511ee3138f1Smrg # static archive out of a convenience library, or when linking 5512ee3138f1Smrg # the entirety of a libtool archive into another (currently 5513ee3138f1Smrg # not supported by libtool). 5514ee3138f1Smrg if (for obj in $oldobjs 5515ee3138f1Smrg do 5516ee3138f1Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5517ee3138f1Smrg done | sort | sort -uc >/dev/null 2>&1); then 5518ee3138f1Smrg : 5519ee3138f1Smrg else 5520ee3138f1Smrg $echo "copying selected object files to avoid basename conflicts..." 5521ee3138f1Smrg 5522ee3138f1Smrg if test -z "$gentop"; then 5523ee3138f1Smrg gentop="$output_objdir/${outputname}x" 5524ee3138f1Smrg generated="$generated $gentop" 5525ee3138f1Smrg 5526ee3138f1Smrg $show "${rm}r $gentop" 5527ee3138f1Smrg $run ${rm}r "$gentop" 5528ee3138f1Smrg $show "$mkdir $gentop" 5529ee3138f1Smrg $run $mkdir "$gentop" 5530ee3138f1Smrg exit_status=$? 5531ee3138f1Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5532ee3138f1Smrg exit $exit_status 5533ee3138f1Smrg fi 5534ee3138f1Smrg fi 5535ee3138f1Smrg 5536ee3138f1Smrg save_oldobjs=$oldobjs 5537ee3138f1Smrg oldobjs= 5538ee3138f1Smrg counter=1 5539ee3138f1Smrg for obj in $save_oldobjs 5540ee3138f1Smrg do 5541ee3138f1Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5542ee3138f1Smrg case " $oldobjs " in 5543ee3138f1Smrg " ") oldobjs=$obj ;; 5544ee3138f1Smrg *[\ /]"$objbase "*) 5545ee3138f1Smrg while :; do 5546ee3138f1Smrg # Make sure we don't pick an alternate name that also 5547ee3138f1Smrg # overlaps. 5548ee3138f1Smrg newobj=lt$counter-$objbase 5549ee3138f1Smrg counter=`expr $counter + 1` 5550ee3138f1Smrg case " $oldobjs " in 5551ee3138f1Smrg *[\ /]"$newobj "*) ;; 5552ee3138f1Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5553ee3138f1Smrg esac 5554ee3138f1Smrg done 5555ee3138f1Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5556ee3138f1Smrg $run ln "$obj" "$gentop/$newobj" || 5557ee3138f1Smrg $run cp "$obj" "$gentop/$newobj" 5558ee3138f1Smrg oldobjs="$oldobjs $gentop/$newobj" 5559ee3138f1Smrg ;; 5560ee3138f1Smrg *) oldobjs="$oldobjs $obj" ;; 5561ee3138f1Smrg esac 5562ee3138f1Smrg done 5563ee3138f1Smrg fi 5564ee3138f1Smrg 5565ee3138f1Smrg eval cmds=\"$old_archive_cmds\" 5566ee3138f1Smrg 5567ee3138f1Smrg if len=`expr "X$cmds" : ".*"` && 5568ee3138f1Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5569ee3138f1Smrg cmds=$old_archive_cmds 5570ee3138f1Smrg else 5571ee3138f1Smrg # the command line is too long to link in one step, link in parts 5572ee3138f1Smrg $echo "using piecewise archive linking..." 5573ee3138f1Smrg save_RANLIB=$RANLIB 5574ee3138f1Smrg RANLIB=: 5575ee3138f1Smrg objlist= 5576ee3138f1Smrg concat_cmds= 5577ee3138f1Smrg save_oldobjs=$oldobjs 5578ee3138f1Smrg 5579ee3138f1Smrg # Is there a better way of finding the last object in the list? 5580ee3138f1Smrg for obj in $save_oldobjs 5581ee3138f1Smrg do 5582ee3138f1Smrg last_oldobj=$obj 5583ee3138f1Smrg done 5584ee3138f1Smrg for obj in $save_oldobjs 5585ee3138f1Smrg do 5586ee3138f1Smrg oldobjs="$objlist $obj" 5587ee3138f1Smrg objlist="$objlist $obj" 5588ee3138f1Smrg eval test_cmds=\"$old_archive_cmds\" 5589ee3138f1Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5590ee3138f1Smrg test "$len" -le "$max_cmd_len"; then 5591ee3138f1Smrg : 5592ee3138f1Smrg else 5593ee3138f1Smrg # the above command should be used before it gets too long 5594ee3138f1Smrg oldobjs=$objlist 5595ee3138f1Smrg if test "$obj" = "$last_oldobj" ; then 5596ee3138f1Smrg RANLIB=$save_RANLIB 5597ee3138f1Smrg fi 5598ee3138f1Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5599ee3138f1Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5600ee3138f1Smrg objlist= 5601ee3138f1Smrg fi 5602ee3138f1Smrg done 5603ee3138f1Smrg RANLIB=$save_RANLIB 5604ee3138f1Smrg oldobjs=$objlist 5605ee3138f1Smrg if test "X$oldobjs" = "X" ; then 5606ee3138f1Smrg eval cmds=\"\$concat_cmds\" 5607ee3138f1Smrg else 5608ee3138f1Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5609ee3138f1Smrg fi 5610ee3138f1Smrg fi 5611ee3138f1Smrg fi 5612ee3138f1Smrg save_ifs="$IFS"; IFS='~' 5613ee3138f1Smrg for cmd in $cmds; do 5614ee3138f1Smrg eval cmd=\"$cmd\" 5615ee3138f1Smrg IFS="$save_ifs" 5616ee3138f1Smrg $show "$cmd" 5617ee3138f1Smrg $run eval "$cmd" || exit $? 5618ee3138f1Smrg done 5619ee3138f1Smrg IFS="$save_ifs" 5620ee3138f1Smrg done 5621ee3138f1Smrg 5622ee3138f1Smrg if test -n "$generated"; then 5623ee3138f1Smrg $show "${rm}r$generated" 5624ee3138f1Smrg $run ${rm}r$generated 5625ee3138f1Smrg fi 5626ee3138f1Smrg 5627ee3138f1Smrg # Now create the libtool archive. 5628ee3138f1Smrg case $output in 5629ee3138f1Smrg *.la) 5630ee3138f1Smrg old_library= 5631ee3138f1Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5632ee3138f1Smrg $show "creating $output" 5633ee3138f1Smrg 5634ee3138f1Smrg # Preserve any variables that may affect compiler behavior 5635ee3138f1Smrg for var in $variables_saved_for_relink; do 5636ee3138f1Smrg if eval test -z \"\${$var+set}\"; then 5637ee3138f1Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5638ee3138f1Smrg elif eval var_value=\$$var; test -z "$var_value"; then 5639ee3138f1Smrg relink_command="$var=; export $var; $relink_command" 5640ee3138f1Smrg else 5641ee3138f1Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5642ee3138f1Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 5643ee3138f1Smrg fi 5644ee3138f1Smrg done 5645ee3138f1Smrg # Quote the link command for shipping. 5646ee3138f1Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5647ee3138f1Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5648ee3138f1Smrg if test "$hardcode_automatic" = yes ; then 5649ee3138f1Smrg relink_command= 5650ee3138f1Smrg fi 5651ee3138f1Smrg 5652ee3138f1Smrg 5653ee3138f1Smrg # Only create the output if not a dry run. 5654ee3138f1Smrg if test -z "$run"; then 5655ee3138f1Smrg for installed in no yes; do 5656ee3138f1Smrg if test "$installed" = yes; then 5657ee3138f1Smrg if test -z "$install_libdir"; then 5658ee3138f1Smrg break 5659ee3138f1Smrg fi 5660ee3138f1Smrg output="$output_objdir/$outputname"i 5661ee3138f1Smrg # Replace all uninstalled libtool libraries with the installed ones 5662ee3138f1Smrg newdependency_libs= 5663ee3138f1Smrg for deplib in $dependency_libs; do 5664ee3138f1Smrg case $deplib in 5665ee3138f1Smrg *.la) 5666ee3138f1Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5667ee3138f1Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5668ee3138f1Smrg if test -z "$libdir"; then 5669ee3138f1Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5670ee3138f1Smrg exit $EXIT_FAILURE 5671ee3138f1Smrg fi 5672ee3138f1Smrg newdependency_libs="$newdependency_libs $libdir/$name" 5673ee3138f1Smrg ;; 5674ee3138f1Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5675ee3138f1Smrg esac 5676ee3138f1Smrg done 5677ee3138f1Smrg dependency_libs="$newdependency_libs" 5678ee3138f1Smrg newdlfiles= 5679ee3138f1Smrg for lib in $dlfiles; do 5680ee3138f1Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5681ee3138f1Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5682ee3138f1Smrg if test -z "$libdir"; then 5683ee3138f1Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5684ee3138f1Smrg exit $EXIT_FAILURE 5685ee3138f1Smrg fi 5686ee3138f1Smrg newdlfiles="$newdlfiles $libdir/$name" 5687ee3138f1Smrg done 5688ee3138f1Smrg dlfiles="$newdlfiles" 5689ee3138f1Smrg newdlprefiles= 5690ee3138f1Smrg for lib in $dlprefiles; do 5691ee3138f1Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5692ee3138f1Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5693ee3138f1Smrg if test -z "$libdir"; then 5694ee3138f1Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5695ee3138f1Smrg exit $EXIT_FAILURE 5696ee3138f1Smrg fi 5697ee3138f1Smrg newdlprefiles="$newdlprefiles $libdir/$name" 5698ee3138f1Smrg done 5699ee3138f1Smrg dlprefiles="$newdlprefiles" 5700ee3138f1Smrg else 5701ee3138f1Smrg newdlfiles= 5702ee3138f1Smrg for lib in $dlfiles; do 5703ee3138f1Smrg case $lib in 5704ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5705ee3138f1Smrg *) abs=`pwd`"/$lib" ;; 5706ee3138f1Smrg esac 5707ee3138f1Smrg newdlfiles="$newdlfiles $abs" 5708ee3138f1Smrg done 5709ee3138f1Smrg dlfiles="$newdlfiles" 5710ee3138f1Smrg newdlprefiles= 5711ee3138f1Smrg for lib in $dlprefiles; do 5712ee3138f1Smrg case $lib in 5713ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5714ee3138f1Smrg *) abs=`pwd`"/$lib" ;; 5715ee3138f1Smrg esac 5716ee3138f1Smrg newdlprefiles="$newdlprefiles $abs" 5717ee3138f1Smrg done 5718ee3138f1Smrg dlprefiles="$newdlprefiles" 5719ee3138f1Smrg fi 5720ee3138f1Smrg $rm $output 5721ee3138f1Smrg # place dlname in correct position for cygwin 5722ee3138f1Smrg tdlname=$dlname 5723ee3138f1Smrg case $host,$output,$installed,$module,$dlname in 5724ee3138f1Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5725ee3138f1Smrg esac 5726ee3138f1Smrg $echo > $output "\ 5727ee3138f1Smrg# $outputname - a libtool library file 5728ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5729ee3138f1Smrg# 5730ee3138f1Smrg# Please DO NOT delete this file! 5731ee3138f1Smrg# It is necessary for linking the library. 5732ee3138f1Smrg 5733ee3138f1Smrg# The name that we can dlopen(3). 5734ee3138f1Smrgdlname='$tdlname' 5735ee3138f1Smrg 5736ee3138f1Smrg# Names of this library. 5737ee3138f1Smrglibrary_names='$library_names' 5738ee3138f1Smrg 5739ee3138f1Smrg# The name of the static archive. 5740ee3138f1Smrgold_library='$old_library' 5741ee3138f1Smrg 5742ee3138f1Smrg# Libraries that this one depends upon. 5743ee3138f1Smrgdependency_libs='$dependency_libs' 5744ee3138f1Smrg 5745ee3138f1Smrg# Version information for $libname. 5746ee3138f1Smrgcurrent=$current 5747ee3138f1Smrgage=$age 5748ee3138f1Smrgrevision=$revision 5749ee3138f1Smrg 5750ee3138f1Smrg# Is this an already installed library? 5751ee3138f1Smrginstalled=$installed 5752ee3138f1Smrg 5753ee3138f1Smrg# Should we warn about portability when linking against -modules? 5754ee3138f1Smrgshouldnotlink=$module 5755ee3138f1Smrg 5756ee3138f1Smrg# Files to dlopen/dlpreopen 5757ee3138f1Smrgdlopen='$dlfiles' 5758ee3138f1Smrgdlpreopen='$dlprefiles' 5759ee3138f1Smrg 5760ee3138f1Smrg# Directory that this library needs to be installed in: 5761ee3138f1Smrglibdir='$install_libdir'" 5762ee3138f1Smrg if test "$installed" = no && test "$need_relink" = yes; then 5763ee3138f1Smrg $echo >> $output "\ 5764ee3138f1Smrgrelink_command=\"$relink_command\"" 5765ee3138f1Smrg fi 5766ee3138f1Smrg done 5767ee3138f1Smrg fi 5768ee3138f1Smrg 5769ee3138f1Smrg # Do a symbolic link so that the libtool archive can be found in 5770ee3138f1Smrg # LD_LIBRARY_PATH before the program is installed. 5771ee3138f1Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5772ee3138f1Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5773ee3138f1Smrg ;; 5774ee3138f1Smrg esac 5775ee3138f1Smrg exit $EXIT_SUCCESS 5776ee3138f1Smrg ;; 5777ee3138f1Smrg 5778ee3138f1Smrg # libtool install mode 5779ee3138f1Smrg install) 5780ee3138f1Smrg modename="$modename: install" 5781ee3138f1Smrg 5782ee3138f1Smrg # There may be an optional sh(1) argument at the beginning of 5783ee3138f1Smrg # install_prog (especially on Windows NT). 5784ee3138f1Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5785ee3138f1Smrg # Allow the use of GNU shtool's install command. 5786ee3138f1Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 5787ee3138f1Smrg # Aesthetically quote it. 5788ee3138f1Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5789ee3138f1Smrg case $arg in 5790ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5791ee3138f1Smrg arg="\"$arg\"" 5792ee3138f1Smrg ;; 5793ee3138f1Smrg esac 5794ee3138f1Smrg install_prog="$arg " 5795ee3138f1Smrg arg="$1" 5796ee3138f1Smrg shift 5797ee3138f1Smrg else 5798ee3138f1Smrg install_prog= 5799ee3138f1Smrg arg=$nonopt 5800ee3138f1Smrg fi 5801ee3138f1Smrg 5802ee3138f1Smrg # The real first argument should be the name of the installation program. 5803ee3138f1Smrg # Aesthetically quote it. 5804ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5805ee3138f1Smrg case $arg in 5806ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5807ee3138f1Smrg arg="\"$arg\"" 5808ee3138f1Smrg ;; 5809ee3138f1Smrg esac 5810ee3138f1Smrg install_prog="$install_prog$arg" 5811ee3138f1Smrg 5812ee3138f1Smrg # We need to accept at least all the BSD install flags. 5813ee3138f1Smrg dest= 5814ee3138f1Smrg files= 5815ee3138f1Smrg opts= 5816ee3138f1Smrg prev= 5817ee3138f1Smrg install_type= 5818ee3138f1Smrg isdir=no 5819ee3138f1Smrg stripme= 5820ee3138f1Smrg for arg 5821ee3138f1Smrg do 5822ee3138f1Smrg if test -n "$dest"; then 5823ee3138f1Smrg files="$files $dest" 5824ee3138f1Smrg dest=$arg 5825ee3138f1Smrg continue 5826ee3138f1Smrg fi 5827ee3138f1Smrg 5828ee3138f1Smrg case $arg in 5829ee3138f1Smrg -d) isdir=yes ;; 5830ee3138f1Smrg -f) 5831ee3138f1Smrg case " $install_prog " in 5832ee3138f1Smrg *[\\\ /]cp\ *) ;; 5833ee3138f1Smrg *) prev=$arg ;; 5834ee3138f1Smrg esac 5835ee3138f1Smrg ;; 5836ee3138f1Smrg -g | -m | -o) prev=$arg ;; 5837ee3138f1Smrg -s) 5838ee3138f1Smrg stripme=" -s" 5839ee3138f1Smrg continue 5840ee3138f1Smrg ;; 5841ee3138f1Smrg -*) 5842ee3138f1Smrg ;; 5843ee3138f1Smrg *) 5844ee3138f1Smrg # If the previous option needed an argument, then skip it. 5845ee3138f1Smrg if test -n "$prev"; then 5846ee3138f1Smrg prev= 5847ee3138f1Smrg else 5848ee3138f1Smrg dest=$arg 5849ee3138f1Smrg continue 5850ee3138f1Smrg fi 5851ee3138f1Smrg ;; 5852ee3138f1Smrg esac 5853ee3138f1Smrg 5854ee3138f1Smrg # Aesthetically quote the argument. 5855ee3138f1Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5856ee3138f1Smrg case $arg in 5857ee3138f1Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5858ee3138f1Smrg arg="\"$arg\"" 5859ee3138f1Smrg ;; 5860ee3138f1Smrg esac 5861ee3138f1Smrg install_prog="$install_prog $arg" 5862ee3138f1Smrg done 5863ee3138f1Smrg 5864ee3138f1Smrg if test -z "$install_prog"; then 5865ee3138f1Smrg $echo "$modename: you must specify an install program" 1>&2 5866ee3138f1Smrg $echo "$help" 1>&2 5867ee3138f1Smrg exit $EXIT_FAILURE 5868ee3138f1Smrg fi 5869ee3138f1Smrg 5870ee3138f1Smrg if test -n "$prev"; then 5871ee3138f1Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5872ee3138f1Smrg $echo "$help" 1>&2 5873ee3138f1Smrg exit $EXIT_FAILURE 5874ee3138f1Smrg fi 5875ee3138f1Smrg 5876ee3138f1Smrg if test -z "$files"; then 5877ee3138f1Smrg if test -z "$dest"; then 5878ee3138f1Smrg $echo "$modename: no file or destination specified" 1>&2 5879ee3138f1Smrg else 5880ee3138f1Smrg $echo "$modename: you must specify a destination" 1>&2 5881ee3138f1Smrg fi 5882ee3138f1Smrg $echo "$help" 1>&2 5883ee3138f1Smrg exit $EXIT_FAILURE 5884ee3138f1Smrg fi 5885ee3138f1Smrg 5886ee3138f1Smrg # Strip any trailing slash from the destination. 5887ee3138f1Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5888ee3138f1Smrg 5889ee3138f1Smrg # Check to see that the destination is a directory. 5890ee3138f1Smrg test -d "$dest" && isdir=yes 5891ee3138f1Smrg if test "$isdir" = yes; then 5892ee3138f1Smrg destdir="$dest" 5893ee3138f1Smrg destname= 5894ee3138f1Smrg else 5895ee3138f1Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5896ee3138f1Smrg test "X$destdir" = "X$dest" && destdir=. 5897ee3138f1Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5898ee3138f1Smrg 5899ee3138f1Smrg # Not a directory, so check to see that there is only one file specified. 5900ee3138f1Smrg set dummy $files 5901ee3138f1Smrg if test "$#" -gt 2; then 5902ee3138f1Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 5903ee3138f1Smrg $echo "$help" 1>&2 5904ee3138f1Smrg exit $EXIT_FAILURE 5905ee3138f1Smrg fi 5906ee3138f1Smrg fi 5907ee3138f1Smrg case $destdir in 5908ee3138f1Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5909ee3138f1Smrg *) 5910ee3138f1Smrg for file in $files; do 5911ee3138f1Smrg case $file in 5912ee3138f1Smrg *.lo) ;; 5913ee3138f1Smrg *) 5914ee3138f1Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5915ee3138f1Smrg $echo "$help" 1>&2 5916ee3138f1Smrg exit $EXIT_FAILURE 5917ee3138f1Smrg ;; 5918ee3138f1Smrg esac 5919ee3138f1Smrg done 5920ee3138f1Smrg ;; 5921ee3138f1Smrg esac 5922ee3138f1Smrg 5923ee3138f1Smrg # This variable tells wrapper scripts just to set variables rather 5924ee3138f1Smrg # than running their programs. 5925ee3138f1Smrg libtool_install_magic="$magic" 5926ee3138f1Smrg 5927ee3138f1Smrg staticlibs= 5928ee3138f1Smrg future_libdirs= 5929ee3138f1Smrg current_libdirs= 5930ee3138f1Smrg for file in $files; do 5931ee3138f1Smrg 5932ee3138f1Smrg # Do each installation. 5933ee3138f1Smrg case $file in 5934ee3138f1Smrg *.$libext) 5935ee3138f1Smrg # Do the static libraries later. 5936ee3138f1Smrg staticlibs="$staticlibs $file" 5937ee3138f1Smrg ;; 5938ee3138f1Smrg 5939ee3138f1Smrg *.la) 5940ee3138f1Smrg # Check to see that this really is a libtool archive. 5941ee3138f1Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5942ee3138f1Smrg else 5943ee3138f1Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5944ee3138f1Smrg $echo "$help" 1>&2 5945ee3138f1Smrg exit $EXIT_FAILURE 5946ee3138f1Smrg fi 5947ee3138f1Smrg 5948ee3138f1Smrg library_names= 5949ee3138f1Smrg old_library= 5950ee3138f1Smrg relink_command= 5951ee3138f1Smrg # If there is no directory component, then add one. 5952ee3138f1Smrg case $file in 5953ee3138f1Smrg */* | *\\*) . $file ;; 5954ee3138f1Smrg *) . ./$file ;; 5955ee3138f1Smrg esac 5956ee3138f1Smrg 5957ee3138f1Smrg # Add the libdir to current_libdirs if it is the destination. 5958ee3138f1Smrg if test "X$destdir" = "X$libdir"; then 5959ee3138f1Smrg case "$current_libdirs " in 5960ee3138f1Smrg *" $libdir "*) ;; 5961ee3138f1Smrg *) current_libdirs="$current_libdirs $libdir" ;; 5962ee3138f1Smrg esac 5963ee3138f1Smrg else 5964ee3138f1Smrg # Note the libdir as a future libdir. 5965ee3138f1Smrg case "$future_libdirs " in 5966ee3138f1Smrg *" $libdir "*) ;; 5967ee3138f1Smrg *) future_libdirs="$future_libdirs $libdir" ;; 5968ee3138f1Smrg esac 5969ee3138f1Smrg fi 5970ee3138f1Smrg 5971ee3138f1Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5972ee3138f1Smrg test "X$dir" = "X$file/" && dir= 5973ee3138f1Smrg dir="$dir$objdir" 5974ee3138f1Smrg 5975ee3138f1Smrg if test -n "$relink_command"; then 5976ee3138f1Smrg # Determine the prefix the user has applied to our future dir. 5977ee3138f1Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 5978ee3138f1Smrg 5979ee3138f1Smrg # Don't allow the user to place us outside of our expected 5980ee3138f1Smrg # location b/c this prevents finding dependent libraries that 5981ee3138f1Smrg # are installed to the same prefix. 5982ee3138f1Smrg # At present, this check doesn't affect windows .dll's that 5983ee3138f1Smrg # are installed into $libdir/../bin (currently, that works fine) 5984ee3138f1Smrg # but it's something to keep an eye on. 5985ee3138f1Smrg if test "$inst_prefix_dir" = "$destdir"; then 5986ee3138f1Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 5987ee3138f1Smrg exit $EXIT_FAILURE 5988ee3138f1Smrg fi 5989ee3138f1Smrg 5990ee3138f1Smrg if test -n "$inst_prefix_dir"; then 5991ee3138f1Smrg # Stick the inst_prefix_dir data into the link command. 5992ee3138f1Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 5993ee3138f1Smrg else 5994ee3138f1Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 5995ee3138f1Smrg fi 5996ee3138f1Smrg 5997ee3138f1Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 5998ee3138f1Smrg $show "$relink_command" 5999ee3138f1Smrg if $run eval "$relink_command"; then : 6000ee3138f1Smrg else 6001ee3138f1Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6002ee3138f1Smrg exit $EXIT_FAILURE 6003ee3138f1Smrg fi 6004ee3138f1Smrg fi 6005ee3138f1Smrg 6006ee3138f1Smrg # See the names of the shared library. 6007ee3138f1Smrg set dummy $library_names 6008ee3138f1Smrg if test -n "$2"; then 6009ee3138f1Smrg realname="$2" 6010ee3138f1Smrg shift 6011ee3138f1Smrg shift 6012ee3138f1Smrg 6013ee3138f1Smrg srcname="$realname" 6014ee3138f1Smrg test -n "$relink_command" && srcname="$realname"T 6015ee3138f1Smrg 6016ee3138f1Smrg # Install the shared library and build the symlinks. 6017ee3138f1Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 6018ee3138f1Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6019ee3138f1Smrg if test -n "$stripme" && test -n "$striplib"; then 6020ee3138f1Smrg $show "$striplib $destdir/$realname" 6021ee3138f1Smrg $run eval "$striplib $destdir/$realname" || exit $? 6022ee3138f1Smrg fi 6023ee3138f1Smrg 6024ee3138f1Smrg if test "$#" -gt 0; then 6025ee3138f1Smrg # Delete the old symlinks, and create new ones. 6026ee3138f1Smrg # Try `ln -sf' first, because the `ln' binary might depend on 6027ee3138f1Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6028ee3138f1Smrg # so we also need to try rm && ln -s. 6029ee3138f1Smrg for linkname 6030ee3138f1Smrg do 6031ee3138f1Smrg if test "$linkname" != "$realname"; then 6032ee3138f1Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6033ee3138f1Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6034ee3138f1Smrg fi 6035ee3138f1Smrg done 6036ee3138f1Smrg fi 6037ee3138f1Smrg 6038ee3138f1Smrg # Do each command in the postinstall commands. 6039ee3138f1Smrg lib="$destdir/$realname" 6040ee3138f1Smrg cmds=$postinstall_cmds 6041ee3138f1Smrg save_ifs="$IFS"; IFS='~' 6042ee3138f1Smrg for cmd in $cmds; do 6043ee3138f1Smrg IFS="$save_ifs" 6044ee3138f1Smrg eval cmd=\"$cmd\" 6045ee3138f1Smrg $show "$cmd" 6046ee3138f1Smrg $run eval "$cmd" || { 6047ee3138f1Smrg lt_exit=$? 6048ee3138f1Smrg 6049ee3138f1Smrg # Restore the uninstalled library and exit 6050ee3138f1Smrg if test "$mode" = relink; then 6051ee3138f1Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6052ee3138f1Smrg fi 6053ee3138f1Smrg 6054ee3138f1Smrg exit $lt_exit 6055ee3138f1Smrg } 6056ee3138f1Smrg done 6057ee3138f1Smrg IFS="$save_ifs" 6058ee3138f1Smrg fi 6059ee3138f1Smrg 6060ee3138f1Smrg # Install the pseudo-library for information purposes. 6061ee3138f1Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6062ee3138f1Smrg instname="$dir/$name"i 6063ee3138f1Smrg $show "$install_prog $instname $destdir/$name" 6064ee3138f1Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6065ee3138f1Smrg 6066ee3138f1Smrg # Maybe install the static library, too. 6067ee3138f1Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6068ee3138f1Smrg ;; 6069ee3138f1Smrg 6070ee3138f1Smrg *.lo) 6071ee3138f1Smrg # Install (i.e. copy) a libtool object. 6072ee3138f1Smrg 6073ee3138f1Smrg # Figure out destination file name, if it wasn't already specified. 6074ee3138f1Smrg if test -n "$destname"; then 6075ee3138f1Smrg destfile="$destdir/$destname" 6076ee3138f1Smrg else 6077ee3138f1Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6078ee3138f1Smrg destfile="$destdir/$destfile" 6079ee3138f1Smrg fi 6080ee3138f1Smrg 6081ee3138f1Smrg # Deduce the name of the destination old-style object file. 6082ee3138f1Smrg case $destfile in 6083ee3138f1Smrg *.lo) 6084ee3138f1Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6085ee3138f1Smrg ;; 6086ee3138f1Smrg *.$objext) 6087ee3138f1Smrg staticdest="$destfile" 6088ee3138f1Smrg destfile= 6089ee3138f1Smrg ;; 6090ee3138f1Smrg *) 6091ee3138f1Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6092ee3138f1Smrg $echo "$help" 1>&2 6093ee3138f1Smrg exit $EXIT_FAILURE 6094ee3138f1Smrg ;; 6095ee3138f1Smrg esac 6096ee3138f1Smrg 6097ee3138f1Smrg # Install the libtool object if requested. 6098ee3138f1Smrg if test -n "$destfile"; then 6099ee3138f1Smrg $show "$install_prog $file $destfile" 6100ee3138f1Smrg $run eval "$install_prog $file $destfile" || exit $? 6101ee3138f1Smrg fi 6102ee3138f1Smrg 6103ee3138f1Smrg # Install the old object if enabled. 6104ee3138f1Smrg if test "$build_old_libs" = yes; then 6105ee3138f1Smrg # Deduce the name of the old-style object file. 6106ee3138f1Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6107ee3138f1Smrg 6108ee3138f1Smrg $show "$install_prog $staticobj $staticdest" 6109ee3138f1Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6110ee3138f1Smrg fi 6111ee3138f1Smrg exit $EXIT_SUCCESS 6112ee3138f1Smrg ;; 6113ee3138f1Smrg 6114ee3138f1Smrg *) 6115ee3138f1Smrg # Figure out destination file name, if it wasn't already specified. 6116ee3138f1Smrg if test -n "$destname"; then 6117ee3138f1Smrg destfile="$destdir/$destname" 6118ee3138f1Smrg else 6119ee3138f1Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6120ee3138f1Smrg destfile="$destdir/$destfile" 6121ee3138f1Smrg fi 6122ee3138f1Smrg 6123ee3138f1Smrg # If the file is missing, and there is a .exe on the end, strip it 6124ee3138f1Smrg # because it is most likely a libtool script we actually want to 6125ee3138f1Smrg # install 6126ee3138f1Smrg stripped_ext="" 6127ee3138f1Smrg case $file in 6128ee3138f1Smrg *.exe) 6129ee3138f1Smrg if test ! -f "$file"; then 6130ee3138f1Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6131ee3138f1Smrg stripped_ext=".exe" 6132ee3138f1Smrg fi 6133ee3138f1Smrg ;; 6134ee3138f1Smrg esac 6135ee3138f1Smrg 6136ee3138f1Smrg # Do a test to see if this is really a libtool program. 6137ee3138f1Smrg case $host in 6138ee3138f1Smrg *cygwin*|*mingw*) 6139ee3138f1Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6140ee3138f1Smrg ;; 6141ee3138f1Smrg *) 6142ee3138f1Smrg wrapper=$file 6143ee3138f1Smrg ;; 6144ee3138f1Smrg esac 6145ee3138f1Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6146ee3138f1Smrg notinst_deplibs= 6147ee3138f1Smrg relink_command= 6148ee3138f1Smrg 6149ee3138f1Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6150ee3138f1Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6151ee3138f1Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6152ee3138f1Smrg # `FILE.' does not work on cygwin managed mounts. 6153ee3138f1Smrg # 6154ee3138f1Smrg # If there is no directory component, then add one. 6155ee3138f1Smrg case $wrapper in 6156ee3138f1Smrg */* | *\\*) . ${wrapper} ;; 6157ee3138f1Smrg *) . ./${wrapper} ;; 6158ee3138f1Smrg esac 6159ee3138f1Smrg 6160ee3138f1Smrg # Check the variables that should have been set. 6161ee3138f1Smrg if test -z "$notinst_deplibs"; then 6162ee3138f1Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6163ee3138f1Smrg exit $EXIT_FAILURE 6164ee3138f1Smrg fi 6165ee3138f1Smrg 6166ee3138f1Smrg finalize=yes 6167ee3138f1Smrg for lib in $notinst_deplibs; do 6168ee3138f1Smrg # Check to see that each library is installed. 6169ee3138f1Smrg libdir= 6170ee3138f1Smrg if test -f "$lib"; then 6171ee3138f1Smrg # If there is no directory component, then add one. 6172ee3138f1Smrg case $lib in 6173ee3138f1Smrg */* | *\\*) . $lib ;; 6174ee3138f1Smrg *) . ./$lib ;; 6175ee3138f1Smrg esac 6176ee3138f1Smrg fi 6177ee3138f1Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6178ee3138f1Smrg if test -n "$libdir" && test ! -f "$libfile"; then 6179ee3138f1Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6180ee3138f1Smrg finalize=no 6181ee3138f1Smrg fi 6182ee3138f1Smrg done 6183ee3138f1Smrg 6184ee3138f1Smrg relink_command= 6185ee3138f1Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6186ee3138f1Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6187ee3138f1Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6188ee3138f1Smrg # `FILE.' does not work on cygwin managed mounts. 6189ee3138f1Smrg # 6190ee3138f1Smrg # If there is no directory component, then add one. 6191ee3138f1Smrg case $wrapper in 6192ee3138f1Smrg */* | *\\*) . ${wrapper} ;; 6193ee3138f1Smrg *) . ./${wrapper} ;; 6194ee3138f1Smrg esac 6195ee3138f1Smrg 6196ee3138f1Smrg outputname= 6197ee3138f1Smrg if test "$fast_install" = no && test -n "$relink_command"; then 6198ee3138f1Smrg if test "$finalize" = yes && test -z "$run"; then 6199ee3138f1Smrg tmpdir=`func_mktempdir` 6200ee3138f1Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6201ee3138f1Smrg outputname="$tmpdir/$file" 6202ee3138f1Smrg # Replace the output file specification. 6203ee3138f1Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6204ee3138f1Smrg 6205ee3138f1Smrg $show "$relink_command" 6206ee3138f1Smrg if $run eval "$relink_command"; then : 6207ee3138f1Smrg else 6208ee3138f1Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6209ee3138f1Smrg ${rm}r "$tmpdir" 6210ee3138f1Smrg continue 6211ee3138f1Smrg fi 6212ee3138f1Smrg file="$outputname" 6213ee3138f1Smrg else 6214ee3138f1Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6215ee3138f1Smrg fi 6216ee3138f1Smrg else 6217ee3138f1Smrg # Install the binary that we compiled earlier. 6218ee3138f1Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6219ee3138f1Smrg fi 6220ee3138f1Smrg fi 6221ee3138f1Smrg 6222ee3138f1Smrg # remove .exe since cygwin /usr/bin/install will append another 6223ee3138f1Smrg # one anyway 6224ee3138f1Smrg case $install_prog,$host in 6225ee3138f1Smrg */usr/bin/install*,*cygwin*) 6226ee3138f1Smrg case $file:$destfile in 6227ee3138f1Smrg *.exe:*.exe) 6228ee3138f1Smrg # this is ok 6229ee3138f1Smrg ;; 6230ee3138f1Smrg *.exe:*) 6231ee3138f1Smrg destfile=$destfile.exe 6232ee3138f1Smrg ;; 6233ee3138f1Smrg *:*.exe) 6234ee3138f1Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6235ee3138f1Smrg ;; 6236ee3138f1Smrg esac 6237ee3138f1Smrg ;; 6238ee3138f1Smrg esac 6239ee3138f1Smrg $show "$install_prog$stripme $file $destfile" 6240ee3138f1Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6241ee3138f1Smrg test -n "$outputname" && ${rm}r "$tmpdir" 6242ee3138f1Smrg ;; 6243ee3138f1Smrg esac 6244ee3138f1Smrg done 6245ee3138f1Smrg 6246ee3138f1Smrg for file in $staticlibs; do 6247ee3138f1Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6248ee3138f1Smrg 6249ee3138f1Smrg # Set up the ranlib parameters. 6250ee3138f1Smrg oldlib="$destdir/$name" 6251ee3138f1Smrg 6252ee3138f1Smrg $show "$install_prog $file $oldlib" 6253ee3138f1Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 6254ee3138f1Smrg 6255ee3138f1Smrg if test -n "$stripme" && test -n "$old_striplib"; then 6256ee3138f1Smrg $show "$old_striplib $oldlib" 6257ee3138f1Smrg $run eval "$old_striplib $oldlib" || exit $? 6258ee3138f1Smrg fi 6259ee3138f1Smrg 6260ee3138f1Smrg # Do each command in the postinstall commands. 6261ee3138f1Smrg cmds=$old_postinstall_cmds 6262ee3138f1Smrg save_ifs="$IFS"; IFS='~' 6263ee3138f1Smrg for cmd in $cmds; do 6264ee3138f1Smrg IFS="$save_ifs" 6265ee3138f1Smrg eval cmd=\"$cmd\" 6266ee3138f1Smrg $show "$cmd" 6267ee3138f1Smrg $run eval "$cmd" || exit $? 6268ee3138f1Smrg done 6269ee3138f1Smrg IFS="$save_ifs" 6270ee3138f1Smrg done 6271ee3138f1Smrg 6272ee3138f1Smrg if test -n "$future_libdirs"; then 6273ee3138f1Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6274ee3138f1Smrg fi 6275ee3138f1Smrg 6276ee3138f1Smrg if test -n "$current_libdirs"; then 6277ee3138f1Smrg # Maybe just do a dry run. 6278ee3138f1Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6279ee3138f1Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6280ee3138f1Smrg else 6281ee3138f1Smrg exit $EXIT_SUCCESS 6282ee3138f1Smrg fi 6283ee3138f1Smrg ;; 6284ee3138f1Smrg 6285ee3138f1Smrg # libtool finish mode 6286ee3138f1Smrg finish) 6287ee3138f1Smrg modename="$modename: finish" 6288ee3138f1Smrg libdirs="$nonopt" 6289ee3138f1Smrg admincmds= 6290ee3138f1Smrg 6291ee3138f1Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6292ee3138f1Smrg for dir 6293ee3138f1Smrg do 6294ee3138f1Smrg libdirs="$libdirs $dir" 6295ee3138f1Smrg done 6296ee3138f1Smrg 6297ee3138f1Smrg for libdir in $libdirs; do 6298ee3138f1Smrg if test -n "$finish_cmds"; then 6299ee3138f1Smrg # Do each command in the finish commands. 6300ee3138f1Smrg cmds=$finish_cmds 6301ee3138f1Smrg save_ifs="$IFS"; IFS='~' 6302ee3138f1Smrg for cmd in $cmds; do 6303ee3138f1Smrg IFS="$save_ifs" 6304ee3138f1Smrg eval cmd=\"$cmd\" 6305ee3138f1Smrg $show "$cmd" 6306ee3138f1Smrg $run eval "$cmd" || admincmds="$admincmds 6307ee3138f1Smrg $cmd" 6308ee3138f1Smrg done 6309ee3138f1Smrg IFS="$save_ifs" 6310ee3138f1Smrg fi 6311ee3138f1Smrg if test -n "$finish_eval"; then 6312ee3138f1Smrg # Do the single finish_eval. 6313ee3138f1Smrg eval cmds=\"$finish_eval\" 6314ee3138f1Smrg $run eval "$cmds" || admincmds="$admincmds 6315ee3138f1Smrg $cmds" 6316ee3138f1Smrg fi 6317ee3138f1Smrg done 6318ee3138f1Smrg fi 6319ee3138f1Smrg 6320ee3138f1Smrg # Exit here if they wanted silent mode. 6321ee3138f1Smrg test "$show" = : && exit $EXIT_SUCCESS 6322ee3138f1Smrg 6323ee3138f1Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6324ee3138f1Smrg $echo "Libraries have been installed in:" 6325ee3138f1Smrg for libdir in $libdirs; do 6326ee3138f1Smrg $echo " $libdir" 6327ee3138f1Smrg done 6328ee3138f1Smrg $echo 6329ee3138f1Smrg $echo "If you ever happen to want to link against installed libraries" 6330ee3138f1Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6331ee3138f1Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6332ee3138f1Smrg $echo "flag during linking and do at least one of the following:" 6333ee3138f1Smrg if test -n "$shlibpath_var"; then 6334ee3138f1Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6335ee3138f1Smrg $echo " during execution" 6336ee3138f1Smrg fi 6337ee3138f1Smrg if test -n "$runpath_var"; then 6338ee3138f1Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6339ee3138f1Smrg $echo " during linking" 6340ee3138f1Smrg fi 6341ee3138f1Smrg if test -n "$hardcode_libdir_flag_spec"; then 6342ee3138f1Smrg libdir=LIBDIR 6343ee3138f1Smrg eval flag=\"$hardcode_libdir_flag_spec\" 6344ee3138f1Smrg 6345ee3138f1Smrg $echo " - use the \`$flag' linker flag" 6346ee3138f1Smrg fi 6347ee3138f1Smrg if test -n "$admincmds"; then 6348ee3138f1Smrg $echo " - have your system administrator run these commands:$admincmds" 6349ee3138f1Smrg fi 6350ee3138f1Smrg if test -f /etc/ld.so.conf; then 6351ee3138f1Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6352ee3138f1Smrg fi 6353ee3138f1Smrg $echo 6354ee3138f1Smrg $echo "See any operating system documentation about shared libraries for" 6355ee3138f1Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6356ee3138f1Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6357ee3138f1Smrg exit $EXIT_SUCCESS 6358ee3138f1Smrg ;; 6359ee3138f1Smrg 6360ee3138f1Smrg # libtool execute mode 6361ee3138f1Smrg execute) 6362ee3138f1Smrg modename="$modename: execute" 6363ee3138f1Smrg 6364ee3138f1Smrg # The first argument is the command name. 6365ee3138f1Smrg cmd="$nonopt" 6366ee3138f1Smrg if test -z "$cmd"; then 6367ee3138f1Smrg $echo "$modename: you must specify a COMMAND" 1>&2 6368ee3138f1Smrg $echo "$help" 6369ee3138f1Smrg exit $EXIT_FAILURE 6370ee3138f1Smrg fi 6371ee3138f1Smrg 6372ee3138f1Smrg # Handle -dlopen flags immediately. 6373ee3138f1Smrg for file in $execute_dlfiles; do 6374ee3138f1Smrg if test ! -f "$file"; then 6375ee3138f1Smrg $echo "$modename: \`$file' is not a file" 1>&2 6376ee3138f1Smrg $echo "$help" 1>&2 6377ee3138f1Smrg exit $EXIT_FAILURE 6378ee3138f1Smrg fi 6379ee3138f1Smrg 6380ee3138f1Smrg dir= 6381ee3138f1Smrg case $file in 6382ee3138f1Smrg *.la) 6383ee3138f1Smrg # Check to see that this really is a libtool archive. 6384ee3138f1Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6385ee3138f1Smrg else 6386ee3138f1Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6387ee3138f1Smrg $echo "$help" 1>&2 6388ee3138f1Smrg exit $EXIT_FAILURE 6389ee3138f1Smrg fi 6390ee3138f1Smrg 6391ee3138f1Smrg # Read the libtool library. 6392ee3138f1Smrg dlname= 6393ee3138f1Smrg library_names= 6394ee3138f1Smrg 6395ee3138f1Smrg # If there is no directory component, then add one. 6396ee3138f1Smrg case $file in 6397ee3138f1Smrg */* | *\\*) . $file ;; 6398ee3138f1Smrg *) . ./$file ;; 6399ee3138f1Smrg esac 6400ee3138f1Smrg 6401ee3138f1Smrg # Skip this library if it cannot be dlopened. 6402ee3138f1Smrg if test -z "$dlname"; then 6403ee3138f1Smrg # Warn if it was a shared library. 6404ee3138f1Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6405ee3138f1Smrg continue 6406ee3138f1Smrg fi 6407ee3138f1Smrg 6408ee3138f1Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6409ee3138f1Smrg test "X$dir" = "X$file" && dir=. 6410ee3138f1Smrg 6411ee3138f1Smrg if test -f "$dir/$objdir/$dlname"; then 6412ee3138f1Smrg dir="$dir/$objdir" 6413ee3138f1Smrg else 6414ee3138f1Smrg if test ! -f "$dir/$dlname"; then 6415ee3138f1Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6416ee3138f1Smrg exit $EXIT_FAILURE 6417ee3138f1Smrg fi 6418ee3138f1Smrg fi 6419ee3138f1Smrg ;; 6420ee3138f1Smrg 6421ee3138f1Smrg *.lo) 6422ee3138f1Smrg # Just add the directory containing the .lo file. 6423ee3138f1Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6424ee3138f1Smrg test "X$dir" = "X$file" && dir=. 6425ee3138f1Smrg ;; 6426ee3138f1Smrg 6427ee3138f1Smrg *) 6428ee3138f1Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6429ee3138f1Smrg continue 6430ee3138f1Smrg ;; 6431ee3138f1Smrg esac 6432ee3138f1Smrg 6433ee3138f1Smrg # Get the absolute pathname. 6434ee3138f1Smrg absdir=`cd "$dir" && pwd` 6435ee3138f1Smrg test -n "$absdir" && dir="$absdir" 6436ee3138f1Smrg 6437ee3138f1Smrg # Now add the directory to shlibpath_var. 6438ee3138f1Smrg if eval "test -z \"\$$shlibpath_var\""; then 6439ee3138f1Smrg eval "$shlibpath_var=\"\$dir\"" 6440ee3138f1Smrg else 6441ee3138f1Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6442ee3138f1Smrg fi 6443ee3138f1Smrg done 6444ee3138f1Smrg 6445ee3138f1Smrg # This variable tells wrapper scripts just to set shlibpath_var 6446ee3138f1Smrg # rather than running their programs. 6447ee3138f1Smrg libtool_execute_magic="$magic" 6448ee3138f1Smrg 6449ee3138f1Smrg # Check if any of the arguments is a wrapper script. 6450ee3138f1Smrg args= 6451ee3138f1Smrg for file 6452ee3138f1Smrg do 6453ee3138f1Smrg case $file in 6454ee3138f1Smrg -*) ;; 6455ee3138f1Smrg *) 6456ee3138f1Smrg # Do a test to see if this is really a libtool program. 6457ee3138f1Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6458ee3138f1Smrg # If there is no directory component, then add one. 6459ee3138f1Smrg case $file in 6460ee3138f1Smrg */* | *\\*) . $file ;; 6461ee3138f1Smrg *) . ./$file ;; 6462ee3138f1Smrg esac 6463ee3138f1Smrg 6464ee3138f1Smrg # Transform arg to wrapped name. 6465ee3138f1Smrg file="$progdir/$program" 6466ee3138f1Smrg fi 6467ee3138f1Smrg ;; 6468ee3138f1Smrg esac 6469ee3138f1Smrg # Quote arguments (to preserve shell metacharacters). 6470ee3138f1Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6471ee3138f1Smrg args="$args \"$file\"" 6472ee3138f1Smrg done 6473ee3138f1Smrg 6474ee3138f1Smrg if test -z "$run"; then 6475ee3138f1Smrg if test -n "$shlibpath_var"; then 6476ee3138f1Smrg # Export the shlibpath_var. 6477ee3138f1Smrg eval "export $shlibpath_var" 6478ee3138f1Smrg fi 6479ee3138f1Smrg 6480ee3138f1Smrg # Restore saved environment variables 6481ee3138f1Smrg for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6482ee3138f1Smrg do 6483ee3138f1Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 6484ee3138f1Smrg $lt_var=\$save_$lt_var; export $lt_var 6485ee3138f1Smrg fi" 6486ee3138f1Smrg done 6487ee3138f1Smrg 6488ee3138f1Smrg # Now prepare to actually exec the command. 6489ee3138f1Smrg exec_cmd="\$cmd$args" 6490ee3138f1Smrg else 6491ee3138f1Smrg # Display what would be done. 6492ee3138f1Smrg if test -n "$shlibpath_var"; then 6493ee3138f1Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6494ee3138f1Smrg $echo "export $shlibpath_var" 6495ee3138f1Smrg fi 6496ee3138f1Smrg $echo "$cmd$args" 6497ee3138f1Smrg exit $EXIT_SUCCESS 6498ee3138f1Smrg fi 6499ee3138f1Smrg ;; 6500ee3138f1Smrg 6501ee3138f1Smrg # libtool clean and uninstall mode 6502ee3138f1Smrg clean | uninstall) 6503ee3138f1Smrg modename="$modename: $mode" 6504ee3138f1Smrg rm="$nonopt" 6505ee3138f1Smrg files= 6506ee3138f1Smrg rmforce= 6507ee3138f1Smrg exit_status=0 6508ee3138f1Smrg 6509ee3138f1Smrg # This variable tells wrapper scripts just to set variables rather 6510ee3138f1Smrg # than running their programs. 6511ee3138f1Smrg libtool_install_magic="$magic" 6512ee3138f1Smrg 6513ee3138f1Smrg for arg 6514ee3138f1Smrg do 6515ee3138f1Smrg case $arg in 6516ee3138f1Smrg -f) rm="$rm $arg"; rmforce=yes ;; 6517ee3138f1Smrg -*) rm="$rm $arg" ;; 6518ee3138f1Smrg *) files="$files $arg" ;; 6519ee3138f1Smrg esac 6520ee3138f1Smrg done 6521ee3138f1Smrg 6522ee3138f1Smrg if test -z "$rm"; then 6523ee3138f1Smrg $echo "$modename: you must specify an RM program" 1>&2 6524ee3138f1Smrg $echo "$help" 1>&2 6525ee3138f1Smrg exit $EXIT_FAILURE 6526ee3138f1Smrg fi 6527ee3138f1Smrg 6528ee3138f1Smrg rmdirs= 6529ee3138f1Smrg 6530ee3138f1Smrg origobjdir="$objdir" 6531ee3138f1Smrg for file in $files; do 6532ee3138f1Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6533ee3138f1Smrg if test "X$dir" = "X$file"; then 6534ee3138f1Smrg dir=. 6535ee3138f1Smrg objdir="$origobjdir" 6536ee3138f1Smrg else 6537ee3138f1Smrg objdir="$dir/$origobjdir" 6538ee3138f1Smrg fi 6539ee3138f1Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6540ee3138f1Smrg test "$mode" = uninstall && objdir="$dir" 6541ee3138f1Smrg 6542ee3138f1Smrg # Remember objdir for removal later, being careful to avoid duplicates 6543ee3138f1Smrg if test "$mode" = clean; then 6544ee3138f1Smrg case " $rmdirs " in 6545ee3138f1Smrg *" $objdir "*) ;; 6546ee3138f1Smrg *) rmdirs="$rmdirs $objdir" ;; 6547ee3138f1Smrg esac 6548ee3138f1Smrg fi 6549ee3138f1Smrg 6550ee3138f1Smrg # Don't error if the file doesn't exist and rm -f was used. 6551ee3138f1Smrg if (test -L "$file") >/dev/null 2>&1 \ 6552ee3138f1Smrg || (test -h "$file") >/dev/null 2>&1 \ 6553ee3138f1Smrg || test -f "$file"; then 6554ee3138f1Smrg : 6555ee3138f1Smrg elif test -d "$file"; then 6556ee3138f1Smrg exit_status=1 6557ee3138f1Smrg continue 6558ee3138f1Smrg elif test "$rmforce" = yes; then 6559ee3138f1Smrg continue 6560ee3138f1Smrg fi 6561ee3138f1Smrg 6562ee3138f1Smrg rmfiles="$file" 6563ee3138f1Smrg 6564ee3138f1Smrg case $name in 6565ee3138f1Smrg *.la) 6566ee3138f1Smrg # Possibly a libtool archive, so verify it. 6567ee3138f1Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6568ee3138f1Smrg . $dir/$name 6569ee3138f1Smrg 6570ee3138f1Smrg # Delete the libtool libraries and symlinks. 6571ee3138f1Smrg for n in $library_names; do 6572ee3138f1Smrg rmfiles="$rmfiles $objdir/$n" 6573ee3138f1Smrg done 6574ee3138f1Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6575ee3138f1Smrg 6576ee3138f1Smrg case "$mode" in 6577ee3138f1Smrg clean) 6578ee3138f1Smrg case " $library_names " in 6579ee3138f1Smrg # " " in the beginning catches empty $dlname 6580ee3138f1Smrg *" $dlname "*) ;; 6581ee3138f1Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6582ee3138f1Smrg esac 6583ee3138f1Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6584ee3138f1Smrg ;; 6585ee3138f1Smrg uninstall) 6586ee3138f1Smrg if test -n "$library_names"; then 6587ee3138f1Smrg # Do each command in the postuninstall commands. 6588ee3138f1Smrg cmds=$postuninstall_cmds 6589ee3138f1Smrg save_ifs="$IFS"; IFS='~' 6590ee3138f1Smrg for cmd in $cmds; do 6591ee3138f1Smrg IFS="$save_ifs" 6592ee3138f1Smrg eval cmd=\"$cmd\" 6593ee3138f1Smrg $show "$cmd" 6594ee3138f1Smrg $run eval "$cmd" 6595ee3138f1Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6596ee3138f1Smrg exit_status=1 6597ee3138f1Smrg fi 6598ee3138f1Smrg done 6599ee3138f1Smrg IFS="$save_ifs" 6600ee3138f1Smrg fi 6601ee3138f1Smrg 6602ee3138f1Smrg if test -n "$old_library"; then 6603ee3138f1Smrg # Do each command in the old_postuninstall commands. 6604ee3138f1Smrg cmds=$old_postuninstall_cmds 6605ee3138f1Smrg save_ifs="$IFS"; IFS='~' 6606ee3138f1Smrg for cmd in $cmds; do 6607ee3138f1Smrg IFS="$save_ifs" 6608ee3138f1Smrg eval cmd=\"$cmd\" 6609ee3138f1Smrg $show "$cmd" 6610ee3138f1Smrg $run eval "$cmd" 6611ee3138f1Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6612ee3138f1Smrg exit_status=1 6613ee3138f1Smrg fi 6614ee3138f1Smrg done 6615ee3138f1Smrg IFS="$save_ifs" 6616ee3138f1Smrg fi 6617ee3138f1Smrg # FIXME: should reinstall the best remaining shared library. 6618ee3138f1Smrg ;; 6619ee3138f1Smrg esac 6620ee3138f1Smrg fi 6621ee3138f1Smrg ;; 6622ee3138f1Smrg 6623ee3138f1Smrg *.lo) 6624ee3138f1Smrg # Possibly a libtool object, so verify it. 6625ee3138f1Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6626ee3138f1Smrg 6627ee3138f1Smrg # Read the .lo file 6628ee3138f1Smrg . $dir/$name 6629ee3138f1Smrg 6630ee3138f1Smrg # Add PIC object to the list of files to remove. 6631ee3138f1Smrg if test -n "$pic_object" \ 6632ee3138f1Smrg && test "$pic_object" != none; then 6633ee3138f1Smrg rmfiles="$rmfiles $dir/$pic_object" 6634ee3138f1Smrg fi 6635ee3138f1Smrg 6636ee3138f1Smrg # Add non-PIC object to the list of files to remove. 6637ee3138f1Smrg if test -n "$non_pic_object" \ 6638ee3138f1Smrg && test "$non_pic_object" != none; then 6639ee3138f1Smrg rmfiles="$rmfiles $dir/$non_pic_object" 6640ee3138f1Smrg fi 6641ee3138f1Smrg fi 6642ee3138f1Smrg ;; 6643ee3138f1Smrg 6644ee3138f1Smrg *) 6645ee3138f1Smrg if test "$mode" = clean ; then 6646ee3138f1Smrg noexename=$name 6647ee3138f1Smrg case $file in 6648ee3138f1Smrg *.exe) 6649ee3138f1Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6650ee3138f1Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6651ee3138f1Smrg # $file with .exe has already been added to rmfiles, 6652ee3138f1Smrg # add $file without .exe 6653ee3138f1Smrg rmfiles="$rmfiles $file" 6654ee3138f1Smrg ;; 6655ee3138f1Smrg esac 6656ee3138f1Smrg # Do a test to see if this is a libtool program. 6657ee3138f1Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6658ee3138f1Smrg relink_command= 6659ee3138f1Smrg . $dir/$noexename 6660ee3138f1Smrg 6661ee3138f1Smrg # note $name still contains .exe if it was in $file originally 6662ee3138f1Smrg # as does the version of $file that was added into $rmfiles 6663ee3138f1Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6664ee3138f1Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 6665ee3138f1Smrg rmfiles="$rmfiles $objdir/lt-$name" 6666ee3138f1Smrg fi 6667ee3138f1Smrg if test "X$noexename" != "X$name" ; then 6668ee3138f1Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6669ee3138f1Smrg fi 6670ee3138f1Smrg fi 6671ee3138f1Smrg fi 6672ee3138f1Smrg ;; 6673ee3138f1Smrg esac 6674ee3138f1Smrg $show "$rm $rmfiles" 6675ee3138f1Smrg $run $rm $rmfiles || exit_status=1 6676ee3138f1Smrg done 6677ee3138f1Smrg objdir="$origobjdir" 6678ee3138f1Smrg 6679ee3138f1Smrg # Try to remove the ${objdir}s in the directories where we deleted files 6680ee3138f1Smrg for dir in $rmdirs; do 6681ee3138f1Smrg if test -d "$dir"; then 6682ee3138f1Smrg $show "rmdir $dir" 6683ee3138f1Smrg $run rmdir $dir >/dev/null 2>&1 6684ee3138f1Smrg fi 6685ee3138f1Smrg done 6686ee3138f1Smrg 6687ee3138f1Smrg exit $exit_status 6688ee3138f1Smrg ;; 6689ee3138f1Smrg 6690ee3138f1Smrg "") 6691ee3138f1Smrg $echo "$modename: you must specify a MODE" 1>&2 6692ee3138f1Smrg $echo "$generic_help" 1>&2 6693ee3138f1Smrg exit $EXIT_FAILURE 6694ee3138f1Smrg ;; 6695ee3138f1Smrg esac 6696ee3138f1Smrg 6697ee3138f1Smrg if test -z "$exec_cmd"; then 6698ee3138f1Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6699ee3138f1Smrg $echo "$generic_help" 1>&2 6700ee3138f1Smrg exit $EXIT_FAILURE 6701ee3138f1Smrg fi 6702ee3138f1Smrgfi # test -z "$show_help" 6703ee3138f1Smrg 6704ee3138f1Smrgif test -n "$exec_cmd"; then 6705ee3138f1Smrg eval exec $exec_cmd 6706ee3138f1Smrg exit $EXIT_FAILURE 6707ee3138f1Smrgfi 6708ee3138f1Smrg 6709ee3138f1Smrg# We need to display help for each of the modes. 6710ee3138f1Smrgcase $mode in 6711ee3138f1Smrg"") $echo \ 6712ee3138f1Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 6713ee3138f1Smrg 6714ee3138f1SmrgProvide generalized library-building support services. 6715ee3138f1Smrg 6716ee3138f1Smrg --config show all configuration variables 6717ee3138f1Smrg --debug enable verbose shell tracing 6718ee3138f1Smrg-n, --dry-run display commands without modifying any files 6719ee3138f1Smrg --features display basic configuration information and exit 6720ee3138f1Smrg --finish same as \`--mode=finish' 6721ee3138f1Smrg --help display this help message and exit 6722ee3138f1Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6723ee3138f1Smrg --quiet same as \`--silent' 6724ee3138f1Smrg --silent don't print informational messages 6725ee3138f1Smrg --tag=TAG use configuration variables from tag TAG 6726ee3138f1Smrg --version print version information 6727ee3138f1Smrg 6728ee3138f1SmrgMODE must be one of the following: 6729ee3138f1Smrg 6730ee3138f1Smrg clean remove files from the build directory 6731ee3138f1Smrg compile compile a source file into a libtool object 6732ee3138f1Smrg execute automatically set library path, then run a program 6733ee3138f1Smrg finish complete the installation of libtool libraries 6734ee3138f1Smrg install install libraries or executables 6735ee3138f1Smrg link create a library or an executable 6736ee3138f1Smrg uninstall remove libraries from an installed directory 6737ee3138f1Smrg 6738ee3138f1SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6739ee3138f1Smrga more detailed description of MODE. 6740ee3138f1Smrg 6741ee3138f1SmrgReport bugs to <bug-libtool@gnu.org>." 6742ee3138f1Smrg exit $EXIT_SUCCESS 6743ee3138f1Smrg ;; 6744ee3138f1Smrg 6745ee3138f1Smrgclean) 6746ee3138f1Smrg $echo \ 6747ee3138f1Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6748ee3138f1Smrg 6749ee3138f1SmrgRemove files from the build directory. 6750ee3138f1Smrg 6751ee3138f1SmrgRM is the name of the program to use to delete files associated with each FILE 6752ee3138f1Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6753ee3138f1Smrgto RM. 6754ee3138f1Smrg 6755ee3138f1SmrgIf FILE is a libtool library, object or program, all the files associated 6756ee3138f1Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6757ee3138f1Smrg ;; 6758ee3138f1Smrg 6759ee3138f1Smrgcompile) 6760ee3138f1Smrg $echo \ 6761ee3138f1Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6762ee3138f1Smrg 6763ee3138f1SmrgCompile a source file into a libtool library object. 6764ee3138f1Smrg 6765ee3138f1SmrgThis mode accepts the following additional options: 6766ee3138f1Smrg 6767ee3138f1Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6768ee3138f1Smrg -prefer-pic try to building PIC objects only 6769ee3138f1Smrg -prefer-non-pic try to building non-PIC objects only 6770ee3138f1Smrg -static always build a \`.o' file suitable for static linking 6771ee3138f1Smrg 6772ee3138f1SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6773ee3138f1Smrgfrom the given SOURCEFILE. 6774ee3138f1Smrg 6775ee3138f1SmrgThe output file name is determined by removing the directory component from 6776ee3138f1SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6777ee3138f1Smrglibrary object suffix, \`.lo'." 6778ee3138f1Smrg ;; 6779ee3138f1Smrg 6780ee3138f1Smrgexecute) 6781ee3138f1Smrg $echo \ 6782ee3138f1Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6783ee3138f1Smrg 6784ee3138f1SmrgAutomatically set library path, then run a program. 6785ee3138f1Smrg 6786ee3138f1SmrgThis mode accepts the following additional options: 6787ee3138f1Smrg 6788ee3138f1Smrg -dlopen FILE add the directory containing FILE to the library path 6789ee3138f1Smrg 6790ee3138f1SmrgThis mode sets the library path environment variable according to \`-dlopen' 6791ee3138f1Smrgflags. 6792ee3138f1Smrg 6793ee3138f1SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6794ee3138f1Smrginto their corresponding uninstalled binary, and any of their required library 6795ee3138f1Smrgdirectories are added to the library path. 6796ee3138f1Smrg 6797ee3138f1SmrgThen, COMMAND is executed, with ARGS as arguments." 6798ee3138f1Smrg ;; 6799ee3138f1Smrg 6800ee3138f1Smrgfinish) 6801ee3138f1Smrg $echo \ 6802ee3138f1Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6803ee3138f1Smrg 6804ee3138f1SmrgComplete the installation of libtool libraries. 6805ee3138f1Smrg 6806ee3138f1SmrgEach LIBDIR is a directory that contains libtool libraries. 6807ee3138f1Smrg 6808ee3138f1SmrgThe commands that this mode executes may require superuser privileges. Use 6809ee3138f1Smrgthe \`--dry-run' option if you just want to see what would be executed." 6810ee3138f1Smrg ;; 6811ee3138f1Smrg 6812ee3138f1Smrginstall) 6813ee3138f1Smrg $echo \ 6814ee3138f1Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6815ee3138f1Smrg 6816ee3138f1SmrgInstall executables or libraries. 6817ee3138f1Smrg 6818ee3138f1SmrgINSTALL-COMMAND is the installation command. The first component should be 6819ee3138f1Smrgeither the \`install' or \`cp' program. 6820ee3138f1Smrg 6821ee3138f1SmrgThe rest of the components are interpreted as arguments to that command (only 6822ee3138f1SmrgBSD-compatible install options are recognized)." 6823ee3138f1Smrg ;; 6824ee3138f1Smrg 6825ee3138f1Smrglink) 6826ee3138f1Smrg $echo \ 6827ee3138f1Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6828ee3138f1Smrg 6829ee3138f1SmrgLink object files or libraries together to form another library, or to 6830ee3138f1Smrgcreate an executable program. 6831ee3138f1Smrg 6832ee3138f1SmrgLINK-COMMAND is a command using the C compiler that you would use to create 6833ee3138f1Smrga program from several object files. 6834ee3138f1Smrg 6835ee3138f1SmrgThe following components of LINK-COMMAND are treated specially: 6836ee3138f1Smrg 6837ee3138f1Smrg -all-static do not do any dynamic linking at all 6838ee3138f1Smrg -avoid-version do not add a version suffix if possible 6839ee3138f1Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6840ee3138f1Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6841ee3138f1Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6842ee3138f1Smrg -export-symbols SYMFILE 6843ee3138f1Smrg try to export only the symbols listed in SYMFILE 6844ee3138f1Smrg -export-symbols-regex REGEX 6845ee3138f1Smrg try to export only the symbols matching REGEX 6846ee3138f1Smrg -LLIBDIR search LIBDIR for required installed libraries 6847ee3138f1Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 6848ee3138f1Smrg -module build a library that can dlopened 6849ee3138f1Smrg -no-fast-install disable the fast-install mode 6850ee3138f1Smrg -no-install link a not-installable executable 6851ee3138f1Smrg -no-undefined declare that a library does not refer to external symbols 6852ee3138f1Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6853ee3138f1Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 6854ee3138f1Smrg -precious-files-regex REGEX 6855ee3138f1Smrg don't remove output files matching REGEX 6856ee3138f1Smrg -release RELEASE specify package release information 6857ee3138f1Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6858ee3138f1Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6859ee3138f1Smrg -static do not do any dynamic linking of uninstalled libtool libraries 6860ee3138f1Smrg -static-libtool-libs 6861ee3138f1Smrg do not do any dynamic linking of libtool libraries 6862ee3138f1Smrg -version-info CURRENT[:REVISION[:AGE]] 6863ee3138f1Smrg specify library version info [each variable defaults to 0] 6864ee3138f1Smrg 6865ee3138f1SmrgAll other options (arguments beginning with \`-') are ignored. 6866ee3138f1Smrg 6867ee3138f1SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6868ee3138f1Smrgtreated as uninstalled libtool libraries, other files are standard or library 6869ee3138f1Smrgobject files. 6870ee3138f1Smrg 6871ee3138f1SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6872ee3138f1Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6873ee3138f1Smrgrequired, except when creating a convenience library. 6874ee3138f1Smrg 6875ee3138f1SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6876ee3138f1Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6877ee3138f1Smrg 6878ee3138f1SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6879ee3138f1Smrgis created, otherwise an executable program is created." 6880ee3138f1Smrg ;; 6881ee3138f1Smrg 6882ee3138f1Smrguninstall) 6883ee3138f1Smrg $echo \ 6884ee3138f1Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6885ee3138f1Smrg 6886ee3138f1SmrgRemove libraries from an installation directory. 6887ee3138f1Smrg 6888ee3138f1SmrgRM is the name of the program to use to delete files associated with each FILE 6889ee3138f1Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6890ee3138f1Smrgto RM. 6891ee3138f1Smrg 6892ee3138f1SmrgIf FILE is a libtool library, all the files associated with it are deleted. 6893ee3138f1SmrgOtherwise, only FILE itself is deleted using RM." 6894ee3138f1Smrg ;; 6895ee3138f1Smrg 6896ee3138f1Smrg*) 6897ee3138f1Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6898ee3138f1Smrg $echo "$help" 1>&2 6899ee3138f1Smrg exit $EXIT_FAILURE 6900ee3138f1Smrg ;; 6901ee3138f1Smrgesac 6902ee3138f1Smrg 6903ee3138f1Smrg$echo 6904ee3138f1Smrg$echo "Try \`$modename --help' for more information about other modes." 6905ee3138f1Smrg 6906ee3138f1Smrgexit $? 6907ee3138f1Smrg 6908ee3138f1Smrg# The TAGs below are defined such that we never get into a situation 6909ee3138f1Smrg# in which we disable both kinds of libraries. Given conflicting 6910ee3138f1Smrg# choices, we go for a static library, that is the most portable, 6911ee3138f1Smrg# since we can't tell whether shared libraries were disabled because 6912ee3138f1Smrg# the user asked for that or because the platform doesn't support 6913ee3138f1Smrg# them. This is particularly important on AIX, because we don't 6914ee3138f1Smrg# support having both static and shared libraries enabled at the same 6915ee3138f1Smrg# time on that platform, so we default to a shared-only configuration. 6916ee3138f1Smrg# If a disable-shared tag is given, we'll fallback to a static-only 6917ee3138f1Smrg# configuration. But we'll never go from static-only to shared-only. 6918ee3138f1Smrg 6919ee3138f1Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6920ee3138f1Smrgdisable_libs=shared 6921ee3138f1Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 6922ee3138f1Smrg 6923ee3138f1Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6924ee3138f1Smrgdisable_libs=static 6925ee3138f1Smrg# ### END LIBTOOL TAG CONFIG: disable-static 6926ee3138f1Smrg 6927ee3138f1Smrg# Local Variables: 6928ee3138f1Smrg# mode:shell-script 6929ee3138f1Smrg# sh-indentation:2 6930ee3138f1Smrg# End: 6931