1251883Speter# ltmain.sh - Provide generalized library-building support services. 2251883Speter# NOTE: Changing this file will not affect anything until you rerun configure. 3251883Speter# 4251883Speter# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5251883Speter# 2007 Free Software Foundation, Inc. 6251883Speter# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7251883Speter# 8251883Speter# This program is free software; you can redistribute it and/or modify 9251883Speter# it under the terms of the GNU General Public License as published by 10251883Speter# the Free Software Foundation; either version 2 of the License, or 11251883Speter# (at your option) any later version. 12251883Speter# 13251883Speter# This program is distributed in the hope that it will be useful, but 14251883Speter# WITHOUT ANY WARRANTY; without even the implied warranty of 15251883Speter# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16251883Speter# General Public License for more details. 17251883Speter# 18251883Speter# You should have received a copy of the GNU General Public License 19251883Speter# along with this program; if not, write to the Free Software 20251883Speter# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21251883Speter# 22251883Speter# As a special exception to the GNU General Public License, if you 23251883Speter# distribute this file as part of a program that contains a 24251883Speter# configuration script generated by Autoconf, you may include it under 25251883Speter# the same distribution terms that you use for the rest of that program. 26251883Speter 27251883Speterbasename="s,^.*/,,g" 28251883Speter 29251883Speter# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30251883Speter# is ksh but when the shell is invoked as "sh" and the current value of 31251883Speter# the _XPG environment variable is not equal to 1 (one), the special 32251883Speter# positional parameter $0, within a function call, is the name of the 33251883Speter# function. 34251883Speterprogpath="$0" 35251883Speter 36251883Speter# The name of this program: 37251883Speterprogname=`echo "$progpath" | $SED $basename` 38251883Spetermodename="$progname" 39251883Speter 40251883Speter# Global variables: 41251883SpeterEXIT_SUCCESS=0 42251883SpeterEXIT_FAILURE=1 43251883Speter 44251883SpeterPROGRAM=ltmain.sh 45251883SpeterPACKAGE=libtool 46251883SpeterVERSION=1.5.24 47251883SpeterTIMESTAMP=" (1.1220.2.455 2007/06/24 02:13:29)" 48251883Speter 49251883Speter# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 50251883Speterif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 51251883Speter emulate sh 52251883Speter NULLCMD=: 53251883Speter # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 54251883Speter # is contrary to our usage. Disable this feature. 55251883Speter alias -g '${1+"$@"}'='"$@"' 56251883Speter setopt NO_GLOB_SUBST 57251883Speterelse 58251883Speter case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 59251883Speterfi 60251883SpeterBIN_SH=xpg4; export BIN_SH # for Tru64 61251883SpeterDUALCASE=1; export DUALCASE # for MKS sh 62251883Speter 63251883Speter# Check that we have a working $echo. 64251883Speterif test "X$1" = X--no-reexec; then 65251883Speter # Discard the --no-reexec flag, and continue. 66251883Speter shift 67251883Speterelif test "X$1" = X--fallback-echo; then 68251883Speter # Avoid inline document here, it may be left over 69251883Speter : 70251883Speterelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71251883Speter # Yippee, $echo works! 72251883Speter : 73251883Speterelse 74251883Speter # Restart under the correct shell, and then maybe $echo will work. 75251883Speter exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76251883Speterfi 77251883Speter 78251883Speterif test "X$1" = X--fallback-echo; then 79251883Speter # used as fallback echo 80251883Speter shift 81251883Speter cat <<EOF 82251883Speter$* 83251883SpeterEOF 84251883Speter exit $EXIT_SUCCESS 85251883Speterfi 86251883Speter 87251883Speterdefault_mode= 88251883Speterhelp="Try \`$progname --help' for more information." 89251883Spetermagic="%%%MAGIC variable%%%" 90251883Spetermkdir="mkdir" 91251883Spetermv="mv -f" 92251883Speterrm="rm -f" 93251883Speter 94251883Speter# Sed substitution that helps us do robust quoting. It backslashifies 95251883Speter# metacharacters that are still active within double-quoted strings. 96251883SpeterXsed="${SED}"' -e 1s/^X//' 97251883Spetersed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98251883Speter# test EBCDIC or ASCII 99251883Spetercase `echo X|tr X '\101'` in 100251883Speter A) # ASCII based system 101251883Speter # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102251883Speter SP2NL='tr \040 \012' 103251883Speter NL2SP='tr \015\012 \040\040' 104251883Speter ;; 105251883Speter *) # EBCDIC based system 106251883Speter SP2NL='tr \100 \n' 107251883Speter NL2SP='tr \r\n \100\100' 108251883Speter ;; 109251883Speteresac 110251883Speter 111251883Speter# NLS nuisances. 112251883Speter# Only set LANG and LC_ALL to C if already set. 113251883Speter# These must not be set unconditionally because not all systems understand 114251883Speter# e.g. LANG=C (notably SCO). 115251883Speter# We save the old values to restore during execute mode. 116251883Speterfor lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 117251883Speterdo 118251883Speter eval "if test \"\${$lt_var+set}\" = set; then 119251883Speter save_$lt_var=\$$lt_var 120251883Speter $lt_var=C 121251883Speter export $lt_var 122251883Speter fi" 123251883Speterdone 124251883Speter 125251883Speter# Make sure IFS has a sensible default 126251883Speterlt_nl=' 127251883Speter' 128251883SpeterIFS=" $lt_nl" 129251883Speter 130251883Speterif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 131251883Speter $echo "$modename: not configured to build any kind of library" 1>&2 132251883Speter $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 133251883Speter exit $EXIT_FAILURE 134251883Speterfi 135251883Speter 136251883Speter# Global variables. 137251883Spetermode=$default_mode 138251883Speternonopt= 139251883Speterprev= 140251883Speterprevopt= 141251883Speterrun= 142251883Spetershow="$echo" 143251883Spetershow_help= 144251883Speterexecute_dlfiles= 145251883Speterduplicate_deps=no 146251883Speterpreserve_args= 147251883Speterlo2o="s/\\.lo\$/.${objext}/" 148251883Spetero2lo="s/\\.${objext}\$/.lo/" 149251883Speterextracted_archives= 150251883Speterextracted_serial=0 151251883Speter 152251883Speter##################################### 153251883Speter# Shell function definitions: 154251883Speter# This seems to be the best place for them 155251883Speter 156251883Speter# func_mktempdir [string] 157251883Speter# Make a temporary directory that won't clash with other running 158251883Speter# libtool processes, and avoids race conditions if possible. If 159251883Speter# given, STRING is the basename for that directory. 160251883Speterfunc_mktempdir () 161251883Speter{ 162251883Speter my_template="${TMPDIR-/tmp}/${1-$progname}" 163251883Speter 164251883Speter if test "$run" = ":"; then 165251883Speter # Return a directory name, but don't create it in dry-run mode 166251883Speter my_tmpdir="${my_template}-$$" 167251883Speter else 168251883Speter 169251883Speter # If mktemp works, use that first and foremost 170251883Speter my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 171251883Speter 172251883Speter if test ! -d "$my_tmpdir"; then 173251883Speter # Failing that, at least try and use $RANDOM to avoid a race 174251883Speter my_tmpdir="${my_template}-${RANDOM-0}$$" 175251883Speter 176251883Speter save_mktempdir_umask=`umask` 177251883Speter umask 0077 178251883Speter $mkdir "$my_tmpdir" 179251883Speter umask $save_mktempdir_umask 180251883Speter fi 181251883Speter 182251883Speter # If we're not in dry-run mode, bomb out on failure 183251883Speter test -d "$my_tmpdir" || { 184251883Speter $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 185251883Speter exit $EXIT_FAILURE 186251883Speter } 187251883Speter fi 188251883Speter 189251883Speter $echo "X$my_tmpdir" | $Xsed 190251883Speter} 191251883Speter 192251883Speter 193251883Speter# func_win32_libid arg 194251883Speter# return the library type of file 'arg' 195251883Speter# 196251883Speter# Need a lot of goo to handle *both* DLLs and import libs 197251883Speter# Has to be a shell function in order to 'eat' the argument 198251883Speter# that is supplied when $file_magic_command is called. 199251883Speterfunc_win32_libid () 200251883Speter{ 201251883Speter win32_libid_type="unknown" 202251883Speter win32_fileres=`file -L $1 2>/dev/null` 203251883Speter case $win32_fileres in 204251883Speter *ar\ archive\ import\ library*) # definitely import 205251883Speter win32_libid_type="x86 archive import" 206251883Speter ;; 207251883Speter *ar\ archive*) # could be an import, or static 208251883Speter if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 209251883Speter $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 210251883Speter win32_nmres=`eval $NM -f posix -A $1 | \ 211251883Speter $SED -n -e '1,100{ 212251883Speter / I /{ 213251883Speter s,.*,import, 214251883Speter p 215251883Speter q 216251883Speter } 217251883Speter }'` 218251883Speter case $win32_nmres in 219251883Speter import*) win32_libid_type="x86 archive import";; 220251883Speter *) win32_libid_type="x86 archive static";; 221251883Speter esac 222251883Speter fi 223251883Speter ;; 224251883Speter *DLL*) 225251883Speter win32_libid_type="x86 DLL" 226251883Speter ;; 227251883Speter *executable*) # but shell scripts are "executable" too... 228251883Speter case $win32_fileres in 229251883Speter *MS\ Windows\ PE\ Intel*) 230251883Speter win32_libid_type="x86 DLL" 231251883Speter ;; 232251883Speter esac 233251883Speter ;; 234251883Speter esac 235251883Speter $echo $win32_libid_type 236251883Speter} 237251883Speter 238251883Speter 239251883Speter# func_infer_tag arg 240251883Speter# Infer tagged configuration to use if any are available and 241251883Speter# if one wasn't chosen via the "--tag" command line option. 242251883Speter# Only attempt this if the compiler in the base compile 243251883Speter# command doesn't match the default compiler. 244251883Speter# arg is usually of the form 'gcc ...' 245251883Speterfunc_infer_tag () 246251883Speter{ 247251883Speter if test -n "$available_tags" && test -z "$tagname"; then 248251883Speter CC_quoted= 249251883Speter for arg in $CC; do 250251883Speter case $arg in 251251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 252251883Speter arg="\"$arg\"" 253251883Speter ;; 254251883Speter esac 255251883Speter CC_quoted="$CC_quoted $arg" 256251883Speter done 257251883Speter case $@ in 258251883Speter # Blanks in the command may have been stripped by the calling shell, 259251883Speter # but not from the CC environment variable when configure was run. 260251883Speter " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 261251883Speter # Blanks at the start of $base_compile will cause this to fail 262251883Speter # if we don't check for them as well. 263251883Speter *) 264251883Speter for z in $available_tags; do 265251883Speter if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 266251883Speter # Evaluate the configuration. 267251883Speter eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 268251883Speter CC_quoted= 269251883Speter for arg in $CC; do 270251883Speter # Double-quote args containing other shell metacharacters. 271251883Speter case $arg in 272251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 273251883Speter arg="\"$arg\"" 274251883Speter ;; 275251883Speter esac 276251883Speter CC_quoted="$CC_quoted $arg" 277251883Speter done 278251883Speter case "$@ " in 279251883Speter " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 280251883Speter # The compiler in the base compile command matches 281251883Speter # the one in the tagged configuration. 282251883Speter # Assume this is the tagged configuration we want. 283251883Speter tagname=$z 284251883Speter break 285251883Speter ;; 286251883Speter esac 287251883Speter fi 288251883Speter done 289251883Speter # If $tagname still isn't set, then no tagged configuration 290251883Speter # was found and let the user know that the "--tag" command 291251883Speter # line option must be used. 292251883Speter if test -z "$tagname"; then 293251883Speter $echo "$modename: unable to infer tagged configuration" 294251883Speter $echo "$modename: specify a tag with \`--tag'" 1>&2 295251883Speter exit $EXIT_FAILURE 296251883Speter# else 297251883Speter# $echo "$modename: using $tagname tagged configuration" 298251883Speter fi 299251883Speter ;; 300251883Speter esac 301251883Speter fi 302251883Speter} 303251883Speter 304251883Speter 305251883Speter# func_extract_an_archive dir oldlib 306251883Speterfunc_extract_an_archive () 307251883Speter{ 308251883Speter f_ex_an_ar_dir="$1"; shift 309251883Speter f_ex_an_ar_oldlib="$1" 310251883Speter 311251883Speter $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 312251883Speter $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 313251883Speter if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 314251883Speter : 315251883Speter else 316251883Speter $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 317251883Speter exit $EXIT_FAILURE 318251883Speter fi 319251883Speter} 320251883Speter 321251883Speter# func_extract_archives gentop oldlib ... 322251883Speterfunc_extract_archives () 323251883Speter{ 324251883Speter my_gentop="$1"; shift 325251883Speter my_oldlibs=${1+"$@"} 326251883Speter my_oldobjs="" 327251883Speter my_xlib="" 328251883Speter my_xabs="" 329251883Speter my_xdir="" 330251883Speter my_status="" 331251883Speter 332251883Speter $show "${rm}r $my_gentop" 333251883Speter $run ${rm}r "$my_gentop" 334251883Speter $show "$mkdir $my_gentop" 335251883Speter $run $mkdir "$my_gentop" 336251883Speter my_status=$? 337251883Speter if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 338251883Speter exit $my_status 339251883Speter fi 340251883Speter 341251883Speter for my_xlib in $my_oldlibs; do 342251883Speter # Extract the objects. 343251883Speter case $my_xlib in 344251883Speter [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 345251883Speter *) my_xabs=`pwd`"/$my_xlib" ;; 346251883Speter esac 347251883Speter my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 348251883Speter my_xlib_u=$my_xlib 349251883Speter while :; do 350251883Speter case " $extracted_archives " in 351251883Speter *" $my_xlib_u "*) 352251883Speter extracted_serial=`expr $extracted_serial + 1` 353251883Speter my_xlib_u=lt$extracted_serial-$my_xlib ;; 354251883Speter *) break ;; 355251883Speter esac 356251883Speter done 357251883Speter extracted_archives="$extracted_archives $my_xlib_u" 358251883Speter my_xdir="$my_gentop/$my_xlib_u" 359251883Speter 360251883Speter $show "${rm}r $my_xdir" 361251883Speter $run ${rm}r "$my_xdir" 362251883Speter $show "$mkdir $my_xdir" 363251883Speter $run $mkdir "$my_xdir" 364251883Speter exit_status=$? 365251883Speter if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 366251883Speter exit $exit_status 367251883Speter fi 368251883Speter case $host in 369251883Speter *-darwin*) 370251883Speter $show "Extracting $my_xabs" 371251883Speter # Do not bother doing anything if just a dry run 372251883Speter if test -z "$run"; then 373251883Speter darwin_orig_dir=`pwd` 374251883Speter cd $my_xdir || exit $? 375251883Speter darwin_archive=$my_xabs 376251883Speter darwin_curdir=`pwd` 377251883Speter darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 378251883Speter darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 379251883Speter if test -n "$darwin_arches"; then 380251883Speter darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 381251883Speter darwin_arch= 382251883Speter $show "$darwin_base_archive has multiple architectures $darwin_arches" 383251883Speter for darwin_arch in $darwin_arches ; do 384251883Speter mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 385251883Speter lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 386251883Speter cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 387251883Speter func_extract_an_archive "`pwd`" "${darwin_base_archive}" 388251883Speter cd "$darwin_curdir" 389251883Speter $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 390251883Speter done # $darwin_arches 391251883Speter ## Okay now we have a bunch of thin objects, gotta fatten them up :) 392251883Speter darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 393251883Speter darwin_file= 394251883Speter darwin_files= 395251883Speter for darwin_file in $darwin_filelist; do 396251883Speter darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 397251883Speter lipo -create -output "$darwin_file" $darwin_files 398251883Speter done # $darwin_filelist 399251883Speter ${rm}r unfat-$$ 400251883Speter cd "$darwin_orig_dir" 401251883Speter else 402251883Speter cd "$darwin_orig_dir" 403251883Speter func_extract_an_archive "$my_xdir" "$my_xabs" 404251883Speter fi # $darwin_arches 405251883Speter fi # $run 406251883Speter ;; 407251883Speter *) 408251883Speter func_extract_an_archive "$my_xdir" "$my_xabs" 409251883Speter ;; 410251883Speter esac 411251883Speter my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 412251883Speter done 413251883Speter func_extract_archives_result="$my_oldobjs" 414251883Speter} 415251883Speter# End of Shell function definitions 416251883Speter##################################### 417251883Speter 418251883Speter# Darwin sucks 419251883Spetereval std_shrext=\"$shrext_cmds\" 420251883Speter 421251883Speterdisable_libs=no 422251883Speter 423251883Speter# Parse our command line options once, thoroughly. 424251883Speterwhile test "$#" -gt 0 425251883Speterdo 426251883Speter arg="$1" 427251883Speter shift 428251883Speter 429251883Speter case $arg in 430251883Speter -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 431251883Speter *) optarg= ;; 432251883Speter esac 433251883Speter 434251883Speter # If the previous option needs an argument, assign it. 435251883Speter if test -n "$prev"; then 436251883Speter case $prev in 437251883Speter execute_dlfiles) 438251883Speter execute_dlfiles="$execute_dlfiles $arg" 439251883Speter ;; 440251883Speter tag) 441251883Speter tagname="$arg" 442251883Speter preserve_args="${preserve_args}=$arg" 443251883Speter 444251883Speter # Check whether tagname contains only valid characters 445251883Speter case $tagname in 446251883Speter *[!-_A-Za-z0-9,/]*) 447251883Speter $echo "$progname: invalid tag name: $tagname" 1>&2 448251883Speter exit $EXIT_FAILURE 449251883Speter ;; 450251883Speter esac 451251883Speter 452251883Speter case $tagname in 453251883Speter CC) 454251883Speter # Don't test for the "default" C tag, as we know, it's there, but 455251883Speter # not specially marked. 456251883Speter ;; 457251883Speter *) 458251883Speter if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 459251883Speter taglist="$taglist $tagname" 460251883Speter # Evaluate the configuration. 461251883Speter eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 462251883Speter else 463251883Speter $echo "$progname: ignoring unknown tag $tagname" 1>&2 464251883Speter fi 465251883Speter ;; 466251883Speter esac 467251883Speter ;; 468251883Speter *) 469251883Speter eval "$prev=\$arg" 470251883Speter ;; 471251883Speter esac 472251883Speter 473251883Speter prev= 474251883Speter prevopt= 475251883Speter continue 476251883Speter fi 477251883Speter 478251883Speter # Have we seen a non-optional argument yet? 479251883Speter case $arg in 480251883Speter --help) 481251883Speter show_help=yes 482251883Speter ;; 483251883Speter 484251883Speter --version) 485251883Speter echo "\ 486251883Speter$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 487251883Speter 488251883SpeterCopyright (C) 2007 Free Software Foundation, Inc. 489251883SpeterThis is free software; see the source for copying conditions. There is NO 490251883Speterwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 491251883Speter exit $? 492251883Speter ;; 493251883Speter 494251883Speter --config) 495251883Speter ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 496251883Speter # Now print the configurations for the tags. 497251883Speter for tagname in $taglist; do 498251883Speter ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 499251883Speter done 500251883Speter exit $? 501251883Speter ;; 502251883Speter 503251883Speter --debug) 504251883Speter $echo "$progname: enabling shell trace mode" 505251883Speter set -x 506251883Speter preserve_args="$preserve_args $arg" 507251883Speter ;; 508251883Speter 509251883Speter --dry-run | -n) 510251883Speter run=: 511251883Speter ;; 512251883Speter 513251883Speter --features) 514251883Speter $echo "host: $host" 515251883Speter if test "$build_libtool_libs" = yes; then 516251883Speter $echo "enable shared libraries" 517251883Speter else 518251883Speter $echo "disable shared libraries" 519251883Speter fi 520251883Speter if test "$build_old_libs" = yes; then 521251883Speter $echo "enable static libraries" 522251883Speter else 523251883Speter $echo "disable static libraries" 524251883Speter fi 525251883Speter exit $? 526251883Speter ;; 527251883Speter 528251883Speter --finish) mode="finish" ;; 529251883Speter 530251883Speter --mode) prevopt="--mode" prev=mode ;; 531251883Speter --mode=*) mode="$optarg" ;; 532251883Speter 533251883Speter --preserve-dup-deps) duplicate_deps="yes" ;; 534251883Speter 535251883Speter --quiet | --silent) 536251883Speter show=: 537251883Speter preserve_args="$preserve_args $arg" 538251883Speter ;; 539251883Speter 540251883Speter --tag) 541251883Speter prevopt="--tag" 542251883Speter prev=tag 543251883Speter preserve_args="$preserve_args --tag" 544251883Speter ;; 545251883Speter --tag=*) 546251883Speter set tag "$optarg" ${1+"$@"} 547251883Speter shift 548251883Speter prev=tag 549251883Speter preserve_args="$preserve_args --tag" 550251883Speter ;; 551251883Speter 552251883Speter -dlopen) 553251883Speter prevopt="-dlopen" 554251883Speter prev=execute_dlfiles 555251883Speter ;; 556251883Speter 557251883Speter -*) 558251883Speter $echo "$modename: unrecognized option \`$arg'" 1>&2 559251883Speter $echo "$help" 1>&2 560251883Speter exit $EXIT_FAILURE 561251883Speter ;; 562251883Speter 563251883Speter *) 564251883Speter nonopt="$arg" 565251883Speter break 566251883Speter ;; 567251883Speter esac 568251883Speterdone 569251883Speter 570251883Speterif test -n "$prevopt"; then 571251883Speter $echo "$modename: option \`$prevopt' requires an argument" 1>&2 572251883Speter $echo "$help" 1>&2 573251883Speter exit $EXIT_FAILURE 574251883Speterfi 575251883Speter 576251883Spetercase $disable_libs in 577251883Speterno) 578251883Speter ;; 579251883Spetershared) 580251883Speter build_libtool_libs=no 581251883Speter build_old_libs=yes 582251883Speter ;; 583251883Speterstatic) 584251883Speter build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 585251883Speter ;; 586251883Speteresac 587251883Speter 588251883Speter# If this variable is set in any of the actions, the command in it 589251883Speter# will be execed at the end. This prevents here-documents from being 590251883Speter# left over by shells. 591251883Speterexec_cmd= 592251883Speter 593251883Speterif test -z "$show_help"; then 594251883Speter 595251883Speter # Infer the operation mode. 596251883Speter if test -z "$mode"; then 597251883Speter $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 598251883Speter $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 599251883Speter case $nonopt in 600251883Speter *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 601251883Speter mode=link 602251883Speter for arg 603251883Speter do 604251883Speter case $arg in 605251883Speter -c) 606251883Speter mode=compile 607251883Speter break 608251883Speter ;; 609251883Speter esac 610251883Speter done 611251883Speter ;; 612251883Speter *db | *dbx | *strace | *truss) 613251883Speter mode=execute 614251883Speter ;; 615251883Speter *install*|cp|mv) 616251883Speter mode=install 617251883Speter ;; 618251883Speter *rm) 619251883Speter mode=uninstall 620251883Speter ;; 621251883Speter *) 622251883Speter # If we have no mode, but dlfiles were specified, then do execute mode. 623251883Speter test -n "$execute_dlfiles" && mode=execute 624251883Speter 625251883Speter # Just use the default operation mode. 626251883Speter if test -z "$mode"; then 627251883Speter if test -n "$nonopt"; then 628251883Speter $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 629251883Speter else 630251883Speter $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 631251883Speter fi 632251883Speter fi 633251883Speter ;; 634251883Speter esac 635251883Speter fi 636251883Speter 637251883Speter # Only execute mode is allowed to have -dlopen flags. 638251883Speter if test -n "$execute_dlfiles" && test "$mode" != execute; then 639251883Speter $echo "$modename: unrecognized option \`-dlopen'" 1>&2 640251883Speter $echo "$help" 1>&2 641251883Speter exit $EXIT_FAILURE 642251883Speter fi 643251883Speter 644251883Speter # Change the help message to a mode-specific one. 645251883Speter generic_help="$help" 646251883Speter help="Try \`$modename --help --mode=$mode' for more information." 647251883Speter 648251883Speter # These modes are in order of execution frequency so that they run quickly. 649251883Speter case $mode in 650251883Speter # libtool compile mode 651251883Speter compile) 652251883Speter modename="$modename: compile" 653251883Speter # Get the compilation command and the source file. 654251883Speter base_compile= 655251883Speter srcfile="$nonopt" # always keep a non-empty value in "srcfile" 656251883Speter suppress_opt=yes 657251883Speter suppress_output= 658251883Speter arg_mode=normal 659251883Speter libobj= 660251883Speter later= 661251883Speter 662251883Speter for arg 663251883Speter do 664251883Speter case $arg_mode in 665251883Speter arg ) 666251883Speter # do not "continue". Instead, add this to base_compile 667251883Speter lastarg="$arg" 668251883Speter arg_mode=normal 669251883Speter ;; 670251883Speter 671251883Speter target ) 672251883Speter libobj="$arg" 673251883Speter arg_mode=normal 674251883Speter continue 675251883Speter ;; 676251883Speter 677251883Speter normal ) 678251883Speter # Accept any command-line options. 679251883Speter case $arg in 680251883Speter -o) 681251883Speter if test -n "$libobj" ; then 682251883Speter $echo "$modename: you cannot specify \`-o' more than once" 1>&2 683251883Speter exit $EXIT_FAILURE 684251883Speter fi 685251883Speter arg_mode=target 686251883Speter continue 687251883Speter ;; 688251883Speter 689251883Speter -static | -prefer-pic | -prefer-non-pic) 690251883Speter later="$later $arg" 691251883Speter continue 692251883Speter ;; 693251883Speter 694251883Speter -no-suppress) 695251883Speter suppress_opt=no 696251883Speter continue 697251883Speter ;; 698251883Speter 699251883Speter -Xcompiler) 700251883Speter arg_mode=arg # the next one goes into the "base_compile" arg list 701251883Speter continue # The current "srcfile" will either be retained or 702251883Speter ;; # replaced later. I would guess that would be a bug. 703251883Speter 704251883Speter -Wc,*) 705251883Speter args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 706251883Speter lastarg= 707251883Speter save_ifs="$IFS"; IFS=',' 708251883Speter for arg in $args; do 709251883Speter IFS="$save_ifs" 710251883Speter 711251883Speter # Double-quote args containing other shell metacharacters. 712251883Speter # Many Bourne shells cannot handle close brackets correctly 713251883Speter # in scan sets, so we specify it separately. 714251883Speter case $arg in 715251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 716251883Speter arg="\"$arg\"" 717251883Speter ;; 718251883Speter esac 719251883Speter lastarg="$lastarg $arg" 720251883Speter done 721251883Speter IFS="$save_ifs" 722251883Speter lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 723251883Speter 724251883Speter # Add the arguments to base_compile. 725251883Speter base_compile="$base_compile $lastarg" 726251883Speter continue 727251883Speter ;; 728251883Speter 729251883Speter * ) 730251883Speter # Accept the current argument as the source file. 731251883Speter # The previous "srcfile" becomes the current argument. 732251883Speter # 733251883Speter lastarg="$srcfile" 734251883Speter srcfile="$arg" 735251883Speter ;; 736251883Speter esac # case $arg 737251883Speter ;; 738251883Speter esac # case $arg_mode 739251883Speter 740251883Speter # Aesthetically quote the previous argument. 741251883Speter lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 742251883Speter 743251883Speter case $lastarg in 744251883Speter # Double-quote args containing other shell metacharacters. 745251883Speter # Many Bourne shells cannot handle close brackets correctly 746251883Speter # in scan sets, and some SunOS ksh mistreat backslash-escaping 747251883Speter # in scan sets (worked around with variable expansion), 748251883Speter # and furthermore cannot handle '|' '&' '(' ')' in scan sets 749251883Speter # at all, so we specify them separately. 750251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 751251883Speter lastarg="\"$lastarg\"" 752251883Speter ;; 753251883Speter esac 754251883Speter 755251883Speter base_compile="$base_compile $lastarg" 756251883Speter done # for arg 757251883Speter 758251883Speter case $arg_mode in 759251883Speter arg) 760251883Speter $echo "$modename: you must specify an argument for -Xcompile" 761251883Speter exit $EXIT_FAILURE 762251883Speter ;; 763251883Speter target) 764251883Speter $echo "$modename: you must specify a target with \`-o'" 1>&2 765251883Speter exit $EXIT_FAILURE 766251883Speter ;; 767251883Speter *) 768251883Speter # Get the name of the library object. 769251883Speter [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 770251883Speter ;; 771251883Speter esac 772251883Speter 773251883Speter # Recognize several different file suffixes. 774251883Speter # If the user specifies -o file.o, it is replaced with file.lo 775251883Speter xform='[cCFSifmso]' 776251883Speter case $libobj in 777251883Speter *.ada) xform=ada ;; 778251883Speter *.adb) xform=adb ;; 779251883Speter *.ads) xform=ads ;; 780251883Speter *.asm) xform=asm ;; 781251883Speter *.c++) xform=c++ ;; 782251883Speter *.cc) xform=cc ;; 783251883Speter *.ii) xform=ii ;; 784251883Speter *.class) xform=class ;; 785251883Speter *.cpp) xform=cpp ;; 786251883Speter *.cxx) xform=cxx ;; 787251883Speter *.[fF][09]?) xform=[fF][09]. ;; 788251883Speter *.for) xform=for ;; 789251883Speter *.java) xform=java ;; 790251883Speter *.obj) xform=obj ;; 791251883Speter esac 792251883Speter 793251883Speter libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 794251883Speter 795251883Speter case $libobj in 796251883Speter *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 797251883Speter *) 798251883Speter $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 799251883Speter exit $EXIT_FAILURE 800251883Speter ;; 801251883Speter esac 802251883Speter 803251883Speter func_infer_tag $base_compile 804251883Speter 805251883Speter for arg in $later; do 806251883Speter case $arg in 807251883Speter -static) 808251883Speter build_old_libs=yes 809251883Speter continue 810251883Speter ;; 811251883Speter 812251883Speter -prefer-pic) 813251883Speter pic_mode=yes 814251883Speter continue 815251883Speter ;; 816251883Speter 817251883Speter -prefer-non-pic) 818251883Speter pic_mode=no 819251883Speter continue 820251883Speter ;; 821251883Speter esac 822251883Speter done 823251883Speter 824251883Speter qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 825251883Speter case $qlibobj in 826251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 827251883Speter qlibobj="\"$qlibobj\"" ;; 828251883Speter esac 829251883Speter test "X$libobj" != "X$qlibobj" \ 830251883Speter && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 831251883Speter && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 832251883Speter objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 833251883Speter xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 834251883Speter if test "X$xdir" = "X$obj"; then 835251883Speter xdir= 836251883Speter else 837251883Speter xdir=$xdir/ 838251883Speter fi 839251883Speter lobj=${xdir}$objdir/$objname 840251883Speter 841251883Speter if test -z "$base_compile"; then 842251883Speter $echo "$modename: you must specify a compilation command" 1>&2 843251883Speter $echo "$help" 1>&2 844251883Speter exit $EXIT_FAILURE 845251883Speter fi 846251883Speter 847251883Speter # Delete any leftover library objects. 848251883Speter if test "$build_old_libs" = yes; then 849251883Speter removelist="$obj $lobj $libobj ${libobj}T" 850251883Speter else 851251883Speter removelist="$lobj $libobj ${libobj}T" 852251883Speter fi 853251883Speter 854251883Speter $run $rm $removelist 855251883Speter trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 856251883Speter 857251883Speter # On Cygwin there's no "real" PIC flag so we must build both object types 858251883Speter case $host_os in 859251883Speter cygwin* | mingw* | pw32* | os2*) 860251883Speter pic_mode=default 861251883Speter ;; 862251883Speter esac 863251883Speter if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 864251883Speter # non-PIC code in shared libraries is not supported 865251883Speter pic_mode=default 866251883Speter fi 867251883Speter 868251883Speter # Calculate the filename of the output object if compiler does 869251883Speter # not support -o with -c 870251883Speter if test "$compiler_c_o" = no; then 871251883Speter output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 872251883Speter lockfile="$output_obj.lock" 873251883Speter removelist="$removelist $output_obj $lockfile" 874251883Speter trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 875251883Speter else 876251883Speter output_obj= 877251883Speter need_locks=no 878251883Speter lockfile= 879251883Speter fi 880251883Speter 881251883Speter # Lock this critical section if it is needed 882251883Speter # We use this script file to make the link, it avoids creating a new file 883251883Speter if test "$need_locks" = yes; then 884251883Speter until $run ln "$progpath" "$lockfile" 2>/dev/null; do 885251883Speter $show "Waiting for $lockfile to be removed" 886251883Speter sleep 2 887251883Speter done 888251883Speter elif test "$need_locks" = warn; then 889251883Speter if test -f "$lockfile"; then 890251883Speter $echo "\ 891251883Speter*** ERROR, $lockfile exists and contains: 892251883Speter`cat $lockfile 2>/dev/null` 893251883Speter 894251883SpeterThis indicates that another process is trying to use the same 895251883Spetertemporary object file, and libtool could not work around it because 896251883Speteryour compiler does not support \`-c' and \`-o' together. If you 897251883Speterrepeat this compilation, it may succeed, by chance, but you had better 898251883Speteravoid parallel builds (make -j) in this platform, or get a better 899251883Spetercompiler." 900251883Speter 901251883Speter $run $rm $removelist 902251883Speter exit $EXIT_FAILURE 903251883Speter fi 904251883Speter $echo "$srcfile" > "$lockfile" 905251883Speter fi 906251883Speter 907251883Speter if test -n "$fix_srcfile_path"; then 908251883Speter eval srcfile=\"$fix_srcfile_path\" 909251883Speter fi 910251883Speter qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 911251883Speter case $qsrcfile in 912251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 913251883Speter qsrcfile="\"$qsrcfile\"" ;; 914251883Speter esac 915251883Speter 916251883Speter $run $rm "$libobj" "${libobj}T" 917251883Speter 918251883Speter # Create a libtool object file (analogous to a ".la" file), 919251883Speter # but don't create it if we're doing a dry run. 920251883Speter test -z "$run" && cat > ${libobj}T <<EOF 921251883Speter# $libobj - a libtool object file 922251883Speter# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 923251883Speter# 924251883Speter# Please DO NOT delete this file! 925251883Speter# It is necessary for linking the library. 926251883Speter 927251883Speter# Name of the PIC object. 928251883SpeterEOF 929251883Speter 930251883Speter # Only build a PIC object if we are building libtool libraries. 931251883Speter if test "$build_libtool_libs" = yes; then 932251883Speter # Without this assignment, base_compile gets emptied. 933251883Speter fbsd_hideous_sh_bug=$base_compile 934251883Speter 935251883Speter if test "$pic_mode" != no; then 936251883Speter command="$base_compile $qsrcfile $pic_flag" 937251883Speter else 938251883Speter # Don't build PIC code 939251883Speter command="$base_compile $qsrcfile" 940251883Speter fi 941251883Speter 942251883Speter if test ! -d "${xdir}$objdir"; then 943251883Speter $show "$mkdir ${xdir}$objdir" 944251883Speter $run $mkdir ${xdir}$objdir 945251883Speter exit_status=$? 946251883Speter if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 947251883Speter exit $exit_status 948251883Speter fi 949251883Speter fi 950251883Speter 951251883Speter if test -z "$output_obj"; then 952251883Speter # Place PIC objects in $objdir 953251883Speter command="$command -o $lobj" 954251883Speter fi 955251883Speter 956251883Speter $run $rm "$lobj" "$output_obj" 957251883Speter 958251883Speter $show "$command" 959251883Speter if $run eval "$command"; then : 960251883Speter else 961251883Speter test -n "$output_obj" && $run $rm $removelist 962251883Speter exit $EXIT_FAILURE 963251883Speter fi 964251883Speter 965251883Speter if test "$need_locks" = warn && 966251883Speter test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 967251883Speter $echo "\ 968251883Speter*** ERROR, $lockfile contains: 969251883Speter`cat $lockfile 2>/dev/null` 970251883Speter 971251883Speterbut it should contain: 972251883Speter$srcfile 973251883Speter 974251883SpeterThis indicates that another process is trying to use the same 975251883Spetertemporary object file, and libtool could not work around it because 976251883Speteryour compiler does not support \`-c' and \`-o' together. If you 977251883Speterrepeat this compilation, it may succeed, by chance, but you had better 978251883Speteravoid parallel builds (make -j) in this platform, or get a better 979251883Spetercompiler." 980251883Speter 981251883Speter $run $rm $removelist 982251883Speter exit $EXIT_FAILURE 983251883Speter fi 984251883Speter 985251883Speter # Just move the object if needed, then go on to compile the next one 986251883Speter if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 987251883Speter $show "$mv $output_obj $lobj" 988251883Speter if $run $mv $output_obj $lobj; then : 989251883Speter else 990251883Speter error=$? 991251883Speter $run $rm $removelist 992251883Speter exit $error 993251883Speter fi 994251883Speter fi 995251883Speter 996251883Speter # Append the name of the PIC object to the libtool object file. 997251883Speter test -z "$run" && cat >> ${libobj}T <<EOF 998251883Speterpic_object='$objdir/$objname' 999251883Speter 1000251883SpeterEOF 1001251883Speter 1002251883Speter # Allow error messages only from the first compilation. 1003251883Speter if test "$suppress_opt" = yes; then 1004251883Speter suppress_output=' >/dev/null 2>&1' 1005251883Speter fi 1006251883Speter else 1007251883Speter # No PIC object so indicate it doesn't exist in the libtool 1008251883Speter # object file. 1009251883Speter test -z "$run" && cat >> ${libobj}T <<EOF 1010251883Speterpic_object=none 1011251883Speter 1012251883SpeterEOF 1013251883Speter fi 1014251883Speter 1015251883Speter # Only build a position-dependent object if we build old libraries. 1016251883Speter if test "$build_old_libs" = yes; then 1017251883Speter if test "$pic_mode" != yes; then 1018251883Speter # Don't build PIC code 1019251883Speter command="$base_compile $qsrcfile" 1020251883Speter else 1021251883Speter command="$base_compile $qsrcfile $pic_flag" 1022251883Speter fi 1023251883Speter if test "$compiler_c_o" = yes; then 1024251883Speter command="$command -o $obj" 1025251883Speter fi 1026251883Speter 1027251883Speter # Suppress compiler output if we already did a PIC compilation. 1028251883Speter command="$command$suppress_output" 1029251883Speter $run $rm "$obj" "$output_obj" 1030251883Speter $show "$command" 1031251883Speter if $run eval "$command"; then : 1032251883Speter else 1033251883Speter $run $rm $removelist 1034251883Speter exit $EXIT_FAILURE 1035251883Speter fi 1036251883Speter 1037251883Speter if test "$need_locks" = warn && 1038251883Speter test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1039251883Speter $echo "\ 1040251883Speter*** ERROR, $lockfile contains: 1041251883Speter`cat $lockfile 2>/dev/null` 1042251883Speter 1043251883Speterbut it should contain: 1044251883Speter$srcfile 1045251883Speter 1046251883SpeterThis indicates that another process is trying to use the same 1047251883Spetertemporary object file, and libtool could not work around it because 1048251883Speteryour compiler does not support \`-c' and \`-o' together. If you 1049251883Speterrepeat this compilation, it may succeed, by chance, but you had better 1050251883Speteravoid parallel builds (make -j) in this platform, or get a better 1051251883Spetercompiler." 1052251883Speter 1053251883Speter $run $rm $removelist 1054251883Speter exit $EXIT_FAILURE 1055251883Speter fi 1056251883Speter 1057251883Speter # Just move the object if needed 1058251883Speter if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1059251883Speter $show "$mv $output_obj $obj" 1060251883Speter if $run $mv $output_obj $obj; then : 1061251883Speter else 1062251883Speter error=$? 1063251883Speter $run $rm $removelist 1064251883Speter exit $error 1065251883Speter fi 1066251883Speter fi 1067251883Speter 1068251883Speter # Append the name of the non-PIC object the libtool object file. 1069251883Speter # Only append if the libtool object file exists. 1070251883Speter test -z "$run" && cat >> ${libobj}T <<EOF 1071251883Speter# Name of the non-PIC object. 1072251883Speternon_pic_object='$objname' 1073251883Speter 1074251883SpeterEOF 1075251883Speter else 1076251883Speter # Append the name of the non-PIC object the libtool object file. 1077251883Speter # Only append if the libtool object file exists. 1078251883Speter test -z "$run" && cat >> ${libobj}T <<EOF 1079251883Speter# Name of the non-PIC object. 1080251883Speternon_pic_object=none 1081251883Speter 1082251883SpeterEOF 1083251883Speter fi 1084251883Speter 1085251883Speter $run $mv "${libobj}T" "${libobj}" 1086251883Speter 1087251883Speter # Unlock the critical section if it was locked 1088251883Speter if test "$need_locks" != no; then 1089251883Speter $run $rm "$lockfile" 1090251883Speter fi 1091251883Speter 1092251883Speter exit $EXIT_SUCCESS 1093251883Speter ;; 1094251883Speter 1095251883Speter # libtool link mode 1096251883Speter link | relink) 1097251883Speter modename="$modename: link" 1098251883Speter case $host in 1099251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1100251883Speter # It is impossible to link a dll without this setting, and 1101251883Speter # we shouldn't force the makefile maintainer to figure out 1102251883Speter # which system we are compiling for in order to pass an extra 1103251883Speter # flag for every libtool invocation. 1104251883Speter # allow_undefined=no 1105251883Speter 1106251883Speter # FIXME: Unfortunately, there are problems with the above when trying 1107251883Speter # to make a dll which has undefined symbols, in which case not 1108251883Speter # even a static library is built. For now, we need to specify 1109251883Speter # -no-undefined on the libtool link line when we can be certain 1110251883Speter # that all symbols are satisfied, otherwise we get a static library. 1111251883Speter allow_undefined=yes 1112251883Speter ;; 1113251883Speter *) 1114251883Speter allow_undefined=yes 1115251883Speter ;; 1116251883Speter esac 1117251883Speter libtool_args="$nonopt" 1118251883Speter base_compile="$nonopt $@" 1119251883Speter compile_command="$nonopt" 1120251883Speter finalize_command="$nonopt" 1121251883Speter 1122251883Speter compile_rpath= 1123251883Speter finalize_rpath= 1124251883Speter compile_shlibpath= 1125251883Speter finalize_shlibpath= 1126251883Speter convenience= 1127251883Speter old_convenience= 1128251883Speter deplibs= 1129251883Speter old_deplibs= 1130251883Speter compiler_flags= 1131251883Speter linker_flags= 1132251883Speter dllsearchpath= 1133251883Speter lib_search_path=`pwd` 1134251883Speter inst_prefix_dir= 1135251883Speter 1136251883Speter avoid_version=no 1137251883Speter dlfiles= 1138251883Speter dlprefiles= 1139251883Speter dlself=no 1140251883Speter export_dynamic=no 1141251883Speter export_symbols= 1142251883Speter export_symbols_regex= 1143251883Speter generated= 1144251883Speter libobjs= 1145251883Speter ltlibs= 1146251883Speter module=no 1147251883Speter no_install=no 1148251883Speter objs= 1149251883Speter non_pic_objects= 1150251883Speter notinst_path= # paths that contain not-installed libtool libraries 1151251883Speter precious_files_regex= 1152251883Speter prefer_static_libs=no 1153251883Speter preload=no 1154251883Speter prev= 1155251883Speter prevarg= 1156251883Speter release= 1157251883Speter rpath= 1158251883Speter xrpath= 1159251883Speter perm_rpath= 1160251883Speter temp_rpath= 1161251883Speter thread_safe=no 1162251883Speter vinfo= 1163251883Speter vinfo_number=no 1164251883Speter 1165251883Speter func_infer_tag $base_compile 1166251883Speter 1167251883Speter # We need to know -static, to get the right output filenames. 1168251883Speter for arg 1169251883Speter do 1170251883Speter case $arg in 1171251883Speter -all-static | -static | -static-libtool-libs) 1172251883Speter case $arg in 1173251883Speter -all-static) 1174251883Speter if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1175251883Speter $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1176251883Speter fi 1177251883Speter if test -n "$link_static_flag"; then 1178251883Speter dlopen_self=$dlopen_self_static 1179251883Speter fi 1180251883Speter prefer_static_libs=yes 1181251883Speter ;; 1182251883Speter -static) 1183251883Speter if test -z "$pic_flag" && test -n "$link_static_flag"; then 1184251883Speter dlopen_self=$dlopen_self_static 1185251883Speter fi 1186251883Speter prefer_static_libs=built 1187251883Speter ;; 1188251883Speter -static-libtool-libs) 1189251883Speter if test -z "$pic_flag" && test -n "$link_static_flag"; then 1190251883Speter dlopen_self=$dlopen_self_static 1191251883Speter fi 1192251883Speter prefer_static_libs=yes 1193251883Speter ;; 1194251883Speter esac 1195251883Speter build_libtool_libs=no 1196251883Speter build_old_libs=yes 1197251883Speter break 1198251883Speter ;; 1199251883Speter esac 1200251883Speter done 1201251883Speter 1202251883Speter # See if our shared archives depend on static archives. 1203251883Speter test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1204251883Speter 1205251883Speter # Go through the arguments, transforming them on the way. 1206251883Speter while test "$#" -gt 0; do 1207251883Speter arg="$1" 1208251883Speter shift 1209251883Speter case $arg in 1210251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1211251883Speter qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1212251883Speter ;; 1213251883Speter *) qarg=$arg ;; 1214251883Speter esac 1215251883Speter libtool_args="$libtool_args $qarg" 1216251883Speter 1217251883Speter # If the previous option needs an argument, assign it. 1218251883Speter if test -n "$prev"; then 1219251883Speter case $prev in 1220251883Speter output) 1221251883Speter compile_command="$compile_command @OUTPUT@" 1222251883Speter finalize_command="$finalize_command @OUTPUT@" 1223251883Speter ;; 1224251883Speter esac 1225251883Speter 1226251883Speter case $prev in 1227251883Speter dlfiles|dlprefiles) 1228251883Speter if test "$preload" = no; then 1229251883Speter # Add the symbol object into the linking commands. 1230251883Speter compile_command="$compile_command @SYMFILE@" 1231251883Speter finalize_command="$finalize_command @SYMFILE@" 1232251883Speter preload=yes 1233251883Speter fi 1234251883Speter case $arg in 1235251883Speter *.la | *.lo) ;; # We handle these cases below. 1236251883Speter force) 1237251883Speter if test "$dlself" = no; then 1238251883Speter dlself=needless 1239251883Speter export_dynamic=yes 1240251883Speter fi 1241251883Speter prev= 1242251883Speter continue 1243251883Speter ;; 1244251883Speter self) 1245251883Speter if test "$prev" = dlprefiles; then 1246251883Speter dlself=yes 1247251883Speter elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1248251883Speter dlself=yes 1249251883Speter else 1250251883Speter dlself=needless 1251251883Speter export_dynamic=yes 1252251883Speter fi 1253251883Speter prev= 1254251883Speter continue 1255251883Speter ;; 1256251883Speter *) 1257251883Speter if test "$prev" = dlfiles; then 1258251883Speter dlfiles="$dlfiles $arg" 1259251883Speter else 1260251883Speter dlprefiles="$dlprefiles $arg" 1261251883Speter fi 1262251883Speter prev= 1263251883Speter continue 1264251883Speter ;; 1265251883Speter esac 1266251883Speter ;; 1267251883Speter expsyms) 1268251883Speter export_symbols="$arg" 1269251883Speter if test ! -f "$arg"; then 1270251883Speter $echo "$modename: symbol file \`$arg' does not exist" 1271251883Speter exit $EXIT_FAILURE 1272251883Speter fi 1273251883Speter prev= 1274251883Speter continue 1275251883Speter ;; 1276251883Speter expsyms_regex) 1277251883Speter export_symbols_regex="$arg" 1278251883Speter prev= 1279251883Speter continue 1280251883Speter ;; 1281251883Speter inst_prefix) 1282251883Speter inst_prefix_dir="$arg" 1283251883Speter prev= 1284251883Speter continue 1285251883Speter ;; 1286251883Speter precious_regex) 1287251883Speter precious_files_regex="$arg" 1288251883Speter prev= 1289251883Speter continue 1290251883Speter ;; 1291251883Speter release) 1292251883Speter release="-$arg" 1293251883Speter prev= 1294251883Speter continue 1295251883Speter ;; 1296251883Speter objectlist) 1297251883Speter if test -f "$arg"; then 1298251883Speter save_arg=$arg 1299251883Speter moreargs= 1300251883Speter for fil in `cat $save_arg` 1301251883Speter do 1302251883Speter# moreargs="$moreargs $fil" 1303251883Speter arg=$fil 1304251883Speter # A libtool-controlled object. 1305251883Speter 1306251883Speter # Check to see that this really is a libtool object. 1307251883Speter if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1308251883Speter pic_object= 1309251883Speter non_pic_object= 1310251883Speter 1311251883Speter # Read the .lo file 1312251883Speter # If there is no directory component, then add one. 1313251883Speter case $arg in 1314251883Speter */* | *\\*) . $arg ;; 1315251883Speter *) . ./$arg ;; 1316251883Speter esac 1317251883Speter 1318251883Speter if test -z "$pic_object" || \ 1319251883Speter test -z "$non_pic_object" || 1320251883Speter test "$pic_object" = none && \ 1321251883Speter test "$non_pic_object" = none; then 1322251883Speter $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1323251883Speter exit $EXIT_FAILURE 1324251883Speter fi 1325251883Speter 1326251883Speter # Extract subdirectory from the argument. 1327251883Speter xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1328251883Speter if test "X$xdir" = "X$arg"; then 1329251883Speter xdir= 1330251883Speter else 1331251883Speter xdir="$xdir/" 1332251883Speter fi 1333251883Speter 1334251883Speter if test "$pic_object" != none; then 1335251883Speter # Prepend the subdirectory the object is found in. 1336251883Speter pic_object="$xdir$pic_object" 1337251883Speter 1338251883Speter if test "$prev" = dlfiles; then 1339251883Speter if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1340251883Speter dlfiles="$dlfiles $pic_object" 1341251883Speter prev= 1342251883Speter continue 1343251883Speter else 1344251883Speter # If libtool objects are unsupported, then we need to preload. 1345251883Speter prev=dlprefiles 1346251883Speter fi 1347251883Speter fi 1348251883Speter 1349251883Speter # CHECK ME: I think I busted this. -Ossama 1350251883Speter if test "$prev" = dlprefiles; then 1351251883Speter # Preload the old-style object. 1352251883Speter dlprefiles="$dlprefiles $pic_object" 1353251883Speter prev= 1354251883Speter fi 1355251883Speter 1356251883Speter # A PIC object. 1357251883Speter libobjs="$libobjs $pic_object" 1358251883Speter arg="$pic_object" 1359251883Speter fi 1360251883Speter 1361251883Speter # Non-PIC object. 1362251883Speter if test "$non_pic_object" != none; then 1363251883Speter # Prepend the subdirectory the object is found in. 1364251883Speter non_pic_object="$xdir$non_pic_object" 1365251883Speter 1366251883Speter # A standard non-PIC object 1367251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1368251883Speter if test -z "$pic_object" || test "$pic_object" = none ; then 1369251883Speter arg="$non_pic_object" 1370251883Speter fi 1371251883Speter else 1372251883Speter # If the PIC object exists, use it instead. 1373251883Speter # $xdir was prepended to $pic_object above. 1374251883Speter non_pic_object="$pic_object" 1375251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1376251883Speter fi 1377251883Speter else 1378251883Speter # Only an error if not doing a dry-run. 1379251883Speter if test -z "$run"; then 1380251883Speter $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1381251883Speter exit $EXIT_FAILURE 1382251883Speter else 1383251883Speter # Dry-run case. 1384251883Speter 1385251883Speter # Extract subdirectory from the argument. 1386251883Speter xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1387251883Speter if test "X$xdir" = "X$arg"; then 1388251883Speter xdir= 1389251883Speter else 1390251883Speter xdir="$xdir/" 1391251883Speter fi 1392251883Speter 1393251883Speter pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1394251883Speter non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1395251883Speter libobjs="$libobjs $pic_object" 1396251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1397251883Speter fi 1398251883Speter fi 1399251883Speter done 1400251883Speter else 1401251883Speter $echo "$modename: link input file \`$save_arg' does not exist" 1402251883Speter exit $EXIT_FAILURE 1403251883Speter fi 1404251883Speter arg=$save_arg 1405251883Speter prev= 1406251883Speter continue 1407251883Speter ;; 1408251883Speter rpath | xrpath) 1409251883Speter # We need an absolute path. 1410251883Speter case $arg in 1411251883Speter [\\/]* | [A-Za-z]:[\\/]*) ;; 1412251883Speter *) 1413251883Speter $echo "$modename: only absolute run-paths are allowed" 1>&2 1414251883Speter exit $EXIT_FAILURE 1415251883Speter ;; 1416251883Speter esac 1417251883Speter if test "$prev" = rpath; then 1418251883Speter case "$rpath " in 1419251883Speter *" $arg "*) ;; 1420251883Speter *) rpath="$rpath $arg" ;; 1421251883Speter esac 1422251883Speter else 1423251883Speter case "$xrpath " in 1424251883Speter *" $arg "*) ;; 1425251883Speter *) xrpath="$xrpath $arg" ;; 1426251883Speter esac 1427251883Speter fi 1428251883Speter prev= 1429251883Speter continue 1430251883Speter ;; 1431251883Speter xcompiler) 1432251883Speter compiler_flags="$compiler_flags $qarg" 1433251883Speter prev= 1434251883Speter compile_command="$compile_command $qarg" 1435251883Speter finalize_command="$finalize_command $qarg" 1436251883Speter continue 1437251883Speter ;; 1438251883Speter xlinker) 1439251883Speter linker_flags="$linker_flags $qarg" 1440251883Speter compiler_flags="$compiler_flags $wl$qarg" 1441251883Speter prev= 1442251883Speter compile_command="$compile_command $wl$qarg" 1443251883Speter finalize_command="$finalize_command $wl$qarg" 1444251883Speter continue 1445251883Speter ;; 1446251883Speter xcclinker) 1447251883Speter linker_flags="$linker_flags $qarg" 1448251883Speter compiler_flags="$compiler_flags $qarg" 1449251883Speter prev= 1450251883Speter compile_command="$compile_command $qarg" 1451251883Speter finalize_command="$finalize_command $qarg" 1452251883Speter continue 1453251883Speter ;; 1454251883Speter shrext) 1455251883Speter shrext_cmds="$arg" 1456251883Speter prev= 1457251883Speter continue 1458251883Speter ;; 1459251883Speter darwin_framework|darwin_framework_skip) 1460251883Speter test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1461251883Speter compile_command="$compile_command $arg" 1462251883Speter finalize_command="$finalize_command $arg" 1463251883Speter prev= 1464251883Speter continue 1465251883Speter ;; 1466251883Speter *) 1467251883Speter eval "$prev=\"\$arg\"" 1468251883Speter prev= 1469251883Speter continue 1470251883Speter ;; 1471251883Speter esac 1472251883Speter fi # test -n "$prev" 1473251883Speter 1474251883Speter prevarg="$arg" 1475251883Speter 1476251883Speter case $arg in 1477251883Speter -all-static) 1478251883Speter if test -n "$link_static_flag"; then 1479251883Speter compile_command="$compile_command $link_static_flag" 1480251883Speter finalize_command="$finalize_command $link_static_flag" 1481251883Speter fi 1482251883Speter continue 1483251883Speter ;; 1484251883Speter 1485251883Speter -allow-undefined) 1486251883Speter # FIXME: remove this flag sometime in the future. 1487251883Speter $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1488251883Speter continue 1489251883Speter ;; 1490251883Speter 1491251883Speter -avoid-version) 1492251883Speter avoid_version=yes 1493251883Speter continue 1494251883Speter ;; 1495251883Speter 1496251883Speter -dlopen) 1497251883Speter prev=dlfiles 1498251883Speter continue 1499251883Speter ;; 1500251883Speter 1501251883Speter -dlpreopen) 1502251883Speter prev=dlprefiles 1503251883Speter continue 1504251883Speter ;; 1505251883Speter 1506251883Speter -export-dynamic) 1507251883Speter export_dynamic=yes 1508251883Speter continue 1509251883Speter ;; 1510251883Speter 1511251883Speter -export-symbols | -export-symbols-regex) 1512251883Speter if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1513251883Speter $echo "$modename: more than one -exported-symbols argument is not allowed" 1514251883Speter exit $EXIT_FAILURE 1515251883Speter fi 1516251883Speter if test "X$arg" = "X-export-symbols"; then 1517251883Speter prev=expsyms 1518251883Speter else 1519251883Speter prev=expsyms_regex 1520251883Speter fi 1521251883Speter continue 1522251883Speter ;; 1523251883Speter 1524251883Speter -framework|-arch|-isysroot) 1525251883Speter case " $CC " in 1526251883Speter *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1527251883Speter prev=darwin_framework_skip ;; 1528251883Speter *) compiler_flags="$compiler_flags $arg" 1529251883Speter prev=darwin_framework ;; 1530251883Speter esac 1531251883Speter compile_command="$compile_command $arg" 1532251883Speter finalize_command="$finalize_command $arg" 1533251883Speter continue 1534251883Speter ;; 1535251883Speter 1536251883Speter -inst-prefix-dir) 1537251883Speter prev=inst_prefix 1538251883Speter continue 1539251883Speter ;; 1540251883Speter 1541251883Speter # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1542251883Speter # so, if we see these flags be careful not to treat them like -L 1543251883Speter -L[A-Z][A-Z]*:*) 1544251883Speter case $with_gcc/$host in 1545251883Speter no/*-*-irix* | /*-*-irix*) 1546251883Speter compile_command="$compile_command $arg" 1547251883Speter finalize_command="$finalize_command $arg" 1548251883Speter ;; 1549251883Speter esac 1550251883Speter continue 1551251883Speter ;; 1552251883Speter 1553251883Speter -L*) 1554251883Speter dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1555251883Speter # We need an absolute path. 1556251883Speter case $dir in 1557251883Speter [\\/]* | [A-Za-z]:[\\/]*) ;; 1558251883Speter *) 1559251883Speter absdir=`cd "$dir" && pwd` 1560251883Speter if test -z "$absdir"; then 1561251883Speter $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1562251883Speter absdir="$dir" 1563251883Speter notinst_path="$notinst_path $dir" 1564251883Speter fi 1565251883Speter dir="$absdir" 1566251883Speter ;; 1567251883Speter esac 1568251883Speter case "$deplibs " in 1569251883Speter *" -L$dir "*) ;; 1570251883Speter *) 1571251883Speter deplibs="$deplibs -L$dir" 1572251883Speter lib_search_path="$lib_search_path $dir" 1573251883Speter ;; 1574251883Speter esac 1575251883Speter case $host in 1576251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1577251883Speter testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1578251883Speter case :$dllsearchpath: in 1579251883Speter *":$dir:"*) ;; 1580251883Speter *) dllsearchpath="$dllsearchpath:$dir";; 1581251883Speter esac 1582251883Speter case :$dllsearchpath: in 1583251883Speter *":$testbindir:"*) ;; 1584251883Speter *) dllsearchpath="$dllsearchpath:$testbindir";; 1585251883Speter esac 1586251883Speter ;; 1587251883Speter esac 1588251883Speter continue 1589251883Speter ;; 1590251883Speter 1591251883Speter -l*) 1592251883Speter if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1593251883Speter case $host in 1594251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1595251883Speter # These systems don't actually have a C or math library (as such) 1596251883Speter continue 1597251883Speter ;; 1598251883Speter *-*-os2*) 1599251883Speter # These systems don't actually have a C library (as such) 1600251883Speter test "X$arg" = "X-lc" && continue 1601251883Speter ;; 1602251883Speter *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1603251883Speter # Do not include libc due to us having libc/libc_r. 1604251883Speter test "X$arg" = "X-lc" && continue 1605251883Speter ;; 1606251883Speter *-*-rhapsody* | *-*-darwin1.[012]) 1607251883Speter # Rhapsody C and math libraries are in the System framework 1608251883Speter deplibs="$deplibs -framework System" 1609251883Speter continue 1610251883Speter ;; 1611251883Speter *-*-sco3.2v5* | *-*-sco5v6*) 1612251883Speter # Causes problems with __ctype 1613251883Speter test "X$arg" = "X-lc" && continue 1614251883Speter ;; 1615251883Speter *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1616251883Speter # Compiler inserts libc in the correct place for threads to work 1617251883Speter test "X$arg" = "X-lc" && continue 1618251883Speter ;; 1619251883Speter esac 1620251883Speter elif test "X$arg" = "X-lc_r"; then 1621251883Speter case $host in 1622251883Speter *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1623251883Speter # Do not include libc_r directly, use -pthread flag. 1624251883Speter continue 1625251883Speter ;; 1626251883Speter esac 1627251883Speter fi 1628251883Speter deplibs="$deplibs $arg" 1629251883Speter continue 1630251883Speter ;; 1631251883Speter 1632251883Speter # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1633251883Speter # classes, name mangling, and exception handling. 1634251883Speter -model) 1635251883Speter compile_command="$compile_command $arg" 1636251883Speter compiler_flags="$compiler_flags $arg" 1637251883Speter finalize_command="$finalize_command $arg" 1638251883Speter prev=xcompiler 1639251883Speter continue 1640251883Speter ;; 1641251883Speter 1642251883Speter -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1643251883Speter compiler_flags="$compiler_flags $arg" 1644251883Speter compile_command="$compile_command $arg" 1645251883Speter finalize_command="$finalize_command $arg" 1646251883Speter continue 1647251883Speter ;; 1648251883Speter 1649251883Speter -module) 1650251883Speter module=yes 1651251883Speter continue 1652251883Speter ;; 1653251883Speter 1654251883Speter # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1655251883Speter # -r[0-9][0-9]* specifies the processor on the SGI compiler 1656251883Speter # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1657251883Speter # +DA*, +DD* enable 64-bit mode on the HP compiler 1658251883Speter # -q* pass through compiler args for the IBM compiler 1659251883Speter # -m* pass through architecture-specific compiler args for GCC 1660251883Speter # -m*, -t[45]*, -txscale* pass through architecture-specific 1661251883Speter # compiler args for GCC 1662251883Speter # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1663251883Speter # -F/path gives path to uninstalled frameworks, gcc on darwin 1664251883Speter # @file GCC response files 1665251883Speter -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1666251883Speter -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1667251883Speter 1668251883Speter # Unknown arguments in both finalize_command and compile_command need 1669251883Speter # to be aesthetically quoted because they are evaled later. 1670251883Speter arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1671251883Speter case $arg in 1672251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1673251883Speter arg="\"$arg\"" 1674251883Speter ;; 1675251883Speter esac 1676251883Speter compile_command="$compile_command $arg" 1677251883Speter finalize_command="$finalize_command $arg" 1678251883Speter compiler_flags="$compiler_flags $arg" 1679251883Speter continue 1680251883Speter ;; 1681251883Speter 1682251883Speter -shrext) 1683251883Speter prev=shrext 1684251883Speter continue 1685251883Speter ;; 1686251883Speter 1687251883Speter -no-fast-install) 1688251883Speter fast_install=no 1689251883Speter continue 1690251883Speter ;; 1691251883Speter 1692251883Speter -no-install) 1693251883Speter case $host in 1694251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1695251883Speter # The PATH hackery in wrapper scripts is required on Windows 1696251883Speter # and Darwin in order for the loader to find any dlls it needs. 1697251883Speter $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1698251883Speter $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1699251883Speter fast_install=no 1700251883Speter ;; 1701251883Speter *) no_install=yes ;; 1702251883Speter esac 1703251883Speter continue 1704251883Speter ;; 1705251883Speter 1706251883Speter -no-undefined) 1707251883Speter allow_undefined=no 1708251883Speter continue 1709251883Speter ;; 1710251883Speter 1711251883Speter -objectlist) 1712251883Speter prev=objectlist 1713251883Speter continue 1714251883Speter ;; 1715251883Speter 1716251883Speter -o) prev=output ;; 1717251883Speter 1718251883Speter -precious-files-regex) 1719251883Speter prev=precious_regex 1720251883Speter continue 1721251883Speter ;; 1722251883Speter 1723251883Speter -release) 1724251883Speter prev=release 1725251883Speter continue 1726251883Speter ;; 1727251883Speter 1728251883Speter -rpath) 1729251883Speter prev=rpath 1730251883Speter continue 1731251883Speter ;; 1732251883Speter 1733251883Speter -R) 1734251883Speter prev=xrpath 1735251883Speter continue 1736251883Speter ;; 1737251883Speter 1738251883Speter -R*) 1739251883Speter dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1740251883Speter # We need an absolute path. 1741251883Speter case $dir in 1742251883Speter [\\/]* | [A-Za-z]:[\\/]*) ;; 1743251883Speter *) 1744251883Speter $echo "$modename: only absolute run-paths are allowed" 1>&2 1745251883Speter exit $EXIT_FAILURE 1746251883Speter ;; 1747251883Speter esac 1748251883Speter case "$xrpath " in 1749251883Speter *" $dir "*) ;; 1750251883Speter *) xrpath="$xrpath $dir" ;; 1751251883Speter esac 1752251883Speter continue 1753251883Speter ;; 1754251883Speter 1755251883Speter -static | -static-libtool-libs) 1756251883Speter # The effects of -static are defined in a previous loop. 1757251883Speter # We used to do the same as -all-static on platforms that 1758251883Speter # didn't have a PIC flag, but the assumption that the effects 1759251883Speter # would be equivalent was wrong. It would break on at least 1760251883Speter # Digital Unix and AIX. 1761251883Speter continue 1762251883Speter ;; 1763251883Speter 1764251883Speter -thread-safe) 1765251883Speter thread_safe=yes 1766251883Speter continue 1767251883Speter ;; 1768251883Speter 1769251883Speter -version-info) 1770251883Speter prev=vinfo 1771251883Speter continue 1772251883Speter ;; 1773251883Speter -version-number) 1774251883Speter prev=vinfo 1775251883Speter vinfo_number=yes 1776251883Speter continue 1777251883Speter ;; 1778251883Speter 1779251883Speter -Wc,*) 1780251883Speter args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1781251883Speter arg= 1782251883Speter save_ifs="$IFS"; IFS=',' 1783251883Speter for flag in $args; do 1784251883Speter IFS="$save_ifs" 1785251883Speter case $flag in 1786251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1787251883Speter flag="\"$flag\"" 1788251883Speter ;; 1789251883Speter esac 1790251883Speter arg="$arg $wl$flag" 1791251883Speter compiler_flags="$compiler_flags $flag" 1792251883Speter done 1793251883Speter IFS="$save_ifs" 1794251883Speter arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1795251883Speter ;; 1796251883Speter 1797251883Speter -Wl,*) 1798251883Speter args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1799251883Speter arg= 1800251883Speter save_ifs="$IFS"; IFS=',' 1801251883Speter for flag in $args; do 1802251883Speter IFS="$save_ifs" 1803251883Speter case $flag in 1804251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1805251883Speter flag="\"$flag\"" 1806251883Speter ;; 1807251883Speter esac 1808251883Speter arg="$arg $wl$flag" 1809251883Speter compiler_flags="$compiler_flags $wl$flag" 1810251883Speter linker_flags="$linker_flags $flag" 1811251883Speter done 1812251883Speter IFS="$save_ifs" 1813251883Speter arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1814251883Speter ;; 1815251883Speter 1816251883Speter -Xcompiler) 1817251883Speter prev=xcompiler 1818251883Speter continue 1819251883Speter ;; 1820251883Speter 1821251883Speter -Xlinker) 1822251883Speter prev=xlinker 1823251883Speter continue 1824251883Speter ;; 1825251883Speter 1826251883Speter -XCClinker) 1827251883Speter prev=xcclinker 1828251883Speter continue 1829251883Speter ;; 1830251883Speter 1831251883Speter # Some other compiler flag. 1832251883Speter -* | +*) 1833251883Speter # Unknown arguments in both finalize_command and compile_command need 1834251883Speter # to be aesthetically quoted because they are evaled later. 1835251883Speter arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1836251883Speter case $arg in 1837251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1838251883Speter arg="\"$arg\"" 1839251883Speter ;; 1840251883Speter esac 1841251883Speter ;; 1842251883Speter 1843251883Speter *.$objext) 1844251883Speter # A standard object. 1845251883Speter objs="$objs $arg" 1846251883Speter ;; 1847251883Speter 1848251883Speter *.lo) 1849251883Speter # A libtool-controlled object. 1850251883Speter 1851251883Speter # Check to see that this really is a libtool object. 1852251883Speter if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1853251883Speter pic_object= 1854251883Speter non_pic_object= 1855251883Speter 1856251883Speter # Read the .lo file 1857251883Speter # If there is no directory component, then add one. 1858251883Speter case $arg in 1859251883Speter */* | *\\*) . $arg ;; 1860251883Speter *) . ./$arg ;; 1861251883Speter esac 1862251883Speter 1863251883Speter if test -z "$pic_object" || \ 1864251883Speter test -z "$non_pic_object" || 1865251883Speter test "$pic_object" = none && \ 1866251883Speter test "$non_pic_object" = none; then 1867251883Speter $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1868251883Speter exit $EXIT_FAILURE 1869251883Speter fi 1870251883Speter 1871251883Speter # Extract subdirectory from the argument. 1872251883Speter xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1873251883Speter if test "X$xdir" = "X$arg"; then 1874251883Speter xdir= 1875251883Speter else 1876251883Speter xdir="$xdir/" 1877251883Speter fi 1878251883Speter 1879251883Speter if test "$pic_object" != none; then 1880251883Speter # Prepend the subdirectory the object is found in. 1881251883Speter pic_object="$xdir$pic_object" 1882251883Speter 1883251883Speter if test "$prev" = dlfiles; then 1884251883Speter if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1885251883Speter dlfiles="$dlfiles $pic_object" 1886251883Speter prev= 1887251883Speter continue 1888251883Speter else 1889251883Speter # If libtool objects are unsupported, then we need to preload. 1890251883Speter prev=dlprefiles 1891251883Speter fi 1892251883Speter fi 1893251883Speter 1894251883Speter # CHECK ME: I think I busted this. -Ossama 1895251883Speter if test "$prev" = dlprefiles; then 1896251883Speter # Preload the old-style object. 1897251883Speter dlprefiles="$dlprefiles $pic_object" 1898251883Speter prev= 1899251883Speter fi 1900251883Speter 1901251883Speter # A PIC object. 1902251883Speter libobjs="$libobjs $pic_object" 1903251883Speter arg="$pic_object" 1904251883Speter fi 1905251883Speter 1906251883Speter # Non-PIC object. 1907251883Speter if test "$non_pic_object" != none; then 1908251883Speter # Prepend the subdirectory the object is found in. 1909251883Speter non_pic_object="$xdir$non_pic_object" 1910251883Speter 1911251883Speter # A standard non-PIC object 1912251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1913251883Speter if test -z "$pic_object" || test "$pic_object" = none ; then 1914251883Speter arg="$non_pic_object" 1915251883Speter fi 1916251883Speter else 1917251883Speter # If the PIC object exists, use it instead. 1918251883Speter # $xdir was prepended to $pic_object above. 1919251883Speter non_pic_object="$pic_object" 1920251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1921251883Speter fi 1922251883Speter else 1923251883Speter # Only an error if not doing a dry-run. 1924251883Speter if test -z "$run"; then 1925251883Speter $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1926251883Speter exit $EXIT_FAILURE 1927251883Speter else 1928251883Speter # Dry-run case. 1929251883Speter 1930251883Speter # Extract subdirectory from the argument. 1931251883Speter xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1932251883Speter if test "X$xdir" = "X$arg"; then 1933251883Speter xdir= 1934251883Speter else 1935251883Speter xdir="$xdir/" 1936251883Speter fi 1937251883Speter 1938251883Speter pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1939251883Speter non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1940251883Speter libobjs="$libobjs $pic_object" 1941251883Speter non_pic_objects="$non_pic_objects $non_pic_object" 1942251883Speter fi 1943251883Speter fi 1944251883Speter ;; 1945251883Speter 1946251883Speter *.$libext) 1947251883Speter # An archive. 1948251883Speter deplibs="$deplibs $arg" 1949251883Speter old_deplibs="$old_deplibs $arg" 1950251883Speter continue 1951251883Speter ;; 1952251883Speter 1953251883Speter *.la) 1954251883Speter # A libtool-controlled library. 1955251883Speter 1956251883Speter if test "$prev" = dlfiles; then 1957251883Speter # This library was specified with -dlopen. 1958251883Speter dlfiles="$dlfiles $arg" 1959251883Speter prev= 1960251883Speter elif test "$prev" = dlprefiles; then 1961251883Speter # The library was specified with -dlpreopen. 1962251883Speter dlprefiles="$dlprefiles $arg" 1963251883Speter prev= 1964251883Speter else 1965251883Speter deplibs="$deplibs $arg" 1966251883Speter fi 1967251883Speter continue 1968251883Speter ;; 1969251883Speter 1970251883Speter # Some other compiler argument. 1971251883Speter *) 1972251883Speter # Unknown arguments in both finalize_command and compile_command need 1973251883Speter # to be aesthetically quoted because they are evaled later. 1974251883Speter arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1975251883Speter case $arg in 1976251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1977251883Speter arg="\"$arg\"" 1978251883Speter ;; 1979251883Speter esac 1980251883Speter ;; 1981251883Speter esac # arg 1982251883Speter 1983251883Speter # Now actually substitute the argument into the commands. 1984251883Speter if test -n "$arg"; then 1985251883Speter compile_command="$compile_command $arg" 1986251883Speter finalize_command="$finalize_command $arg" 1987251883Speter fi 1988251883Speter done # argument parsing loop 1989251883Speter 1990251883Speter if test -n "$prev"; then 1991251883Speter $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1992251883Speter $echo "$help" 1>&2 1993251883Speter exit $EXIT_FAILURE 1994251883Speter fi 1995251883Speter 1996251883Speter if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 1997251883Speter eval arg=\"$export_dynamic_flag_spec\" 1998251883Speter compile_command="$compile_command $arg" 1999251883Speter finalize_command="$finalize_command $arg" 2000251883Speter fi 2001251883Speter 2002251883Speter oldlibs= 2003251883Speter # calculate the name of the file, without its directory 2004251883Speter outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2005251883Speter libobjs_save="$libobjs" 2006251883Speter 2007251883Speter if test -n "$shlibpath_var"; then 2008251883Speter # get the directories listed in $shlibpath_var 2009251883Speter eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2010251883Speter else 2011251883Speter shlib_search_path= 2012251883Speter fi 2013251883Speter eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2014251883Speter eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2015251883Speter 2016251883Speter output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2017251883Speter if test "X$output_objdir" = "X$output"; then 2018251883Speter output_objdir="$objdir" 2019251883Speter else 2020251883Speter output_objdir="$output_objdir/$objdir" 2021251883Speter fi 2022251883Speter # Create the object directory. 2023251883Speter if test ! -d "$output_objdir"; then 2024251883Speter $show "$mkdir $output_objdir" 2025251883Speter $run $mkdir $output_objdir 2026251883Speter exit_status=$? 2027251883Speter if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2028251883Speter exit $exit_status 2029251883Speter fi 2030251883Speter fi 2031251883Speter 2032251883Speter # Determine the type of output 2033251883Speter case $output in 2034251883Speter "") 2035251883Speter $echo "$modename: you must specify an output file" 1>&2 2036251883Speter $echo "$help" 1>&2 2037251883Speter exit $EXIT_FAILURE 2038251883Speter ;; 2039251883Speter *.$libext) linkmode=oldlib ;; 2040251883Speter *.lo | *.$objext) linkmode=obj ;; 2041251883Speter *.la) linkmode=lib ;; 2042251883Speter *) linkmode=prog ;; # Anything else should be a program. 2043251883Speter esac 2044251883Speter 2045251883Speter case $host in 2046251883Speter *cygwin* | *mingw* | *pw32*) 2047251883Speter # don't eliminate duplications in $postdeps and $predeps 2048251883Speter duplicate_compiler_generated_deps=yes 2049251883Speter ;; 2050251883Speter *) 2051251883Speter duplicate_compiler_generated_deps=$duplicate_deps 2052251883Speter ;; 2053251883Speter esac 2054251883Speter specialdeplibs= 2055251883Speter 2056251883Speter libs= 2057251883Speter # Find all interdependent deplibs by searching for libraries 2058251883Speter # that are linked more than once (e.g. -la -lb -la) 2059251883Speter for deplib in $deplibs; do 2060251883Speter if test "X$duplicate_deps" = "Xyes" ; then 2061251883Speter case "$libs " in 2062251883Speter *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2063251883Speter esac 2064251883Speter fi 2065251883Speter libs="$libs $deplib" 2066251883Speter done 2067251883Speter 2068251883Speter if test "$linkmode" = lib; then 2069251883Speter libs="$predeps $libs $compiler_lib_search_path $postdeps" 2070251883Speter 2071251883Speter # Compute libraries that are listed more than once in $predeps 2072251883Speter # $postdeps and mark them as special (i.e., whose duplicates are 2073251883Speter # not to be eliminated). 2074251883Speter pre_post_deps= 2075251883Speter if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2076251883Speter for pre_post_dep in $predeps $postdeps; do 2077251883Speter case "$pre_post_deps " in 2078251883Speter *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2079251883Speter esac 2080251883Speter pre_post_deps="$pre_post_deps $pre_post_dep" 2081251883Speter done 2082251883Speter fi 2083251883Speter pre_post_deps= 2084251883Speter fi 2085251883Speter 2086251883Speter deplibs= 2087251883Speter newdependency_libs= 2088251883Speter newlib_search_path= 2089251883Speter need_relink=no # whether we're linking any uninstalled libtool libraries 2090251883Speter notinst_deplibs= # not-installed libtool libraries 2091251883Speter case $linkmode in 2092251883Speter lib) 2093251883Speter passes="conv link" 2094251883Speter for file in $dlfiles $dlprefiles; do 2095251883Speter case $file in 2096251883Speter *.la) ;; 2097251883Speter *) 2098251883Speter $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2099251883Speter exit $EXIT_FAILURE 2100251883Speter ;; 2101251883Speter esac 2102251883Speter done 2103251883Speter ;; 2104251883Speter prog) 2105251883Speter compile_deplibs= 2106251883Speter finalize_deplibs= 2107251883Speter alldeplibs=no 2108251883Speter newdlfiles= 2109251883Speter newdlprefiles= 2110251883Speter passes="conv scan dlopen dlpreopen link" 2111251883Speter ;; 2112251883Speter *) passes="conv" 2113251883Speter ;; 2114251883Speter esac 2115251883Speter for pass in $passes; do 2116251883Speter if test "$linkmode,$pass" = "lib,link" || 2117251883Speter test "$linkmode,$pass" = "prog,scan"; then 2118251883Speter libs="$deplibs" 2119251883Speter deplibs= 2120251883Speter fi 2121251883Speter if test "$linkmode" = prog; then 2122251883Speter case $pass in 2123251883Speter dlopen) libs="$dlfiles" ;; 2124251883Speter dlpreopen) libs="$dlprefiles" ;; 2125251883Speter link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2126251883Speter esac 2127251883Speter fi 2128251883Speter if test "$pass" = dlopen; then 2129251883Speter # Collect dlpreopened libraries 2130251883Speter save_deplibs="$deplibs" 2131251883Speter deplibs= 2132251883Speter fi 2133251883Speter for deplib in $libs; do 2134251883Speter lib= 2135251883Speter found=no 2136251883Speter case $deplib in 2137251883Speter -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2138251883Speter if test "$linkmode,$pass" = "prog,link"; then 2139251883Speter compile_deplibs="$deplib $compile_deplibs" 2140251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2141251883Speter else 2142251883Speter compiler_flags="$compiler_flags $deplib" 2143251883Speter fi 2144251883Speter continue 2145251883Speter ;; 2146251883Speter -l*) 2147251883Speter if test "$linkmode" != lib && test "$linkmode" != prog; then 2148251883Speter $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2149251883Speter continue 2150251883Speter fi 2151251883Speter name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2152251883Speter for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do 2153251883Speter for search_ext in .la $std_shrext .so .a; do 2154251883Speter # Search the libtool library 2155251883Speter lib="$searchdir/lib${name}${search_ext}" 2156251883Speter if test -f "$lib"; then 2157251883Speter if test "$search_ext" = ".la"; then 2158251883Speter found=yes 2159251883Speter else 2160251883Speter found=no 2161251883Speter fi 2162251883Speter break 2 2163251883Speter fi 2164251883Speter done 2165251883Speter done 2166251883Speter if test "$found" != yes; then 2167251883Speter # deplib doesn't seem to be a libtool library 2168251883Speter if test "$linkmode,$pass" = "prog,link"; then 2169251883Speter compile_deplibs="$deplib $compile_deplibs" 2170251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2171251883Speter else 2172251883Speter deplibs="$deplib $deplibs" 2173251883Speter test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2174251883Speter fi 2175251883Speter continue 2176251883Speter else # deplib is a libtool library 2177251883Speter # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2178251883Speter # We need to do some special things here, and not later. 2179251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2180251883Speter case " $predeps $postdeps " in 2181251883Speter *" $deplib "*) 2182251883Speter if (${SED} -e '2q' $lib | 2183251883Speter grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2184251883Speter library_names= 2185251883Speter old_library= 2186251883Speter case $lib in 2187251883Speter */* | *\\*) . $lib ;; 2188251883Speter *) . ./$lib ;; 2189251883Speter esac 2190251883Speter for l in $old_library $library_names; do 2191251883Speter ll="$l" 2192251883Speter done 2193251883Speter if test "X$ll" = "X$old_library" ; then # only static version available 2194251883Speter found=no 2195251883Speter ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2196251883Speter test "X$ladir" = "X$lib" && ladir="." 2197251883Speter lib=$ladir/$old_library 2198251883Speter if test "$linkmode,$pass" = "prog,link"; then 2199251883Speter compile_deplibs="$deplib $compile_deplibs" 2200251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2201251883Speter else 2202251883Speter deplibs="$deplib $deplibs" 2203251883Speter test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2204251883Speter fi 2205251883Speter continue 2206251883Speter fi 2207251883Speter fi 2208251883Speter ;; 2209251883Speter *) ;; 2210251883Speter esac 2211251883Speter fi 2212251883Speter fi 2213251883Speter ;; # -l 2214251883Speter -L*) 2215251883Speter case $linkmode in 2216251883Speter lib) 2217251883Speter deplibs="$deplib $deplibs" 2218251883Speter test "$pass" = conv && continue 2219251883Speter newdependency_libs="$deplib $newdependency_libs" 2220251883Speter newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2221251883Speter ;; 2222251883Speter prog) 2223251883Speter if test "$pass" = conv; then 2224251883Speter deplibs="$deplib $deplibs" 2225251883Speter continue 2226251883Speter fi 2227251883Speter if test "$pass" = scan; then 2228251883Speter deplibs="$deplib $deplibs" 2229251883Speter else 2230251883Speter compile_deplibs="$deplib $compile_deplibs" 2231251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2232251883Speter fi 2233251883Speter newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2234251883Speter ;; 2235251883Speter *) 2236251883Speter $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2237251883Speter ;; 2238251883Speter esac # linkmode 2239251883Speter continue 2240251883Speter ;; # -L 2241251883Speter -R*) 2242251883Speter if test "$pass" = link; then 2243251883Speter dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2244251883Speter # Make sure the xrpath contains only unique directories. 2245251883Speter case "$xrpath " in 2246251883Speter *" $dir "*) ;; 2247251883Speter *) xrpath="$xrpath $dir" ;; 2248251883Speter esac 2249251883Speter fi 2250251883Speter deplibs="$deplib $deplibs" 2251251883Speter continue 2252251883Speter ;; 2253251883Speter *.la) lib="$deplib" ;; 2254251883Speter *.$libext) 2255251883Speter if test "$pass" = conv; then 2256251883Speter deplibs="$deplib $deplibs" 2257251883Speter continue 2258251883Speter fi 2259251883Speter case $linkmode in 2260251883Speter lib) 2261251883Speter valid_a_lib=no 2262251883Speter case $deplibs_check_method in 2263251883Speter match_pattern*) 2264251883Speter set dummy $deplibs_check_method 2265251883Speter match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2266251883Speter if eval $echo \"$deplib\" 2>/dev/null \ 2267251883Speter | $SED 10q \ 2268251883Speter | $EGREP "$match_pattern_regex" > /dev/null; then 2269251883Speter valid_a_lib=yes 2270251883Speter fi 2271251883Speter ;; 2272251883Speter pass_all) 2273251883Speter valid_a_lib=yes 2274251883Speter ;; 2275251883Speter esac 2276251883Speter if test "$valid_a_lib" != yes; then 2277251883Speter $echo 2278251883Speter $echo "*** Warning: Trying to link with static lib archive $deplib." 2279251883Speter $echo "*** I have the capability to make that library automatically link in when" 2280251883Speter $echo "*** you link to this library. But I can only do this if you have a" 2281251883Speter $echo "*** shared version of the library, which you do not appear to have" 2282251883Speter $echo "*** because the file extensions .$libext of this argument makes me believe" 2283251883Speter $echo "*** that it is just a static archive that I should not used here." 2284251883Speter else 2285251883Speter $echo 2286251883Speter $echo "*** Warning: Linking the shared library $output against the" 2287251883Speter $echo "*** static library $deplib is not portable!" 2288251883Speter deplibs="$deplib $deplibs" 2289251883Speter fi 2290251883Speter continue 2291251883Speter ;; 2292251883Speter prog) 2293251883Speter if test "$pass" != link; then 2294251883Speter deplibs="$deplib $deplibs" 2295251883Speter else 2296251883Speter compile_deplibs="$deplib $compile_deplibs" 2297251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2298251883Speter fi 2299251883Speter continue 2300251883Speter ;; 2301251883Speter esac # linkmode 2302251883Speter ;; # *.$libext 2303251883Speter *.lo | *.$objext) 2304251883Speter if test "$pass" = conv; then 2305251883Speter deplibs="$deplib $deplibs" 2306251883Speter elif test "$linkmode" = prog; then 2307251883Speter if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2308251883Speter # If there is no dlopen support or we're linking statically, 2309251883Speter # we need to preload. 2310251883Speter newdlprefiles="$newdlprefiles $deplib" 2311251883Speter compile_deplibs="$deplib $compile_deplibs" 2312251883Speter finalize_deplibs="$deplib $finalize_deplibs" 2313251883Speter else 2314251883Speter newdlfiles="$newdlfiles $deplib" 2315251883Speter fi 2316251883Speter fi 2317251883Speter continue 2318251883Speter ;; 2319251883Speter %DEPLIBS%) 2320251883Speter alldeplibs=yes 2321251883Speter continue 2322251883Speter ;; 2323251883Speter esac # case $deplib 2324251883Speter if test "$found" = yes || test -f "$lib"; then : 2325251883Speter else 2326251883Speter $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2327251883Speter exit $EXIT_FAILURE 2328251883Speter fi 2329251883Speter 2330251883Speter # Check to see that this really is a libtool archive. 2331251883Speter if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2332251883Speter else 2333251883Speter $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2334251883Speter exit $EXIT_FAILURE 2335251883Speter fi 2336251883Speter 2337251883Speter ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2338251883Speter test "X$ladir" = "X$lib" && ladir="." 2339251883Speter 2340251883Speter dlname= 2341251883Speter dlopen= 2342251883Speter dlpreopen= 2343251883Speter libdir= 2344251883Speter library_names= 2345251883Speter old_library= 2346251883Speter # If the library was installed with an old release of libtool, 2347251883Speter # it will not redefine variables installed, or shouldnotlink 2348251883Speter installed=yes 2349251883Speter shouldnotlink=no 2350251883Speter avoidtemprpath= 2351251883Speter 2352251883Speter 2353251883Speter # Read the .la file 2354251883Speter case $lib in 2355251883Speter */* | *\\*) . $lib ;; 2356251883Speter *) . ./$lib ;; 2357251883Speter esac 2358251883Speter 2359251883Speter if test "$linkmode,$pass" = "lib,link" || 2360251883Speter test "$linkmode,$pass" = "prog,scan" || 2361251883Speter { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2362251883Speter test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2363251883Speter test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2364251883Speter fi 2365251883Speter 2366251883Speter if test "$pass" = conv; then 2367251883Speter # Only check for convenience libraries 2368251883Speter deplibs="$lib $deplibs" 2369251883Speter if test -z "$libdir"; then 2370251883Speter if test -z "$old_library"; then 2371251883Speter $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2372251883Speter exit $EXIT_FAILURE 2373251883Speter fi 2374251883Speter # It is a libtool convenience library, so add in its objects. 2375251883Speter convenience="$convenience $ladir/$objdir/$old_library" 2376251883Speter old_convenience="$old_convenience $ladir/$objdir/$old_library" 2377251883Speter tmp_libs= 2378251883Speter for deplib in $dependency_libs; do 2379251883Speter deplibs="$deplib $deplibs" 2380251883Speter if test "X$duplicate_deps" = "Xyes" ; then 2381251883Speter case "$tmp_libs " in 2382251883Speter *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2383251883Speter esac 2384251883Speter fi 2385251883Speter tmp_libs="$tmp_libs $deplib" 2386251883Speter done 2387251883Speter elif test "$linkmode" != prog && test "$linkmode" != lib; then 2388251883Speter $echo "$modename: \`$lib' is not a convenience library" 1>&2 2389251883Speter exit $EXIT_FAILURE 2390251883Speter fi 2391251883Speter continue 2392251883Speter fi # $pass = conv 2393251883Speter 2394251883Speter 2395251883Speter # Get the name of the library we link against. 2396251883Speter linklib= 2397251883Speter for l in $old_library $library_names; do 2398251883Speter linklib="$l" 2399251883Speter done 2400251883Speter if test -z "$linklib"; then 2401251883Speter $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2402251883Speter exit $EXIT_FAILURE 2403251883Speter fi 2404251883Speter 2405251883Speter # This library was specified with -dlopen. 2406251883Speter if test "$pass" = dlopen; then 2407251883Speter if test -z "$libdir"; then 2408251883Speter $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2409251883Speter exit $EXIT_FAILURE 2410251883Speter fi 2411251883Speter if test -z "$dlname" || 2412251883Speter test "$dlopen_support" != yes || 2413251883Speter test "$build_libtool_libs" = no; then 2414251883Speter # If there is no dlname, no dlopen support or we're linking 2415251883Speter # statically, we need to preload. We also need to preload any 2416251883Speter # dependent libraries so libltdl's deplib preloader doesn't 2417251883Speter # bomb out in the load deplibs phase. 2418251883Speter dlprefiles="$dlprefiles $lib $dependency_libs" 2419251883Speter else 2420251883Speter newdlfiles="$newdlfiles $lib" 2421251883Speter fi 2422251883Speter continue 2423251883Speter fi # $pass = dlopen 2424251883Speter 2425251883Speter # We need an absolute path. 2426251883Speter case $ladir in 2427251883Speter [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2428251883Speter *) 2429251883Speter abs_ladir=`cd "$ladir" && pwd` 2430251883Speter if test -z "$abs_ladir"; then 2431251883Speter $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2432251883Speter $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2433251883Speter abs_ladir="$ladir" 2434251883Speter fi 2435251883Speter ;; 2436251883Speter esac 2437251883Speter laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2438251883Speter 2439251883Speter # Find the relevant object directory and library name. 2440251883Speter if test "X$installed" = Xyes; then 2441251883Speter if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2442251883Speter $echo "$modename: warning: library \`$lib' was moved." 1>&2 2443251883Speter dir="$ladir" 2444251883Speter absdir="$abs_ladir" 2445251883Speter libdir="$abs_ladir" 2446251883Speter else 2447251883Speter dir="$libdir" 2448251883Speter absdir="$libdir" 2449251883Speter fi 2450251883Speter test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2451251883Speter else 2452251883Speter if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2453251883Speter dir="$ladir" 2454251883Speter absdir="$abs_ladir" 2455251883Speter # Remove this search path later 2456251883Speter notinst_path="$notinst_path $abs_ladir" 2457251883Speter else 2458251883Speter dir="$ladir/$objdir" 2459251883Speter absdir="$abs_ladir/$objdir" 2460251883Speter # Remove this search path later 2461251883Speter notinst_path="$notinst_path $abs_ladir" 2462251883Speter fi 2463251883Speter fi # $installed = yes 2464251883Speter name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2465251883Speter 2466251883Speter # This library was specified with -dlpreopen. 2467251883Speter if test "$pass" = dlpreopen; then 2468251883Speter if test -z "$libdir"; then 2469251883Speter $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2470251883Speter exit $EXIT_FAILURE 2471251883Speter fi 2472251883Speter # Prefer using a static library (so that no silly _DYNAMIC symbols 2473251883Speter # are required to link). 2474251883Speter if test -n "$old_library"; then 2475251883Speter newdlprefiles="$newdlprefiles $dir/$old_library" 2476251883Speter # Otherwise, use the dlname, so that lt_dlopen finds it. 2477251883Speter elif test -n "$dlname"; then 2478251883Speter newdlprefiles="$newdlprefiles $dir/$dlname" 2479251883Speter else 2480251883Speter newdlprefiles="$newdlprefiles $dir/$linklib" 2481251883Speter fi 2482251883Speter fi # $pass = dlpreopen 2483251883Speter 2484251883Speter if test -z "$libdir"; then 2485251883Speter # Link the convenience library 2486251883Speter if test "$linkmode" = lib; then 2487251883Speter deplibs="$dir/$old_library $deplibs" 2488251883Speter elif test "$linkmode,$pass" = "prog,link"; then 2489251883Speter compile_deplibs="$dir/$old_library $compile_deplibs" 2490251883Speter finalize_deplibs="$dir/$old_library $finalize_deplibs" 2491251883Speter else 2492251883Speter deplibs="$lib $deplibs" # used for prog,scan pass 2493251883Speter fi 2494251883Speter continue 2495251883Speter fi 2496251883Speter 2497251883Speter 2498251883Speter if test "$linkmode" = prog && test "$pass" != link; then 2499251883Speter newlib_search_path="$newlib_search_path $ladir" 2500251883Speter deplibs="$lib $deplibs" 2501251883Speter 2502251883Speter linkalldeplibs=no 2503251883Speter if test "$link_all_deplibs" != no || test -z "$library_names" || 2504251883Speter test "$build_libtool_libs" = no; then 2505251883Speter linkalldeplibs=yes 2506251883Speter fi 2507251883Speter 2508251883Speter tmp_libs= 2509251883Speter for deplib in $dependency_libs; do 2510251883Speter case $deplib in 2511251883Speter -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2512251883Speter esac 2513251883Speter # Need to link against all dependency_libs? 2514251883Speter if test "$linkalldeplibs" = yes; then 2515251883Speter deplibs="$deplib $deplibs" 2516251883Speter else 2517251883Speter # Need to hardcode shared library paths 2518251883Speter # or/and link against static libraries 2519251883Speter newdependency_libs="$deplib $newdependency_libs" 2520251883Speter fi 2521251883Speter if test "X$duplicate_deps" = "Xyes" ; then 2522251883Speter case "$tmp_libs " in 2523251883Speter *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2524251883Speter esac 2525251883Speter fi 2526251883Speter tmp_libs="$tmp_libs $deplib" 2527251883Speter done # for deplib 2528251883Speter continue 2529251883Speter fi # $linkmode = prog... 2530251883Speter 2531251883Speter if test "$linkmode,$pass" = "prog,link"; then 2532251883Speter if test -n "$library_names" && 2533251883Speter { { test "$prefer_static_libs" = no || 2534251883Speter test "$prefer_static_libs,$installed" = "built,yes"; } || 2535251883Speter test -z "$old_library"; }; then 2536251883Speter # We need to hardcode the library path 2537251883Speter if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2538251883Speter # Make sure the rpath contains only unique directories. 2539251883Speter case "$temp_rpath " in 2540251883Speter *" $dir "*) ;; 2541251883Speter *" $absdir "*) ;; 2542251883Speter *) temp_rpath="$temp_rpath $absdir" ;; 2543251883Speter esac 2544251883Speter fi 2545251883Speter 2546251883Speter # Hardcode the library path. 2547251883Speter # Skip directories that are in the system default run-time 2548251883Speter # search path. 2549251883Speter case " $sys_lib_dlsearch_path " in 2550251883Speter *" $absdir "*) ;; 2551251883Speter *) 2552251883Speter case "$compile_rpath " in 2553251883Speter *" $absdir "*) ;; 2554251883Speter *) compile_rpath="$compile_rpath $absdir" 2555251883Speter esac 2556251883Speter ;; 2557251883Speter esac 2558251883Speter case " $sys_lib_dlsearch_path " in 2559251883Speter *" $libdir "*) ;; 2560251883Speter *) 2561251883Speter case "$finalize_rpath " in 2562251883Speter *" $libdir "*) ;; 2563251883Speter *) finalize_rpath="$finalize_rpath $libdir" 2564251883Speter esac 2565251883Speter ;; 2566251883Speter esac 2567251883Speter fi # $linkmode,$pass = prog,link... 2568251883Speter 2569251883Speter if test "$alldeplibs" = yes && 2570251883Speter { test "$deplibs_check_method" = pass_all || 2571251883Speter { test "$build_libtool_libs" = yes && 2572251883Speter test -n "$library_names"; }; }; then 2573251883Speter # We only need to search for static libraries 2574251883Speter continue 2575251883Speter fi 2576251883Speter fi 2577251883Speter 2578251883Speter link_static=no # Whether the deplib will be linked statically 2579251883Speter use_static_libs=$prefer_static_libs 2580251883Speter if test "$use_static_libs" = built && test "$installed" = yes ; then 2581251883Speter use_static_libs=no 2582251883Speter fi 2583251883Speter if test -n "$library_names" && 2584251883Speter { test "$use_static_libs" = no || test -z "$old_library"; }; then 2585251883Speter if test "$installed" = no; then 2586251883Speter notinst_deplibs="$notinst_deplibs $lib" 2587251883Speter need_relink=yes 2588251883Speter fi 2589251883Speter # This is a shared library 2590251883Speter 2591251883Speter # Warn about portability, can't link against -module's on 2592251883Speter # some systems (darwin) 2593251883Speter if test "$shouldnotlink" = yes && test "$pass" = link ; then 2594251883Speter $echo 2595251883Speter if test "$linkmode" = prog; then 2596251883Speter $echo "*** Warning: Linking the executable $output against the loadable module" 2597251883Speter else 2598251883Speter $echo "*** Warning: Linking the shared library $output against the loadable module" 2599251883Speter fi 2600251883Speter $echo "*** $linklib is not portable!" 2601251883Speter fi 2602251883Speter if test "$linkmode" = lib && 2603251883Speter test "$hardcode_into_libs" = yes; then 2604251883Speter # Hardcode the library path. 2605251883Speter # Skip directories that are in the system default run-time 2606251883Speter # search path. 2607251883Speter case " $sys_lib_dlsearch_path " in 2608251883Speter *" $absdir "*) ;; 2609251883Speter *) 2610251883Speter case "$compile_rpath " in 2611251883Speter *" $absdir "*) ;; 2612251883Speter *) compile_rpath="$compile_rpath $absdir" 2613251883Speter esac 2614251883Speter ;; 2615251883Speter esac 2616251883Speter case " $sys_lib_dlsearch_path " in 2617251883Speter *" $libdir "*) ;; 2618251883Speter *) 2619251883Speter case "$finalize_rpath " in 2620251883Speter *" $libdir "*) ;; 2621251883Speter *) finalize_rpath="$finalize_rpath $libdir" 2622251883Speter esac 2623251883Speter ;; 2624251883Speter esac 2625251883Speter fi 2626251883Speter 2627251883Speter if test -n "$old_archive_from_expsyms_cmds"; then 2628251883Speter # figure out the soname 2629251883Speter set dummy $library_names 2630251883Speter realname="$2" 2631251883Speter shift; shift 2632251883Speter libname=`eval \\$echo \"$libname_spec\"` 2633251883Speter # use dlname if we got it. it's perfectly good, no? 2634251883Speter if test -n "$dlname"; then 2635251883Speter soname="$dlname" 2636251883Speter elif test -n "$soname_spec"; then 2637251883Speter # bleh windows 2638251883Speter case $host in 2639251883Speter *cygwin* | mingw*) 2640251883Speter major=`expr $current - $age` 2641251883Speter versuffix="-$major" 2642251883Speter ;; 2643251883Speter esac 2644251883Speter eval soname=\"$soname_spec\" 2645251883Speter else 2646251883Speter soname="$realname" 2647251883Speter fi 2648251883Speter 2649251883Speter # Make a new name for the extract_expsyms_cmds to use 2650251883Speter soroot="$soname" 2651251883Speter soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2652251883Speter newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2653251883Speter 2654251883Speter # If the library has no export list, then create one now 2655251883Speter if test -f "$output_objdir/$soname-def"; then : 2656251883Speter else 2657251883Speter $show "extracting exported symbol list from \`$soname'" 2658251883Speter save_ifs="$IFS"; IFS='~' 2659251883Speter cmds=$extract_expsyms_cmds 2660251883Speter for cmd in $cmds; do 2661251883Speter IFS="$save_ifs" 2662251883Speter eval cmd=\"$cmd\" 2663251883Speter $show "$cmd" 2664251883Speter $run eval "$cmd" || exit $? 2665251883Speter done 2666251883Speter IFS="$save_ifs" 2667251883Speter fi 2668251883Speter 2669251883Speter # Create $newlib 2670251883Speter if test -f "$output_objdir/$newlib"; then :; else 2671251883Speter $show "generating import library for \`$soname'" 2672251883Speter save_ifs="$IFS"; IFS='~' 2673251883Speter cmds=$old_archive_from_expsyms_cmds 2674251883Speter for cmd in $cmds; do 2675251883Speter IFS="$save_ifs" 2676251883Speter eval cmd=\"$cmd\" 2677251883Speter $show "$cmd" 2678251883Speter $run eval "$cmd" || exit $? 2679251883Speter done 2680251883Speter IFS="$save_ifs" 2681251883Speter fi 2682251883Speter # make sure the library variables are pointing to the new library 2683251883Speter dir=$output_objdir 2684251883Speter linklib=$newlib 2685251883Speter fi # test -n "$old_archive_from_expsyms_cmds" 2686251883Speter 2687251883Speter if test "$linkmode" = prog || test "$mode" != relink; then 2688251883Speter add_shlibpath= 2689251883Speter add_dir= 2690251883Speter add= 2691251883Speter lib_linked=yes 2692251883Speter case $hardcode_action in 2693251883Speter immediate | unsupported) 2694251883Speter if test "$hardcode_direct" = no; then 2695251883Speter add="$dir/$linklib" 2696251883Speter case $host in 2697251883Speter *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2698251883Speter *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2699251883Speter *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2700251883Speter *-*-unixware7*) add_dir="-L$dir" ;; 2701251883Speter *-*-darwin* ) 2702251883Speter # if the lib is a module then we can not link against 2703251883Speter # it, someone is ignoring the new warnings I added 2704251883Speter if /usr/bin/file -L $add 2> /dev/null | 2705251883Speter $EGREP ": [^:]* bundle" >/dev/null ; then 2706251883Speter $echo "** Warning, lib $linklib is a module, not a shared library" 2707251883Speter if test -z "$old_library" ; then 2708251883Speter $echo 2709251883Speter $echo "** And there doesn't seem to be a static archive available" 2710251883Speter $echo "** The link will probably fail, sorry" 2711251883Speter else 2712251883Speter add="$dir/$old_library" 2713251883Speter fi 2714251883Speter fi 2715251883Speter esac 2716251883Speter elif test "$hardcode_minus_L" = no; then 2717251883Speter case $host in 2718251883Speter *-*-sunos*) add_shlibpath="$dir" ;; 2719251883Speter esac 2720251883Speter add_dir="-L$dir" 2721251883Speter add="-l$name" 2722251883Speter elif test "$hardcode_shlibpath_var" = no; then 2723251883Speter add_shlibpath="$dir" 2724251883Speter add="-l$name" 2725251883Speter else 2726251883Speter lib_linked=no 2727251883Speter fi 2728251883Speter ;; 2729251883Speter relink) 2730251883Speter if test "$hardcode_direct" = yes; then 2731251883Speter add="$dir/$linklib" 2732251883Speter elif test "$hardcode_minus_L" = yes; then 2733251883Speter add_dir="-L$dir" 2734251883Speter # Try looking first in the location we're being installed to. 2735251883Speter if test -n "$inst_prefix_dir"; then 2736251883Speter case $libdir in 2737251883Speter [\\/]*) 2738251883Speter add_dir="$add_dir -L$inst_prefix_dir$libdir" 2739251883Speter ;; 2740251883Speter esac 2741251883Speter fi 2742251883Speter add="-l$name" 2743251883Speter elif test "$hardcode_shlibpath_var" = yes; then 2744251883Speter add_shlibpath="$dir" 2745251883Speter add="-l$name" 2746251883Speter else 2747251883Speter lib_linked=no 2748251883Speter fi 2749251883Speter ;; 2750251883Speter *) lib_linked=no ;; 2751251883Speter esac 2752251883Speter 2753251883Speter if test "$lib_linked" != yes; then 2754251883Speter $echo "$modename: configuration error: unsupported hardcode properties" 2755251883Speter exit $EXIT_FAILURE 2756251883Speter fi 2757251883Speter 2758251883Speter if test -n "$add_shlibpath"; then 2759251883Speter case :$compile_shlibpath: in 2760251883Speter *":$add_shlibpath:"*) ;; 2761251883Speter *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2762251883Speter esac 2763251883Speter fi 2764251883Speter if test "$linkmode" = prog; then 2765251883Speter test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2766251883Speter test -n "$add" && compile_deplibs="$add $compile_deplibs" 2767251883Speter else 2768251883Speter test -n "$add_dir" && deplibs="$add_dir $deplibs" 2769251883Speter test -n "$add" && deplibs="$add $deplibs" 2770251883Speter if test "$hardcode_direct" != yes && \ 2771251883Speter test "$hardcode_minus_L" != yes && \ 2772251883Speter test "$hardcode_shlibpath_var" = yes; then 2773251883Speter case :$finalize_shlibpath: in 2774251883Speter *":$libdir:"*) ;; 2775251883Speter *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2776251883Speter esac 2777251883Speter fi 2778251883Speter fi 2779251883Speter fi 2780251883Speter 2781251883Speter if test "$linkmode" = prog || test "$mode" = relink; then 2782251883Speter add_shlibpath= 2783251883Speter add_dir= 2784251883Speter add= 2785251883Speter # Finalize command for both is simple: just hardcode it. 2786251883Speter if test "$hardcode_direct" = yes; then 2787251883Speter add="$libdir/$linklib" 2788251883Speter elif test "$hardcode_minus_L" = yes; then 2789251883Speter add_dir="-L$libdir" 2790251883Speter add="-l$name" 2791251883Speter elif test "$hardcode_shlibpath_var" = yes; then 2792251883Speter case :$finalize_shlibpath: in 2793251883Speter *":$libdir:"*) ;; 2794251883Speter *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2795251883Speter esac 2796251883Speter add="-l$name" 2797251883Speter elif test "$hardcode_automatic" = yes; then 2798251883Speter if test -n "$inst_prefix_dir" && 2799251883Speter test -f "$inst_prefix_dir$libdir/$linklib" ; then 2800251883Speter add="$inst_prefix_dir$libdir/$linklib" 2801251883Speter else 2802251883Speter add="$libdir/$linklib" 2803251883Speter fi 2804251883Speter else 2805251883Speter # We cannot seem to hardcode it, guess we'll fake it. 2806251883Speter add_dir="-L$libdir" 2807251883Speter # Try looking first in the location we're being installed to. 2808251883Speter if test -n "$inst_prefix_dir"; then 2809251883Speter case $libdir in 2810251883Speter [\\/]*) 2811251883Speter add_dir="$add_dir -L$inst_prefix_dir$libdir" 2812251883Speter ;; 2813251883Speter esac 2814251883Speter fi 2815251883Speter add="-l$name" 2816251883Speter fi 2817251883Speter 2818251883Speter if test "$linkmode" = prog; then 2819251883Speter test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2820251883Speter test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2821251883Speter else 2822251883Speter test -n "$add_dir" && deplibs="$add_dir $deplibs" 2823251883Speter test -n "$add" && deplibs="$add $deplibs" 2824251883Speter fi 2825251883Speter fi 2826251883Speter elif test "$linkmode" = prog; then 2827251883Speter # Here we assume that one of hardcode_direct or hardcode_minus_L 2828251883Speter # is not unsupported. This is valid on all known static and 2829251883Speter # shared platforms. 2830251883Speter if test "$hardcode_direct" != unsupported; then 2831251883Speter test -n "$old_library" && linklib="$old_library" 2832251883Speter compile_deplibs="$dir/$linklib $compile_deplibs" 2833251883Speter finalize_deplibs="$dir/$linklib $finalize_deplibs" 2834251883Speter else 2835251883Speter compile_deplibs="-l$name -L$dir $compile_deplibs" 2836251883Speter finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2837251883Speter fi 2838251883Speter elif test "$build_libtool_libs" = yes; then 2839251883Speter # Not a shared library 2840251883Speter if test "$deplibs_check_method" != pass_all; then 2841251883Speter # We're trying link a shared library against a static one 2842251883Speter # but the system doesn't support it. 2843251883Speter 2844251883Speter # Just print a warning and add the library to dependency_libs so 2845251883Speter # that the program can be linked against the static library. 2846251883Speter $echo 2847251883Speter $echo "*** Warning: This system can not link to static lib archive $lib." 2848251883Speter $echo "*** I have the capability to make that library automatically link in when" 2849251883Speter $echo "*** you link to this library. But I can only do this if you have a" 2850251883Speter $echo "*** shared version of the library, which you do not appear to have." 2851251883Speter if test "$module" = yes; then 2852251883Speter $echo "*** But as you try to build a module library, libtool will still create " 2853251883Speter $echo "*** a static module, that should work as long as the dlopening application" 2854251883Speter $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2855251883Speter if test -z "$global_symbol_pipe"; then 2856251883Speter $echo 2857251883Speter $echo "*** However, this would only work if libtool was able to extract symbol" 2858251883Speter $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2859251883Speter $echo "*** not find such a program. So, this module is probably useless." 2860251883Speter $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2861251883Speter fi 2862251883Speter if test "$build_old_libs" = no; then 2863251883Speter build_libtool_libs=module 2864251883Speter build_old_libs=yes 2865251883Speter else 2866251883Speter build_libtool_libs=no 2867251883Speter fi 2868251883Speter fi 2869251883Speter else 2870251883Speter deplibs="$dir/$old_library $deplibs" 2871251883Speter link_static=yes 2872251883Speter fi 2873251883Speter fi # link shared/static library? 2874251883Speter 2875251883Speter if test "$linkmode" = lib; then 2876251883Speter if test -n "$dependency_libs" && 2877251883Speter { test "$hardcode_into_libs" != yes || 2878251883Speter test "$build_old_libs" = yes || 2879251883Speter test "$link_static" = yes; }; then 2880251883Speter # Extract -R from dependency_libs 2881251883Speter temp_deplibs= 2882251883Speter for libdir in $dependency_libs; do 2883251883Speter case $libdir in 2884251883Speter -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2885251883Speter case " $xrpath " in 2886251883Speter *" $temp_xrpath "*) ;; 2887251883Speter *) xrpath="$xrpath $temp_xrpath";; 2888251883Speter esac;; 2889251883Speter *) temp_deplibs="$temp_deplibs $libdir";; 2890251883Speter esac 2891251883Speter done 2892251883Speter dependency_libs="$temp_deplibs" 2893251883Speter fi 2894251883Speter 2895251883Speter newlib_search_path="$newlib_search_path $absdir" 2896251883Speter # Link against this library 2897251883Speter test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2898251883Speter # ... and its dependency_libs 2899251883Speter tmp_libs= 2900251883Speter for deplib in $dependency_libs; do 2901251883Speter newdependency_libs="$deplib $newdependency_libs" 2902251883Speter if test "X$duplicate_deps" = "Xyes" ; then 2903251883Speter case "$tmp_libs " in 2904251883Speter *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2905251883Speter esac 2906251883Speter fi 2907251883Speter tmp_libs="$tmp_libs $deplib" 2908251883Speter done 2909251883Speter 2910251883Speter if test "$link_all_deplibs" != no; then 2911251883Speter # Add the search paths of all dependency libraries 2912251883Speter for deplib in $dependency_libs; do 2913251883Speter case $deplib in 2914251883Speter -L*) path="$deplib" ;; 2915251883Speter *.la) 2916251883Speter dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2917251883Speter test "X$dir" = "X$deplib" && dir="." 2918251883Speter # We need an absolute path. 2919251883Speter case $dir in 2920251883Speter [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2921251883Speter *) 2922251883Speter absdir=`cd "$dir" && pwd` 2923251883Speter if test -z "$absdir"; then 2924251883Speter $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2925251883Speter absdir="$dir" 2926251883Speter fi 2927251883Speter ;; 2928251883Speter esac 2929251883Speter if grep "^installed=no" $deplib > /dev/null; then 2930251883Speter path="$absdir/$objdir" 2931251883Speter else 2932251883Speter eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2933251883Speter if test -z "$libdir"; then 2934251883Speter $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2935251883Speter exit $EXIT_FAILURE 2936251883Speter fi 2937251883Speter #if test "$absdir" != "$libdir"; then 2938251883Speter # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2939251883Speter #fi 2940251883Speter path="$absdir" 2941251883Speter fi 2942251883Speter depdepl= 2943251883Speter case $host in 2944251883Speter *-*-darwin*) 2945251883Speter # we do not want to link against static libs, 2946251883Speter # but need to link against shared 2947251883Speter eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2948251883Speter if test -n "$deplibrary_names" ; then 2949251883Speter for tmp in $deplibrary_names ; do 2950251883Speter depdepl=$tmp 2951251883Speter done 2952251883Speter if test -f "$path/$depdepl" ; then 2953251883Speter depdepl="$path/$depdepl" 2954251883Speter fi 2955251883Speter # do not add paths which are already there 2956251883Speter case " $newlib_search_path " in 2957251883Speter *" $path "*) ;; 2958251883Speter *) newlib_search_path="$newlib_search_path $path";; 2959251883Speter esac 2960251883Speter fi 2961251883Speter path="" 2962251883Speter ;; 2963251883Speter *) 2964251883Speter path="-L$path" 2965251883Speter ;; 2966251883Speter esac 2967251883Speter ;; 2968251883Speter -l*) 2969251883Speter case $host in 2970251883Speter *-*-darwin*) 2971251883Speter # Again, we only want to link against shared libraries 2972251883Speter eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2973251883Speter for tmp in $newlib_search_path ; do 2974251883Speter if test -f "$tmp/lib$tmp_libs.dylib" ; then 2975251883Speter eval depdepl="$tmp/lib$tmp_libs.dylib" 2976251883Speter break 2977251883Speter fi 2978251883Speter done 2979251883Speter path="" 2980251883Speter ;; 2981251883Speter *) continue ;; 2982251883Speter esac 2983251883Speter ;; 2984251883Speter *) continue ;; 2985251883Speter esac 2986251883Speter case " $deplibs " in 2987251883Speter *" $path "*) ;; 2988251883Speter *) deplibs="$path $deplibs" ;; 2989251883Speter esac 2990251883Speter case " $deplibs " in 2991251883Speter *" $depdepl "*) ;; 2992251883Speter *) deplibs="$depdepl $deplibs" ;; 2993251883Speter esac 2994251883Speter done 2995251883Speter fi # link_all_deplibs != no 2996251883Speter fi # linkmode = lib 2997251883Speter done # for deplib in $libs 2998251883Speter dependency_libs="$newdependency_libs" 2999251883Speter if test "$pass" = dlpreopen; then 3000251883Speter # Link the dlpreopened libraries before other libraries 3001251883Speter for deplib in $save_deplibs; do 3002251883Speter deplibs="$deplib $deplibs" 3003251883Speter done 3004251883Speter fi 3005251883Speter if test "$pass" != dlopen; then 3006251883Speter if test "$pass" != conv; then 3007251883Speter # Make sure lib_search_path contains only unique directories. 3008251883Speter lib_search_path= 3009251883Speter for dir in $newlib_search_path; do 3010251883Speter case "$lib_search_path " in 3011251883Speter *" $dir "*) ;; 3012251883Speter *) lib_search_path="$lib_search_path $dir" ;; 3013251883Speter esac 3014251883Speter done 3015251883Speter newlib_search_path= 3016251883Speter fi 3017251883Speter 3018251883Speter if test "$linkmode,$pass" != "prog,link"; then 3019251883Speter vars="deplibs" 3020251883Speter else 3021251883Speter vars="compile_deplibs finalize_deplibs" 3022251883Speter fi 3023251883Speter for var in $vars dependency_libs; do 3024251883Speter # Add libraries to $var in reverse order 3025251883Speter eval tmp_libs=\"\$$var\" 3026251883Speter new_libs= 3027251883Speter for deplib in $tmp_libs; do 3028251883Speter # FIXME: Pedantically, this is the right thing to do, so 3029251883Speter # that some nasty dependency loop isn't accidentally 3030251883Speter # broken: 3031251883Speter #new_libs="$deplib $new_libs" 3032251883Speter # Pragmatically, this seems to cause very few problems in 3033251883Speter # practice: 3034251883Speter case $deplib in 3035251883Speter -L*) new_libs="$deplib $new_libs" ;; 3036251883Speter -R*) ;; 3037251883Speter *) 3038251883Speter # And here is the reason: when a library appears more 3039251883Speter # than once as an explicit dependence of a library, or 3040251883Speter # is implicitly linked in more than once by the 3041251883Speter # compiler, it is considered special, and multiple 3042251883Speter # occurrences thereof are not removed. Compare this 3043251883Speter # with having the same library being listed as a 3044251883Speter # dependency of multiple other libraries: in this case, 3045251883Speter # we know (pedantically, we assume) the library does not 3046251883Speter # need to be listed more than once, so we keep only the 3047251883Speter # last copy. This is not always right, but it is rare 3048251883Speter # enough that we require users that really mean to play 3049251883Speter # such unportable linking tricks to link the library 3050251883Speter # using -Wl,-lname, so that libtool does not consider it 3051251883Speter # for duplicate removal. 3052251883Speter case " $specialdeplibs " in 3053251883Speter *" $deplib "*) new_libs="$deplib $new_libs" ;; 3054251883Speter *) 3055251883Speter case " $new_libs " in 3056251883Speter *" $deplib "*) ;; 3057251883Speter *) new_libs="$deplib $new_libs" ;; 3058251883Speter esac 3059251883Speter ;; 3060251883Speter esac 3061251883Speter ;; 3062251883Speter esac 3063251883Speter done 3064251883Speter tmp_libs= 3065251883Speter for deplib in $new_libs; do 3066251883Speter case $deplib in 3067251883Speter -L*) 3068251883Speter case " $tmp_libs " in 3069251883Speter *" $deplib "*) ;; 3070251883Speter *) tmp_libs="$tmp_libs $deplib" ;; 3071251883Speter esac 3072251883Speter ;; 3073251883Speter *) tmp_libs="$tmp_libs $deplib" ;; 3074251883Speter esac 3075251883Speter done 3076251883Speter eval $var=\"$tmp_libs\" 3077251883Speter done # for var 3078251883Speter fi 3079251883Speter # Last step: remove runtime libs from dependency_libs 3080251883Speter # (they stay in deplibs) 3081251883Speter tmp_libs= 3082251883Speter for i in $dependency_libs ; do 3083251883Speter case " $predeps $postdeps $compiler_lib_search_path " in 3084251883Speter *" $i "*) 3085251883Speter i="" 3086251883Speter ;; 3087251883Speter esac 3088251883Speter if test -n "$i" ; then 3089251883Speter tmp_libs="$tmp_libs $i" 3090251883Speter fi 3091251883Speter done 3092251883Speter dependency_libs=$tmp_libs 3093251883Speter done # for pass 3094251883Speter if test "$linkmode" = prog; then 3095251883Speter dlfiles="$newdlfiles" 3096251883Speter dlprefiles="$newdlprefiles" 3097251883Speter fi 3098251883Speter 3099251883Speter case $linkmode in 3100251883Speter oldlib) 3101251883Speter if test -n "$deplibs"; then 3102251883Speter $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 3103251883Speter fi 3104251883Speter 3105251883Speter if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3106251883Speter $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3107251883Speter fi 3108251883Speter 3109251883Speter if test -n "$rpath"; then 3110251883Speter $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3111251883Speter fi 3112251883Speter 3113251883Speter if test -n "$xrpath"; then 3114251883Speter $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3115251883Speter fi 3116251883Speter 3117251883Speter if test -n "$vinfo"; then 3118251883Speter $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3119251883Speter fi 3120251883Speter 3121251883Speter if test -n "$release"; then 3122251883Speter $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3123251883Speter fi 3124251883Speter 3125251883Speter if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3126251883Speter $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3127251883Speter fi 3128251883Speter 3129251883Speter # Now set the variables for building old libraries. 3130251883Speter build_libtool_libs=no 3131251883Speter oldlibs="$output" 3132251883Speter objs="$objs$old_deplibs" 3133251883Speter ;; 3134251883Speter 3135251883Speter lib) 3136251883Speter # Make sure we only generate libraries of the form `libNAME.la'. 3137251883Speter case $outputname in 3138251883Speter lib*) 3139251883Speter name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3140251883Speter eval shared_ext=\"$shrext_cmds\" 3141251883Speter eval libname=\"$libname_spec\" 3142251883Speter ;; 3143251883Speter *) 3144251883Speter if test "$module" = no; then 3145251883Speter $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3146251883Speter $echo "$help" 1>&2 3147251883Speter exit $EXIT_FAILURE 3148251883Speter fi 3149251883Speter if test "$need_lib_prefix" != no; then 3150251883Speter # Add the "lib" prefix for modules if required 3151251883Speter name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3152251883Speter eval shared_ext=\"$shrext_cmds\" 3153251883Speter eval libname=\"$libname_spec\" 3154251883Speter else 3155251883Speter libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3156251883Speter fi 3157251883Speter ;; 3158251883Speter esac 3159251883Speter 3160251883Speter if test -n "$objs"; then 3161251883Speter if test "$deplibs_check_method" != pass_all; then 3162251883Speter $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3163251883Speter exit $EXIT_FAILURE 3164251883Speter else 3165251883Speter $echo 3166251883Speter $echo "*** Warning: Linking the shared library $output against the non-libtool" 3167251883Speter $echo "*** objects $objs is not portable!" 3168251883Speter libobjs="$libobjs $objs" 3169251883Speter fi 3170251883Speter fi 3171251883Speter 3172251883Speter if test "$dlself" != no; then 3173251883Speter $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3174251883Speter fi 3175251883Speter 3176251883Speter set dummy $rpath 3177251883Speter if test "$#" -gt 2; then 3178251883Speter $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3179251883Speter fi 3180251883Speter install_libdir="$2" 3181251883Speter 3182251883Speter oldlibs= 3183251883Speter if test -z "$rpath"; then 3184251883Speter if test "$build_libtool_libs" = yes; then 3185251883Speter # Building a libtool convenience library. 3186251883Speter # Some compilers have problems with a `.al' extension so 3187251883Speter # convenience libraries should have the same extension an 3188251883Speter # archive normally would. 3189251883Speter oldlibs="$output_objdir/$libname.$libext $oldlibs" 3190251883Speter build_libtool_libs=convenience 3191251883Speter build_old_libs=yes 3192251883Speter fi 3193251883Speter 3194251883Speter if test -n "$vinfo"; then 3195251883Speter $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3196251883Speter fi 3197251883Speter 3198251883Speter if test -n "$release"; then 3199251883Speter $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3200251883Speter fi 3201251883Speter else 3202251883Speter 3203251883Speter # Parse the version information argument. 3204251883Speter save_ifs="$IFS"; IFS=':' 3205251883Speter set dummy $vinfo 0 0 0 3206251883Speter IFS="$save_ifs" 3207251883Speter 3208251883Speter if test -n "$8"; then 3209251883Speter $echo "$modename: too many parameters to \`-version-info'" 1>&2 3210251883Speter $echo "$help" 1>&2 3211251883Speter exit $EXIT_FAILURE 3212251883Speter fi 3213251883Speter 3214251883Speter # convert absolute version numbers to libtool ages 3215251883Speter # this retains compatibility with .la files and attempts 3216251883Speter # to make the code below a bit more comprehensible 3217251883Speter 3218251883Speter case $vinfo_number in 3219251883Speter yes) 3220251883Speter number_major="$2" 3221251883Speter number_minor="$3" 3222251883Speter number_revision="$4" 3223251883Speter # 3224251883Speter # There are really only two kinds -- those that 3225251883Speter # use the current revision as the major version 3226251883Speter # and those that subtract age and use age as 3227251883Speter # a minor version. But, then there is irix 3228251883Speter # which has an extra 1 added just for fun 3229251883Speter # 3230251883Speter case $version_type in 3231251883Speter darwin|linux|osf|windows|none) 3232251883Speter current=`expr $number_major + $number_minor` 3233251883Speter age="$number_minor" 3234251883Speter revision="$number_revision" 3235251883Speter ;; 3236251883Speter freebsd-aout|freebsd-elf|sunos) 3237251883Speter current="$number_major" 3238251883Speter revision="$number_minor" 3239251883Speter age="0" 3240251883Speter ;; 3241251883Speter irix|nonstopux) 3242251883Speter current=`expr $number_major + $number_minor` 3243251883Speter age="$number_minor" 3244251883Speter revision="$number_minor" 3245251883Speter lt_irix_increment=no 3246251883Speter ;; 3247251883Speter esac 3248251883Speter ;; 3249251883Speter no) 3250251883Speter current="$2" 3251251883Speter revision="$3" 3252251883Speter age="$4" 3253251883Speter ;; 3254251883Speter esac 3255251883Speter 3256251883Speter # Check that each of the things are valid numbers. 3257251883Speter case $current in 3258251883Speter 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]) ;; 3259251883Speter *) 3260251883Speter $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3261251883Speter $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3262251883Speter exit $EXIT_FAILURE 3263251883Speter ;; 3264251883Speter esac 3265251883Speter 3266251883Speter case $revision in 3267251883Speter 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]) ;; 3268251883Speter *) 3269251883Speter $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3270251883Speter $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3271251883Speter exit $EXIT_FAILURE 3272251883Speter ;; 3273251883Speter esac 3274251883Speter 3275251883Speter case $age in 3276251883Speter 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]) ;; 3277251883Speter *) 3278251883Speter $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3279251883Speter $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3280251883Speter exit $EXIT_FAILURE 3281251883Speter ;; 3282251883Speter esac 3283251883Speter 3284251883Speter if test "$age" -gt "$current"; then 3285251883Speter $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3286251883Speter $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287251883Speter exit $EXIT_FAILURE 3288251883Speter fi 3289251883Speter 3290251883Speter # Calculate the version variables. 3291251883Speter major= 3292251883Speter versuffix= 3293251883Speter verstring= 3294251883Speter case $version_type in 3295251883Speter none) ;; 3296251883Speter 3297251883Speter darwin) 3298251883Speter # Like Linux, but with the current version available in 3299251883Speter # verstring for coding it into the library header 3300251883Speter major=.`expr $current - $age` 3301251883Speter versuffix="$major.$age.$revision" 3302251883Speter # Darwin ld doesn't like 0 for these options... 3303251883Speter minor_current=`expr $current + 1` 3304251883Speter xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3305251883Speter verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3306251883Speter ;; 3307251883Speter 3308251883Speter freebsd-aout) 3309251883Speter major=".$current" 3310251883Speter versuffix=".$current.$revision"; 3311251883Speter ;; 3312251883Speter 3313251883Speter freebsd-elf) 3314251883Speter major=".$current" 3315251883Speter versuffix=".$current"; 3316251883Speter ;; 3317251883Speter 3318251883Speter irix | nonstopux) 3319251883Speter if test "X$lt_irix_increment" = "Xno"; then 3320251883Speter major=`expr $current - $age` 3321251883Speter else 3322251883Speter major=`expr $current - $age + 1` 3323251883Speter fi 3324251883Speter case $version_type in 3325251883Speter nonstopux) verstring_prefix=nonstopux ;; 3326251883Speter *) verstring_prefix=sgi ;; 3327251883Speter esac 3328251883Speter verstring="$verstring_prefix$major.$revision" 3329251883Speter 3330251883Speter # Add in all the interfaces that we are compatible with. 3331251883Speter loop=$revision 3332251883Speter while test "$loop" -ne 0; do 3333251883Speter iface=`expr $revision - $loop` 3334251883Speter loop=`expr $loop - 1` 3335251883Speter verstring="$verstring_prefix$major.$iface:$verstring" 3336251883Speter done 3337251883Speter 3338251883Speter # Before this point, $major must not contain `.'. 3339251883Speter major=.$major 3340251883Speter versuffix="$major.$revision" 3341251883Speter ;; 3342251883Speter 3343251883Speter linux) 3344251883Speter major=.`expr $current - $age` 3345251883Speter versuffix="$major.$age.$revision" 3346251883Speter ;; 3347251883Speter 3348251883Speter osf) 3349251883Speter major=.`expr $current - $age` 3350251883Speter versuffix=".$current.$age.$revision" 3351251883Speter verstring="$current.$age.$revision" 3352251883Speter 3353251883Speter # Add in all the interfaces that we are compatible with. 3354251883Speter loop=$age 3355251883Speter while test "$loop" -ne 0; do 3356251883Speter iface=`expr $current - $loop` 3357251883Speter loop=`expr $loop - 1` 3358251883Speter verstring="$verstring:${iface}.0" 3359251883Speter done 3360251883Speter 3361251883Speter # Make executables depend on our current version. 3362251883Speter verstring="$verstring:${current}.0" 3363251883Speter ;; 3364251883Speter 3365251883Speter sunos) 3366251883Speter major=".$current" 3367251883Speter versuffix=".$current.$revision" 3368251883Speter ;; 3369251883Speter 3370251883Speter windows) 3371251883Speter # Use '-' rather than '.', since we only want one 3372251883Speter # extension on DOS 8.3 filesystems. 3373251883Speter major=`expr $current - $age` 3374251883Speter versuffix="-$major" 3375251883Speter ;; 3376251883Speter 3377251883Speter *) 3378251883Speter $echo "$modename: unknown library version type \`$version_type'" 1>&2 3379251883Speter $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3380251883Speter exit $EXIT_FAILURE 3381251883Speter ;; 3382251883Speter esac 3383251883Speter 3384251883Speter # Clear the version info if we defaulted, and they specified a release. 3385251883Speter if test -z "$vinfo" && test -n "$release"; then 3386251883Speter major= 3387251883Speter case $version_type in 3388251883Speter darwin) 3389251883Speter # we can't check for "0.0" in archive_cmds due to quoting 3390251883Speter # problems, so we reset it completely 3391251883Speter verstring= 3392251883Speter ;; 3393251883Speter *) 3394251883Speter verstring="0.0" 3395251883Speter ;; 3396251883Speter esac 3397251883Speter if test "$need_version" = no; then 3398251883Speter versuffix= 3399251883Speter else 3400251883Speter versuffix=".0.0" 3401251883Speter fi 3402251883Speter fi 3403251883Speter 3404251883Speter # Remove version info from name if versioning should be avoided 3405251883Speter if test "$avoid_version" = yes && test "$need_version" = no; then 3406251883Speter major= 3407251883Speter versuffix= 3408251883Speter verstring="" 3409251883Speter fi 3410251883Speter 3411251883Speter # Check to see if the archive will have undefined symbols. 3412251883Speter if test "$allow_undefined" = yes; then 3413251883Speter if test "$allow_undefined_flag" = unsupported; then 3414251883Speter $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3415251883Speter build_libtool_libs=no 3416251883Speter build_old_libs=yes 3417251883Speter fi 3418251883Speter else 3419251883Speter # Don't allow undefined symbols. 3420251883Speter allow_undefined_flag="$no_undefined_flag" 3421251883Speter fi 3422251883Speter fi 3423251883Speter 3424251883Speter if test "$mode" != relink; then 3425251883Speter # Remove our outputs, but don't remove object files since they 3426251883Speter # may have been created when compiling PIC objects. 3427251883Speter removelist= 3428251883Speter tempremovelist=`$echo "$output_objdir/*"` 3429251883Speter for p in $tempremovelist; do 3430251883Speter case $p in 3431251883Speter *.$objext) 3432251883Speter ;; 3433251883Speter $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3434251883Speter if test "X$precious_files_regex" != "X"; then 3435251883Speter if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3436251883Speter then 3437251883Speter continue 3438251883Speter fi 3439251883Speter fi 3440251883Speter removelist="$removelist $p" 3441251883Speter ;; 3442251883Speter *) ;; 3443251883Speter esac 3444251883Speter done 3445251883Speter if test -n "$removelist"; then 3446251883Speter $show "${rm}r $removelist" 3447251883Speter $run ${rm}r $removelist 3448251883Speter fi 3449251883Speter fi 3450251883Speter 3451251883Speter # Now set the variables for building old libraries. 3452251883Speter if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3453251883Speter oldlibs="$oldlibs $output_objdir/$libname.$libext" 3454251883Speter 3455251883Speter # Transform .lo files to .o files. 3456251883Speter oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3457251883Speter fi 3458251883Speter 3459251883Speter # Eliminate all temporary directories. 3460251883Speter #for path in $notinst_path; do 3461251883Speter # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3462251883Speter # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3463251883Speter # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3464251883Speter #done 3465251883Speter 3466251883Speter if test -n "$xrpath"; then 3467251883Speter # If the user specified any rpath flags, then add them. 3468251883Speter temp_xrpath= 3469251883Speter for libdir in $xrpath; do 3470251883Speter temp_xrpath="$temp_xrpath -R$libdir" 3471251883Speter case "$finalize_rpath " in 3472251883Speter *" $libdir "*) ;; 3473251883Speter *) finalize_rpath="$finalize_rpath $libdir" ;; 3474251883Speter esac 3475251883Speter done 3476251883Speter if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3477251883Speter dependency_libs="$temp_xrpath $dependency_libs" 3478251883Speter fi 3479251883Speter fi 3480251883Speter 3481251883Speter # Make sure dlfiles contains only unique files that won't be dlpreopened 3482251883Speter old_dlfiles="$dlfiles" 3483251883Speter dlfiles= 3484251883Speter for lib in $old_dlfiles; do 3485251883Speter case " $dlprefiles $dlfiles " in 3486251883Speter *" $lib "*) ;; 3487251883Speter *) dlfiles="$dlfiles $lib" ;; 3488251883Speter esac 3489251883Speter done 3490251883Speter 3491251883Speter # Make sure dlprefiles contains only unique files 3492251883Speter old_dlprefiles="$dlprefiles" 3493251883Speter dlprefiles= 3494251883Speter for lib in $old_dlprefiles; do 3495251883Speter case "$dlprefiles " in 3496251883Speter *" $lib "*) ;; 3497251883Speter *) dlprefiles="$dlprefiles $lib" ;; 3498251883Speter esac 3499251883Speter done 3500251883Speter 3501251883Speter if test "$build_libtool_libs" = yes; then 3502251883Speter if test -n "$rpath"; then 3503251883Speter case $host in 3504251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3505251883Speter # these systems don't actually have a c library (as such)! 3506251883Speter ;; 3507251883Speter *-*-rhapsody* | *-*-darwin1.[012]) 3508251883Speter # Rhapsody C library is in the System framework 3509251883Speter deplibs="$deplibs -framework System" 3510251883Speter ;; 3511251883Speter *-*-netbsd*) 3512251883Speter # Don't link with libc until the a.out ld.so is fixed. 3513251883Speter ;; 3514251883Speter *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3515251883Speter # Do not include libc due to us having libc/libc_r. 3516251883Speter ;; 3517251883Speter *-*-sco3.2v5* | *-*-sco5v6*) 3518251883Speter # Causes problems with __ctype 3519251883Speter ;; 3520251883Speter *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3521251883Speter # Compiler inserts libc in the correct place for threads to work 3522251883Speter ;; 3523251883Speter *) 3524251883Speter # Add libc to deplibs on all other systems if necessary. 3525251883Speter if test "$build_libtool_need_lc" = "yes"; then 3526251883Speter deplibs="$deplibs -lc" 3527251883Speter fi 3528251883Speter ;; 3529251883Speter esac 3530251883Speter fi 3531251883Speter 3532251883Speter # Transform deplibs into only deplibs that can be linked in shared. 3533251883Speter name_save=$name 3534251883Speter libname_save=$libname 3535251883Speter release_save=$release 3536251883Speter versuffix_save=$versuffix 3537251883Speter major_save=$major 3538251883Speter # I'm not sure if I'm treating the release correctly. I think 3539251883Speter # release should show up in the -l (ie -lgmp5) so we don't want to 3540251883Speter # add it in twice. Is that correct? 3541251883Speter release="" 3542251883Speter versuffix="" 3543251883Speter major="" 3544251883Speter newdeplibs= 3545251883Speter droppeddeps=no 3546251883Speter case $deplibs_check_method in 3547251883Speter pass_all) 3548251883Speter # Don't check for shared/static. Everything works. 3549251883Speter # This might be a little naive. We might want to check 3550251883Speter # whether the library exists or not. But this is on 3551251883Speter # osf3 & osf4 and I'm not really sure... Just 3552251883Speter # implementing what was already the behavior. 3553251883Speter newdeplibs=$deplibs 3554251883Speter ;; 3555251883Speter test_compile) 3556251883Speter # This code stresses the "libraries are programs" paradigm to its 3557251883Speter # limits. Maybe even breaks it. We compile a program, linking it 3558251883Speter # against the deplibs as a proxy for the library. Then we can check 3559251883Speter # whether they linked in statically or dynamically with ldd. 3560251883Speter $rm conftest.c 3561251883Speter cat > conftest.c <<EOF 3562251883Speter int main() { return 0; } 3563251883SpeterEOF 3564251883Speter $rm conftest 3565251883Speter if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3566251883Speter ldd_output=`ldd conftest` 3567251883Speter for i in $deplibs; do 3568251883Speter name=`expr $i : '-l\(.*\)'` 3569251883Speter # If $name is empty we are operating on a -L argument. 3570251883Speter if test "$name" != "" && test "$name" != "0"; then 3571251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3572251883Speter case " $predeps $postdeps " in 3573251883Speter *" $i "*) 3574251883Speter newdeplibs="$newdeplibs $i" 3575251883Speter i="" 3576251883Speter ;; 3577251883Speter esac 3578251883Speter fi 3579251883Speter if test -n "$i" ; then 3580251883Speter libname=`eval \\$echo \"$libname_spec\"` 3581251883Speter deplib_matches=`eval \\$echo \"$library_names_spec\"` 3582251883Speter set dummy $deplib_matches 3583251883Speter deplib_match=$2 3584251883Speter if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3585251883Speter newdeplibs="$newdeplibs $i" 3586251883Speter else 3587251883Speter droppeddeps=yes 3588251883Speter $echo 3589251883Speter $echo "*** Warning: dynamic linker does not accept needed library $i." 3590251883Speter $echo "*** I have the capability to make that library automatically link in when" 3591251883Speter $echo "*** you link to this library. But I can only do this if you have a" 3592251883Speter $echo "*** shared version of the library, which I believe you do not have" 3593251883Speter $echo "*** because a test_compile did reveal that the linker did not use it for" 3594251883Speter $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3595251883Speter fi 3596251883Speter fi 3597251883Speter else 3598251883Speter newdeplibs="$newdeplibs $i" 3599251883Speter fi 3600251883Speter done 3601251883Speter else 3602251883Speter # Error occurred in the first compile. Let's try to salvage 3603251883Speter # the situation: Compile a separate program for each library. 3604251883Speter for i in $deplibs; do 3605251883Speter name=`expr $i : '-l\(.*\)'` 3606251883Speter # If $name is empty we are operating on a -L argument. 3607251883Speter if test "$name" != "" && test "$name" != "0"; then 3608251883Speter $rm conftest 3609251883Speter if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3610251883Speter ldd_output=`ldd conftest` 3611251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3612251883Speter case " $predeps $postdeps " in 3613251883Speter *" $i "*) 3614251883Speter newdeplibs="$newdeplibs $i" 3615251883Speter i="" 3616251883Speter ;; 3617251883Speter esac 3618251883Speter fi 3619251883Speter if test -n "$i" ; then 3620251883Speter libname=`eval \\$echo \"$libname_spec\"` 3621251883Speter deplib_matches=`eval \\$echo \"$library_names_spec\"` 3622251883Speter set dummy $deplib_matches 3623251883Speter deplib_match=$2 3624251883Speter if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3625251883Speter newdeplibs="$newdeplibs $i" 3626251883Speter else 3627251883Speter droppeddeps=yes 3628251883Speter $echo 3629251883Speter $echo "*** Warning: dynamic linker does not accept needed library $i." 3630251883Speter $echo "*** I have the capability to make that library automatically link in when" 3631251883Speter $echo "*** you link to this library. But I can only do this if you have a" 3632251883Speter $echo "*** shared version of the library, which you do not appear to have" 3633251883Speter $echo "*** because a test_compile did reveal that the linker did not use this one" 3634251883Speter $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3635251883Speter fi 3636251883Speter fi 3637251883Speter else 3638251883Speter droppeddeps=yes 3639251883Speter $echo 3640251883Speter $echo "*** Warning! Library $i is needed by this library but I was not able to" 3641251883Speter $echo "*** make it link in! You will probably need to install it or some" 3642251883Speter $echo "*** library that it depends on before this library will be fully" 3643251883Speter $echo "*** functional. Installing it before continuing would be even better." 3644251883Speter fi 3645251883Speter else 3646251883Speter newdeplibs="$newdeplibs $i" 3647251883Speter fi 3648251883Speter done 3649251883Speter fi 3650251883Speter ;; 3651251883Speter file_magic*) 3652251883Speter set dummy $deplibs_check_method 3653251883Speter file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3654251883Speter for a_deplib in $deplibs; do 3655251883Speter name=`expr $a_deplib : '-l\(.*\)'` 3656251883Speter # If $name is empty we are operating on a -L argument. 3657251883Speter if test "$name" != "" && test "$name" != "0"; then 3658251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3659251883Speter case " $predeps $postdeps " in 3660251883Speter *" $a_deplib "*) 3661251883Speter newdeplibs="$newdeplibs $a_deplib" 3662251883Speter a_deplib="" 3663251883Speter ;; 3664251883Speter esac 3665251883Speter fi 3666251883Speter if test -n "$a_deplib" ; then 3667251883Speter libname=`eval \\$echo \"$libname_spec\"` 3668251883Speter for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3669251883Speter potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3670251883Speter for potent_lib in $potential_libs; do 3671251883Speter # Follow soft links. 3672251883Speter if ls -lLd "$potent_lib" 2>/dev/null \ 3673251883Speter | grep " -> " >/dev/null; then 3674251883Speter continue 3675251883Speter fi 3676251883Speter # The statement above tries to avoid entering an 3677251883Speter # endless loop below, in case of cyclic links. 3678251883Speter # We might still enter an endless loop, since a link 3679251883Speter # loop can be closed while we follow links, 3680251883Speter # but so what? 3681251883Speter potlib="$potent_lib" 3682251883Speter while test -h "$potlib" 2>/dev/null; do 3683251883Speter potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3684251883Speter case $potliblink in 3685251883Speter [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3686251883Speter *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3687251883Speter esac 3688251883Speter done 3689251883Speter if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3690251883Speter | ${SED} 10q \ 3691251883Speter | $EGREP "$file_magic_regex" > /dev/null; then 3692251883Speter newdeplibs="$newdeplibs $a_deplib" 3693251883Speter a_deplib="" 3694251883Speter break 2 3695251883Speter fi 3696251883Speter done 3697251883Speter done 3698251883Speter fi 3699251883Speter if test -n "$a_deplib" ; then 3700251883Speter droppeddeps=yes 3701251883Speter $echo 3702251883Speter $echo "*** Warning: linker path does not have real file for library $a_deplib." 3703251883Speter $echo "*** I have the capability to make that library automatically link in when" 3704251883Speter $echo "*** you link to this library. But I can only do this if you have a" 3705251883Speter $echo "*** shared version of the library, which you do not appear to have" 3706251883Speter $echo "*** because I did check the linker path looking for a file starting" 3707251883Speter if test -z "$potlib" ; then 3708251883Speter $echo "*** with $libname but no candidates were found. (...for file magic test)" 3709251883Speter else 3710251883Speter $echo "*** with $libname and none of the candidates passed a file format test" 3711251883Speter $echo "*** using a file magic. Last file checked: $potlib" 3712251883Speter fi 3713251883Speter fi 3714251883Speter else 3715251883Speter # Add a -L argument. 3716251883Speter newdeplibs="$newdeplibs $a_deplib" 3717251883Speter fi 3718251883Speter done # Gone through all deplibs. 3719251883Speter ;; 3720251883Speter match_pattern*) 3721251883Speter set dummy $deplibs_check_method 3722251883Speter match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3723251883Speter for a_deplib in $deplibs; do 3724251883Speter name=`expr $a_deplib : '-l\(.*\)'` 3725251883Speter # If $name is empty we are operating on a -L argument. 3726251883Speter if test -n "$name" && test "$name" != "0"; then 3727251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3728251883Speter case " $predeps $postdeps " in 3729251883Speter *" $a_deplib "*) 3730251883Speter newdeplibs="$newdeplibs $a_deplib" 3731251883Speter a_deplib="" 3732251883Speter ;; 3733251883Speter esac 3734251883Speter fi 3735251883Speter if test -n "$a_deplib" ; then 3736251883Speter libname=`eval \\$echo \"$libname_spec\"` 3737251883Speter for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3738251883Speter potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3739251883Speter for potent_lib in $potential_libs; do 3740251883Speter potlib="$potent_lib" # see symlink-check above in file_magic test 3741251883Speter if eval $echo \"$potent_lib\" 2>/dev/null \ 3742251883Speter | ${SED} 10q \ 3743251883Speter | $EGREP "$match_pattern_regex" > /dev/null; then 3744251883Speter newdeplibs="$newdeplibs $a_deplib" 3745251883Speter a_deplib="" 3746251883Speter break 2 3747251883Speter fi 3748251883Speter done 3749251883Speter done 3750251883Speter fi 3751251883Speter if test -n "$a_deplib" ; then 3752251883Speter droppeddeps=yes 3753251883Speter $echo 3754251883Speter $echo "*** Warning: linker path does not have real file for library $a_deplib." 3755251883Speter $echo "*** I have the capability to make that library automatically link in when" 3756251883Speter $echo "*** you link to this library. But I can only do this if you have a" 3757251883Speter $echo "*** shared version of the library, which you do not appear to have" 3758251883Speter $echo "*** because I did check the linker path looking for a file starting" 3759251883Speter if test -z "$potlib" ; then 3760251883Speter $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3761251883Speter else 3762251883Speter $echo "*** with $libname and none of the candidates passed a file format test" 3763251883Speter $echo "*** using a regex pattern. Last file checked: $potlib" 3764251883Speter fi 3765251883Speter fi 3766251883Speter else 3767251883Speter # Add a -L argument. 3768251883Speter newdeplibs="$newdeplibs $a_deplib" 3769251883Speter fi 3770251883Speter done # Gone through all deplibs. 3771251883Speter ;; 3772251883Speter none | unknown | *) 3773251883Speter newdeplibs="" 3774251883Speter tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3775251883Speter -e 's/ -[LR][^ ]*//g'` 3776251883Speter if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3777251883Speter for i in $predeps $postdeps ; do 3778251883Speter # can't use Xsed below, because $i might contain '/' 3779251883Speter tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3780251883Speter done 3781251883Speter fi 3782251883Speter if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3783251883Speter | grep . >/dev/null; then 3784251883Speter $echo 3785251883Speter if test "X$deplibs_check_method" = "Xnone"; then 3786251883Speter $echo "*** Warning: inter-library dependencies are not supported in this platform." 3787251883Speter else 3788251883Speter $echo "*** Warning: inter-library dependencies are not known to be supported." 3789251883Speter fi 3790251883Speter $echo "*** All declared inter-library dependencies are being dropped." 3791251883Speter droppeddeps=yes 3792251883Speter fi 3793251883Speter ;; 3794251883Speter esac 3795251883Speter versuffix=$versuffix_save 3796251883Speter major=$major_save 3797251883Speter release=$release_save 3798251883Speter libname=$libname_save 3799251883Speter name=$name_save 3800251883Speter 3801251883Speter case $host in 3802251883Speter *-*-rhapsody* | *-*-darwin1.[012]) 3803251883Speter # On Rhapsody replace the C library is the System framework 3804251883Speter newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3805251883Speter ;; 3806251883Speter esac 3807251883Speter 3808251883Speter if test "$droppeddeps" = yes; then 3809251883Speter if test "$module" = yes; then 3810251883Speter $echo 3811251883Speter $echo "*** Warning: libtool could not satisfy all declared inter-library" 3812251883Speter $echo "*** dependencies of module $libname. Therefore, libtool will create" 3813251883Speter $echo "*** a static module, that should work as long as the dlopening" 3814251883Speter $echo "*** application is linked with the -dlopen flag." 3815251883Speter if test -z "$global_symbol_pipe"; then 3816251883Speter $echo 3817251883Speter $echo "*** However, this would only work if libtool was able to extract symbol" 3818251883Speter $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3819251883Speter $echo "*** not find such a program. So, this module is probably useless." 3820251883Speter $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3821251883Speter fi 3822251883Speter if test "$build_old_libs" = no; then 3823251883Speter oldlibs="$output_objdir/$libname.$libext" 3824251883Speter build_libtool_libs=module 3825251883Speter build_old_libs=yes 3826251883Speter else 3827251883Speter build_libtool_libs=no 3828251883Speter fi 3829251883Speter else 3830251883Speter $echo "*** The inter-library dependencies that have been dropped here will be" 3831251883Speter $echo "*** automatically added whenever a program is linked with this library" 3832251883Speter $echo "*** or is declared to -dlopen it." 3833251883Speter 3834251883Speter if test "$allow_undefined" = no; then 3835251883Speter $echo 3836251883Speter $echo "*** Since this library must not contain undefined symbols," 3837251883Speter $echo "*** because either the platform does not support them or" 3838251883Speter $echo "*** it was explicitly requested with -no-undefined," 3839251883Speter $echo "*** libtool will only create a static version of it." 3840251883Speter if test "$build_old_libs" = no; then 3841251883Speter oldlibs="$output_objdir/$libname.$libext" 3842251883Speter build_libtool_libs=module 3843251883Speter build_old_libs=yes 3844251883Speter else 3845251883Speter build_libtool_libs=no 3846251883Speter fi 3847251883Speter fi 3848251883Speter fi 3849251883Speter fi 3850251883Speter # Done checking deplibs! 3851251883Speter deplibs=$newdeplibs 3852251883Speter fi 3853251883Speter 3854251883Speter 3855251883Speter # move library search paths that coincide with paths to not yet 3856251883Speter # installed libraries to the beginning of the library search list 3857251883Speter new_libs= 3858251883Speter for path in $notinst_path; do 3859251883Speter case " $new_libs " in 3860251883Speter *" -L$path/$objdir "*) ;; 3861251883Speter *) 3862251883Speter case " $deplibs " in 3863251883Speter *" -L$path/$objdir "*) 3864251883Speter new_libs="$new_libs -L$path/$objdir" ;; 3865251883Speter esac 3866251883Speter ;; 3867251883Speter esac 3868251883Speter done 3869251883Speter for deplib in $deplibs; do 3870251883Speter case $deplib in 3871251883Speter -L*) 3872251883Speter case " $new_libs " in 3873251883Speter *" $deplib "*) ;; 3874251883Speter *) new_libs="$new_libs $deplib" ;; 3875251883Speter esac 3876251883Speter ;; 3877251883Speter *) new_libs="$new_libs $deplib" ;; 3878251883Speter esac 3879251883Speter done 3880251883Speter deplibs="$new_libs" 3881251883Speter 3882251883Speter 3883251883Speter # All the library-specific variables (install_libdir is set above). 3884251883Speter library_names= 3885251883Speter old_library= 3886251883Speter dlname= 3887251883Speter 3888251883Speter # Test again, we may have decided not to build it any more 3889251883Speter if test "$build_libtool_libs" = yes; then 3890251883Speter if test "$hardcode_into_libs" = yes; then 3891251883Speter # Hardcode the library paths 3892251883Speter hardcode_libdirs= 3893251883Speter dep_rpath= 3894251883Speter rpath="$finalize_rpath" 3895251883Speter test "$mode" != relink && rpath="$compile_rpath$rpath" 3896251883Speter for libdir in $rpath; do 3897251883Speter if test -n "$hardcode_libdir_flag_spec"; then 3898251883Speter if test -n "$hardcode_libdir_separator"; then 3899251883Speter if test -z "$hardcode_libdirs"; then 3900251883Speter hardcode_libdirs="$libdir" 3901251883Speter else 3902251883Speter # Just accumulate the unique libdirs. 3903251883Speter case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3904251883Speter *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3905251883Speter ;; 3906251883Speter *) 3907251883Speter hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3908251883Speter ;; 3909251883Speter esac 3910251883Speter fi 3911251883Speter else 3912251883Speter eval flag=\"$hardcode_libdir_flag_spec\" 3913251883Speter dep_rpath="$dep_rpath $flag" 3914251883Speter fi 3915251883Speter elif test -n "$runpath_var"; then 3916251883Speter case "$perm_rpath " in 3917251883Speter *" $libdir "*) ;; 3918251883Speter *) perm_rpath="$perm_rpath $libdir" ;; 3919251883Speter esac 3920251883Speter fi 3921251883Speter done 3922251883Speter # Substitute the hardcoded libdirs into the rpath. 3923251883Speter if test -n "$hardcode_libdir_separator" && 3924251883Speter test -n "$hardcode_libdirs"; then 3925251883Speter libdir="$hardcode_libdirs" 3926251883Speter if test -n "$hardcode_libdir_flag_spec_ld"; then 3927251883Speter case $archive_cmds in 3928251883Speter *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3929251883Speter *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3930251883Speter esac 3931251883Speter else 3932251883Speter eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3933251883Speter fi 3934251883Speter fi 3935251883Speter if test -n "$runpath_var" && test -n "$perm_rpath"; then 3936251883Speter # We should set the runpath_var. 3937251883Speter rpath= 3938251883Speter for dir in $perm_rpath; do 3939251883Speter rpath="$rpath$dir:" 3940251883Speter done 3941251883Speter eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3942251883Speter fi 3943251883Speter test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3944251883Speter fi 3945251883Speter 3946251883Speter shlibpath="$finalize_shlibpath" 3947251883Speter test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3948251883Speter if test -n "$shlibpath"; then 3949251883Speter eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3950251883Speter fi 3951251883Speter 3952251883Speter # Get the real and link names of the library. 3953251883Speter eval shared_ext=\"$shrext_cmds\" 3954251883Speter eval library_names=\"$library_names_spec\" 3955251883Speter set dummy $library_names 3956251883Speter realname="$2" 3957251883Speter shift; shift 3958251883Speter 3959251883Speter if test -n "$soname_spec"; then 3960251883Speter eval soname=\"$soname_spec\" 3961251883Speter else 3962251883Speter soname="$realname" 3963251883Speter fi 3964251883Speter if test -z "$dlname"; then 3965251883Speter dlname=$soname 3966251883Speter fi 3967251883Speter 3968251883Speter lib="$output_objdir/$realname" 3969251883Speter linknames= 3970251883Speter for link 3971251883Speter do 3972251883Speter linknames="$linknames $link" 3973251883Speter done 3974251883Speter 3975251883Speter # Use standard objects if they are pic 3976251883Speter test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 3977251883Speter 3978251883Speter # Prepare the list of exported symbols 3979251883Speter if test -z "$export_symbols"; then 3980251883Speter if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 3981251883Speter $show "generating symbol list for \`$libname.la'" 3982251883Speter export_symbols="$output_objdir/$libname.exp" 3983251883Speter $run $rm $export_symbols 3984251883Speter cmds=$export_symbols_cmds 3985251883Speter save_ifs="$IFS"; IFS='~' 3986251883Speter for cmd in $cmds; do 3987251883Speter IFS="$save_ifs" 3988251883Speter eval cmd=\"$cmd\" 3989251883Speter if len=`expr "X$cmd" : ".*"` && 3990251883Speter test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 3991251883Speter $show "$cmd" 3992251883Speter $run eval "$cmd" || exit $? 3993251883Speter skipped_export=false 3994251883Speter else 3995251883Speter # The command line is too long to execute in one step. 3996251883Speter $show "using reloadable object file for export list..." 3997251883Speter skipped_export=: 3998251883Speter # Break out early, otherwise skipped_export may be 3999251883Speter # set to false by a later but shorter cmd. 4000251883Speter break 4001251883Speter fi 4002251883Speter done 4003251883Speter IFS="$save_ifs" 4004251883Speter if test -n "$export_symbols_regex"; then 4005251883Speter $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4006251883Speter $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4007251883Speter $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4008251883Speter $run eval '$mv "${export_symbols}T" "$export_symbols"' 4009251883Speter fi 4010251883Speter fi 4011251883Speter fi 4012251883Speter 4013251883Speter if test -n "$export_symbols" && test -n "$include_expsyms"; then 4014251883Speter $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4015251883Speter fi 4016251883Speter 4017251883Speter tmp_deplibs= 4018251883Speter for test_deplib in $deplibs; do 4019251883Speter case " $convenience " in 4020251883Speter *" $test_deplib "*) ;; 4021251883Speter *) 4022251883Speter tmp_deplibs="$tmp_deplibs $test_deplib" 4023251883Speter ;; 4024251883Speter esac 4025251883Speter done 4026251883Speter deplibs="$tmp_deplibs" 4027251883Speter 4028251883Speter if test -n "$convenience"; then 4029251883Speter if test -n "$whole_archive_flag_spec"; then 4030251883Speter save_libobjs=$libobjs 4031251883Speter eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4032251883Speter else 4033251883Speter gentop="$output_objdir/${outputname}x" 4034251883Speter generated="$generated $gentop" 4035251883Speter 4036251883Speter func_extract_archives $gentop $convenience 4037251883Speter libobjs="$libobjs $func_extract_archives_result" 4038251883Speter fi 4039251883Speter fi 4040251883Speter 4041251883Speter if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4042251883Speter eval flag=\"$thread_safe_flag_spec\" 4043251883Speter linker_flags="$linker_flags $flag" 4044251883Speter fi 4045251883Speter 4046251883Speter # Make a backup of the uninstalled library when relinking 4047251883Speter if test "$mode" = relink; then 4048251883Speter $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4049251883Speter fi 4050251883Speter 4051251883Speter # Do each of the archive commands. 4052251883Speter if test "$module" = yes && test -n "$module_cmds" ; then 4053251883Speter if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4054251883Speter eval test_cmds=\"$module_expsym_cmds\" 4055251883Speter cmds=$module_expsym_cmds 4056251883Speter else 4057251883Speter eval test_cmds=\"$module_cmds\" 4058251883Speter cmds=$module_cmds 4059251883Speter fi 4060251883Speter else 4061251883Speter if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4062251883Speter eval test_cmds=\"$archive_expsym_cmds\" 4063251883Speter cmds=$archive_expsym_cmds 4064251883Speter else 4065251883Speter eval test_cmds=\"$archive_cmds\" 4066251883Speter cmds=$archive_cmds 4067251883Speter fi 4068251883Speter fi 4069251883Speter 4070251883Speter if test "X$skipped_export" != "X:" && 4071251883Speter len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4072251883Speter test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4073251883Speter : 4074251883Speter else 4075251883Speter # The command line is too long to link in one step, link piecewise. 4076251883Speter $echo "creating reloadable object files..." 4077251883Speter 4078251883Speter # Save the value of $output and $libobjs because we want to 4079251883Speter # use them later. If we have whole_archive_flag_spec, we 4080251883Speter # want to use save_libobjs as it was before 4081251883Speter # whole_archive_flag_spec was expanded, because we can't 4082251883Speter # assume the linker understands whole_archive_flag_spec. 4083251883Speter # This may have to be revisited, in case too many 4084251883Speter # convenience libraries get linked in and end up exceeding 4085251883Speter # the spec. 4086251883Speter if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4087251883Speter save_libobjs=$libobjs 4088251883Speter fi 4089251883Speter save_output=$output 4090251883Speter output_la=`$echo "X$output" | $Xsed -e "$basename"` 4091251883Speter 4092251883Speter # Clear the reloadable object creation command queue and 4093251883Speter # initialize k to one. 4094251883Speter test_cmds= 4095251883Speter concat_cmds= 4096251883Speter objlist= 4097251883Speter delfiles= 4098251883Speter last_robj= 4099251883Speter k=1 4100251883Speter output=$output_objdir/$output_la-${k}.$objext 4101251883Speter # Loop over the list of objects to be linked. 4102251883Speter for obj in $save_libobjs 4103251883Speter do 4104251883Speter eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4105251883Speter if test "X$objlist" = X || 4106251883Speter { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4107251883Speter test "$len" -le "$max_cmd_len"; }; then 4108251883Speter objlist="$objlist $obj" 4109251883Speter else 4110251883Speter # The command $test_cmds is almost too long, add a 4111251883Speter # command to the queue. 4112251883Speter if test "$k" -eq 1 ; then 4113251883Speter # The first file doesn't have a previous command to add. 4114251883Speter eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4115251883Speter else 4116251883Speter # All subsequent reloadable object files will link in 4117251883Speter # the last one created. 4118251883Speter eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4119251883Speter fi 4120251883Speter last_robj=$output_objdir/$output_la-${k}.$objext 4121251883Speter k=`expr $k + 1` 4122251883Speter output=$output_objdir/$output_la-${k}.$objext 4123251883Speter objlist=$obj 4124251883Speter len=1 4125251883Speter fi 4126251883Speter done 4127251883Speter # Handle the remaining objects by creating one last 4128251883Speter # reloadable object file. All subsequent reloadable object 4129251883Speter # files will link in the last one created. 4130251883Speter test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4131251883Speter eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4132251883Speter 4133251883Speter if ${skipped_export-false}; then 4134251883Speter $show "generating symbol list for \`$libname.la'" 4135251883Speter export_symbols="$output_objdir/$libname.exp" 4136251883Speter $run $rm $export_symbols 4137251883Speter libobjs=$output 4138251883Speter # Append the command to create the export file. 4139251883Speter eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4140251883Speter fi 4141251883Speter 4142251883Speter # Set up a command to remove the reloadable object files 4143251883Speter # after they are used. 4144251883Speter i=0 4145251883Speter while test "$i" -lt "$k" 4146251883Speter do 4147251883Speter i=`expr $i + 1` 4148251883Speter delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4149251883Speter done 4150251883Speter 4151251883Speter $echo "creating a temporary reloadable object file: $output" 4152251883Speter 4153251883Speter # Loop through the commands generated above and execute them. 4154251883Speter save_ifs="$IFS"; IFS='~' 4155251883Speter for cmd in $concat_cmds; do 4156251883Speter IFS="$save_ifs" 4157251883Speter $show "$cmd" 4158251883Speter $run eval "$cmd" || exit $? 4159251883Speter done 4160251883Speter IFS="$save_ifs" 4161251883Speter 4162251883Speter libobjs=$output 4163251883Speter # Restore the value of output. 4164251883Speter output=$save_output 4165251883Speter 4166251883Speter if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4167251883Speter eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4168251883Speter fi 4169251883Speter # Expand the library linking commands again to reset the 4170251883Speter # value of $libobjs for piecewise linking. 4171251883Speter 4172251883Speter # Do each of the archive commands. 4173251883Speter if test "$module" = yes && test -n "$module_cmds" ; then 4174251883Speter if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4175251883Speter cmds=$module_expsym_cmds 4176251883Speter else 4177251883Speter cmds=$module_cmds 4178251883Speter fi 4179251883Speter else 4180251883Speter if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4181251883Speter cmds=$archive_expsym_cmds 4182251883Speter else 4183251883Speter cmds=$archive_cmds 4184251883Speter fi 4185251883Speter fi 4186251883Speter 4187251883Speter # Append the command to remove the reloadable object files 4188251883Speter # to the just-reset $cmds. 4189251883Speter eval cmds=\"\$cmds~\$rm $delfiles\" 4190251883Speter fi 4191251883Speter save_ifs="$IFS"; IFS='~' 4192251883Speter for cmd in $cmds; do 4193251883Speter IFS="$save_ifs" 4194251883Speter eval cmd=\"$cmd\" 4195251883Speter $show "$cmd" 4196251883Speter $run eval "$cmd" || { 4197251883Speter lt_exit=$? 4198251883Speter 4199251883Speter # Restore the uninstalled library and exit 4200251883Speter if test "$mode" = relink; then 4201251883Speter $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4202251883Speter fi 4203251883Speter 4204251883Speter exit $lt_exit 4205251883Speter } 4206251883Speter done 4207251883Speter IFS="$save_ifs" 4208251883Speter 4209251883Speter # Restore the uninstalled library and exit 4210251883Speter if test "$mode" = relink; then 4211251883Speter $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4212251883Speter 4213251883Speter if test -n "$convenience"; then 4214251883Speter if test -z "$whole_archive_flag_spec"; then 4215251883Speter $show "${rm}r $gentop" 4216251883Speter $run ${rm}r "$gentop" 4217251883Speter fi 4218251883Speter fi 4219251883Speter 4220251883Speter exit $EXIT_SUCCESS 4221251883Speter fi 4222251883Speter 4223251883Speter # Create links to the real library. 4224251883Speter for linkname in $linknames; do 4225251883Speter if test "$realname" != "$linkname"; then 4226251883Speter $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4227251883Speter $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4228251883Speter fi 4229251883Speter done 4230251883Speter 4231251883Speter # If -module or -export-dynamic was specified, set the dlname. 4232251883Speter if test "$module" = yes || test "$export_dynamic" = yes; then 4233251883Speter # On all known operating systems, these are identical. 4234251883Speter dlname="$soname" 4235251883Speter fi 4236251883Speter fi 4237251883Speter ;; 4238251883Speter 4239251883Speter obj) 4240251883Speter if test -n "$deplibs"; then 4241251883Speter $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 4242251883Speter fi 4243251883Speter 4244251883Speter if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4245251883Speter $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4246251883Speter fi 4247251883Speter 4248251883Speter if test -n "$rpath"; then 4249251883Speter $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4250251883Speter fi 4251251883Speter 4252251883Speter if test -n "$xrpath"; then 4253251883Speter $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4254251883Speter fi 4255251883Speter 4256251883Speter if test -n "$vinfo"; then 4257251883Speter $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4258251883Speter fi 4259251883Speter 4260251883Speter if test -n "$release"; then 4261251883Speter $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4262251883Speter fi 4263251883Speter 4264251883Speter case $output in 4265251883Speter *.lo) 4266251883Speter if test -n "$objs$old_deplibs"; then 4267251883Speter $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4268251883Speter exit $EXIT_FAILURE 4269251883Speter fi 4270251883Speter libobj="$output" 4271251883Speter obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4272251883Speter ;; 4273251883Speter *) 4274251883Speter libobj= 4275251883Speter obj="$output" 4276251883Speter ;; 4277251883Speter esac 4278251883Speter 4279251883Speter # Delete the old objects. 4280251883Speter $run $rm $obj $libobj 4281251883Speter 4282251883Speter # Objects from convenience libraries. This assumes 4283251883Speter # single-version convenience libraries. Whenever we create 4284251883Speter # different ones for PIC/non-PIC, this we'll have to duplicate 4285251883Speter # the extraction. 4286251883Speter reload_conv_objs= 4287251883Speter gentop= 4288251883Speter # reload_cmds runs $LD directly, so let us get rid of 4289251883Speter # -Wl from whole_archive_flag_spec and hope we can get by with 4290251883Speter # turning comma into space.. 4291251883Speter wl= 4292251883Speter 4293251883Speter if test -n "$convenience"; then 4294251883Speter if test -n "$whole_archive_flag_spec"; then 4295251883Speter eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4296251883Speter reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4297251883Speter else 4298251883Speter gentop="$output_objdir/${obj}x" 4299251883Speter generated="$generated $gentop" 4300251883Speter 4301251883Speter func_extract_archives $gentop $convenience 4302251883Speter reload_conv_objs="$reload_objs $func_extract_archives_result" 4303251883Speter fi 4304251883Speter fi 4305251883Speter 4306251883Speter # Create the old-style object. 4307251883Speter 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 4308251883Speter 4309251883Speter output="$obj" 4310251883Speter cmds=$reload_cmds 4311251883Speter save_ifs="$IFS"; IFS='~' 4312251883Speter for cmd in $cmds; do 4313251883Speter IFS="$save_ifs" 4314251883Speter eval cmd=\"$cmd\" 4315251883Speter $show "$cmd" 4316251883Speter $run eval "$cmd" || exit $? 4317251883Speter done 4318251883Speter IFS="$save_ifs" 4319251883Speter 4320251883Speter # Exit if we aren't doing a library object file. 4321251883Speter if test -z "$libobj"; then 4322251883Speter if test -n "$gentop"; then 4323251883Speter $show "${rm}r $gentop" 4324251883Speter $run ${rm}r $gentop 4325251883Speter fi 4326251883Speter 4327251883Speter exit $EXIT_SUCCESS 4328251883Speter fi 4329251883Speter 4330251883Speter if test "$build_libtool_libs" != yes; then 4331251883Speter if test -n "$gentop"; then 4332251883Speter $show "${rm}r $gentop" 4333251883Speter $run ${rm}r $gentop 4334251883Speter fi 4335251883Speter 4336251883Speter # Create an invalid libtool object if no PIC, so that we don't 4337251883Speter # accidentally link it into a program. 4338251883Speter # $show "echo timestamp > $libobj" 4339251883Speter # $run eval "echo timestamp > $libobj" || exit $? 4340251883Speter exit $EXIT_SUCCESS 4341251883Speter fi 4342251883Speter 4343251883Speter if test -n "$pic_flag" || test "$pic_mode" != default; then 4344251883Speter # Only do commands if we really have different PIC objects. 4345251883Speter reload_objs="$libobjs $reload_conv_objs" 4346251883Speter output="$libobj" 4347251883Speter cmds=$reload_cmds 4348251883Speter save_ifs="$IFS"; IFS='~' 4349251883Speter for cmd in $cmds; do 4350251883Speter IFS="$save_ifs" 4351251883Speter eval cmd=\"$cmd\" 4352251883Speter $show "$cmd" 4353251883Speter $run eval "$cmd" || exit $? 4354251883Speter done 4355251883Speter IFS="$save_ifs" 4356251883Speter fi 4357251883Speter 4358251883Speter if test -n "$gentop"; then 4359251883Speter $show "${rm}r $gentop" 4360251883Speter $run ${rm}r $gentop 4361251883Speter fi 4362251883Speter 4363251883Speter exit $EXIT_SUCCESS 4364251883Speter ;; 4365251883Speter 4366251883Speter prog) 4367251883Speter case $host in 4368251883Speter *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4369251883Speter esac 4370251883Speter if test -n "$vinfo"; then 4371251883Speter $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4372251883Speter fi 4373251883Speter 4374251883Speter if test -n "$release"; then 4375251883Speter $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4376251883Speter fi 4377251883Speter 4378251883Speter if test "$preload" = yes; then 4379251883Speter if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4380251883Speter test "$dlopen_self_static" = unknown; then 4381251883Speter $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4382251883Speter fi 4383251883Speter fi 4384251883Speter 4385251883Speter case $host in 4386251883Speter *-*-rhapsody* | *-*-darwin1.[012]) 4387251883Speter # On Rhapsody replace the C library is the System framework 4388251883Speter compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4389251883Speter finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4390251883Speter ;; 4391251883Speter esac 4392251883Speter 4393251883Speter case $host in 4394251883Speter *darwin*) 4395251883Speter # Don't allow lazy linking, it breaks C++ global constructors 4396251883Speter if test "$tagname" = CXX ; then 4397251883Speter compile_command="$compile_command ${wl}-bind_at_load" 4398251883Speter finalize_command="$finalize_command ${wl}-bind_at_load" 4399251883Speter fi 4400251883Speter ;; 4401251883Speter esac 4402251883Speter 4403251883Speter 4404251883Speter # move library search paths that coincide with paths to not yet 4405251883Speter # installed libraries to the beginning of the library search list 4406251883Speter new_libs= 4407251883Speter for path in $notinst_path; do 4408251883Speter case " $new_libs " in 4409251883Speter *" -L$path/$objdir "*) ;; 4410251883Speter *) 4411251883Speter case " $compile_deplibs " in 4412251883Speter *" -L$path/$objdir "*) 4413251883Speter new_libs="$new_libs -L$path/$objdir" ;; 4414251883Speter esac 4415251883Speter ;; 4416251883Speter esac 4417251883Speter done 4418251883Speter for deplib in $compile_deplibs; do 4419251883Speter case $deplib in 4420251883Speter -L*) 4421251883Speter case " $new_libs " in 4422251883Speter *" $deplib "*) ;; 4423251883Speter *) new_libs="$new_libs $deplib" ;; 4424251883Speter esac 4425251883Speter ;; 4426251883Speter *) new_libs="$new_libs $deplib" ;; 4427251883Speter esac 4428251883Speter done 4429251883Speter compile_deplibs="$new_libs" 4430251883Speter 4431251883Speter 4432251883Speter compile_command="$compile_command $compile_deplibs" 4433251883Speter finalize_command="$finalize_command $finalize_deplibs" 4434251883Speter 4435251883Speter if test -n "$rpath$xrpath"; then 4436251883Speter # If the user specified any rpath flags, then add them. 4437251883Speter for libdir in $rpath $xrpath; do 4438251883Speter # This is the magic to use -rpath. 4439251883Speter case "$finalize_rpath " in 4440251883Speter *" $libdir "*) ;; 4441251883Speter *) finalize_rpath="$finalize_rpath $libdir" ;; 4442251883Speter esac 4443251883Speter done 4444251883Speter fi 4445251883Speter 4446251883Speter # Now hardcode the library paths 4447251883Speter rpath= 4448251883Speter hardcode_libdirs= 4449251883Speter for libdir in $compile_rpath $finalize_rpath; do 4450251883Speter if test -n "$hardcode_libdir_flag_spec"; then 4451251883Speter if test -n "$hardcode_libdir_separator"; then 4452251883Speter if test -z "$hardcode_libdirs"; then 4453251883Speter hardcode_libdirs="$libdir" 4454251883Speter else 4455251883Speter # Just accumulate the unique libdirs. 4456251883Speter case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4457251883Speter *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4458251883Speter ;; 4459251883Speter *) 4460251883Speter hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4461251883Speter ;; 4462251883Speter esac 4463251883Speter fi 4464251883Speter else 4465251883Speter eval flag=\"$hardcode_libdir_flag_spec\" 4466251883Speter rpath="$rpath $flag" 4467251883Speter fi 4468251883Speter elif test -n "$runpath_var"; then 4469251883Speter case "$perm_rpath " in 4470251883Speter *" $libdir "*) ;; 4471251883Speter *) perm_rpath="$perm_rpath $libdir" ;; 4472251883Speter esac 4473251883Speter fi 4474251883Speter case $host in 4475251883Speter *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4476251883Speter testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4477251883Speter case :$dllsearchpath: in 4478251883Speter *":$libdir:"*) ;; 4479251883Speter *) dllsearchpath="$dllsearchpath:$libdir";; 4480251883Speter esac 4481251883Speter case :$dllsearchpath: in 4482251883Speter *":$testbindir:"*) ;; 4483251883Speter *) dllsearchpath="$dllsearchpath:$testbindir";; 4484251883Speter esac 4485251883Speter ;; 4486251883Speter esac 4487251883Speter done 4488251883Speter # Substitute the hardcoded libdirs into the rpath. 4489251883Speter if test -n "$hardcode_libdir_separator" && 4490251883Speter test -n "$hardcode_libdirs"; then 4491251883Speter libdir="$hardcode_libdirs" 4492251883Speter eval rpath=\" $hardcode_libdir_flag_spec\" 4493251883Speter fi 4494251883Speter compile_rpath="$rpath" 4495251883Speter 4496251883Speter rpath= 4497251883Speter hardcode_libdirs= 4498251883Speter for libdir in $finalize_rpath; do 4499251883Speter if test -n "$hardcode_libdir_flag_spec"; then 4500251883Speter if test -n "$hardcode_libdir_separator"; then 4501251883Speter if test -z "$hardcode_libdirs"; then 4502251883Speter hardcode_libdirs="$libdir" 4503251883Speter else 4504251883Speter # Just accumulate the unique libdirs. 4505251883Speter case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4506251883Speter *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4507251883Speter ;; 4508251883Speter *) 4509251883Speter hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4510251883Speter ;; 4511251883Speter esac 4512251883Speter fi 4513251883Speter else 4514251883Speter eval flag=\"$hardcode_libdir_flag_spec\" 4515251883Speter rpath="$rpath $flag" 4516251883Speter fi 4517251883Speter elif test -n "$runpath_var"; then 4518251883Speter case "$finalize_perm_rpath " in 4519251883Speter *" $libdir "*) ;; 4520251883Speter *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4521251883Speter esac 4522251883Speter fi 4523251883Speter done 4524251883Speter # Substitute the hardcoded libdirs into the rpath. 4525251883Speter if test -n "$hardcode_libdir_separator" && 4526251883Speter test -n "$hardcode_libdirs"; then 4527251883Speter libdir="$hardcode_libdirs" 4528251883Speter eval rpath=\" $hardcode_libdir_flag_spec\" 4529251883Speter fi 4530251883Speter finalize_rpath="$rpath" 4531251883Speter 4532251883Speter if test -n "$libobjs" && test "$build_old_libs" = yes; then 4533251883Speter # Transform all the library objects into standard objects. 4534251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4535251883Speter finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4536251883Speter fi 4537251883Speter 4538251883Speter dlsyms= 4539251883Speter if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4540251883Speter if test -n "$NM" && test -n "$global_symbol_pipe"; then 4541251883Speter dlsyms="${outputname}S.c" 4542251883Speter else 4543251883Speter $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4544251883Speter fi 4545251883Speter fi 4546251883Speter 4547251883Speter if test -n "$dlsyms"; then 4548251883Speter case $dlsyms in 4549251883Speter "") ;; 4550251883Speter *.c) 4551251883Speter # Discover the nlist of each of the dlfiles. 4552251883Speter nlist="$output_objdir/${outputname}.nm" 4553251883Speter 4554251883Speter $show "$rm $nlist ${nlist}S ${nlist}T" 4555251883Speter $run $rm "$nlist" "${nlist}S" "${nlist}T" 4556251883Speter 4557251883Speter # Parse the name list into a source file. 4558251883Speter $show "creating $output_objdir/$dlsyms" 4559251883Speter 4560251883Speter test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4561251883Speter/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4562251883Speter/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4563251883Speter 4564251883Speter#ifdef __cplusplus 4565251883Speterextern \"C\" { 4566251883Speter#endif 4567251883Speter 4568251883Speter/* Prevent the only kind of declaration conflicts we can make. */ 4569251883Speter#define lt_preloaded_symbols some_other_symbol 4570251883Speter 4571251883Speter/* External symbol declarations for the compiler. */\ 4572251883Speter" 4573251883Speter 4574251883Speter if test "$dlself" = yes; then 4575251883Speter $show "generating symbol list for \`$output'" 4576251883Speter 4577251883Speter test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4578251883Speter 4579251883Speter # Add our own program objects to the symbol list. 4580251883Speter progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4581251883Speter for arg in $progfiles; do 4582251883Speter $show "extracting global C symbols from \`$arg'" 4583251883Speter $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4584251883Speter done 4585251883Speter 4586251883Speter if test -n "$exclude_expsyms"; then 4587251883Speter $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4588251883Speter $run eval '$mv "$nlist"T "$nlist"' 4589251883Speter fi 4590251883Speter 4591251883Speter if test -n "$export_symbols_regex"; then 4592251883Speter $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4593251883Speter $run eval '$mv "$nlist"T "$nlist"' 4594251883Speter fi 4595251883Speter 4596251883Speter # Prepare the list of exported symbols 4597251883Speter if test -z "$export_symbols"; then 4598251883Speter export_symbols="$output_objdir/$outputname.exp" 4599251883Speter $run $rm $export_symbols 4600251883Speter $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4601251883Speter case $host in 4602251883Speter *cygwin* | *mingw* ) 4603251883Speter $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4604251883Speter $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4605251883Speter ;; 4606251883Speter esac 4607251883Speter else 4608251883Speter $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4609251883Speter $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4610251883Speter $run eval 'mv "$nlist"T "$nlist"' 4611251883Speter case $host in 4612251883Speter *cygwin* | *mingw* ) 4613251883Speter $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4614251883Speter $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4615251883Speter ;; 4616251883Speter esac 4617251883Speter fi 4618251883Speter fi 4619251883Speter 4620251883Speter for arg in $dlprefiles; do 4621251883Speter $show "extracting global C symbols from \`$arg'" 4622251883Speter name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4623251883Speter $run eval '$echo ": $name " >> "$nlist"' 4624251883Speter $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4625251883Speter done 4626251883Speter 4627251883Speter if test -z "$run"; then 4628251883Speter # Make sure we have at least an empty file. 4629251883Speter test -f "$nlist" || : > "$nlist" 4630251883Speter 4631251883Speter if test -n "$exclude_expsyms"; then 4632251883Speter $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4633251883Speter $mv "$nlist"T "$nlist" 4634251883Speter fi 4635251883Speter 4636251883Speter # Try sorting and uniquifying the output. 4637251883Speter if grep -v "^: " < "$nlist" | 4638251883Speter if sort -k 3 </dev/null >/dev/null 2>&1; then 4639251883Speter sort -k 3 4640251883Speter else 4641251883Speter sort +2 4642251883Speter fi | 4643251883Speter uniq > "$nlist"S; then 4644251883Speter : 4645251883Speter else 4646251883Speter grep -v "^: " < "$nlist" > "$nlist"S 4647251883Speter fi 4648251883Speter 4649251883Speter if test -f "$nlist"S; then 4650251883Speter eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4651251883Speter else 4652251883Speter $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4653251883Speter fi 4654251883Speter 4655251883Speter $echo >> "$output_objdir/$dlsyms" "\ 4656251883Speter 4657251883Speter#undef lt_preloaded_symbols 4658251883Speter 4659251883Speter#if defined (__STDC__) && __STDC__ 4660251883Speter# define lt_ptr void * 4661251883Speter#else 4662251883Speter# define lt_ptr char * 4663251883Speter# define const 4664251883Speter#endif 4665251883Speter 4666251883Speter/* The mapping between symbol names and symbols. */ 4667251883Speter" 4668251883Speter 4669251883Speter case $host in 4670251883Speter *cygwin* | *mingw* ) 4671251883Speter $echo >> "$output_objdir/$dlsyms" "\ 4672251883Speter/* DATA imports from DLLs on WIN32 can't be const, because 4673251883Speter runtime relocations are performed -- see ld's documentation 4674251883Speter on pseudo-relocs */ 4675251883Speterstruct { 4676251883Speter" 4677251883Speter ;; 4678251883Speter * ) 4679251883Speter $echo >> "$output_objdir/$dlsyms" "\ 4680251883Speterconst struct { 4681251883Speter" 4682251883Speter ;; 4683251883Speter esac 4684251883Speter 4685251883Speter 4686251883Speter $echo >> "$output_objdir/$dlsyms" "\ 4687251883Speter const char *name; 4688251883Speter lt_ptr address; 4689251883Speter} 4690251883Speterlt_preloaded_symbols[] = 4691251883Speter{\ 4692251883Speter" 4693251883Speter 4694251883Speter eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4695251883Speter 4696251883Speter $echo >> "$output_objdir/$dlsyms" "\ 4697251883Speter {0, (lt_ptr) 0} 4698251883Speter}; 4699251883Speter 4700251883Speter/* This works around a problem in FreeBSD linker */ 4701251883Speter#ifdef FREEBSD_WORKAROUND 4702251883Speterstatic const void *lt_preloaded_setup() { 4703251883Speter return lt_preloaded_symbols; 4704251883Speter} 4705251883Speter#endif 4706251883Speter 4707251883Speter#ifdef __cplusplus 4708251883Speter} 4709251883Speter#endif\ 4710251883Speter" 4711251883Speter fi 4712251883Speter 4713251883Speter pic_flag_for_symtable= 4714251883Speter case $host in 4715251883Speter # compiling the symbol table file with pic_flag works around 4716251883Speter # a FreeBSD bug that causes programs to crash when -lm is 4717251883Speter # linked before any other PIC object. But we must not use 4718251883Speter # pic_flag when linking with -static. The problem exists in 4719251883Speter # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4720251883Speter *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4721251883Speter case "$compile_command " in 4722251883Speter *" -static "*) ;; 4723251883Speter *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4724251883Speter esac;; 4725251883Speter *-*-hpux*) 4726251883Speter case "$compile_command " in 4727251883Speter *" -static "*) ;; 4728251883Speter *) pic_flag_for_symtable=" $pic_flag";; 4729251883Speter esac 4730251883Speter esac 4731251883Speter 4732251883Speter # Now compile the dynamic symbol file. 4733251883Speter $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4734251883Speter $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4735251883Speter 4736251883Speter # Clean up the generated files. 4737251883Speter $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4738251883Speter $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4739251883Speter 4740251883Speter # Transform the symbol file into the correct name. 4741251883Speter case $host in 4742251883Speter *cygwin* | *mingw* ) 4743251883Speter if test -f "$output_objdir/${outputname}.def" ; then 4744251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4745251883Speter finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4746251883Speter else 4747251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4748251883Speter finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4749251883Speter fi 4750251883Speter ;; 4751251883Speter * ) 4752251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4753251883Speter finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4754251883Speter ;; 4755251883Speter esac 4756251883Speter ;; 4757251883Speter *) 4758251883Speter $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4759251883Speter exit $EXIT_FAILURE 4760251883Speter ;; 4761251883Speter esac 4762251883Speter else 4763251883Speter # We keep going just in case the user didn't refer to 4764251883Speter # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4765251883Speter # really was required. 4766251883Speter 4767251883Speter # Nullify the symbol file. 4768251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4769251883Speter finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4770251883Speter fi 4771251883Speter 4772251883Speter if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4773251883Speter # Replace the output file specification. 4774251883Speter compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4775251883Speter link_command="$compile_command$compile_rpath" 4776251883Speter 4777251883Speter # We have no uninstalled library dependencies, so finalize right now. 4778251883Speter $show "$link_command" 4779251883Speter $run eval "$link_command" 4780251883Speter exit_status=$? 4781251883Speter 4782251883Speter # Delete the generated files. 4783251883Speter if test -n "$dlsyms"; then 4784251883Speter $show "$rm $output_objdir/${outputname}S.${objext}" 4785251883Speter $run $rm "$output_objdir/${outputname}S.${objext}" 4786251883Speter fi 4787251883Speter 4788251883Speter exit $exit_status 4789251883Speter fi 4790251883Speter 4791251883Speter if test -n "$shlibpath_var"; then 4792251883Speter # We should set the shlibpath_var 4793251883Speter rpath= 4794251883Speter for dir in $temp_rpath; do 4795251883Speter case $dir in 4796251883Speter [\\/]* | [A-Za-z]:[\\/]*) 4797251883Speter # Absolute path. 4798251883Speter rpath="$rpath$dir:" 4799251883Speter ;; 4800251883Speter *) 4801251883Speter # Relative path: add a thisdir entry. 4802251883Speter rpath="$rpath\$thisdir/$dir:" 4803251883Speter ;; 4804251883Speter esac 4805251883Speter done 4806251883Speter temp_rpath="$rpath" 4807251883Speter fi 4808251883Speter 4809251883Speter if test -n "$compile_shlibpath$finalize_shlibpath"; then 4810251883Speter compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4811251883Speter fi 4812251883Speter if test -n "$finalize_shlibpath"; then 4813251883Speter finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4814251883Speter fi 4815251883Speter 4816251883Speter compile_var= 4817251883Speter finalize_var= 4818251883Speter if test -n "$runpath_var"; then 4819251883Speter if test -n "$perm_rpath"; then 4820251883Speter # We should set the runpath_var. 4821251883Speter rpath= 4822251883Speter for dir in $perm_rpath; do 4823251883Speter rpath="$rpath$dir:" 4824251883Speter done 4825251883Speter compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4826251883Speter fi 4827251883Speter if test -n "$finalize_perm_rpath"; then 4828251883Speter # We should set the runpath_var. 4829251883Speter rpath= 4830251883Speter for dir in $finalize_perm_rpath; do 4831251883Speter rpath="$rpath$dir:" 4832251883Speter done 4833251883Speter finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4834251883Speter fi 4835251883Speter fi 4836251883Speter 4837251883Speter if test "$no_install" = yes; then 4838251883Speter # We don't need to create a wrapper script. 4839251883Speter link_command="$compile_var$compile_command$compile_rpath" 4840251883Speter # Replace the output file specification. 4841251883Speter link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4842251883Speter # Delete the old output file. 4843251883Speter $run $rm $output 4844251883Speter # Link the executable and exit 4845251883Speter $show "$link_command" 4846251883Speter $run eval "$link_command" || exit $? 4847251883Speter exit $EXIT_SUCCESS 4848251883Speter fi 4849251883Speter 4850251883Speter if test "$hardcode_action" = relink; then 4851251883Speter # Fast installation is not supported 4852251883Speter link_command="$compile_var$compile_command$compile_rpath" 4853251883Speter relink_command="$finalize_var$finalize_command$finalize_rpath" 4854251883Speter 4855251883Speter $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4856251883Speter $echo "$modename: \`$output' will be relinked during installation" 1>&2 4857251883Speter else 4858251883Speter if test "$fast_install" != no; then 4859251883Speter link_command="$finalize_var$compile_command$finalize_rpath" 4860251883Speter if test "$fast_install" = yes; then 4861251883Speter relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4862251883Speter else 4863251883Speter # fast_install is set to needless 4864251883Speter relink_command= 4865251883Speter fi 4866251883Speter else 4867251883Speter link_command="$compile_var$compile_command$compile_rpath" 4868251883Speter relink_command="$finalize_var$finalize_command$finalize_rpath" 4869251883Speter fi 4870251883Speter fi 4871251883Speter 4872251883Speter # Replace the output file specification. 4873251883Speter link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4874251883Speter 4875251883Speter # Delete the old output files. 4876251883Speter $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4877251883Speter 4878251883Speter $show "$link_command" 4879251883Speter $run eval "$link_command" || exit $? 4880251883Speter 4881251883Speter # Now create the wrapper script. 4882251883Speter $show "creating $output" 4883251883Speter 4884251883Speter # Quote the relink command for shipping. 4885251883Speter if test -n "$relink_command"; then 4886251883Speter # Preserve any variables that may affect compiler behavior 4887251883Speter for var in $variables_saved_for_relink; do 4888251883Speter if eval test -z \"\${$var+set}\"; then 4889251883Speter relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4890251883Speter elif eval var_value=\$$var; test -z "$var_value"; then 4891251883Speter relink_command="$var=; export $var; $relink_command" 4892251883Speter else 4893251883Speter var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4894251883Speter relink_command="$var=\"$var_value\"; export $var; $relink_command" 4895251883Speter fi 4896251883Speter done 4897251883Speter relink_command="(cd `pwd`; $relink_command)" 4898251883Speter relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4899251883Speter fi 4900251883Speter 4901251883Speter # Quote $echo for shipping. 4902251883Speter if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4903251883Speter case $progpath in 4904251883Speter [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4905251883Speter *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4906251883Speter esac 4907251883Speter qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4908251883Speter else 4909251883Speter qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4910251883Speter fi 4911251883Speter 4912251883Speter # Only actually do things if our run command is non-null. 4913251883Speter if test -z "$run"; then 4914251883Speter # win32 will think the script is a binary if it has 4915251883Speter # a .exe suffix, so we strip it off here. 4916251883Speter case $output in 4917251883Speter *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4918251883Speter esac 4919251883Speter # test for cygwin because mv fails w/o .exe extensions 4920251883Speter case $host in 4921251883Speter *cygwin*) 4922251883Speter exeext=.exe 4923251883Speter outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4924251883Speter *) exeext= ;; 4925251883Speter esac 4926251883Speter case $host in 4927251883Speter *cygwin* | *mingw* ) 4928251883Speter output_name=`basename $output` 4929251883Speter output_path=`dirname $output` 4930251883Speter cwrappersource="$output_path/$objdir/lt-$output_name.c" 4931251883Speter cwrapper="$output_path/$output_name.exe" 4932251883Speter $rm $cwrappersource $cwrapper 4933251883Speter trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4934251883Speter 4935251883Speter cat > $cwrappersource <<EOF 4936251883Speter 4937251883Speter/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4938251883Speter Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4939251883Speter 4940251883Speter The $output program cannot be directly executed until all the libtool 4941251883Speter libraries that it depends on are installed. 4942251883Speter 4943251883Speter This wrapper executable should never be moved out of the build directory. 4944251883Speter If it is, it will not operate correctly. 4945251883Speter 4946251883Speter Currently, it simply execs the wrapper *script* "/bin/sh $output", 4947251883Speter but could eventually absorb all of the scripts functionality and 4948251883Speter exec $objdir/$outputname directly. 4949251883Speter*/ 4950251883SpeterEOF 4951251883Speter cat >> $cwrappersource<<"EOF" 4952251883Speter#include <stdio.h> 4953251883Speter#include <stdlib.h> 4954251883Speter#include <unistd.h> 4955251883Speter#include <malloc.h> 4956251883Speter#include <stdarg.h> 4957251883Speter#include <assert.h> 4958251883Speter#include <string.h> 4959251883Speter#include <ctype.h> 4960251883Speter#include <sys/stat.h> 4961251883Speter 4962251883Speter#if defined(PATH_MAX) 4963251883Speter# define LT_PATHMAX PATH_MAX 4964251883Speter#elif defined(MAXPATHLEN) 4965251883Speter# define LT_PATHMAX MAXPATHLEN 4966251883Speter#else 4967251883Speter# define LT_PATHMAX 1024 4968251883Speter#endif 4969251883Speter 4970251883Speter#ifndef DIR_SEPARATOR 4971251883Speter# define DIR_SEPARATOR '/' 4972251883Speter# define PATH_SEPARATOR ':' 4973251883Speter#endif 4974251883Speter 4975251883Speter#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4976251883Speter defined (__OS2__) 4977251883Speter# define HAVE_DOS_BASED_FILE_SYSTEM 4978251883Speter# ifndef DIR_SEPARATOR_2 4979251883Speter# define DIR_SEPARATOR_2 '\\' 4980251883Speter# endif 4981251883Speter# ifndef PATH_SEPARATOR_2 4982251883Speter# define PATH_SEPARATOR_2 ';' 4983251883Speter# endif 4984251883Speter#endif 4985251883Speter 4986251883Speter#ifndef DIR_SEPARATOR_2 4987251883Speter# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4988251883Speter#else /* DIR_SEPARATOR_2 */ 4989251883Speter# define IS_DIR_SEPARATOR(ch) \ 4990251883Speter (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4991251883Speter#endif /* DIR_SEPARATOR_2 */ 4992251883Speter 4993251883Speter#ifndef PATH_SEPARATOR_2 4994251883Speter# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4995251883Speter#else /* PATH_SEPARATOR_2 */ 4996251883Speter# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4997251883Speter#endif /* PATH_SEPARATOR_2 */ 4998251883Speter 4999251883Speter#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5000251883Speter#define XFREE(stale) do { \ 5001251883Speter if (stale) { free ((void *) stale); stale = 0; } \ 5002251883Speter} while (0) 5003251883Speter 5004251883Speter/* -DDEBUG is fairly common in CFLAGS. */ 5005251883Speter#undef DEBUG 5006251883Speter#if defined DEBUGWRAPPER 5007251883Speter# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5008251883Speter#else 5009251883Speter# define DEBUG(format, ...) 5010251883Speter#endif 5011251883Speter 5012251883Speterconst char *program_name = NULL; 5013251883Speter 5014251883Spetervoid * xmalloc (size_t num); 5015251883Speterchar * xstrdup (const char *string); 5016251883Speterconst char * base_name (const char *name); 5017251883Speterchar * find_executable(const char *wrapper); 5018251883Speterint check_executable(const char *path); 5019251883Speterchar * strendzap(char *str, const char *pat); 5020251883Spetervoid lt_fatal (const char *message, ...); 5021251883Speter 5022251883Speterint 5023251883Spetermain (int argc, char *argv[]) 5024251883Speter{ 5025251883Speter char **newargz; 5026251883Speter int i; 5027251883Speter 5028251883Speter program_name = (char *) xstrdup (base_name (argv[0])); 5029251883Speter DEBUG("(main) argv[0] : %s\n",argv[0]); 5030251883Speter DEBUG("(main) program_name : %s\n",program_name); 5031251883Speter newargz = XMALLOC(char *, argc+2); 5032251883SpeterEOF 5033251883Speter 5034251883Speter cat >> $cwrappersource <<EOF 5035251883Speter newargz[0] = (char *) xstrdup("$SHELL"); 5036251883SpeterEOF 5037251883Speter 5038251883Speter cat >> $cwrappersource <<"EOF" 5039251883Speter newargz[1] = find_executable(argv[0]); 5040251883Speter if (newargz[1] == NULL) 5041251883Speter lt_fatal("Couldn't find %s", argv[0]); 5042251883Speter DEBUG("(main) found exe at : %s\n",newargz[1]); 5043251883Speter /* we know the script has the same name, without the .exe */ 5044251883Speter /* so make sure newargz[1] doesn't end in .exe */ 5045251883Speter strendzap(newargz[1],".exe"); 5046251883Speter for (i = 1; i < argc; i++) 5047251883Speter newargz[i+1] = xstrdup(argv[i]); 5048251883Speter newargz[argc+1] = NULL; 5049251883Speter 5050251883Speter for (i=0; i<argc+1; i++) 5051251883Speter { 5052251883Speter DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5053251883Speter ; 5054251883Speter } 5055251883Speter 5056251883SpeterEOF 5057251883Speter 5058251883Speter case $host_os in 5059251883Speter mingw*) 5060251883Speter cat >> $cwrappersource <<EOF 5061251883Speter execv("$SHELL",(char const **)newargz); 5062251883SpeterEOF 5063251883Speter ;; 5064251883Speter *) 5065251883Speter cat >> $cwrappersource <<EOF 5066251883Speter execv("$SHELL",newargz); 5067251883SpeterEOF 5068251883Speter ;; 5069251883Speter esac 5070251883Speter 5071251883Speter cat >> $cwrappersource <<"EOF" 5072251883Speter return 127; 5073251883Speter} 5074251883Speter 5075251883Spetervoid * 5076251883Speterxmalloc (size_t num) 5077251883Speter{ 5078251883Speter void * p = (void *) malloc (num); 5079251883Speter if (!p) 5080251883Speter lt_fatal ("Memory exhausted"); 5081251883Speter 5082251883Speter return p; 5083251883Speter} 5084251883Speter 5085251883Speterchar * 5086251883Speterxstrdup (const char *string) 5087251883Speter{ 5088251883Speter return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5089251883Speter; 5090251883Speter} 5091251883Speter 5092251883Speterconst char * 5093251883Speterbase_name (const char *name) 5094251883Speter{ 5095251883Speter const char *base; 5096251883Speter 5097251883Speter#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5098251883Speter /* Skip over the disk name in MSDOS pathnames. */ 5099251883Speter if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5100251883Speter name += 2; 5101251883Speter#endif 5102251883Speter 5103251883Speter for (base = name; *name; name++) 5104251883Speter if (IS_DIR_SEPARATOR (*name)) 5105251883Speter base = name + 1; 5106251883Speter return base; 5107251883Speter} 5108251883Speter 5109251883Speterint 5110251883Spetercheck_executable(const char * path) 5111251883Speter{ 5112251883Speter struct stat st; 5113251883Speter 5114251883Speter DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5115251883Speter if ((!path) || (!*path)) 5116251883Speter return 0; 5117251883Speter 5118251883Speter if ((stat (path, &st) >= 0) && 5119251883Speter ( 5120251883Speter /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5121251883Speter#if defined (S_IXOTH) 5122251883Speter ((st.st_mode & S_IXOTH) == S_IXOTH) || 5123251883Speter#endif 5124251883Speter#if defined (S_IXGRP) 5125251883Speter ((st.st_mode & S_IXGRP) == S_IXGRP) || 5126251883Speter#endif 5127251883Speter ((st.st_mode & S_IXUSR) == S_IXUSR)) 5128251883Speter ) 5129251883Speter return 1; 5130251883Speter else 5131251883Speter return 0; 5132251883Speter} 5133251883Speter 5134251883Speter/* Searches for the full path of the wrapper. Returns 5135251883Speter newly allocated full path name if found, NULL otherwise */ 5136251883Speterchar * 5137251883Speterfind_executable (const char* wrapper) 5138251883Speter{ 5139251883Speter int has_slash = 0; 5140251883Speter const char* p; 5141251883Speter const char* p_next; 5142251883Speter /* static buffer for getcwd */ 5143251883Speter char tmp[LT_PATHMAX + 1]; 5144251883Speter int tmp_len; 5145251883Speter char* concat_name; 5146251883Speter 5147251883Speter DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5148251883Speter 5149251883Speter if ((wrapper == NULL) || (*wrapper == '\0')) 5150251883Speter return NULL; 5151251883Speter 5152251883Speter /* Absolute path? */ 5153251883Speter#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5154251883Speter if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5155251883Speter { 5156251883Speter concat_name = xstrdup (wrapper); 5157251883Speter if (check_executable(concat_name)) 5158251883Speter return concat_name; 5159251883Speter XFREE(concat_name); 5160251883Speter } 5161251883Speter else 5162251883Speter { 5163251883Speter#endif 5164251883Speter if (IS_DIR_SEPARATOR (wrapper[0])) 5165251883Speter { 5166251883Speter concat_name = xstrdup (wrapper); 5167251883Speter if (check_executable(concat_name)) 5168251883Speter return concat_name; 5169251883Speter XFREE(concat_name); 5170251883Speter } 5171251883Speter#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5172251883Speter } 5173251883Speter#endif 5174251883Speter 5175251883Speter for (p = wrapper; *p; p++) 5176251883Speter if (*p == '/') 5177251883Speter { 5178251883Speter has_slash = 1; 5179251883Speter break; 5180251883Speter } 5181251883Speter if (!has_slash) 5182251883Speter { 5183251883Speter /* no slashes; search PATH */ 5184251883Speter const char* path = getenv ("PATH"); 5185251883Speter if (path != NULL) 5186251883Speter { 5187251883Speter for (p = path; *p; p = p_next) 5188251883Speter { 5189251883Speter const char* q; 5190251883Speter size_t p_len; 5191251883Speter for (q = p; *q; q++) 5192251883Speter if (IS_PATH_SEPARATOR(*q)) 5193251883Speter break; 5194251883Speter p_len = q - p; 5195251883Speter p_next = (*q == '\0' ? q : q + 1); 5196251883Speter if (p_len == 0) 5197251883Speter { 5198251883Speter /* empty path: current directory */ 5199251883Speter if (getcwd (tmp, LT_PATHMAX) == NULL) 5200251883Speter lt_fatal ("getcwd failed"); 5201251883Speter tmp_len = strlen(tmp); 5202251883Speter concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5203251883Speter memcpy (concat_name, tmp, tmp_len); 5204251883Speter concat_name[tmp_len] = '/'; 5205251883Speter strcpy (concat_name + tmp_len + 1, wrapper); 5206251883Speter } 5207251883Speter else 5208251883Speter { 5209251883Speter concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5210251883Speter memcpy (concat_name, p, p_len); 5211251883Speter concat_name[p_len] = '/'; 5212251883Speter strcpy (concat_name + p_len + 1, wrapper); 5213251883Speter } 5214251883Speter if (check_executable(concat_name)) 5215251883Speter return concat_name; 5216251883Speter XFREE(concat_name); 5217251883Speter } 5218251883Speter } 5219251883Speter /* not found in PATH; assume curdir */ 5220251883Speter } 5221251883Speter /* Relative path | not found in path: prepend cwd */ 5222251883Speter if (getcwd (tmp, LT_PATHMAX) == NULL) 5223251883Speter lt_fatal ("getcwd failed"); 5224251883Speter tmp_len = strlen(tmp); 5225251883Speter concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5226251883Speter memcpy (concat_name, tmp, tmp_len); 5227251883Speter concat_name[tmp_len] = '/'; 5228251883Speter strcpy (concat_name + tmp_len + 1, wrapper); 5229251883Speter 5230251883Speter if (check_executable(concat_name)) 5231251883Speter return concat_name; 5232251883Speter XFREE(concat_name); 5233251883Speter return NULL; 5234251883Speter} 5235251883Speter 5236251883Speterchar * 5237251883Speterstrendzap(char *str, const char *pat) 5238251883Speter{ 5239251883Speter size_t len, patlen; 5240251883Speter 5241251883Speter assert(str != NULL); 5242251883Speter assert(pat != NULL); 5243251883Speter 5244251883Speter len = strlen(str); 5245251883Speter patlen = strlen(pat); 5246251883Speter 5247251883Speter if (patlen <= len) 5248251883Speter { 5249251883Speter str += len - patlen; 5250251883Speter if (strcmp(str, pat) == 0) 5251251883Speter *str = '\0'; 5252251883Speter } 5253251883Speter return str; 5254251883Speter} 5255251883Speter 5256251883Speterstatic void 5257251883Speterlt_error_core (int exit_status, const char * mode, 5258251883Speter const char * message, va_list ap) 5259251883Speter{ 5260251883Speter fprintf (stderr, "%s: %s: ", program_name, mode); 5261251883Speter vfprintf (stderr, message, ap); 5262251883Speter fprintf (stderr, ".\n"); 5263251883Speter 5264251883Speter if (exit_status >= 0) 5265251883Speter exit (exit_status); 5266251883Speter} 5267251883Speter 5268251883Spetervoid 5269251883Speterlt_fatal (const char *message, ...) 5270251883Speter{ 5271251883Speter va_list ap; 5272251883Speter va_start (ap, message); 5273251883Speter lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5274251883Speter va_end (ap); 5275251883Speter} 5276251883SpeterEOF 5277251883Speter # we should really use a build-platform specific compiler 5278251883Speter # here, but OTOH, the wrappers (shell script and this C one) 5279251883Speter # are only useful if you want to execute the "real" binary. 5280251883Speter # Since the "real" binary is built for $host, then this 5281251883Speter # wrapper might as well be built for $host, too. 5282251883Speter $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5283251883Speter ;; 5284251883Speter esac 5285251883Speter $rm $output 5286251883Speter trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5287251883Speter 5288251883Speter $echo > $output "\ 5289251883Speter#! $SHELL 5290251883Speter 5291251883Speter# $output - temporary wrapper script for $objdir/$outputname 5292251883Speter# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5293251883Speter# 5294251883Speter# The $output program cannot be directly executed until all the libtool 5295251883Speter# libraries that it depends on are installed. 5296251883Speter# 5297251883Speter# This wrapper script should never be moved out of the build directory. 5298251883Speter# If it is, it will not operate correctly. 5299251883Speter 5300251883Speter# Sed substitution that helps us do robust quoting. It backslashifies 5301251883Speter# metacharacters that are still active within double-quoted strings. 5302251883SpeterXsed='${SED} -e 1s/^X//' 5303251883Spetersed_quote_subst='$sed_quote_subst' 5304251883Speter 5305251883Speter# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5306251883Speterif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5307251883Speter emulate sh 5308251883Speter NULLCMD=: 5309251883Speter # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5310251883Speter # is contrary to our usage. Disable this feature. 5311251883Speter alias -g '\${1+\"\$@\"}'='\"\$@\"' 5312251883Speter setopt NO_GLOB_SUBST 5313251883Speterelse 5314251883Speter case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5315251883Speterfi 5316251883SpeterBIN_SH=xpg4; export BIN_SH # for Tru64 5317251883SpeterDUALCASE=1; export DUALCASE # for MKS sh 5318251883Speter 5319251883Speter# The HP-UX ksh and POSIX shell print the target directory to stdout 5320251883Speter# if CDPATH is set. 5321251883Speter(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5322251883Speter 5323251883Speterrelink_command=\"$relink_command\" 5324251883Speter 5325251883Speter# This environment variable determines our operation mode. 5326251883Speterif test \"\$libtool_install_magic\" = \"$magic\"; then 5327251883Speter # install mode needs the following variable: 5328251883Speter notinst_deplibs='$notinst_deplibs' 5329251883Speterelse 5330251883Speter # When we are sourced in execute mode, \$file and \$echo are already set. 5331251883Speter if test \"\$libtool_execute_magic\" != \"$magic\"; then 5332251883Speter echo=\"$qecho\" 5333251883Speter file=\"\$0\" 5334251883Speter # Make sure echo works. 5335251883Speter if test \"X\$1\" = X--no-reexec; then 5336251883Speter # Discard the --no-reexec flag, and continue. 5337251883Speter shift 5338251883Speter elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5339251883Speter # Yippee, \$echo works! 5340251883Speter : 5341251883Speter else 5342251883Speter # Restart under the correct shell, and then maybe \$echo will work. 5343251883Speter exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5344251883Speter fi 5345251883Speter fi\ 5346251883Speter" 5347251883Speter $echo >> $output "\ 5348251883Speter 5349251883Speter # Find the directory that this script lives in. 5350251883Speter thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5351251883Speter test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5352251883Speter 5353251883Speter # Follow symbolic links until we get to the real thisdir. 5354251883Speter file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5355251883Speter while test -n \"\$file\"; do 5356251883Speter destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5357251883Speter 5358251883Speter # If there was a directory component, then change thisdir. 5359251883Speter if test \"x\$destdir\" != \"x\$file\"; then 5360251883Speter case \"\$destdir\" in 5361251883Speter [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5362251883Speter *) thisdir=\"\$thisdir/\$destdir\" ;; 5363251883Speter esac 5364251883Speter fi 5365251883Speter 5366251883Speter file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5367251883Speter file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5368251883Speter done 5369251883Speter 5370251883Speter # Try to get the absolute directory name. 5371251883Speter absdir=\`cd \"\$thisdir\" && pwd\` 5372251883Speter test -n \"\$absdir\" && thisdir=\"\$absdir\" 5373251883Speter" 5374251883Speter 5375251883Speter if test "$fast_install" = yes; then 5376251883Speter $echo >> $output "\ 5377251883Speter program=lt-'$outputname'$exeext 5378251883Speter progdir=\"\$thisdir/$objdir\" 5379251883Speter 5380251883Speter if test ! -f \"\$progdir/\$program\" || \\ 5381251883Speter { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5382251883Speter test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5383251883Speter 5384251883Speter file=\"\$\$-\$program\" 5385251883Speter 5386251883Speter if test ! -d \"\$progdir\"; then 5387251883Speter $mkdir \"\$progdir\" 5388251883Speter else 5389251883Speter $rm \"\$progdir/\$file\" 5390251883Speter fi" 5391251883Speter 5392251883Speter $echo >> $output "\ 5393251883Speter 5394251883Speter # relink executable if necessary 5395251883Speter if test -n \"\$relink_command\"; then 5396251883Speter if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5397251883Speter else 5398251883Speter $echo \"\$relink_command_output\" >&2 5399251883Speter $rm \"\$progdir/\$file\" 5400251883Speter exit $EXIT_FAILURE 5401251883Speter fi 5402251883Speter fi 5403251883Speter 5404251883Speter $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5405251883Speter { $rm \"\$progdir/\$program\"; 5406251883Speter $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5407251883Speter $rm \"\$progdir/\$file\" 5408251883Speter fi" 5409251883Speter else 5410251883Speter $echo >> $output "\ 5411251883Speter program='$outputname' 5412251883Speter progdir=\"\$thisdir/$objdir\" 5413251883Speter" 5414251883Speter fi 5415251883Speter 5416251883Speter $echo >> $output "\ 5417251883Speter 5418251883Speter if test -f \"\$progdir/\$program\"; then" 5419251883Speter 5420251883Speter # Export our shlibpath_var if we have one. 5421251883Speter if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5422251883Speter $echo >> $output "\ 5423251883Speter # Add our own library path to $shlibpath_var 5424251883Speter $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5425251883Speter 5426251883Speter # Some systems cannot cope with colon-terminated $shlibpath_var 5427251883Speter # The second colon is a workaround for a bug in BeOS R4 sed 5428251883Speter $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5429251883Speter 5430251883Speter export $shlibpath_var 5431251883Speter" 5432251883Speter fi 5433251883Speter 5434251883Speter # fixup the dll searchpath if we need to. 5435251883Speter if test -n "$dllsearchpath"; then 5436251883Speter $echo >> $output "\ 5437251883Speter # Add the dll search path components to the executable PATH 5438251883Speter PATH=$dllsearchpath:\$PATH 5439251883Speter" 5440251883Speter fi 5441251883Speter 5442251883Speter $echo >> $output "\ 5443251883Speter if test \"\$libtool_execute_magic\" != \"$magic\"; then 5444251883Speter # Run the actual program with our arguments. 5445251883Speter" 5446251883Speter case $host in 5447251883Speter # Backslashes separate directories on plain windows 5448251883Speter *-*-mingw | *-*-os2*) 5449251883Speter $echo >> $output "\ 5450251883Speter exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5451251883Speter" 5452251883Speter ;; 5453251883Speter 5454251883Speter *) 5455251883Speter $echo >> $output "\ 5456251883Speter exec \"\$progdir/\$program\" \${1+\"\$@\"} 5457251883Speter" 5458251883Speter ;; 5459251883Speter esac 5460251883Speter $echo >> $output "\ 5461251883Speter \$echo \"\$0: cannot exec \$program \$*\" 5462251883Speter exit $EXIT_FAILURE 5463251883Speter fi 5464251883Speter else 5465251883Speter # The program doesn't exist. 5466251883Speter \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5467251883Speter \$echo \"This script is just a wrapper for \$program.\" 1>&2 5468251883Speter $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5469251883Speter exit $EXIT_FAILURE 5470251883Speter fi 5471251883Speterfi\ 5472251883Speter" 5473251883Speter chmod +x $output 5474251883Speter fi 5475251883Speter exit $EXIT_SUCCESS 5476251883Speter ;; 5477251883Speter esac 5478251883Speter 5479251883Speter # See if we need to build an old-fashioned archive. 5480251883Speter for oldlib in $oldlibs; do 5481251883Speter 5482251883Speter if test "$build_libtool_libs" = convenience; then 5483251883Speter oldobjs="$libobjs_save" 5484251883Speter addlibs="$convenience" 5485251883Speter build_libtool_libs=no 5486251883Speter else 5487251883Speter if test "$build_libtool_libs" = module; then 5488251883Speter oldobjs="$libobjs_save" 5489251883Speter build_libtool_libs=no 5490251883Speter else 5491251883Speter oldobjs="$old_deplibs $non_pic_objects" 5492251883Speter fi 5493251883Speter addlibs="$old_convenience" 5494251883Speter fi 5495251883Speter 5496251883Speter if test -n "$addlibs"; then 5497251883Speter gentop="$output_objdir/${outputname}x" 5498251883Speter generated="$generated $gentop" 5499251883Speter 5500251883Speter func_extract_archives $gentop $addlibs 5501251883Speter oldobjs="$oldobjs $func_extract_archives_result" 5502251883Speter fi 5503251883Speter 5504251883Speter # Do each command in the archive commands. 5505251883Speter if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5506251883Speter cmds=$old_archive_from_new_cmds 5507251883Speter else 5508251883Speter # POSIX demands no paths to be encoded in archives. We have 5509251883Speter # to avoid creating archives with duplicate basenames if we 5510251883Speter # might have to extract them afterwards, e.g., when creating a 5511251883Speter # static archive out of a convenience library, or when linking 5512251883Speter # the entirety of a libtool archive into another (currently 5513251883Speter # not supported by libtool). 5514251883Speter if (for obj in $oldobjs 5515251883Speter do 5516251883Speter $echo "X$obj" | $Xsed -e 's%^.*/%%' 5517251883Speter done | sort | sort -uc >/dev/null 2>&1); then 5518251883Speter : 5519251883Speter else 5520251883Speter $echo "copying selected object files to avoid basename conflicts..." 5521251883Speter 5522251883Speter if test -z "$gentop"; then 5523251883Speter gentop="$output_objdir/${outputname}x" 5524251883Speter generated="$generated $gentop" 5525251883Speter 5526251883Speter $show "${rm}r $gentop" 5527251883Speter $run ${rm}r "$gentop" 5528251883Speter $show "$mkdir $gentop" 5529251883Speter $run $mkdir "$gentop" 5530251883Speter exit_status=$? 5531251883Speter if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5532251883Speter exit $exit_status 5533251883Speter fi 5534251883Speter fi 5535251883Speter 5536251883Speter save_oldobjs=$oldobjs 5537251883Speter oldobjs= 5538251883Speter counter=1 5539251883Speter for obj in $save_oldobjs 5540251883Speter do 5541251883Speter objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5542251883Speter case " $oldobjs " in 5543251883Speter " ") oldobjs=$obj ;; 5544251883Speter *[\ /]"$objbase "*) 5545251883Speter while :; do 5546251883Speter # Make sure we don't pick an alternate name that also 5547251883Speter # overlaps. 5548251883Speter newobj=lt$counter-$objbase 5549251883Speter counter=`expr $counter + 1` 5550251883Speter case " $oldobjs " in 5551251883Speter *[\ /]"$newobj "*) ;; 5552251883Speter *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5553251883Speter esac 5554251883Speter done 5555251883Speter $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5556251883Speter $run ln "$obj" "$gentop/$newobj" || 5557251883Speter $run cp "$obj" "$gentop/$newobj" 5558251883Speter oldobjs="$oldobjs $gentop/$newobj" 5559251883Speter ;; 5560251883Speter *) oldobjs="$oldobjs $obj" ;; 5561251883Speter esac 5562251883Speter done 5563251883Speter fi 5564251883Speter 5565251883Speter eval cmds=\"$old_archive_cmds\" 5566251883Speter 5567251883Speter if len=`expr "X$cmds" : ".*"` && 5568251883Speter test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5569251883Speter cmds=$old_archive_cmds 5570251883Speter else 5571251883Speter # the command line is too long to link in one step, link in parts 5572251883Speter $echo "using piecewise archive linking..." 5573251883Speter save_RANLIB=$RANLIB 5574251883Speter RANLIB=: 5575251883Speter objlist= 5576251883Speter concat_cmds= 5577251883Speter save_oldobjs=$oldobjs 5578251883Speter 5579251883Speter # Is there a better way of finding the last object in the list? 5580251883Speter for obj in $save_oldobjs 5581251883Speter do 5582251883Speter last_oldobj=$obj 5583251883Speter done 5584251883Speter for obj in $save_oldobjs 5585251883Speter do 5586251883Speter oldobjs="$objlist $obj" 5587251883Speter objlist="$objlist $obj" 5588251883Speter eval test_cmds=\"$old_archive_cmds\" 5589251883Speter if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5590251883Speter test "$len" -le "$max_cmd_len"; then 5591251883Speter : 5592251883Speter else 5593251883Speter # the above command should be used before it gets too long 5594251883Speter oldobjs=$objlist 5595251883Speter if test "$obj" = "$last_oldobj" ; then 5596251883Speter RANLIB=$save_RANLIB 5597251883Speter fi 5598251883Speter test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5599251883Speter eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5600251883Speter objlist= 5601251883Speter fi 5602251883Speter done 5603251883Speter RANLIB=$save_RANLIB 5604251883Speter oldobjs=$objlist 5605251883Speter if test "X$oldobjs" = "X" ; then 5606251883Speter eval cmds=\"\$concat_cmds\" 5607251883Speter else 5608251883Speter eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5609251883Speter fi 5610251883Speter fi 5611251883Speter fi 5612251883Speter save_ifs="$IFS"; IFS='~' 5613251883Speter for cmd in $cmds; do 5614251883Speter eval cmd=\"$cmd\" 5615251883Speter IFS="$save_ifs" 5616251883Speter $show "$cmd" 5617251883Speter $run eval "$cmd" || exit $? 5618251883Speter done 5619251883Speter IFS="$save_ifs" 5620251883Speter done 5621251883Speter 5622251883Speter if test -n "$generated"; then 5623251883Speter $show "${rm}r$generated" 5624251883Speter $run ${rm}r$generated 5625251883Speter fi 5626251883Speter 5627251883Speter # Now create the libtool archive. 5628251883Speter case $output in 5629251883Speter *.la) 5630251883Speter old_library= 5631251883Speter test "$build_old_libs" = yes && old_library="$libname.$libext" 5632251883Speter $show "creating $output" 5633251883Speter 5634251883Speter # Preserve any variables that may affect compiler behavior 5635251883Speter for var in $variables_saved_for_relink; do 5636251883Speter if eval test -z \"\${$var+set}\"; then 5637251883Speter relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5638251883Speter elif eval var_value=\$$var; test -z "$var_value"; then 5639251883Speter relink_command="$var=; export $var; $relink_command" 5640251883Speter else 5641251883Speter var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5642251883Speter relink_command="$var=\"$var_value\"; export $var; $relink_command" 5643251883Speter fi 5644251883Speter done 5645251883Speter # Quote the link command for shipping. 5646251883Speter relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5647251883Speter relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5648251883Speter if test "$hardcode_automatic" = yes ; then 5649251883Speter relink_command= 5650251883Speter fi 5651251883Speter 5652251883Speter 5653251883Speter # Only create the output if not a dry run. 5654251883Speter if test -z "$run"; then 5655251883Speter for installed in no yes; do 5656251883Speter if test "$installed" = yes; then 5657251883Speter if test -z "$install_libdir"; then 5658251883Speter break 5659251883Speter fi 5660251883Speter output="$output_objdir/$outputname"i 5661251883Speter # Replace all uninstalled libtool libraries with the installed ones 5662251883Speter newdependency_libs= 5663251883Speter for deplib in $dependency_libs; do 5664251883Speter case $deplib in 5665251883Speter *.la) 5666251883Speter name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5667251883Speter eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5668251883Speter if test -z "$libdir"; then 5669251883Speter $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5670251883Speter exit $EXIT_FAILURE 5671251883Speter fi 5672251883Speter newdependency_libs="$newdependency_libs $libdir/$name" 5673251883Speter ;; 5674251883Speter *) newdependency_libs="$newdependency_libs $deplib" ;; 5675251883Speter esac 5676251883Speter done 5677251883Speter dependency_libs="$newdependency_libs" 5678251883Speter newdlfiles= 5679251883Speter for lib in $dlfiles; do 5680251883Speter name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5681251883Speter eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5682251883Speter if test -z "$libdir"; then 5683251883Speter $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5684251883Speter exit $EXIT_FAILURE 5685251883Speter fi 5686251883Speter newdlfiles="$newdlfiles $libdir/$name" 5687251883Speter done 5688251883Speter dlfiles="$newdlfiles" 5689251883Speter newdlprefiles= 5690251883Speter for lib in $dlprefiles; do 5691251883Speter name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5692251883Speter eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5693251883Speter if test -z "$libdir"; then 5694251883Speter $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5695251883Speter exit $EXIT_FAILURE 5696251883Speter fi 5697251883Speter newdlprefiles="$newdlprefiles $libdir/$name" 5698251883Speter done 5699251883Speter dlprefiles="$newdlprefiles" 5700251883Speter else 5701251883Speter newdlfiles= 5702251883Speter for lib in $dlfiles; do 5703251883Speter case $lib in 5704251883Speter [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5705251883Speter *) abs=`pwd`"/$lib" ;; 5706251883Speter esac 5707251883Speter newdlfiles="$newdlfiles $abs" 5708251883Speter done 5709251883Speter dlfiles="$newdlfiles" 5710251883Speter newdlprefiles= 5711251883Speter for lib in $dlprefiles; do 5712251883Speter case $lib in 5713251883Speter [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5714251883Speter *) abs=`pwd`"/$lib" ;; 5715251883Speter esac 5716251883Speter newdlprefiles="$newdlprefiles $abs" 5717251883Speter done 5718251883Speter dlprefiles="$newdlprefiles" 5719251883Speter fi 5720251883Speter $rm $output 5721251883Speter # place dlname in correct position for cygwin 5722251883Speter tdlname=$dlname 5723251883Speter case $host,$output,$installed,$module,$dlname in 5724251883Speter *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5725251883Speter esac 5726251883Speter $echo > $output "\ 5727251883Speter# $outputname - a libtool library file 5728251883Speter# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5729251883Speter# 5730251883Speter# Please DO NOT delete this file! 5731251883Speter# It is necessary for linking the library. 5732251883Speter 5733251883Speter# The name that we can dlopen(3). 5734251883Speterdlname='$tdlname' 5735251883Speter 5736251883Speter# Names of this library. 5737251883Speterlibrary_names='$library_names' 5738251883Speter 5739251883Speter# The name of the static archive. 5740251883Speterold_library='$old_library' 5741251883Speter 5742251883Speter# Libraries that this one depends upon. 5743251883Speterdependency_libs='$dependency_libs' 5744251883Speter 5745251883Speter# Version information for $libname. 5746251883Spetercurrent=$current 5747251883Speterage=$age 5748251883Speterrevision=$revision 5749251883Speter 5750251883Speter# Is this an already installed library? 5751251883Speterinstalled=$installed 5752251883Speter 5753251883Speter# Should we warn about portability when linking against -modules? 5754251883Spetershouldnotlink=$module 5755251883Speter 5756251883Speter# Files to dlopen/dlpreopen 5757251883Speterdlopen='$dlfiles' 5758251883Speterdlpreopen='$dlprefiles' 5759251883Speter 5760251883Speter# Directory that this library needs to be installed in: 5761251883Speterlibdir='$install_libdir'" 5762251883Speter if test "$installed" = no && test "$need_relink" = yes; then 5763251883Speter $echo >> $output "\ 5764251883Speterrelink_command=\"$relink_command\"" 5765251883Speter fi 5766251883Speter done 5767251883Speter fi 5768251883Speter 5769251883Speter # Do a symbolic link so that the libtool archive can be found in 5770251883Speter # LD_LIBRARY_PATH before the program is installed. 5771251883Speter $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5772251883Speter $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5773251883Speter ;; 5774251883Speter esac 5775251883Speter exit $EXIT_SUCCESS 5776251883Speter ;; 5777251883Speter 5778251883Speter # libtool install mode 5779251883Speter install) 5780251883Speter modename="$modename: install" 5781251883Speter 5782251883Speter # There may be an optional sh(1) argument at the beginning of 5783251883Speter # install_prog (especially on Windows NT). 5784251883Speter if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5785251883Speter # Allow the use of GNU shtool's install command. 5786251883Speter $echo "X$nonopt" | grep shtool > /dev/null; then 5787251883Speter # Aesthetically quote it. 5788251883Speter arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5789251883Speter case $arg in 5790251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5791251883Speter arg="\"$arg\"" 5792251883Speter ;; 5793251883Speter esac 5794251883Speter install_prog="$arg " 5795251883Speter arg="$1" 5796251883Speter shift 5797251883Speter else 5798251883Speter install_prog= 5799251883Speter arg=$nonopt 5800251883Speter fi 5801251883Speter 5802251883Speter # The real first argument should be the name of the installation program. 5803251883Speter # Aesthetically quote it. 5804251883Speter arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5805251883Speter case $arg in 5806251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5807251883Speter arg="\"$arg\"" 5808251883Speter ;; 5809251883Speter esac 5810251883Speter install_prog="$install_prog$arg" 5811251883Speter 5812251883Speter # We need to accept at least all the BSD install flags. 5813251883Speter dest= 5814251883Speter files= 5815251883Speter opts= 5816251883Speter prev= 5817251883Speter install_type= 5818251883Speter isdir=no 5819251883Speter stripme= 5820251883Speter for arg 5821251883Speter do 5822251883Speter if test -n "$dest"; then 5823251883Speter files="$files $dest" 5824251883Speter dest=$arg 5825251883Speter continue 5826251883Speter fi 5827251883Speter 5828251883Speter case $arg in 5829251883Speter -d) isdir=yes ;; 5830251883Speter -f) 5831251883Speter case " $install_prog " in 5832251883Speter *[\\\ /]cp\ *) ;; 5833251883Speter *) prev=$arg ;; 5834251883Speter esac 5835251883Speter ;; 5836251883Speter -g | -m | -o) prev=$arg ;; 5837251883Speter -s) 5838251883Speter stripme=" -s" 5839251883Speter continue 5840251883Speter ;; 5841251883Speter -*) 5842251883Speter ;; 5843251883Speter *) 5844251883Speter # If the previous option needed an argument, then skip it. 5845251883Speter if test -n "$prev"; then 5846251883Speter prev= 5847251883Speter else 5848251883Speter dest=$arg 5849251883Speter continue 5850251883Speter fi 5851251883Speter ;; 5852251883Speter esac 5853251883Speter 5854251883Speter # Aesthetically quote the argument. 5855251883Speter arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5856251883Speter case $arg in 5857251883Speter *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5858251883Speter arg="\"$arg\"" 5859251883Speter ;; 5860251883Speter esac 5861251883Speter install_prog="$install_prog $arg" 5862251883Speter done 5863251883Speter 5864251883Speter if test -z "$install_prog"; then 5865251883Speter $echo "$modename: you must specify an install program" 1>&2 5866251883Speter $echo "$help" 1>&2 5867251883Speter exit $EXIT_FAILURE 5868251883Speter fi 5869251883Speter 5870251883Speter if test -n "$prev"; then 5871251883Speter $echo "$modename: the \`$prev' option requires an argument" 1>&2 5872251883Speter $echo "$help" 1>&2 5873251883Speter exit $EXIT_FAILURE 5874251883Speter fi 5875251883Speter 5876251883Speter if test -z "$files"; then 5877251883Speter if test -z "$dest"; then 5878251883Speter $echo "$modename: no file or destination specified" 1>&2 5879251883Speter else 5880251883Speter $echo "$modename: you must specify a destination" 1>&2 5881251883Speter fi 5882251883Speter $echo "$help" 1>&2 5883251883Speter exit $EXIT_FAILURE 5884251883Speter fi 5885251883Speter 5886251883Speter # Strip any trailing slash from the destination. 5887251883Speter dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5888251883Speter 5889251883Speter # Check to see that the destination is a directory. 5890251883Speter test -d "$dest" && isdir=yes 5891251883Speter if test "$isdir" = yes; then 5892251883Speter destdir="$dest" 5893251883Speter destname= 5894251883Speter else 5895251883Speter destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5896251883Speter test "X$destdir" = "X$dest" && destdir=. 5897251883Speter destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5898251883Speter 5899251883Speter # Not a directory, so check to see that there is only one file specified. 5900251883Speter set dummy $files 5901251883Speter if test "$#" -gt 2; then 5902251883Speter $echo "$modename: \`$dest' is not a directory" 1>&2 5903251883Speter $echo "$help" 1>&2 5904251883Speter exit $EXIT_FAILURE 5905251883Speter fi 5906251883Speter fi 5907251883Speter case $destdir in 5908251883Speter [\\/]* | [A-Za-z]:[\\/]*) ;; 5909251883Speter *) 5910251883Speter for file in $files; do 5911251883Speter case $file in 5912251883Speter *.lo) ;; 5913251883Speter *) 5914251883Speter $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5915251883Speter $echo "$help" 1>&2 5916251883Speter exit $EXIT_FAILURE 5917251883Speter ;; 5918251883Speter esac 5919251883Speter done 5920251883Speter ;; 5921251883Speter esac 5922251883Speter 5923251883Speter # This variable tells wrapper scripts just to set variables rather 5924251883Speter # than running their programs. 5925251883Speter libtool_install_magic="$magic" 5926251883Speter 5927251883Speter staticlibs= 5928251883Speter future_libdirs= 5929251883Speter current_libdirs= 5930251883Speter for file in $files; do 5931251883Speter 5932251883Speter # Do each installation. 5933251883Speter case $file in 5934251883Speter *.$libext) 5935251883Speter # Do the static libraries later. 5936251883Speter staticlibs="$staticlibs $file" 5937251883Speter ;; 5938251883Speter 5939251883Speter *.la) 5940251883Speter # Check to see that this really is a libtool archive. 5941251883Speter if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5942251883Speter else 5943251883Speter $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5944251883Speter $echo "$help" 1>&2 5945251883Speter exit $EXIT_FAILURE 5946251883Speter fi 5947251883Speter 5948251883Speter library_names= 5949251883Speter old_library= 5950251883Speter relink_command= 5951251883Speter # If there is no directory component, then add one. 5952251883Speter case $file in 5953251883Speter */* | *\\*) . $file ;; 5954251883Speter *) . ./$file ;; 5955251883Speter esac 5956251883Speter 5957251883Speter # Add the libdir to current_libdirs if it is the destination. 5958251883Speter if test "X$destdir" = "X$libdir"; then 5959251883Speter case "$current_libdirs " in 5960251883Speter *" $libdir "*) ;; 5961251883Speter *) current_libdirs="$current_libdirs $libdir" ;; 5962251883Speter esac 5963251883Speter else 5964251883Speter # Note the libdir as a future libdir. 5965251883Speter case "$future_libdirs " in 5966251883Speter *" $libdir "*) ;; 5967251883Speter *) future_libdirs="$future_libdirs $libdir" ;; 5968251883Speter esac 5969251883Speter fi 5970251883Speter 5971251883Speter dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5972251883Speter test "X$dir" = "X$file/" && dir= 5973251883Speter dir="$dir$objdir" 5974251883Speter 5975251883Speter if test -n "$relink_command"; then 5976251883Speter # Determine the prefix the user has applied to our future dir. 5977251883Speter inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 5978251883Speter 5979251883Speter # Don't allow the user to place us outside of our expected 5980251883Speter # location b/c this prevents finding dependent libraries that 5981251883Speter # are installed to the same prefix. 5982251883Speter # At present, this check doesn't affect windows .dll's that 5983251883Speter # are installed into $libdir/../bin (currently, that works fine) 5984251883Speter # but it's something to keep an eye on. 5985251883Speter if test "$inst_prefix_dir" = "$destdir"; then 5986251883Speter $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 5987251883Speter exit $EXIT_FAILURE 5988251883Speter fi 5989251883Speter 5990251883Speter if test -n "$inst_prefix_dir"; then 5991251883Speter # Stick the inst_prefix_dir data into the link command. 5992251883Speter relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 5993251883Speter else 5994251883Speter relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 5995251883Speter fi 5996251883Speter 5997251883Speter $echo "$modename: warning: relinking \`$file'" 1>&2 5998251883Speter $show "$relink_command" 5999251883Speter if $run eval "$relink_command"; then : 6000251883Speter else 6001251883Speter $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6002251883Speter exit $EXIT_FAILURE 6003251883Speter fi 6004251883Speter fi 6005251883Speter 6006251883Speter # See the names of the shared library. 6007251883Speter set dummy $library_names 6008251883Speter if test -n "$2"; then 6009251883Speter realname="$2" 6010251883Speter shift 6011251883Speter shift 6012251883Speter 6013251883Speter srcname="$realname" 6014251883Speter test -n "$relink_command" && srcname="$realname"T 6015251883Speter 6016251883Speter # Install the shared library and build the symlinks. 6017251883Speter $show "$install_prog $dir/$srcname $destdir/$realname" 6018251883Speter $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6019251883Speter if test -n "$stripme" && test -n "$striplib"; then 6020251883Speter $show "$striplib $destdir/$realname" 6021251883Speter $run eval "$striplib $destdir/$realname" || exit $? 6022251883Speter fi 6023251883Speter 6024251883Speter if test "$#" -gt 0; then 6025251883Speter # Delete the old symlinks, and create new ones. 6026251883Speter # Try `ln -sf' first, because the `ln' binary might depend on 6027251883Speter # the symlink we replace! Solaris /bin/ln does not understand -f, 6028251883Speter # so we also need to try rm && ln -s. 6029251883Speter for linkname 6030251883Speter do 6031251883Speter if test "$linkname" != "$realname"; then 6032251883Speter $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6033251883Speter $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6034251883Speter fi 6035251883Speter done 6036251883Speter fi 6037251883Speter 6038251883Speter # Do each command in the postinstall commands. 6039251883Speter lib="$destdir/$realname" 6040251883Speter cmds=$postinstall_cmds 6041251883Speter save_ifs="$IFS"; IFS='~' 6042251883Speter for cmd in $cmds; do 6043251883Speter IFS="$save_ifs" 6044251883Speter eval cmd=\"$cmd\" 6045251883Speter $show "$cmd" 6046251883Speter $run eval "$cmd" || { 6047251883Speter lt_exit=$? 6048251883Speter 6049251883Speter # Restore the uninstalled library and exit 6050251883Speter if test "$mode" = relink; then 6051251883Speter $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6052251883Speter fi 6053251883Speter 6054251883Speter exit $lt_exit 6055251883Speter } 6056251883Speter done 6057251883Speter IFS="$save_ifs" 6058251883Speter fi 6059251883Speter 6060251883Speter # Install the pseudo-library for information purposes. 6061251883Speter name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6062251883Speter instname="$dir/$name"i 6063251883Speter $show "$install_prog $instname $destdir/$name" 6064251883Speter $run eval "$install_prog $instname $destdir/$name" || exit $? 6065251883Speter 6066251883Speter # Maybe install the static library, too. 6067251883Speter test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6068251883Speter ;; 6069251883Speter 6070251883Speter *.lo) 6071251883Speter # Install (i.e. copy) a libtool object. 6072251883Speter 6073251883Speter # Figure out destination file name, if it wasn't already specified. 6074251883Speter if test -n "$destname"; then 6075251883Speter destfile="$destdir/$destname" 6076251883Speter else 6077251883Speter destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6078251883Speter destfile="$destdir/$destfile" 6079251883Speter fi 6080251883Speter 6081251883Speter # Deduce the name of the destination old-style object file. 6082251883Speter case $destfile in 6083251883Speter *.lo) 6084251883Speter staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6085251883Speter ;; 6086251883Speter *.$objext) 6087251883Speter staticdest="$destfile" 6088251883Speter destfile= 6089251883Speter ;; 6090251883Speter *) 6091251883Speter $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6092251883Speter $echo "$help" 1>&2 6093251883Speter exit $EXIT_FAILURE 6094251883Speter ;; 6095251883Speter esac 6096251883Speter 6097251883Speter # Install the libtool object if requested. 6098251883Speter if test -n "$destfile"; then 6099251883Speter $show "$install_prog $file $destfile" 6100251883Speter $run eval "$install_prog $file $destfile" || exit $? 6101251883Speter fi 6102251883Speter 6103251883Speter # Install the old object if enabled. 6104251883Speter if test "$build_old_libs" = yes; then 6105251883Speter # Deduce the name of the old-style object file. 6106251883Speter staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6107251883Speter 6108251883Speter $show "$install_prog $staticobj $staticdest" 6109251883Speter $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6110251883Speter fi 6111251883Speter exit $EXIT_SUCCESS 6112251883Speter ;; 6113251883Speter 6114251883Speter *) 6115251883Speter # Figure out destination file name, if it wasn't already specified. 6116251883Speter if test -n "$destname"; then 6117251883Speter destfile="$destdir/$destname" 6118251883Speter else 6119251883Speter destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6120251883Speter destfile="$destdir/$destfile" 6121251883Speter fi 6122251883Speter 6123251883Speter # If the file is missing, and there is a .exe on the end, strip it 6124251883Speter # because it is most likely a libtool script we actually want to 6125251883Speter # install 6126251883Speter stripped_ext="" 6127251883Speter case $file in 6128251883Speter *.exe) 6129251883Speter if test ! -f "$file"; then 6130251883Speter file=`$echo $file|${SED} 's,.exe$,,'` 6131251883Speter stripped_ext=".exe" 6132251883Speter fi 6133251883Speter ;; 6134251883Speter esac 6135251883Speter 6136251883Speter # Do a test to see if this is really a libtool program. 6137251883Speter case $host in 6138251883Speter *cygwin*|*mingw*) 6139251883Speter wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6140251883Speter ;; 6141251883Speter *) 6142251883Speter wrapper=$file 6143251883Speter ;; 6144251883Speter esac 6145251883Speter if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6146251883Speter notinst_deplibs= 6147251883Speter relink_command= 6148251883Speter 6149251883Speter # Note that it is not necessary on cygwin/mingw to append a dot to 6150251883Speter # foo even if both foo and FILE.exe exist: automatic-append-.exe 6151251883Speter # behavior happens only for exec(3), not for open(2)! Also, sourcing 6152251883Speter # `FILE.' does not work on cygwin managed mounts. 6153251883Speter # 6154251883Speter # If there is no directory component, then add one. 6155251883Speter case $wrapper in 6156251883Speter */* | *\\*) . ${wrapper} ;; 6157251883Speter *) . ./${wrapper} ;; 6158251883Speter esac 6159251883Speter 6160251883Speter # Check the variables that should have been set. 6161251883Speter if test -z "$notinst_deplibs"; then 6162251883Speter $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6163251883Speter exit $EXIT_FAILURE 6164251883Speter fi 6165251883Speter 6166251883Speter finalize=yes 6167251883Speter for lib in $notinst_deplibs; do 6168251883Speter # Check to see that each library is installed. 6169251883Speter libdir= 6170251883Speter if test -f "$lib"; then 6171251883Speter # If there is no directory component, then add one. 6172251883Speter case $lib in 6173251883Speter */* | *\\*) . $lib ;; 6174251883Speter *) . ./$lib ;; 6175251883Speter esac 6176251883Speter fi 6177251883Speter libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6178251883Speter if test -n "$libdir" && test ! -f "$libfile"; then 6179251883Speter $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6180251883Speter finalize=no 6181251883Speter fi 6182251883Speter done 6183251883Speter 6184251883Speter relink_command= 6185251883Speter # Note that it is not necessary on cygwin/mingw to append a dot to 6186251883Speter # foo even if both foo and FILE.exe exist: automatic-append-.exe 6187251883Speter # behavior happens only for exec(3), not for open(2)! Also, sourcing 6188251883Speter # `FILE.' does not work on cygwin managed mounts. 6189251883Speter # 6190251883Speter # If there is no directory component, then add one. 6191251883Speter case $wrapper in 6192251883Speter */* | *\\*) . ${wrapper} ;; 6193251883Speter *) . ./${wrapper} ;; 6194251883Speter esac 6195251883Speter 6196251883Speter outputname= 6197251883Speter if test "$fast_install" = no && test -n "$relink_command"; then 6198251883Speter if test "$finalize" = yes && test -z "$run"; then 6199251883Speter tmpdir=`func_mktempdir` 6200251883Speter file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6201251883Speter outputname="$tmpdir/$file" 6202251883Speter # Replace the output file specification. 6203251883Speter relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6204251883Speter 6205251883Speter $show "$relink_command" 6206251883Speter if $run eval "$relink_command"; then : 6207251883Speter else 6208251883Speter $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6209251883Speter ${rm}r "$tmpdir" 6210251883Speter continue 6211251883Speter fi 6212251883Speter file="$outputname" 6213251883Speter else 6214251883Speter $echo "$modename: warning: cannot relink \`$file'" 1>&2 6215251883Speter fi 6216251883Speter else 6217251883Speter # Install the binary that we compiled earlier. 6218251883Speter file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6219251883Speter fi 6220251883Speter fi 6221251883Speter 6222251883Speter # remove .exe since cygwin /usr/bin/install will append another 6223251883Speter # one anyway 6224251883Speter case $install_prog,$host in 6225251883Speter */usr/bin/install*,*cygwin*) 6226251883Speter case $file:$destfile in 6227251883Speter *.exe:*.exe) 6228251883Speter # this is ok 6229251883Speter ;; 6230251883Speter *.exe:*) 6231251883Speter destfile=$destfile.exe 6232251883Speter ;; 6233251883Speter *:*.exe) 6234251883Speter destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6235251883Speter ;; 6236251883Speter esac 6237251883Speter ;; 6238251883Speter esac 6239251883Speter $show "$install_prog$stripme $file $destfile" 6240251883Speter $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6241251883Speter test -n "$outputname" && ${rm}r "$tmpdir" 6242251883Speter ;; 6243251883Speter esac 6244251883Speter done 6245251883Speter 6246251883Speter for file in $staticlibs; do 6247251883Speter name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6248251883Speter 6249251883Speter # Set up the ranlib parameters. 6250251883Speter oldlib="$destdir/$name" 6251251883Speter 6252251883Speter $show "$install_prog $file $oldlib" 6253251883Speter $run eval "$install_prog \$file \$oldlib" || exit $? 6254251883Speter 6255251883Speter if test -n "$stripme" && test -n "$old_striplib"; then 6256251883Speter $show "$old_striplib $oldlib" 6257251883Speter $run eval "$old_striplib $oldlib" || exit $? 6258251883Speter fi 6259251883Speter 6260251883Speter # Do each command in the postinstall commands. 6261251883Speter cmds=$old_postinstall_cmds 6262251883Speter save_ifs="$IFS"; IFS='~' 6263251883Speter for cmd in $cmds; do 6264251883Speter IFS="$save_ifs" 6265251883Speter eval cmd=\"$cmd\" 6266251883Speter $show "$cmd" 6267251883Speter $run eval "$cmd" || exit $? 6268251883Speter done 6269251883Speter IFS="$save_ifs" 6270251883Speter done 6271251883Speter 6272251883Speter if test -n "$future_libdirs"; then 6273251883Speter $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6274251883Speter fi 6275251883Speter 6276251883Speter if test -n "$current_libdirs"; then 6277251883Speter # Maybe just do a dry run. 6278251883Speter test -n "$run" && current_libdirs=" -n$current_libdirs" 6279251883Speter exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6280251883Speter else 6281251883Speter exit $EXIT_SUCCESS 6282251883Speter fi 6283251883Speter ;; 6284251883Speter 6285251883Speter # libtool finish mode 6286251883Speter finish) 6287251883Speter modename="$modename: finish" 6288251883Speter libdirs="$nonopt" 6289251883Speter admincmds= 6290251883Speter 6291251883Speter if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6292251883Speter for dir 6293251883Speter do 6294251883Speter libdirs="$libdirs $dir" 6295251883Speter done 6296251883Speter 6297251883Speter for libdir in $libdirs; do 6298251883Speter if test -n "$finish_cmds"; then 6299251883Speter # Do each command in the finish commands. 6300251883Speter cmds=$finish_cmds 6301251883Speter save_ifs="$IFS"; IFS='~' 6302251883Speter for cmd in $cmds; do 6303251883Speter IFS="$save_ifs" 6304251883Speter eval cmd=\"$cmd\" 6305251883Speter $show "$cmd" 6306251883Speter $run eval "$cmd" || admincmds="$admincmds 6307251883Speter $cmd" 6308251883Speter done 6309251883Speter IFS="$save_ifs" 6310251883Speter fi 6311251883Speter if test -n "$finish_eval"; then 6312251883Speter # Do the single finish_eval. 6313251883Speter eval cmds=\"$finish_eval\" 6314251883Speter $run eval "$cmds" || admincmds="$admincmds 6315251883Speter $cmds" 6316251883Speter fi 6317251883Speter done 6318251883Speter fi 6319251883Speter 6320251883Speter # Exit here if they wanted silent mode. 6321251883Speter test "$show" = : && exit $EXIT_SUCCESS 6322251883Speter 6323251883Speter $echo "X----------------------------------------------------------------------" | $Xsed 6324251883Speter $echo "Libraries have been installed in:" 6325251883Speter for libdir in $libdirs; do 6326251883Speter $echo " $libdir" 6327251883Speter done 6328251883Speter $echo 6329251883Speter $echo "If you ever happen to want to link against installed libraries" 6330251883Speter $echo "in a given directory, LIBDIR, you must either use libtool, and" 6331251883Speter $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6332251883Speter $echo "flag during linking and do at least one of the following:" 6333251883Speter if test -n "$shlibpath_var"; then 6334251883Speter $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6335251883Speter $echo " during execution" 6336251883Speter fi 6337251883Speter if test -n "$runpath_var"; then 6338251883Speter $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6339251883Speter $echo " during linking" 6340251883Speter fi 6341251883Speter if test -n "$hardcode_libdir_flag_spec"; then 6342251883Speter libdir=LIBDIR 6343251883Speter eval flag=\"$hardcode_libdir_flag_spec\" 6344251883Speter 6345251883Speter $echo " - use the \`$flag' linker flag" 6346251883Speter fi 6347251883Speter if test -n "$admincmds"; then 6348251883Speter $echo " - have your system administrator run these commands:$admincmds" 6349251883Speter fi 6350251883Speter if test -f /etc/ld.so.conf; then 6351251883Speter $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6352251883Speter fi 6353251883Speter $echo 6354251883Speter $echo "See any operating system documentation about shared libraries for" 6355251883Speter $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6356251883Speter $echo "X----------------------------------------------------------------------" | $Xsed 6357251883Speter exit $EXIT_SUCCESS 6358251883Speter ;; 6359251883Speter 6360251883Speter # libtool execute mode 6361251883Speter execute) 6362251883Speter modename="$modename: execute" 6363251883Speter 6364251883Speter # The first argument is the command name. 6365251883Speter cmd="$nonopt" 6366251883Speter if test -z "$cmd"; then 6367251883Speter $echo "$modename: you must specify a COMMAND" 1>&2 6368251883Speter $echo "$help" 6369251883Speter exit $EXIT_FAILURE 6370251883Speter fi 6371251883Speter 6372251883Speter # Handle -dlopen flags immediately. 6373251883Speter for file in $execute_dlfiles; do 6374251883Speter if test ! -f "$file"; then 6375251883Speter $echo "$modename: \`$file' is not a file" 1>&2 6376251883Speter $echo "$help" 1>&2 6377251883Speter exit $EXIT_FAILURE 6378251883Speter fi 6379251883Speter 6380251883Speter dir= 6381251883Speter case $file in 6382251883Speter *.la) 6383251883Speter # Check to see that this really is a libtool archive. 6384251883Speter if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6385251883Speter else 6386251883Speter $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6387251883Speter $echo "$help" 1>&2 6388251883Speter exit $EXIT_FAILURE 6389251883Speter fi 6390251883Speter 6391251883Speter # Read the libtool library. 6392251883Speter dlname= 6393251883Speter library_names= 6394251883Speter 6395251883Speter # If there is no directory component, then add one. 6396251883Speter case $file in 6397251883Speter */* | *\\*) . $file ;; 6398251883Speter *) . ./$file ;; 6399251883Speter esac 6400251883Speter 6401251883Speter # Skip this library if it cannot be dlopened. 6402251883Speter if test -z "$dlname"; then 6403251883Speter # Warn if it was a shared library. 6404251883Speter test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6405251883Speter continue 6406251883Speter fi 6407251883Speter 6408251883Speter dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6409251883Speter test "X$dir" = "X$file" && dir=. 6410251883Speter 6411251883Speter if test -f "$dir/$objdir/$dlname"; then 6412251883Speter dir="$dir/$objdir" 6413251883Speter else 6414251883Speter if test ! -f "$dir/$dlname"; then 6415251883Speter $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6416251883Speter exit $EXIT_FAILURE 6417251883Speter fi 6418251883Speter fi 6419251883Speter ;; 6420251883Speter 6421251883Speter *.lo) 6422251883Speter # Just add the directory containing the .lo file. 6423251883Speter dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6424251883Speter test "X$dir" = "X$file" && dir=. 6425251883Speter ;; 6426251883Speter 6427251883Speter *) 6428251883Speter $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6429251883Speter continue 6430251883Speter ;; 6431251883Speter esac 6432251883Speter 6433251883Speter # Get the absolute pathname. 6434251883Speter absdir=`cd "$dir" && pwd` 6435251883Speter test -n "$absdir" && dir="$absdir" 6436251883Speter 6437251883Speter # Now add the directory to shlibpath_var. 6438251883Speter if eval "test -z \"\$$shlibpath_var\""; then 6439251883Speter eval "$shlibpath_var=\"\$dir\"" 6440251883Speter else 6441251883Speter eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6442251883Speter fi 6443251883Speter done 6444251883Speter 6445251883Speter # This variable tells wrapper scripts just to set shlibpath_var 6446251883Speter # rather than running their programs. 6447251883Speter libtool_execute_magic="$magic" 6448251883Speter 6449251883Speter # Check if any of the arguments is a wrapper script. 6450251883Speter args= 6451251883Speter for file 6452251883Speter do 6453251883Speter case $file in 6454251883Speter -*) ;; 6455251883Speter *) 6456251883Speter # Do a test to see if this is really a libtool program. 6457251883Speter if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6458251883Speter # If there is no directory component, then add one. 6459251883Speter case $file in 6460251883Speter */* | *\\*) . $file ;; 6461251883Speter *) . ./$file ;; 6462251883Speter esac 6463251883Speter 6464251883Speter # Transform arg to wrapped name. 6465251883Speter file="$progdir/$program" 6466251883Speter fi 6467251883Speter ;; 6468251883Speter esac 6469251883Speter # Quote arguments (to preserve shell metacharacters). 6470251883Speter file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6471251883Speter args="$args \"$file\"" 6472251883Speter done 6473251883Speter 6474251883Speter if test -z "$run"; then 6475251883Speter if test -n "$shlibpath_var"; then 6476251883Speter # Export the shlibpath_var. 6477251883Speter eval "export $shlibpath_var" 6478251883Speter fi 6479251883Speter 6480251883Speter # Restore saved environment variables 6481251883Speter for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6482251883Speter do 6483251883Speter eval "if test \"\${save_$lt_var+set}\" = set; then 6484251883Speter $lt_var=\$save_$lt_var; export $lt_var 6485251883Speter fi" 6486251883Speter done 6487251883Speter 6488251883Speter # Now prepare to actually exec the command. 6489251883Speter exec_cmd="\$cmd$args" 6490251883Speter else 6491251883Speter # Display what would be done. 6492251883Speter if test -n "$shlibpath_var"; then 6493251883Speter eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6494251883Speter $echo "export $shlibpath_var" 6495251883Speter fi 6496251883Speter $echo "$cmd$args" 6497251883Speter exit $EXIT_SUCCESS 6498251883Speter fi 6499251883Speter ;; 6500251883Speter 6501251883Speter # libtool clean and uninstall mode 6502251883Speter clean | uninstall) 6503251883Speter modename="$modename: $mode" 6504251883Speter rm="$nonopt" 6505251883Speter files= 6506251883Speter rmforce= 6507251883Speter exit_status=0 6508251883Speter 6509251883Speter # This variable tells wrapper scripts just to set variables rather 6510251883Speter # than running their programs. 6511251883Speter libtool_install_magic="$magic" 6512251883Speter 6513251883Speter for arg 6514251883Speter do 6515251883Speter case $arg in 6516251883Speter -f) rm="$rm $arg"; rmforce=yes ;; 6517251883Speter -*) rm="$rm $arg" ;; 6518251883Speter *) files="$files $arg" ;; 6519251883Speter esac 6520251883Speter done 6521251883Speter 6522251883Speter if test -z "$rm"; then 6523251883Speter $echo "$modename: you must specify an RM program" 1>&2 6524251883Speter $echo "$help" 1>&2 6525251883Speter exit $EXIT_FAILURE 6526251883Speter fi 6527251883Speter 6528251883Speter rmdirs= 6529251883Speter 6530251883Speter origobjdir="$objdir" 6531251883Speter for file in $files; do 6532251883Speter dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6533251883Speter if test "X$dir" = "X$file"; then 6534251883Speter dir=. 6535251883Speter objdir="$origobjdir" 6536251883Speter else 6537251883Speter objdir="$dir/$origobjdir" 6538251883Speter fi 6539251883Speter name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6540251883Speter test "$mode" = uninstall && objdir="$dir" 6541251883Speter 6542251883Speter # Remember objdir for removal later, being careful to avoid duplicates 6543251883Speter if test "$mode" = clean; then 6544251883Speter case " $rmdirs " in 6545251883Speter *" $objdir "*) ;; 6546251883Speter *) rmdirs="$rmdirs $objdir" ;; 6547251883Speter esac 6548251883Speter fi 6549251883Speter 6550251883Speter # Don't error if the file doesn't exist and rm -f was used. 6551251883Speter if (test -L "$file") >/dev/null 2>&1 \ 6552251883Speter || (test -h "$file") >/dev/null 2>&1 \ 6553251883Speter || test -f "$file"; then 6554251883Speter : 6555251883Speter elif test -d "$file"; then 6556251883Speter exit_status=1 6557251883Speter continue 6558251883Speter elif test "$rmforce" = yes; then 6559251883Speter continue 6560251883Speter fi 6561251883Speter 6562251883Speter rmfiles="$file" 6563251883Speter 6564251883Speter case $name in 6565251883Speter *.la) 6566251883Speter # Possibly a libtool archive, so verify it. 6567251883Speter if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6568251883Speter . $dir/$name 6569251883Speter 6570251883Speter # Delete the libtool libraries and symlinks. 6571251883Speter for n in $library_names; do 6572251883Speter rmfiles="$rmfiles $objdir/$n" 6573251883Speter done 6574251883Speter test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6575251883Speter 6576251883Speter case "$mode" in 6577251883Speter clean) 6578251883Speter case " $library_names " in 6579251883Speter # " " in the beginning catches empty $dlname 6580251883Speter *" $dlname "*) ;; 6581251883Speter *) rmfiles="$rmfiles $objdir/$dlname" ;; 6582251883Speter esac 6583251883Speter test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6584251883Speter ;; 6585251883Speter uninstall) 6586251883Speter if test -n "$library_names"; then 6587251883Speter # Do each command in the postuninstall commands. 6588251883Speter cmds=$postuninstall_cmds 6589251883Speter save_ifs="$IFS"; IFS='~' 6590251883Speter for cmd in $cmds; do 6591251883Speter IFS="$save_ifs" 6592251883Speter eval cmd=\"$cmd\" 6593251883Speter $show "$cmd" 6594251883Speter $run eval "$cmd" 6595251883Speter if test "$?" -ne 0 && test "$rmforce" != yes; then 6596251883Speter exit_status=1 6597251883Speter fi 6598251883Speter done 6599251883Speter IFS="$save_ifs" 6600251883Speter fi 6601251883Speter 6602251883Speter if test -n "$old_library"; then 6603251883Speter # Do each command in the old_postuninstall commands. 6604251883Speter cmds=$old_postuninstall_cmds 6605251883Speter save_ifs="$IFS"; IFS='~' 6606251883Speter for cmd in $cmds; do 6607251883Speter IFS="$save_ifs" 6608251883Speter eval cmd=\"$cmd\" 6609251883Speter $show "$cmd" 6610251883Speter $run eval "$cmd" 6611251883Speter if test "$?" -ne 0 && test "$rmforce" != yes; then 6612251883Speter exit_status=1 6613251883Speter fi 6614251883Speter done 6615251883Speter IFS="$save_ifs" 6616251883Speter fi 6617251883Speter # FIXME: should reinstall the best remaining shared library. 6618251883Speter ;; 6619251883Speter esac 6620251883Speter fi 6621251883Speter ;; 6622251883Speter 6623251883Speter *.lo) 6624251883Speter # Possibly a libtool object, so verify it. 6625251883Speter if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6626251883Speter 6627251883Speter # Read the .lo file 6628251883Speter . $dir/$name 6629251883Speter 6630251883Speter # Add PIC object to the list of files to remove. 6631251883Speter if test -n "$pic_object" \ 6632251883Speter && test "$pic_object" != none; then 6633251883Speter rmfiles="$rmfiles $dir/$pic_object" 6634251883Speter fi 6635251883Speter 6636251883Speter # Add non-PIC object to the list of files to remove. 6637251883Speter if test -n "$non_pic_object" \ 6638251883Speter && test "$non_pic_object" != none; then 6639251883Speter rmfiles="$rmfiles $dir/$non_pic_object" 6640251883Speter fi 6641251883Speter fi 6642251883Speter ;; 6643251883Speter 6644251883Speter *) 6645251883Speter if test "$mode" = clean ; then 6646251883Speter noexename=$name 6647251883Speter case $file in 6648251883Speter *.exe) 6649251883Speter file=`$echo $file|${SED} 's,.exe$,,'` 6650251883Speter noexename=`$echo $name|${SED} 's,.exe$,,'` 6651251883Speter # $file with .exe has already been added to rmfiles, 6652251883Speter # add $file without .exe 6653251883Speter rmfiles="$rmfiles $file" 6654251883Speter ;; 6655251883Speter esac 6656251883Speter # Do a test to see if this is a libtool program. 6657251883Speter if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6658251883Speter relink_command= 6659251883Speter . $dir/$noexename 6660251883Speter 6661251883Speter # note $name still contains .exe if it was in $file originally 6662251883Speter # as does the version of $file that was added into $rmfiles 6663251883Speter rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6664251883Speter if test "$fast_install" = yes && test -n "$relink_command"; then 6665251883Speter rmfiles="$rmfiles $objdir/lt-$name" 6666251883Speter fi 6667251883Speter if test "X$noexename" != "X$name" ; then 6668251883Speter rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6669251883Speter fi 6670251883Speter fi 6671251883Speter fi 6672251883Speter ;; 6673251883Speter esac 6674251883Speter $show "$rm $rmfiles" 6675251883Speter $run $rm $rmfiles || exit_status=1 6676251883Speter done 6677251883Speter objdir="$origobjdir" 6678251883Speter 6679251883Speter # Try to remove the ${objdir}s in the directories where we deleted files 6680251883Speter for dir in $rmdirs; do 6681251883Speter if test -d "$dir"; then 6682251883Speter $show "rmdir $dir" 6683251883Speter $run rmdir $dir >/dev/null 2>&1 6684251883Speter fi 6685251883Speter done 6686251883Speter 6687251883Speter exit $exit_status 6688251883Speter ;; 6689251883Speter 6690251883Speter "") 6691251883Speter $echo "$modename: you must specify a MODE" 1>&2 6692251883Speter $echo "$generic_help" 1>&2 6693251883Speter exit $EXIT_FAILURE 6694251883Speter ;; 6695251883Speter esac 6696251883Speter 6697251883Speter if test -z "$exec_cmd"; then 6698251883Speter $echo "$modename: invalid operation mode \`$mode'" 1>&2 6699251883Speter $echo "$generic_help" 1>&2 6700251883Speter exit $EXIT_FAILURE 6701251883Speter fi 6702251883Speterfi # test -z "$show_help" 6703251883Speter 6704251883Speterif test -n "$exec_cmd"; then 6705251883Speter eval exec $exec_cmd 6706251883Speter exit $EXIT_FAILURE 6707251883Speterfi 6708251883Speter 6709251883Speter# We need to display help for each of the modes. 6710251883Spetercase $mode in 6711251883Speter"") $echo \ 6712251883Speter"Usage: $modename [OPTION]... [MODE-ARG]... 6713251883Speter 6714251883SpeterProvide generalized library-building support services. 6715251883Speter 6716251883Speter --config show all configuration variables 6717251883Speter --debug enable verbose shell tracing 6718251883Speter-n, --dry-run display commands without modifying any files 6719251883Speter --features display basic configuration information and exit 6720251883Speter --finish same as \`--mode=finish' 6721251883Speter --help display this help message and exit 6722251883Speter --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6723251883Speter --quiet same as \`--silent' 6724251883Speter --silent don't print informational messages 6725251883Speter --tag=TAG use configuration variables from tag TAG 6726251883Speter --version print version information 6727251883Speter 6728251883SpeterMODE must be one of the following: 6729251883Speter 6730251883Speter clean remove files from the build directory 6731251883Speter compile compile a source file into a libtool object 6732251883Speter execute automatically set library path, then run a program 6733251883Speter finish complete the installation of libtool libraries 6734251883Speter install install libraries or executables 6735251883Speter link create a library or an executable 6736251883Speter uninstall remove libraries from an installed directory 6737251883Speter 6738251883SpeterMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6739251883Spetera more detailed description of MODE. 6740251883Speter 6741251883SpeterReport bugs to <bug-libtool@gnu.org>." 6742251883Speter exit $EXIT_SUCCESS 6743251883Speter ;; 6744251883Speter 6745251883Speterclean) 6746251883Speter $echo \ 6747251883Speter"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6748251883Speter 6749251883SpeterRemove files from the build directory. 6750251883Speter 6751251883SpeterRM is the name of the program to use to delete files associated with each FILE 6752251883Speter(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6753251883Speterto RM. 6754251883Speter 6755251883SpeterIf FILE is a libtool library, object or program, all the files associated 6756251883Speterwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6757251883Speter ;; 6758251883Speter 6759251883Spetercompile) 6760251883Speter $echo \ 6761251883Speter"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6762251883Speter 6763251883SpeterCompile a source file into a libtool library object. 6764251883Speter 6765251883SpeterThis mode accepts the following additional options: 6766251883Speter 6767251883Speter -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6768251883Speter -prefer-pic try to building PIC objects only 6769251883Speter -prefer-non-pic try to building non-PIC objects only 6770251883Speter -static always build a \`.o' file suitable for static linking 6771251883Speter 6772251883SpeterCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6773251883Speterfrom the given SOURCEFILE. 6774251883Speter 6775251883SpeterThe output file name is determined by removing the directory component from 6776251883SpeterSOURCEFILE, then substituting the C source code suffix \`.c' with the 6777251883Speterlibrary object suffix, \`.lo'." 6778251883Speter ;; 6779251883Speter 6780251883Speterexecute) 6781251883Speter $echo \ 6782251883Speter"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6783251883Speter 6784251883SpeterAutomatically set library path, then run a program. 6785251883Speter 6786251883SpeterThis mode accepts the following additional options: 6787251883Speter 6788251883Speter -dlopen FILE add the directory containing FILE to the library path 6789251883Speter 6790251883SpeterThis mode sets the library path environment variable according to \`-dlopen' 6791251883Speterflags. 6792251883Speter 6793251883SpeterIf any of the ARGS are libtool executable wrappers, then they are translated 6794251883Speterinto their corresponding uninstalled binary, and any of their required library 6795251883Speterdirectories are added to the library path. 6796251883Speter 6797251883SpeterThen, COMMAND is executed, with ARGS as arguments." 6798251883Speter ;; 6799251883Speter 6800251883Speterfinish) 6801251883Speter $echo \ 6802251883Speter"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6803251883Speter 6804251883SpeterComplete the installation of libtool libraries. 6805251883Speter 6806251883SpeterEach LIBDIR is a directory that contains libtool libraries. 6807251883Speter 6808251883SpeterThe commands that this mode executes may require superuser privileges. Use 6809251883Speterthe \`--dry-run' option if you just want to see what would be executed." 6810251883Speter ;; 6811251883Speter 6812251883Speterinstall) 6813251883Speter $echo \ 6814251883Speter"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6815251883Speter 6816251883SpeterInstall executables or libraries. 6817251883Speter 6818251883SpeterINSTALL-COMMAND is the installation command. The first component should be 6819251883Spetereither the \`install' or \`cp' program. 6820251883Speter 6821251883SpeterThe rest of the components are interpreted as arguments to that command (only 6822251883SpeterBSD-compatible install options are recognized)." 6823251883Speter ;; 6824251883Speter 6825251883Speterlink) 6826251883Speter $echo \ 6827251883Speter"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6828251883Speter 6829251883SpeterLink object files or libraries together to form another library, or to 6830251883Spetercreate an executable program. 6831251883Speter 6832251883SpeterLINK-COMMAND is a command using the C compiler that you would use to create 6833251883Spetera program from several object files. 6834251883Speter 6835251883SpeterThe following components of LINK-COMMAND are treated specially: 6836251883Speter 6837251883Speter -all-static do not do any dynamic linking at all 6838251883Speter -avoid-version do not add a version suffix if possible 6839251883Speter -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6840251883Speter -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6841251883Speter -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6842251883Speter -export-symbols SYMFILE 6843251883Speter try to export only the symbols listed in SYMFILE 6844251883Speter -export-symbols-regex REGEX 6845251883Speter try to export only the symbols matching REGEX 6846251883Speter -LLIBDIR search LIBDIR for required installed libraries 6847251883Speter -lNAME OUTPUT-FILE requires the installed library libNAME 6848251883Speter -module build a library that can dlopened 6849251883Speter -no-fast-install disable the fast-install mode 6850251883Speter -no-install link a not-installable executable 6851251883Speter -no-undefined declare that a library does not refer to external symbols 6852251883Speter -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6853251883Speter -objectlist FILE Use a list of object files found in FILE to specify objects 6854251883Speter -precious-files-regex REGEX 6855251883Speter don't remove output files matching REGEX 6856251883Speter -release RELEASE specify package release information 6857251883Speter -rpath LIBDIR the created library will eventually be installed in LIBDIR 6858251883Speter -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6859251883Speter -static do not do any dynamic linking of uninstalled libtool libraries 6860251883Speter -static-libtool-libs 6861251883Speter do not do any dynamic linking of libtool libraries 6862251883Speter -version-info CURRENT[:REVISION[:AGE]] 6863251883Speter specify library version info [each variable defaults to 0] 6864251883Speter 6865251883SpeterAll other options (arguments beginning with \`-') are ignored. 6866251883Speter 6867251883SpeterEvery other argument is treated as a filename. Files ending in \`.la' are 6868251883Spetertreated as uninstalled libtool libraries, other files are standard or library 6869251883Speterobject files. 6870251883Speter 6871251883SpeterIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6872251883Speteronly library objects (\`.lo' files) may be specified, and \`-rpath' is 6873251883Speterrequired, except when creating a convenience library. 6874251883Speter 6875251883SpeterIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6876251883Speterusing \`ar' and \`ranlib', or on Windows using \`lib'. 6877251883Speter 6878251883SpeterIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6879251883Speteris created, otherwise an executable program is created." 6880251883Speter ;; 6881251883Speter 6882251883Speteruninstall) 6883251883Speter $echo \ 6884251883Speter"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6885251883Speter 6886251883SpeterRemove libraries from an installation directory. 6887251883Speter 6888251883SpeterRM is the name of the program to use to delete files associated with each FILE 6889251883Speter(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6890251883Speterto RM. 6891251883Speter 6892251883SpeterIf FILE is a libtool library, all the files associated with it are deleted. 6893251883SpeterOtherwise, only FILE itself is deleted using RM." 6894251883Speter ;; 6895251883Speter 6896251883Speter*) 6897251883Speter $echo "$modename: invalid operation mode \`$mode'" 1>&2 6898251883Speter $echo "$help" 1>&2 6899251883Speter exit $EXIT_FAILURE 6900251883Speter ;; 6901251883Speteresac 6902251883Speter 6903251883Speter$echo 6904251883Speter$echo "Try \`$modename --help' for more information about other modes." 6905251883Speter 6906251883Speterexit $? 6907251883Speter 6908251883Speter# The TAGs below are defined such that we never get into a situation 6909251883Speter# in which we disable both kinds of libraries. Given conflicting 6910251883Speter# choices, we go for a static library, that is the most portable, 6911251883Speter# since we can't tell whether shared libraries were disabled because 6912251883Speter# the user asked for that or because the platform doesn't support 6913251883Speter# them. This is particularly important on AIX, because we don't 6914251883Speter# support having both static and shared libraries enabled at the same 6915251883Speter# time on that platform, so we default to a shared-only configuration. 6916251883Speter# If a disable-shared tag is given, we'll fallback to a static-only 6917251883Speter# configuration. But we'll never go from static-only to shared-only. 6918251883Speter 6919251883Speter# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6920251883Speterdisable_libs=shared 6921251883Speter# ### END LIBTOOL TAG CONFIG: disable-shared 6922251883Speter 6923251883Speter# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6924251883Speterdisable_libs=static 6925251883Speter# ### END LIBTOOL TAG CONFIG: disable-static 6926251883Speter 6927251883Speter# Local Variables: 6928251883Speter# mode:shell-script 6929251883Speter# sh-indentation:2 6930251883Speter# End: 6931