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