ltmain.sh revision b3062210
1b3062210Smrg# ltmain.sh - Provide generalized library-building support services. 2b3062210Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 3b3062210Smrg# 4b3062210Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5b3062210Smrg# 2007, 2008 Free Software Foundation, Inc. 6b3062210Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7b3062210Smrg# 8b3062210Smrg# This program is free software; you can redistribute it and/or modify 923a0898aSmrg# it under the terms of the GNU General Public License as published by 1023a0898aSmrg# the Free Software Foundation; either version 2 of the License, or 1123a0898aSmrg# (at your option) any later version. 1223a0898aSmrg# 13b3062210Smrg# This program is distributed in the hope that it will be useful, but 1423a0898aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1523a0898aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1623a0898aSmrg# General Public License for more details. 1723a0898aSmrg# 1823a0898aSmrg# You should have received a copy of the GNU General Public License 19b3062210Smrg# along with this program; if not, write to the Free Software 20b3062210Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 217f7f5e4eSmrg# 22b3062210Smrg# As a special exception to the GNU General Public License, if you 23b3062210Smrg# distribute this file as part of a program that contains a 24b3062210Smrg# configuration script generated by Autoconf, you may include it under 25b3062210Smrg# the same distribution terms that you use for the rest of that program. 26b3062210Smrg 27b3062210Smrgbasename="s,^.*/,,g" 28b3062210Smrg 29b3062210Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30b3062210Smrg# is ksh but when the shell is invoked as "sh" and the current value of 31b3062210Smrg# the _XPG environment variable is not equal to 1 (one), the special 32b3062210Smrg# positional parameter $0, within a function call, is the name of the 33b3062210Smrg# function. 34b3062210Smrgprogpath="$0" 35b3062210Smrg 36b3062210Smrg# The name of this program: 37b3062210Smrgprogname=`echo "$progpath" | $SED $basename` 38b3062210Smrgmodename="$progname" 39b3062210Smrg 40b3062210Smrg# Global variables: 41b3062210SmrgEXIT_SUCCESS=0 42b3062210SmrgEXIT_FAILURE=1 4323a0898aSmrg 4423a0898aSmrgPROGRAM=ltmain.sh 4523a0898aSmrgPACKAGE=libtool 46b3062210SmrgVERSION=1.5.26 47b3062210SmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" 4823a0898aSmrg 49b3062210Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5023a0898aSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 5123a0898aSmrg emulate sh 5223a0898aSmrg NULLCMD=: 5323a0898aSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 5423a0898aSmrg # is contrary to our usage. Disable this feature. 5523a0898aSmrg alias -g '${1+"$@"}'='"$@"' 5623a0898aSmrg setopt NO_GLOB_SUBST 5723a0898aSmrgelse 5823a0898aSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 5923a0898aSmrgfi 6023a0898aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 6123a0898aSmrgDUALCASE=1; export DUALCASE # for MKS sh 6223a0898aSmrg 63b3062210Smrg# Check that we have a working $echo. 64b3062210Smrgif test "X$1" = X--no-reexec; then 65b3062210Smrg # Discard the --no-reexec flag, and continue. 66b3062210Smrg shift 67b3062210Smrgelif test "X$1" = X--fallback-echo; then 68b3062210Smrg # Avoid inline document here, it may be left over 69b3062210Smrg : 70b3062210Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71b3062210Smrg # Yippee, $echo works! 72b3062210Smrg : 73b3062210Smrgelse 74b3062210Smrg # Restart under the correct shell, and then maybe $echo will work. 75b3062210Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76b3062210Smrgfi 77b3062210Smrg 78b3062210Smrgif test "X$1" = X--fallback-echo; then 79b3062210Smrg # used as fallback echo 80b3062210Smrg shift 81b3062210Smrg cat <<EOF 82b3062210Smrg$* 83b3062210SmrgEOF 84b3062210Smrg exit $EXIT_SUCCESS 85b3062210Smrgfi 86b3062210Smrg 87b3062210Smrgdefault_mode= 88b3062210Smrghelp="Try \`$progname --help' for more information." 89b3062210Smrgmagic="%%%MAGIC variable%%%" 90b3062210Smrgmkdir="mkdir" 91b3062210Smrgmv="mv -f" 92b3062210Smrgrm="rm -f" 93b3062210Smrg 94b3062210Smrg# Sed substitution that helps us do robust quoting. It backslashifies 95b3062210Smrg# metacharacters that are still active within double-quoted strings. 96b3062210SmrgXsed="${SED}"' -e 1s/^X//' 97b3062210Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98b3062210Smrg# test EBCDIC or ASCII 99b3062210Smrgcase `echo X|tr X '\101'` in 100b3062210Smrg A) # ASCII based system 101b3062210Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102b3062210Smrg SP2NL='tr \040 \012' 103b3062210Smrg NL2SP='tr \015\012 \040\040' 104b3062210Smrg ;; 105b3062210Smrg *) # EBCDIC based system 106b3062210Smrg SP2NL='tr \100 \n' 107b3062210Smrg NL2SP='tr \r\n \100\100' 108b3062210Smrg ;; 109b3062210Smrgesac 110b3062210Smrg 111b3062210Smrg# NLS nuisances. 11223a0898aSmrg# Only set LANG and LC_ALL to C if already set. 11323a0898aSmrg# These must not be set unconditionally because not all systems understand 11423a0898aSmrg# e.g. LANG=C (notably SCO). 115b3062210Smrg# We save the old values to restore during execute mode. 116b3062210Smrglt_env= 1177f7f5e4eSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11823a0898aSmrgdo 11923a0898aSmrg eval "if test \"\${$lt_var+set}\" = set; then 120b3062210Smrg save_$lt_var=\$$lt_var 121b3062210Smrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 122b3062210Smrg $lt_var=C 12323a0898aSmrg export $lt_var 12423a0898aSmrg fi" 12523a0898aSmrgdone 12623a0898aSmrg 127b3062210Smrgif test -n "$lt_env"; then 128b3062210Smrg lt_env="env $lt_env" 129b3062210Smrgfi 1307f7f5e4eSmrg 13123a0898aSmrg# Make sure IFS has a sensible default 13223a0898aSmrglt_nl=' 13323a0898aSmrg' 13423a0898aSmrgIFS=" $lt_nl" 13523a0898aSmrg 136b3062210Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 137b3062210Smrg $echo "$modename: not configured to build any kind of library" 1>&2 138b3062210Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 139b3062210Smrg exit $EXIT_FAILURE 140b3062210Smrgfi 1417f7f5e4eSmrg 142b3062210Smrg# Global variables. 143b3062210Smrgmode=$default_mode 144b3062210Smrgnonopt= 145b3062210Smrgprev= 146b3062210Smrgprevopt= 147b3062210Smrgrun= 148b3062210Smrgshow="$echo" 149b3062210Smrgshow_help= 150b3062210Smrgexecute_dlfiles= 151b3062210Smrgduplicate_deps=no 152b3062210Smrgpreserve_args= 153b3062210Smrglo2o="s/\\.lo\$/.${objext}/" 154b3062210Smrgo2lo="s/\\.${objext}\$/.lo/" 155b3062210Smrgextracted_archives= 156b3062210Smrgextracted_serial=0 15723a0898aSmrg 158b3062210Smrg##################################### 159b3062210Smrg# Shell function definitions: 160b3062210Smrg# This seems to be the best place for them 16123a0898aSmrg 16223a0898aSmrg# func_mktempdir [string] 16323a0898aSmrg# Make a temporary directory that won't clash with other running 16423a0898aSmrg# libtool processes, and avoids race conditions if possible. If 16523a0898aSmrg# given, STRING is the basename for that directory. 16623a0898aSmrgfunc_mktempdir () 16723a0898aSmrg{ 16823a0898aSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 16923a0898aSmrg 170b3062210Smrg if test "$run" = ":"; then 17123a0898aSmrg # Return a directory name, but don't create it in dry-run mode 17223a0898aSmrg my_tmpdir="${my_template}-$$" 17323a0898aSmrg else 17423a0898aSmrg 17523a0898aSmrg # If mktemp works, use that first and foremost 17623a0898aSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 17723a0898aSmrg 17823a0898aSmrg if test ! -d "$my_tmpdir"; then 179b3062210Smrg # Failing that, at least try and use $RANDOM to avoid a race 180b3062210Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 18123a0898aSmrg 182b3062210Smrg save_mktempdir_umask=`umask` 183b3062210Smrg umask 0077 184b3062210Smrg $mkdir "$my_tmpdir" 185b3062210Smrg umask $save_mktempdir_umask 18623a0898aSmrg fi 18723a0898aSmrg 18823a0898aSmrg # If we're not in dry-run mode, bomb out on failure 189b3062210Smrg test -d "$my_tmpdir" || { 190b3062210Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 191b3062210Smrg exit $EXIT_FAILURE 192b3062210Smrg } 19323a0898aSmrg fi 19423a0898aSmrg 195b3062210Smrg $echo "X$my_tmpdir" | $Xsed 19623a0898aSmrg} 19723a0898aSmrg 19823a0898aSmrg 199b3062210Smrg# func_win32_libid arg 200b3062210Smrg# return the library type of file 'arg' 201b3062210Smrg# 202b3062210Smrg# Need a lot of goo to handle *both* DLLs and import libs 203b3062210Smrg# Has to be a shell function in order to 'eat' the argument 204b3062210Smrg# that is supplied when $file_magic_command is called. 205b3062210Smrgfunc_win32_libid () 20623a0898aSmrg{ 207b3062210Smrg win32_libid_type="unknown" 208b3062210Smrg win32_fileres=`file -L $1 2>/dev/null` 209b3062210Smrg case $win32_fileres in 210b3062210Smrg *ar\ archive\ import\ library*) # definitely import 211b3062210Smrg win32_libid_type="x86 archive import" 212b3062210Smrg ;; 213b3062210Smrg *ar\ archive*) # could be an import, or static 214b3062210Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 215b3062210Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 216b3062210Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 217b3062210Smrg $SED -n -e '1,100{ 218b3062210Smrg / I /{ 219b3062210Smrg s,.*,import, 220b3062210Smrg p 221b3062210Smrg q 222b3062210Smrg } 223b3062210Smrg }'` 224b3062210Smrg case $win32_nmres in 225b3062210Smrg import*) win32_libid_type="x86 archive import";; 226b3062210Smrg *) win32_libid_type="x86 archive static";; 227b3062210Smrg esac 228b3062210Smrg fi 229b3062210Smrg ;; 230b3062210Smrg *DLL*) 231b3062210Smrg win32_libid_type="x86 DLL" 232b3062210Smrg ;; 233b3062210Smrg *executable*) # but shell scripts are "executable" too... 234b3062210Smrg case $win32_fileres in 235b3062210Smrg *MS\ Windows\ PE\ Intel*) 236b3062210Smrg win32_libid_type="x86 DLL" 237b3062210Smrg ;; 23823a0898aSmrg esac 239b3062210Smrg ;; 240b3062210Smrg esac 241b3062210Smrg $echo $win32_libid_type 24223a0898aSmrg} 24323a0898aSmrg 24423a0898aSmrg 245b3062210Smrg# func_infer_tag arg 246b3062210Smrg# Infer tagged configuration to use if any are available and 247b3062210Smrg# if one wasn't chosen via the "--tag" command line option. 248b3062210Smrg# Only attempt this if the compiler in the base compile 249b3062210Smrg# command doesn't match the default compiler. 250b3062210Smrg# arg is usually of the form 'gcc ...' 251b3062210Smrgfunc_infer_tag () 25223a0898aSmrg{ 253b3062210Smrg if test -n "$available_tags" && test -z "$tagname"; then 254b3062210Smrg CC_quoted= 255b3062210Smrg for arg in $CC; do 256b3062210Smrg case $arg in 257b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 258b3062210Smrg arg="\"$arg\"" 259b3062210Smrg ;; 260b3062210Smrg esac 261b3062210Smrg CC_quoted="$CC_quoted $arg" 262b3062210Smrg done 263b3062210Smrg case $@ in 264b3062210Smrg # Blanks in the command may have been stripped by the calling shell, 265b3062210Smrg # but not from the CC environment variable when configure was run. 266b3062210Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 267b3062210Smrg # Blanks at the start of $base_compile will cause this to fail 268b3062210Smrg # if we don't check for them as well. 26923a0898aSmrg *) 270b3062210Smrg for z in $available_tags; do 271b3062210Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 272b3062210Smrg # Evaluate the configuration. 273b3062210Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 274b3062210Smrg CC_quoted= 275b3062210Smrg for arg in $CC; do 276b3062210Smrg # Double-quote args containing other shell metacharacters. 277b3062210Smrg case $arg in 278b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 279b3062210Smrg arg="\"$arg\"" 280b3062210Smrg ;; 281b3062210Smrg esac 282b3062210Smrg CC_quoted="$CC_quoted $arg" 283b3062210Smrg done 284b3062210Smrg case "$@ " in 285b3062210Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 286b3062210Smrg # The compiler in the base compile command matches 287b3062210Smrg # the one in the tagged configuration. 288b3062210Smrg # Assume this is the tagged configuration we want. 289b3062210Smrg tagname=$z 290b3062210Smrg break 291b3062210Smrg ;; 292b3062210Smrg esac 293b3062210Smrg fi 294b3062210Smrg done 295b3062210Smrg # If $tagname still isn't set, then no tagged configuration 296b3062210Smrg # was found and let the user know that the "--tag" command 297b3062210Smrg # line option must be used. 298b3062210Smrg if test -z "$tagname"; then 299b3062210Smrg $echo "$modename: unable to infer tagged configuration" 300b3062210Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 301b3062210Smrg exit $EXIT_FAILURE 302b3062210Smrg# else 303b3062210Smrg# $echo "$modename: using $tagname tagged configuration" 304b3062210Smrg fi 305b3062210Smrg ;; 306b3062210Smrg esac 307b3062210Smrg fi 30823a0898aSmrg} 30923a0898aSmrg 31023a0898aSmrg 311b3062210Smrg# func_extract_an_archive dir oldlib 312b3062210Smrgfunc_extract_an_archive () 31323a0898aSmrg{ 314b3062210Smrg f_ex_an_ar_dir="$1"; shift 315b3062210Smrg f_ex_an_ar_oldlib="$1" 3167f7f5e4eSmrg 317b3062210Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 318b3062210Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 319b3062210Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 320b3062210Smrg : 321b3062210Smrg else 322b3062210Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 323b3062210Smrg exit $EXIT_FAILURE 32423a0898aSmrg fi 32523a0898aSmrg} 32623a0898aSmrg 327b3062210Smrg# func_extract_archives gentop oldlib ... 328b3062210Smrgfunc_extract_archives () 32923a0898aSmrg{ 330b3062210Smrg my_gentop="$1"; shift 331b3062210Smrg my_oldlibs=${1+"$@"} 332b3062210Smrg my_oldobjs="" 333b3062210Smrg my_xlib="" 334b3062210Smrg my_xabs="" 335b3062210Smrg my_xdir="" 336b3062210Smrg my_status="" 337b3062210Smrg 338b3062210Smrg $show "${rm}r $my_gentop" 339b3062210Smrg $run ${rm}r "$my_gentop" 340b3062210Smrg $show "$mkdir $my_gentop" 341b3062210Smrg $run $mkdir "$my_gentop" 342b3062210Smrg my_status=$? 343b3062210Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 344b3062210Smrg exit $my_status 34523a0898aSmrg fi 34623a0898aSmrg 347b3062210Smrg for my_xlib in $my_oldlibs; do 348b3062210Smrg # Extract the objects. 349b3062210Smrg case $my_xlib in 350b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 351b3062210Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 352b3062210Smrg esac 353b3062210Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 354b3062210Smrg my_xlib_u=$my_xlib 355b3062210Smrg while :; do 356b3062210Smrg case " $extracted_archives " in 357b3062210Smrg *" $my_xlib_u "*) 358b3062210Smrg extracted_serial=`expr $extracted_serial + 1` 359b3062210Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 360b3062210Smrg *) break ;; 361b3062210Smrg esac 362b3062210Smrg done 363b3062210Smrg extracted_archives="$extracted_archives $my_xlib_u" 364b3062210Smrg my_xdir="$my_gentop/$my_xlib_u" 3657f7f5e4eSmrg 366b3062210Smrg $show "${rm}r $my_xdir" 367b3062210Smrg $run ${rm}r "$my_xdir" 368b3062210Smrg $show "$mkdir $my_xdir" 369b3062210Smrg $run $mkdir "$my_xdir" 370b3062210Smrg exit_status=$? 371b3062210Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 372b3062210Smrg exit $exit_status 373b3062210Smrg fi 374b3062210Smrg case $host in 375b3062210Smrg *-darwin*) 376b3062210Smrg $show "Extracting $my_xabs" 377b3062210Smrg # Do not bother doing anything if just a dry run 378b3062210Smrg if test -z "$run"; then 379b3062210Smrg darwin_orig_dir=`pwd` 380b3062210Smrg cd $my_xdir || exit $? 381b3062210Smrg darwin_archive=$my_xabs 382b3062210Smrg darwin_curdir=`pwd` 383b3062210Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 384b3062210Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 385b3062210Smrg if test -n "$darwin_arches"; then 386b3062210Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 387b3062210Smrg darwin_arch= 388b3062210Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 389b3062210Smrg for darwin_arch in $darwin_arches ; do 390b3062210Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 391b3062210Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 392b3062210Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 393b3062210Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 394b3062210Smrg cd "$darwin_curdir" 395b3062210Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 396b3062210Smrg done # $darwin_arches 397b3062210Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 398b3062210Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 399b3062210Smrg darwin_file= 400b3062210Smrg darwin_files= 401b3062210Smrg for darwin_file in $darwin_filelist; do 402b3062210Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 403b3062210Smrg lipo -create -output "$darwin_file" $darwin_files 404b3062210Smrg done # $darwin_filelist 405b3062210Smrg ${rm}r unfat-$$ 406b3062210Smrg cd "$darwin_orig_dir" 407b3062210Smrg else 408b3062210Smrg cd "$darwin_orig_dir" 409b3062210Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 410b3062210Smrg fi # $darwin_arches 411b3062210Smrg fi # $run 412b3062210Smrg ;; 413b3062210Smrg *) 414b3062210Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 415b3062210Smrg ;; 416b3062210Smrg esac 417b3062210Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 418b3062210Smrg done 419b3062210Smrg func_extract_archives_result="$my_oldobjs" 42023a0898aSmrg} 421b3062210Smrg# End of Shell function definitions 422b3062210Smrg##################################### 42323a0898aSmrg 424b3062210Smrg# Darwin sucks 425b3062210Smrgeval std_shrext=\"$shrext_cmds\" 4267f7f5e4eSmrg 427b3062210Smrgdisable_libs=no 4287f7f5e4eSmrg 429b3062210Smrg# Parse our command line options once, thoroughly. 430b3062210Smrgwhile test "$#" -gt 0 431b3062210Smrgdo 432b3062210Smrg arg="$1" 4337f7f5e4eSmrg shift 43423a0898aSmrg 435b3062210Smrg case $arg in 436b3062210Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 437b3062210Smrg *) optarg= ;; 438b3062210Smrg esac 43923a0898aSmrg 440b3062210Smrg # If the previous option needs an argument, assign it. 441b3062210Smrg if test -n "$prev"; then 442b3062210Smrg case $prev in 443b3062210Smrg execute_dlfiles) 444b3062210Smrg execute_dlfiles="$execute_dlfiles $arg" 445b3062210Smrg ;; 446b3062210Smrg tag) 447b3062210Smrg tagname="$arg" 448b3062210Smrg preserve_args="${preserve_args}=$arg" 449b3062210Smrg 450b3062210Smrg # Check whether tagname contains only valid characters 451b3062210Smrg case $tagname in 452b3062210Smrg *[!-_A-Za-z0-9,/]*) 453b3062210Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 454b3062210Smrg exit $EXIT_FAILURE 455b3062210Smrg ;; 456b3062210Smrg esac 45723a0898aSmrg 458b3062210Smrg case $tagname in 459b3062210Smrg CC) 460b3062210Smrg # Don't test for the "default" C tag, as we know, it's there, but 461b3062210Smrg # not specially marked. 462b3062210Smrg ;; 463b3062210Smrg *) 464b3062210Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 465b3062210Smrg taglist="$taglist $tagname" 466b3062210Smrg # Evaluate the configuration. 467b3062210Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 468b3062210Smrg else 469b3062210Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 470b3062210Smrg fi 471b3062210Smrg ;; 472b3062210Smrg esac 473b3062210Smrg ;; 474b3062210Smrg *) 475b3062210Smrg eval "$prev=\$arg" 476b3062210Smrg ;; 477b3062210Smrg esac 4787f7f5e4eSmrg 479b3062210Smrg prev= 480b3062210Smrg prevopt= 481b3062210Smrg continue 482b3062210Smrg fi 48323a0898aSmrg 484b3062210Smrg # Have we seen a non-optional argument yet? 485b3062210Smrg case $arg in 486b3062210Smrg --help) 487b3062210Smrg show_help=yes 488b3062210Smrg ;; 48923a0898aSmrg 490b3062210Smrg --version) 491b3062210Smrg echo "\ 492b3062210Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 4937f7f5e4eSmrg 494b3062210SmrgCopyright (C) 2008 Free Software Foundation, Inc. 495b3062210SmrgThis is free software; see the source for copying conditions. There is NO 496b3062210Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 497b3062210Smrg exit $? 498b3062210Smrg ;; 49923a0898aSmrg 500b3062210Smrg --config) 501b3062210Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 50223a0898aSmrg # Now print the configurations for the tags. 50323a0898aSmrg for tagname in $taglist; do 504b3062210Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 50523a0898aSmrg done 5067f7f5e4eSmrg exit $? 507b3062210Smrg ;; 50823a0898aSmrg 509b3062210Smrg --debug) 510b3062210Smrg $echo "$progname: enabling shell trace mode" 511b3062210Smrg set -x 512b3062210Smrg preserve_args="$preserve_args $arg" 513b3062210Smrg ;; 514b3062210Smrg 515b3062210Smrg --dry-run | -n) 516b3062210Smrg run=: 517b3062210Smrg ;; 518b3062210Smrg 519b3062210Smrg --features) 520b3062210Smrg $echo "host: $host" 52123a0898aSmrg if test "$build_libtool_libs" = yes; then 522b3062210Smrg $echo "enable shared libraries" 52323a0898aSmrg else 524b3062210Smrg $echo "disable shared libraries" 52523a0898aSmrg fi 52623a0898aSmrg if test "$build_old_libs" = yes; then 527b3062210Smrg $echo "enable static libraries" 52823a0898aSmrg else 529b3062210Smrg $echo "disable static libraries" 53023a0898aSmrg fi 53123a0898aSmrg exit $? 532b3062210Smrg ;; 53323a0898aSmrg 534b3062210Smrg --finish) mode="finish" ;; 53523a0898aSmrg 536b3062210Smrg --mode) prevopt="--mode" prev=mode ;; 537b3062210Smrg --mode=*) mode="$optarg" ;; 5387f7f5e4eSmrg 539b3062210Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 54023a0898aSmrg 541b3062210Smrg --quiet | --silent) 542b3062210Smrg show=: 543b3062210Smrg preserve_args="$preserve_args $arg" 54423a0898aSmrg ;; 545b3062210Smrg 546b3062210Smrg --tag) 547b3062210Smrg prevopt="--tag" 548b3062210Smrg prev=tag 549b3062210Smrg preserve_args="$preserve_args --tag" 55023a0898aSmrg ;; 551b3062210Smrg --tag=*) 552b3062210Smrg set tag "$optarg" ${1+"$@"} 553b3062210Smrg shift 554b3062210Smrg prev=tag 555b3062210Smrg preserve_args="$preserve_args --tag" 55623a0898aSmrg ;; 557b3062210Smrg 558b3062210Smrg -dlopen) 559b3062210Smrg prevopt="-dlopen" 560b3062210Smrg prev=execute_dlfiles 5617f7f5e4eSmrg ;; 562b3062210Smrg 563b3062210Smrg -*) 564b3062210Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 565b3062210Smrg $echo "$help" 1>&2 566b3062210Smrg exit $EXIT_FAILURE 5677f7f5e4eSmrg ;; 568b3062210Smrg 569b3062210Smrg *) 570b3062210Smrg nonopt="$arg" 571b3062210Smrg break 57223a0898aSmrg ;; 57323a0898aSmrg esac 574b3062210Smrgdone 57523a0898aSmrg 576b3062210Smrgif test -n "$prevopt"; then 577b3062210Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 578b3062210Smrg $echo "$help" 1>&2 579b3062210Smrg exit $EXIT_FAILURE 580b3062210Smrgfi 5817f7f5e4eSmrg 582b3062210Smrgcase $disable_libs in 583b3062210Smrgno) 584b3062210Smrg ;; 585b3062210Smrgshared) 586b3062210Smrg build_libtool_libs=no 587b3062210Smrg build_old_libs=yes 588b3062210Smrg ;; 589b3062210Smrgstatic) 590b3062210Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 591b3062210Smrg ;; 592b3062210Smrgesac 5937f7f5e4eSmrg 594b3062210Smrg# If this variable is set in any of the actions, the command in it 595b3062210Smrg# will be execed at the end. This prevents here-documents from being 596b3062210Smrg# left over by shells. 597b3062210Smrgexec_cmd= 5987f7f5e4eSmrg 599b3062210Smrgif test -z "$show_help"; then 6007f7f5e4eSmrg 601b3062210Smrg # Infer the operation mode. 602b3062210Smrg if test -z "$mode"; then 603b3062210Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 604b3062210Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 605b3062210Smrg case $nonopt in 606b3062210Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 607b3062210Smrg mode=link 608b3062210Smrg for arg 609b3062210Smrg do 610b3062210Smrg case $arg in 611b3062210Smrg -c) 612b3062210Smrg mode=compile 613b3062210Smrg break 614b3062210Smrg ;; 615b3062210Smrg esac 616b3062210Smrg done 61723a0898aSmrg ;; 618b3062210Smrg *db | *dbx | *strace | *truss) 619b3062210Smrg mode=execute 6207f7f5e4eSmrg ;; 621b3062210Smrg *install*|cp|mv) 622b3062210Smrg mode=install 623b3062210Smrg ;; 624b3062210Smrg *rm) 625b3062210Smrg mode=uninstall 626b3062210Smrg ;; 627b3062210Smrg *) 628b3062210Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 629b3062210Smrg test -n "$execute_dlfiles" && mode=execute 6307f7f5e4eSmrg 631b3062210Smrg # Just use the default operation mode. 632b3062210Smrg if test -z "$mode"; then 633b3062210Smrg if test -n "$nonopt"; then 634b3062210Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 635b3062210Smrg else 636b3062210Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 637b3062210Smrg fi 63823a0898aSmrg fi 639b3062210Smrg ;; 640b3062210Smrg esac 64123a0898aSmrg fi 64223a0898aSmrg 64323a0898aSmrg # Only execute mode is allowed to have -dlopen flags. 64423a0898aSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 645b3062210Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 646b3062210Smrg $echo "$help" 1>&2 64723a0898aSmrg exit $EXIT_FAILURE 64823a0898aSmrg fi 64923a0898aSmrg 65023a0898aSmrg # Change the help message to a mode-specific one. 65123a0898aSmrg generic_help="$help" 652b3062210Smrg help="Try \`$modename --help --mode=$mode' for more information." 65323a0898aSmrg 654b3062210Smrg # These modes are in order of execution frequency so that they run quickly. 655b3062210Smrg case $mode in 656b3062210Smrg # libtool compile mode 657b3062210Smrg compile) 658b3062210Smrg modename="$modename: compile" 659b3062210Smrg # Get the compilation command and the source file. 660b3062210Smrg base_compile= 661b3062210Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 662b3062210Smrg suppress_opt=yes 663b3062210Smrg suppress_output= 664b3062210Smrg arg_mode=normal 665b3062210Smrg libobj= 666b3062210Smrg later= 66723a0898aSmrg 668b3062210Smrg for arg 669b3062210Smrg do 670b3062210Smrg case $arg_mode in 671b3062210Smrg arg ) 672b3062210Smrg # do not "continue". Instead, add this to base_compile 673b3062210Smrg lastarg="$arg" 674b3062210Smrg arg_mode=normal 675b3062210Smrg ;; 67623a0898aSmrg 677b3062210Smrg target ) 678b3062210Smrg libobj="$arg" 679b3062210Smrg arg_mode=normal 680b3062210Smrg continue 681b3062210Smrg ;; 68223a0898aSmrg 683b3062210Smrg normal ) 684b3062210Smrg # Accept any command-line options. 685b3062210Smrg case $arg in 686b3062210Smrg -o) 687b3062210Smrg if test -n "$libobj" ; then 688b3062210Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 689b3062210Smrg exit $EXIT_FAILURE 690b3062210Smrg fi 691b3062210Smrg arg_mode=target 692b3062210Smrg continue 693b3062210Smrg ;; 69423a0898aSmrg 695b3062210Smrg -static | -prefer-pic | -prefer-non-pic) 696b3062210Smrg later="$later $arg" 697b3062210Smrg continue 698b3062210Smrg ;; 6997f7f5e4eSmrg 7007f7f5e4eSmrg -no-suppress) 70123a0898aSmrg suppress_opt=no 70223a0898aSmrg continue 70323a0898aSmrg ;; 70423a0898aSmrg 70523a0898aSmrg -Xcompiler) 70623a0898aSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 70723a0898aSmrg continue # The current "srcfile" will either be retained or 70823a0898aSmrg ;; # replaced later. I would guess that would be a bug. 70923a0898aSmrg 71023a0898aSmrg -Wc,*) 711b3062210Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 71223a0898aSmrg lastarg= 71323a0898aSmrg save_ifs="$IFS"; IFS=',' 714b3062210Smrg for arg in $args; do 71523a0898aSmrg IFS="$save_ifs" 716b3062210Smrg 717b3062210Smrg # Double-quote args containing other shell metacharacters. 718b3062210Smrg # Many Bourne shells cannot handle close brackets correctly 719b3062210Smrg # in scan sets, so we specify it separately. 720b3062210Smrg case $arg in 721b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722b3062210Smrg arg="\"$arg\"" 723b3062210Smrg ;; 724b3062210Smrg esac 725b3062210Smrg lastarg="$lastarg $arg" 72623a0898aSmrg done 72723a0898aSmrg IFS="$save_ifs" 728b3062210Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 72923a0898aSmrg 73023a0898aSmrg # Add the arguments to base_compile. 73123a0898aSmrg base_compile="$base_compile $lastarg" 73223a0898aSmrg continue 73323a0898aSmrg ;; 73423a0898aSmrg 735b3062210Smrg * ) 73623a0898aSmrg # Accept the current argument as the source file. 73723a0898aSmrg # The previous "srcfile" becomes the current argument. 73823a0898aSmrg # 73923a0898aSmrg lastarg="$srcfile" 74023a0898aSmrg srcfile="$arg" 74123a0898aSmrg ;; 74223a0898aSmrg esac # case $arg 74323a0898aSmrg ;; 74423a0898aSmrg esac # case $arg_mode 74523a0898aSmrg 74623a0898aSmrg # Aesthetically quote the previous argument. 747b3062210Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 748b3062210Smrg 749b3062210Smrg case $lastarg in 750b3062210Smrg # Double-quote args containing other shell metacharacters. 751b3062210Smrg # Many Bourne shells cannot handle close brackets correctly 752b3062210Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 753b3062210Smrg # in scan sets (worked around with variable expansion), 754b3062210Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 755b3062210Smrg # at all, so we specify them separately. 756b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 757b3062210Smrg lastarg="\"$lastarg\"" 758b3062210Smrg ;; 759b3062210Smrg esac 760b3062210Smrg 761b3062210Smrg base_compile="$base_compile $lastarg" 76223a0898aSmrg done # for arg 76323a0898aSmrg 76423a0898aSmrg case $arg_mode in 76523a0898aSmrg arg) 766b3062210Smrg $echo "$modename: you must specify an argument for -Xcompile" 767b3062210Smrg exit $EXIT_FAILURE 76823a0898aSmrg ;; 76923a0898aSmrg target) 770b3062210Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 771b3062210Smrg exit $EXIT_FAILURE 77223a0898aSmrg ;; 77323a0898aSmrg *) 77423a0898aSmrg # Get the name of the library object. 775b3062210Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 77623a0898aSmrg ;; 77723a0898aSmrg esac 77823a0898aSmrg 77923a0898aSmrg # Recognize several different file suffixes. 78023a0898aSmrg # If the user specifies -o file.o, it is replaced with file.lo 781b3062210Smrg xform='[cCFSifmso]' 78223a0898aSmrg case $libobj in 783b3062210Smrg *.ada) xform=ada ;; 784b3062210Smrg *.adb) xform=adb ;; 785b3062210Smrg *.ads) xform=ads ;; 786b3062210Smrg *.asm) xform=asm ;; 787b3062210Smrg *.c++) xform=c++ ;; 788b3062210Smrg *.cc) xform=cc ;; 789b3062210Smrg *.ii) xform=ii ;; 790b3062210Smrg *.class) xform=class ;; 791b3062210Smrg *.cpp) xform=cpp ;; 792b3062210Smrg *.cxx) xform=cxx ;; 793b3062210Smrg *.[fF][09]?) xform=[fF][09]. ;; 794b3062210Smrg *.for) xform=for ;; 795b3062210Smrg *.java) xform=java ;; 796b3062210Smrg *.obj) xform=obj ;; 797b3062210Smrg *.sx) xform=sx ;; 79823a0898aSmrg esac 79923a0898aSmrg 800b3062210Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 801b3062210Smrg 80223a0898aSmrg case $libobj in 803b3062210Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 80423a0898aSmrg *) 805b3062210Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 806b3062210Smrg exit $EXIT_FAILURE 80723a0898aSmrg ;; 80823a0898aSmrg esac 80923a0898aSmrg 81023a0898aSmrg func_infer_tag $base_compile 81123a0898aSmrg 81223a0898aSmrg for arg in $later; do 81323a0898aSmrg case $arg in 81423a0898aSmrg -static) 81523a0898aSmrg build_old_libs=yes 81623a0898aSmrg continue 81723a0898aSmrg ;; 81823a0898aSmrg 81923a0898aSmrg -prefer-pic) 82023a0898aSmrg pic_mode=yes 82123a0898aSmrg continue 82223a0898aSmrg ;; 82323a0898aSmrg 82423a0898aSmrg -prefer-non-pic) 82523a0898aSmrg pic_mode=no 82623a0898aSmrg continue 82723a0898aSmrg ;; 82823a0898aSmrg esac 82923a0898aSmrg done 83023a0898aSmrg 831b3062210Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 832b3062210Smrg case $qlibobj in 833b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 834b3062210Smrg qlibobj="\"$qlibobj\"" ;; 835b3062210Smrg esac 836b3062210Smrg test "X$libobj" != "X$qlibobj" \ 837b3062210Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 838b3062210Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 839b3062210Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 840b3062210Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 841b3062210Smrg if test "X$xdir" = "X$obj"; then 842b3062210Smrg xdir= 843b3062210Smrg else 844b3062210Smrg xdir=$xdir/ 845b3062210Smrg fi 84623a0898aSmrg lobj=${xdir}$objdir/$objname 84723a0898aSmrg 848b3062210Smrg if test -z "$base_compile"; then 849b3062210Smrg $echo "$modename: you must specify a compilation command" 1>&2 850b3062210Smrg $echo "$help" 1>&2 851b3062210Smrg exit $EXIT_FAILURE 852b3062210Smrg fi 85323a0898aSmrg 85423a0898aSmrg # Delete any leftover library objects. 85523a0898aSmrg if test "$build_old_libs" = yes; then 85623a0898aSmrg removelist="$obj $lobj $libobj ${libobj}T" 85723a0898aSmrg else 85823a0898aSmrg removelist="$lobj $libobj ${libobj}T" 85923a0898aSmrg fi 86023a0898aSmrg 861b3062210Smrg $run $rm $removelist 862b3062210Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 863b3062210Smrg 86423a0898aSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 86523a0898aSmrg case $host_os in 866b3062210Smrg cygwin* | mingw* | pw32* | os2*) 86723a0898aSmrg pic_mode=default 86823a0898aSmrg ;; 86923a0898aSmrg esac 87023a0898aSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 87123a0898aSmrg # non-PIC code in shared libraries is not supported 87223a0898aSmrg pic_mode=default 87323a0898aSmrg fi 87423a0898aSmrg 87523a0898aSmrg # Calculate the filename of the output object if compiler does 87623a0898aSmrg # not support -o with -c 87723a0898aSmrg if test "$compiler_c_o" = no; then 878b3062210Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 87923a0898aSmrg lockfile="$output_obj.lock" 880b3062210Smrg removelist="$removelist $output_obj $lockfile" 881b3062210Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 88223a0898aSmrg else 88323a0898aSmrg output_obj= 88423a0898aSmrg need_locks=no 88523a0898aSmrg lockfile= 88623a0898aSmrg fi 88723a0898aSmrg 88823a0898aSmrg # Lock this critical section if it is needed 88923a0898aSmrg # We use this script file to make the link, it avoids creating a new file 89023a0898aSmrg if test "$need_locks" = yes; then 891b3062210Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 892b3062210Smrg $show "Waiting for $lockfile to be removed" 89323a0898aSmrg sleep 2 89423a0898aSmrg done 89523a0898aSmrg elif test "$need_locks" = warn; then 89623a0898aSmrg if test -f "$lockfile"; then 897b3062210Smrg $echo "\ 89823a0898aSmrg*** ERROR, $lockfile exists and contains: 89923a0898aSmrg`cat $lockfile 2>/dev/null` 90023a0898aSmrg 90123a0898aSmrgThis indicates that another process is trying to use the same 90223a0898aSmrgtemporary object file, and libtool could not work around it because 90323a0898aSmrgyour compiler does not support \`-c' and \`-o' together. If you 90423a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better 90523a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better 90623a0898aSmrgcompiler." 90723a0898aSmrg 908b3062210Smrg $run $rm $removelist 90923a0898aSmrg exit $EXIT_FAILURE 91023a0898aSmrg fi 911b3062210Smrg $echo "$srcfile" > "$lockfile" 91223a0898aSmrg fi 91323a0898aSmrg 91423a0898aSmrg if test -n "$fix_srcfile_path"; then 91523a0898aSmrg eval srcfile=\"$fix_srcfile_path\" 91623a0898aSmrg fi 917b3062210Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 918b3062210Smrg case $qsrcfile in 919b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 920b3062210Smrg qsrcfile="\"$qsrcfile\"" ;; 921b3062210Smrg esac 922b3062210Smrg 923b3062210Smrg $run $rm "$libobj" "${libobj}T" 924b3062210Smrg 925b3062210Smrg # Create a libtool object file (analogous to a ".la" file), 926b3062210Smrg # but don't create it if we're doing a dry run. 927b3062210Smrg test -z "$run" && cat > ${libobj}T <<EOF 928b3062210Smrg# $libobj - a libtool object file 929b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 930b3062210Smrg# 931b3062210Smrg# Please DO NOT delete this file! 932b3062210Smrg# It is necessary for linking the library. 933b3062210Smrg 934b3062210Smrg# Name of the PIC object. 935b3062210SmrgEOF 93623a0898aSmrg 93723a0898aSmrg # Only build a PIC object if we are building libtool libraries. 93823a0898aSmrg if test "$build_libtool_libs" = yes; then 93923a0898aSmrg # Without this assignment, base_compile gets emptied. 94023a0898aSmrg fbsd_hideous_sh_bug=$base_compile 94123a0898aSmrg 94223a0898aSmrg if test "$pic_mode" != no; then 94323a0898aSmrg command="$base_compile $qsrcfile $pic_flag" 94423a0898aSmrg else 94523a0898aSmrg # Don't build PIC code 94623a0898aSmrg command="$base_compile $qsrcfile" 94723a0898aSmrg fi 94823a0898aSmrg 949b3062210Smrg if test ! -d "${xdir}$objdir"; then 950b3062210Smrg $show "$mkdir ${xdir}$objdir" 951b3062210Smrg $run $mkdir ${xdir}$objdir 952b3062210Smrg exit_status=$? 953b3062210Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 954b3062210Smrg exit $exit_status 955b3062210Smrg fi 956b3062210Smrg fi 95723a0898aSmrg 95823a0898aSmrg if test -z "$output_obj"; then 95923a0898aSmrg # Place PIC objects in $objdir 96023a0898aSmrg command="$command -o $lobj" 96123a0898aSmrg fi 96223a0898aSmrg 963b3062210Smrg $run $rm "$lobj" "$output_obj" 964b3062210Smrg 965b3062210Smrg $show "$command" 966b3062210Smrg if $run eval $lt_env "$command"; then : 967b3062210Smrg else 968b3062210Smrg test -n "$output_obj" && $run $rm $removelist 969b3062210Smrg exit $EXIT_FAILURE 970b3062210Smrg fi 97123a0898aSmrg 97223a0898aSmrg if test "$need_locks" = warn && 97323a0898aSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 974b3062210Smrg $echo "\ 97523a0898aSmrg*** ERROR, $lockfile contains: 97623a0898aSmrg`cat $lockfile 2>/dev/null` 97723a0898aSmrg 97823a0898aSmrgbut it should contain: 97923a0898aSmrg$srcfile 98023a0898aSmrg 98123a0898aSmrgThis indicates that another process is trying to use the same 98223a0898aSmrgtemporary object file, and libtool could not work around it because 98323a0898aSmrgyour compiler does not support \`-c' and \`-o' together. If you 98423a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better 98523a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better 98623a0898aSmrgcompiler." 98723a0898aSmrg 988b3062210Smrg $run $rm $removelist 98923a0898aSmrg exit $EXIT_FAILURE 99023a0898aSmrg fi 99123a0898aSmrg 99223a0898aSmrg # Just move the object if needed, then go on to compile the next one 99323a0898aSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 994b3062210Smrg $show "$mv $output_obj $lobj" 995b3062210Smrg if $run $mv $output_obj $lobj; then : 996b3062210Smrg else 997b3062210Smrg error=$? 998b3062210Smrg $run $rm $removelist 999b3062210Smrg exit $error 1000b3062210Smrg fi 100123a0898aSmrg fi 100223a0898aSmrg 1003b3062210Smrg # Append the name of the PIC object to the libtool object file. 1004b3062210Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1005b3062210Smrgpic_object='$objdir/$objname' 1006b3062210Smrg 1007b3062210SmrgEOF 1008b3062210Smrg 100923a0898aSmrg # Allow error messages only from the first compilation. 101023a0898aSmrg if test "$suppress_opt" = yes; then 1011b3062210Smrg suppress_output=' >/dev/null 2>&1' 101223a0898aSmrg fi 1013b3062210Smrg else 1014b3062210Smrg # No PIC object so indicate it doesn't exist in the libtool 1015b3062210Smrg # object file. 1016b3062210Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1017b3062210Smrgpic_object=none 1018b3062210Smrg 1019b3062210SmrgEOF 102023a0898aSmrg fi 102123a0898aSmrg 102223a0898aSmrg # Only build a position-dependent object if we build old libraries. 102323a0898aSmrg if test "$build_old_libs" = yes; then 102423a0898aSmrg if test "$pic_mode" != yes; then 102523a0898aSmrg # Don't build PIC code 1026b3062210Smrg command="$base_compile $qsrcfile" 102723a0898aSmrg else 102823a0898aSmrg command="$base_compile $qsrcfile $pic_flag" 102923a0898aSmrg fi 103023a0898aSmrg if test "$compiler_c_o" = yes; then 103123a0898aSmrg command="$command -o $obj" 103223a0898aSmrg fi 103323a0898aSmrg 103423a0898aSmrg # Suppress compiler output if we already did a PIC compilation. 103523a0898aSmrg command="$command$suppress_output" 1036b3062210Smrg $run $rm "$obj" "$output_obj" 1037b3062210Smrg $show "$command" 1038b3062210Smrg if $run eval $lt_env "$command"; then : 1039b3062210Smrg else 1040b3062210Smrg $run $rm $removelist 1041b3062210Smrg exit $EXIT_FAILURE 1042b3062210Smrg fi 104323a0898aSmrg 104423a0898aSmrg if test "$need_locks" = warn && 104523a0898aSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1046b3062210Smrg $echo "\ 104723a0898aSmrg*** ERROR, $lockfile contains: 104823a0898aSmrg`cat $lockfile 2>/dev/null` 104923a0898aSmrg 105023a0898aSmrgbut it should contain: 105123a0898aSmrg$srcfile 105223a0898aSmrg 105323a0898aSmrgThis indicates that another process is trying to use the same 105423a0898aSmrgtemporary object file, and libtool could not work around it because 105523a0898aSmrgyour compiler does not support \`-c' and \`-o' together. If you 105623a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better 105723a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better 105823a0898aSmrgcompiler." 105923a0898aSmrg 1060b3062210Smrg $run $rm $removelist 106123a0898aSmrg exit $EXIT_FAILURE 106223a0898aSmrg fi 106323a0898aSmrg 106423a0898aSmrg # Just move the object if needed 106523a0898aSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1066b3062210Smrg $show "$mv $output_obj $obj" 1067b3062210Smrg if $run $mv $output_obj $obj; then : 1068b3062210Smrg else 1069b3062210Smrg error=$? 1070b3062210Smrg $run $rm $removelist 1071b3062210Smrg exit $error 1072b3062210Smrg fi 107323a0898aSmrg fi 1074b3062210Smrg 1075b3062210Smrg # Append the name of the non-PIC object the libtool object file. 1076b3062210Smrg # Only append if the libtool object file exists. 1077b3062210Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1078b3062210Smrg# Name of the non-PIC object. 1079b3062210Smrgnon_pic_object='$objname' 1080b3062210Smrg 1081b3062210SmrgEOF 1082b3062210Smrg else 1083b3062210Smrg # Append the name of the non-PIC object the libtool object file. 1084b3062210Smrg # Only append if the libtool object file exists. 1085b3062210Smrg test -z "$run" && cat >> ${libobj}T <<EOF 1086b3062210Smrg# Name of the non-PIC object. 1087b3062210Smrgnon_pic_object=none 1088b3062210Smrg 1089b3062210SmrgEOF 109023a0898aSmrg fi 109123a0898aSmrg 1092b3062210Smrg $run $mv "${libobj}T" "${libobj}" 109323a0898aSmrg 1094b3062210Smrg # Unlock the critical section if it was locked 1095b3062210Smrg if test "$need_locks" != no; then 1096b3062210Smrg $run $rm "$lockfile" 1097b3062210Smrg fi 109823a0898aSmrg 109923a0898aSmrg exit $EXIT_SUCCESS 1100b3062210Smrg ;; 110123a0898aSmrg 1102b3062210Smrg # libtool link mode 1103b3062210Smrg link | relink) 1104b3062210Smrg modename="$modename: link" 1105b3062210Smrg case $host in 1106b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1107b3062210Smrg # It is impossible to link a dll without this setting, and 1108b3062210Smrg # we shouldn't force the makefile maintainer to figure out 1109b3062210Smrg # which system we are compiling for in order to pass an extra 1110b3062210Smrg # flag for every libtool invocation. 1111b3062210Smrg # allow_undefined=no 111223a0898aSmrg 1113b3062210Smrg # FIXME: Unfortunately, there are problems with the above when trying 1114b3062210Smrg # to make a dll which has undefined symbols, in which case not 1115b3062210Smrg # even a static library is built. For now, we need to specify 1116b3062210Smrg # -no-undefined on the libtool link line when we can be certain 1117b3062210Smrg # that all symbols are satisfied, otherwise we get a static library. 1118b3062210Smrg allow_undefined=yes 1119b3062210Smrg ;; 1120b3062210Smrg *) 1121b3062210Smrg allow_undefined=yes 1122b3062210Smrg ;; 1123b3062210Smrg esac 1124b3062210Smrg libtool_args="$nonopt" 1125b3062210Smrg base_compile="$nonopt $@" 1126b3062210Smrg compile_command="$nonopt" 1127b3062210Smrg finalize_command="$nonopt" 112823a0898aSmrg 1129b3062210Smrg compile_rpath= 1130b3062210Smrg finalize_rpath= 1131b3062210Smrg compile_shlibpath= 1132b3062210Smrg finalize_shlibpath= 1133b3062210Smrg convenience= 1134b3062210Smrg old_convenience= 1135b3062210Smrg deplibs= 1136b3062210Smrg old_deplibs= 1137b3062210Smrg compiler_flags= 1138b3062210Smrg linker_flags= 1139b3062210Smrg dllsearchpath= 1140b3062210Smrg lib_search_path=`pwd` 1141b3062210Smrg inst_prefix_dir= 114223a0898aSmrg 1143b3062210Smrg avoid_version=no 1144b3062210Smrg dlfiles= 1145b3062210Smrg dlprefiles= 1146b3062210Smrg dlself=no 1147b3062210Smrg export_dynamic=no 1148b3062210Smrg export_symbols= 1149b3062210Smrg export_symbols_regex= 1150b3062210Smrg generated= 1151b3062210Smrg libobjs= 1152b3062210Smrg ltlibs= 1153b3062210Smrg module=no 1154b3062210Smrg no_install=no 1155b3062210Smrg objs= 1156b3062210Smrg non_pic_objects= 1157b3062210Smrg notinst_path= # paths that contain not-installed libtool libraries 1158b3062210Smrg precious_files_regex= 1159b3062210Smrg prefer_static_libs=no 1160b3062210Smrg preload=no 1161b3062210Smrg prev= 1162b3062210Smrg prevarg= 1163b3062210Smrg release= 1164b3062210Smrg rpath= 1165b3062210Smrg xrpath= 1166b3062210Smrg perm_rpath= 1167b3062210Smrg temp_rpath= 1168b3062210Smrg thread_safe=no 1169b3062210Smrg vinfo= 1170b3062210Smrg vinfo_number=no 1171b3062210Smrg single_module="${wl}-single_module" 117223a0898aSmrg 1173b3062210Smrg func_infer_tag $base_compile 117423a0898aSmrg 1175b3062210Smrg # We need to know -static, to get the right output filenames. 1176b3062210Smrg for arg 1177b3062210Smrg do 1178b3062210Smrg case $arg in 1179b3062210Smrg -all-static | -static | -static-libtool-libs) 1180b3062210Smrg case $arg in 1181b3062210Smrg -all-static) 1182b3062210Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1183b3062210Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1184b3062210Smrg fi 1185b3062210Smrg if test -n "$link_static_flag"; then 1186b3062210Smrg dlopen_self=$dlopen_self_static 1187b3062210Smrg fi 1188b3062210Smrg prefer_static_libs=yes 1189b3062210Smrg ;; 1190b3062210Smrg -static) 1191b3062210Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1192b3062210Smrg dlopen_self=$dlopen_self_static 1193b3062210Smrg fi 1194b3062210Smrg prefer_static_libs=built 1195b3062210Smrg ;; 1196b3062210Smrg -static-libtool-libs) 1197b3062210Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1198b3062210Smrg dlopen_self=$dlopen_self_static 1199b3062210Smrg fi 1200b3062210Smrg prefer_static_libs=yes 1201b3062210Smrg ;; 1202b3062210Smrg esac 1203b3062210Smrg build_libtool_libs=no 1204b3062210Smrg build_old_libs=yes 1205b3062210Smrg break 1206b3062210Smrg ;; 1207b3062210Smrg esac 1208b3062210Smrg done 120923a0898aSmrg 1210b3062210Smrg # See if our shared archives depend on static archives. 1211b3062210Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 121223a0898aSmrg 1213b3062210Smrg # Go through the arguments, transforming them on the way. 1214b3062210Smrg while test "$#" -gt 0; do 1215b3062210Smrg arg="$1" 1216b3062210Smrg shift 1217b3062210Smrg case $arg in 1218b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1219b3062210Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1220b3062210Smrg ;; 1221b3062210Smrg *) qarg=$arg ;; 1222b3062210Smrg esac 1223b3062210Smrg libtool_args="$libtool_args $qarg" 122423a0898aSmrg 1225b3062210Smrg # If the previous option needs an argument, assign it. 1226b3062210Smrg if test -n "$prev"; then 1227b3062210Smrg case $prev in 1228b3062210Smrg output) 1229b3062210Smrg compile_command="$compile_command @OUTPUT@" 1230b3062210Smrg finalize_command="$finalize_command @OUTPUT@" 1231b3062210Smrg ;; 1232b3062210Smrg esac 123323a0898aSmrg 1234b3062210Smrg case $prev in 1235b3062210Smrg dlfiles|dlprefiles) 1236b3062210Smrg if test "$preload" = no; then 1237b3062210Smrg # Add the symbol object into the linking commands. 1238b3062210Smrg compile_command="$compile_command @SYMFILE@" 1239b3062210Smrg finalize_command="$finalize_command @SYMFILE@" 1240b3062210Smrg preload=yes 1241b3062210Smrg fi 1242b3062210Smrg case $arg in 1243b3062210Smrg *.la | *.lo) ;; # We handle these cases below. 1244b3062210Smrg force) 1245b3062210Smrg if test "$dlself" = no; then 1246b3062210Smrg dlself=needless 1247b3062210Smrg export_dynamic=yes 1248b3062210Smrg fi 1249b3062210Smrg prev= 1250b3062210Smrg continue 1251b3062210Smrg ;; 1252b3062210Smrg self) 1253b3062210Smrg if test "$prev" = dlprefiles; then 1254b3062210Smrg dlself=yes 1255b3062210Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1256b3062210Smrg dlself=yes 1257b3062210Smrg else 1258b3062210Smrg dlself=needless 1259b3062210Smrg export_dynamic=yes 1260b3062210Smrg fi 1261b3062210Smrg prev= 1262b3062210Smrg continue 1263b3062210Smrg ;; 1264b3062210Smrg *) 1265b3062210Smrg if test "$prev" = dlfiles; then 1266b3062210Smrg dlfiles="$dlfiles $arg" 1267b3062210Smrg else 1268b3062210Smrg dlprefiles="$dlprefiles $arg" 1269b3062210Smrg fi 1270b3062210Smrg prev= 1271b3062210Smrg continue 1272b3062210Smrg ;; 1273b3062210Smrg esac 1274b3062210Smrg ;; 1275b3062210Smrg expsyms) 1276b3062210Smrg export_symbols="$arg" 1277b3062210Smrg if test ! -f "$arg"; then 1278b3062210Smrg $echo "$modename: symbol file \`$arg' does not exist" 1279b3062210Smrg exit $EXIT_FAILURE 1280b3062210Smrg fi 1281b3062210Smrg prev= 1282b3062210Smrg continue 1283b3062210Smrg ;; 1284b3062210Smrg expsyms_regex) 1285b3062210Smrg export_symbols_regex="$arg" 1286b3062210Smrg prev= 1287b3062210Smrg continue 1288b3062210Smrg ;; 1289b3062210Smrg inst_prefix) 1290b3062210Smrg inst_prefix_dir="$arg" 1291b3062210Smrg prev= 1292b3062210Smrg continue 1293b3062210Smrg ;; 1294b3062210Smrg precious_regex) 1295b3062210Smrg precious_files_regex="$arg" 1296b3062210Smrg prev= 1297b3062210Smrg continue 1298b3062210Smrg ;; 1299b3062210Smrg release) 1300b3062210Smrg release="-$arg" 1301b3062210Smrg prev= 1302b3062210Smrg continue 1303b3062210Smrg ;; 1304b3062210Smrg objectlist) 1305b3062210Smrg if test -f "$arg"; then 1306b3062210Smrg save_arg=$arg 1307b3062210Smrg moreargs= 1308b3062210Smrg for fil in `cat $save_arg` 1309b3062210Smrg do 1310b3062210Smrg# moreargs="$moreargs $fil" 1311b3062210Smrg arg=$fil 1312b3062210Smrg # A libtool-controlled object. 131323a0898aSmrg 1314b3062210Smrg # Check to see that this really is a libtool object. 1315b3062210Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1316b3062210Smrg pic_object= 1317b3062210Smrg non_pic_object= 131823a0898aSmrg 1319b3062210Smrg # Read the .lo file 1320b3062210Smrg # If there is no directory component, then add one. 1321b3062210Smrg case $arg in 1322b3062210Smrg */* | *\\*) . $arg ;; 1323b3062210Smrg *) . ./$arg ;; 1324b3062210Smrg esac 132523a0898aSmrg 1326b3062210Smrg if test -z "$pic_object" || \ 1327b3062210Smrg test -z "$non_pic_object" || 1328b3062210Smrg test "$pic_object" = none && \ 1329b3062210Smrg test "$non_pic_object" = none; then 1330b3062210Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1331b3062210Smrg exit $EXIT_FAILURE 1332b3062210Smrg fi 133323a0898aSmrg 1334b3062210Smrg # Extract subdirectory from the argument. 1335b3062210Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1336b3062210Smrg if test "X$xdir" = "X$arg"; then 1337b3062210Smrg xdir= 1338b3062210Smrg else 1339b3062210Smrg xdir="$xdir/" 1340b3062210Smrg fi 134123a0898aSmrg 1342b3062210Smrg if test "$pic_object" != none; then 1343b3062210Smrg # Prepend the subdirectory the object is found in. 1344b3062210Smrg pic_object="$xdir$pic_object" 134523a0898aSmrg 1346b3062210Smrg if test "$prev" = dlfiles; then 1347b3062210Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1348b3062210Smrg dlfiles="$dlfiles $pic_object" 1349b3062210Smrg prev= 1350b3062210Smrg continue 1351b3062210Smrg else 1352b3062210Smrg # If libtool objects are unsupported, then we need to preload. 1353b3062210Smrg prev=dlprefiles 1354b3062210Smrg fi 1355b3062210Smrg fi 135623a0898aSmrg 1357b3062210Smrg # CHECK ME: I think I busted this. -Ossama 1358b3062210Smrg if test "$prev" = dlprefiles; then 1359b3062210Smrg # Preload the old-style object. 1360b3062210Smrg dlprefiles="$dlprefiles $pic_object" 1361b3062210Smrg prev= 1362b3062210Smrg fi 136323a0898aSmrg 1364b3062210Smrg # A PIC object. 1365b3062210Smrg libobjs="$libobjs $pic_object" 1366b3062210Smrg arg="$pic_object" 1367b3062210Smrg fi 136823a0898aSmrg 1369b3062210Smrg # Non-PIC object. 1370b3062210Smrg if test "$non_pic_object" != none; then 1371b3062210Smrg # Prepend the subdirectory the object is found in. 1372b3062210Smrg non_pic_object="$xdir$non_pic_object" 137323a0898aSmrg 1374b3062210Smrg # A standard non-PIC object 1375b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1376b3062210Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1377b3062210Smrg arg="$non_pic_object" 1378b3062210Smrg fi 1379b3062210Smrg else 1380b3062210Smrg # If the PIC object exists, use it instead. 1381b3062210Smrg # $xdir was prepended to $pic_object above. 1382b3062210Smrg non_pic_object="$pic_object" 1383b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1384b3062210Smrg fi 1385b3062210Smrg else 1386b3062210Smrg # Only an error if not doing a dry-run. 1387b3062210Smrg if test -z "$run"; then 1388b3062210Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1389b3062210Smrg exit $EXIT_FAILURE 1390b3062210Smrg else 1391b3062210Smrg # Dry-run case. 139223a0898aSmrg 1393b3062210Smrg # Extract subdirectory from the argument. 1394b3062210Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1395b3062210Smrg if test "X$xdir" = "X$arg"; then 1396b3062210Smrg xdir= 1397b3062210Smrg else 1398b3062210Smrg xdir="$xdir/" 1399b3062210Smrg fi 140023a0898aSmrg 1401b3062210Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1402b3062210Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1403b3062210Smrg libobjs="$libobjs $pic_object" 1404b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1405b3062210Smrg fi 1406b3062210Smrg fi 1407b3062210Smrg done 1408b3062210Smrg else 1409b3062210Smrg $echo "$modename: link input file \`$save_arg' does not exist" 1410b3062210Smrg exit $EXIT_FAILURE 1411b3062210Smrg fi 1412b3062210Smrg arg=$save_arg 1413b3062210Smrg prev= 1414b3062210Smrg continue 1415b3062210Smrg ;; 1416b3062210Smrg rpath | xrpath) 1417b3062210Smrg # We need an absolute path. 1418b3062210Smrg case $arg in 1419b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1420b3062210Smrg *) 1421b3062210Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1422b3062210Smrg exit $EXIT_FAILURE 1423b3062210Smrg ;; 1424b3062210Smrg esac 1425b3062210Smrg if test "$prev" = rpath; then 1426b3062210Smrg case "$rpath " in 1427b3062210Smrg *" $arg "*) ;; 1428b3062210Smrg *) rpath="$rpath $arg" ;; 1429b3062210Smrg esac 1430b3062210Smrg else 1431b3062210Smrg case "$xrpath " in 1432b3062210Smrg *" $arg "*) ;; 1433b3062210Smrg *) xrpath="$xrpath $arg" ;; 1434b3062210Smrg esac 1435b3062210Smrg fi 1436b3062210Smrg prev= 1437b3062210Smrg continue 1438b3062210Smrg ;; 1439b3062210Smrg xcompiler) 1440b3062210Smrg compiler_flags="$compiler_flags $qarg" 1441b3062210Smrg prev= 1442b3062210Smrg compile_command="$compile_command $qarg" 1443b3062210Smrg finalize_command="$finalize_command $qarg" 1444b3062210Smrg continue 1445b3062210Smrg ;; 1446b3062210Smrg xlinker) 1447b3062210Smrg linker_flags="$linker_flags $qarg" 1448b3062210Smrg compiler_flags="$compiler_flags $wl$qarg" 1449b3062210Smrg prev= 1450b3062210Smrg compile_command="$compile_command $wl$qarg" 1451b3062210Smrg finalize_command="$finalize_command $wl$qarg" 1452b3062210Smrg continue 1453b3062210Smrg ;; 1454b3062210Smrg xcclinker) 1455b3062210Smrg linker_flags="$linker_flags $qarg" 1456b3062210Smrg compiler_flags="$compiler_flags $qarg" 1457b3062210Smrg prev= 1458b3062210Smrg compile_command="$compile_command $qarg" 1459b3062210Smrg finalize_command="$finalize_command $qarg" 1460b3062210Smrg continue 1461b3062210Smrg ;; 1462b3062210Smrg shrext) 1463b3062210Smrg shrext_cmds="$arg" 1464b3062210Smrg prev= 1465b3062210Smrg continue 1466b3062210Smrg ;; 1467b3062210Smrg darwin_framework|darwin_framework_skip) 1468b3062210Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1469b3062210Smrg compile_command="$compile_command $arg" 1470b3062210Smrg finalize_command="$finalize_command $arg" 1471b3062210Smrg prev= 1472b3062210Smrg continue 1473b3062210Smrg ;; 1474b3062210Smrg *) 1475b3062210Smrg eval "$prev=\"\$arg\"" 1476b3062210Smrg prev= 1477b3062210Smrg continue 1478b3062210Smrg ;; 1479b3062210Smrg esac 1480b3062210Smrg fi # test -n "$prev" 148123a0898aSmrg 1482b3062210Smrg prevarg="$arg" 148323a0898aSmrg 1484b3062210Smrg case $arg in 1485b3062210Smrg -all-static) 1486b3062210Smrg if test -n "$link_static_flag"; then 1487b3062210Smrg compile_command="$compile_command $link_static_flag" 1488b3062210Smrg finalize_command="$finalize_command $link_static_flag" 1489b3062210Smrg fi 1490b3062210Smrg continue 1491b3062210Smrg ;; 149223a0898aSmrg 1493b3062210Smrg -allow-undefined) 1494b3062210Smrg # FIXME: remove this flag sometime in the future. 1495b3062210Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1496b3062210Smrg continue 1497b3062210Smrg ;; 149823a0898aSmrg 1499b3062210Smrg -avoid-version) 1500b3062210Smrg avoid_version=yes 1501b3062210Smrg continue 1502b3062210Smrg ;; 150323a0898aSmrg 1504b3062210Smrg -dlopen) 1505b3062210Smrg prev=dlfiles 1506b3062210Smrg continue 1507b3062210Smrg ;; 150823a0898aSmrg 1509b3062210Smrg -dlpreopen) 1510b3062210Smrg prev=dlprefiles 1511b3062210Smrg continue 1512b3062210Smrg ;; 151323a0898aSmrg 1514b3062210Smrg -export-dynamic) 1515b3062210Smrg export_dynamic=yes 1516b3062210Smrg continue 1517b3062210Smrg ;; 151823a0898aSmrg 1519b3062210Smrg -export-symbols | -export-symbols-regex) 1520b3062210Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1521b3062210Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1522b3062210Smrg exit $EXIT_FAILURE 1523b3062210Smrg fi 1524b3062210Smrg if test "X$arg" = "X-export-symbols"; then 1525b3062210Smrg prev=expsyms 1526b3062210Smrg else 1527b3062210Smrg prev=expsyms_regex 1528b3062210Smrg fi 1529b3062210Smrg continue 1530b3062210Smrg ;; 153123a0898aSmrg 1532b3062210Smrg -framework|-arch|-isysroot) 1533b3062210Smrg case " $CC " in 1534b3062210Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1535b3062210Smrg prev=darwin_framework_skip ;; 1536b3062210Smrg *) compiler_flags="$compiler_flags $arg" 1537b3062210Smrg prev=darwin_framework ;; 1538b3062210Smrg esac 1539b3062210Smrg compile_command="$compile_command $arg" 1540b3062210Smrg finalize_command="$finalize_command $arg" 1541b3062210Smrg continue 1542b3062210Smrg ;; 154323a0898aSmrg 1544b3062210Smrg -inst-prefix-dir) 1545b3062210Smrg prev=inst_prefix 1546b3062210Smrg continue 1547b3062210Smrg ;; 154823a0898aSmrg 1549b3062210Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1550b3062210Smrg # so, if we see these flags be careful not to treat them like -L 1551b3062210Smrg -L[A-Z][A-Z]*:*) 1552b3062210Smrg case $with_gcc/$host in 1553b3062210Smrg no/*-*-irix* | /*-*-irix*) 1554b3062210Smrg compile_command="$compile_command $arg" 1555b3062210Smrg finalize_command="$finalize_command $arg" 1556b3062210Smrg ;; 1557b3062210Smrg esac 1558b3062210Smrg continue 1559b3062210Smrg ;; 156023a0898aSmrg 1561b3062210Smrg -L*) 1562b3062210Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1563b3062210Smrg # We need an absolute path. 1564b3062210Smrg case $dir in 1565b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1566b3062210Smrg *) 1567b3062210Smrg absdir=`cd "$dir" && pwd` 1568b3062210Smrg if test -z "$absdir"; then 1569b3062210Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1570b3062210Smrg absdir="$dir" 1571b3062210Smrg notinst_path="$notinst_path $dir" 1572b3062210Smrg fi 1573b3062210Smrg dir="$absdir" 1574b3062210Smrg ;; 1575b3062210Smrg esac 1576b3062210Smrg case "$deplibs " in 1577b3062210Smrg *" -L$dir "*) ;; 1578b3062210Smrg *) 1579b3062210Smrg deplibs="$deplibs -L$dir" 1580b3062210Smrg lib_search_path="$lib_search_path $dir" 1581b3062210Smrg ;; 1582b3062210Smrg esac 1583b3062210Smrg case $host in 1584b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1585b3062210Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1586b3062210Smrg case :$dllsearchpath: in 1587b3062210Smrg *":$dir:"*) ;; 1588b3062210Smrg *) dllsearchpath="$dllsearchpath:$dir";; 1589b3062210Smrg esac 1590b3062210Smrg case :$dllsearchpath: in 1591b3062210Smrg *":$testbindir:"*) ;; 1592b3062210Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1593b3062210Smrg esac 1594b3062210Smrg ;; 1595b3062210Smrg esac 1596b3062210Smrg continue 1597b3062210Smrg ;; 159823a0898aSmrg 1599b3062210Smrg -l*) 1600b3062210Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1601b3062210Smrg case $host in 1602b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1603b3062210Smrg # These systems don't actually have a C or math library (as such) 1604b3062210Smrg continue 1605b3062210Smrg ;; 1606b3062210Smrg *-*-os2*) 1607b3062210Smrg # These systems don't actually have a C library (as such) 1608b3062210Smrg test "X$arg" = "X-lc" && continue 1609b3062210Smrg ;; 1610b3062210Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1611b3062210Smrg # Do not include libc due to us having libc/libc_r. 1612b3062210Smrg test "X$arg" = "X-lc" && continue 1613b3062210Smrg ;; 1614b3062210Smrg *-*-rhapsody* | *-*-darwin1.[012]) 1615b3062210Smrg # Rhapsody C and math libraries are in the System framework 1616b3062210Smrg deplibs="$deplibs -framework System" 1617b3062210Smrg continue 1618b3062210Smrg ;; 1619b3062210Smrg *-*-sco3.2v5* | *-*-sco5v6*) 1620b3062210Smrg # Causes problems with __ctype 1621b3062210Smrg test "X$arg" = "X-lc" && continue 1622b3062210Smrg ;; 1623b3062210Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1624b3062210Smrg # Compiler inserts libc in the correct place for threads to work 1625b3062210Smrg test "X$arg" = "X-lc" && continue 1626b3062210Smrg ;; 1627b3062210Smrg esac 1628b3062210Smrg elif test "X$arg" = "X-lc_r"; then 1629b3062210Smrg case $host in 1630b3062210Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1631b3062210Smrg # Do not include libc_r directly, use -pthread flag. 1632b3062210Smrg continue 1633b3062210Smrg ;; 1634b3062210Smrg esac 16357f7f5e4eSmrg fi 1636b3062210Smrg deplibs="$deplibs $arg" 1637b3062210Smrg continue 1638b3062210Smrg ;; 163923a0898aSmrg 1640b3062210Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1641b3062210Smrg # classes, name mangling, and exception handling. 1642b3062210Smrg -model) 1643b3062210Smrg compile_command="$compile_command $arg" 1644b3062210Smrg compiler_flags="$compiler_flags $arg" 1645b3062210Smrg finalize_command="$finalize_command $arg" 1646b3062210Smrg prev=xcompiler 1647b3062210Smrg continue 164823a0898aSmrg ;; 164923a0898aSmrg 1650b3062210Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1651b3062210Smrg compiler_flags="$compiler_flags $arg" 1652b3062210Smrg compile_command="$compile_command $arg" 1653b3062210Smrg finalize_command="$finalize_command $arg" 1654b3062210Smrg continue 165523a0898aSmrg ;; 165623a0898aSmrg 1657b3062210Smrg -multi_module) 1658b3062210Smrg single_module="${wl}-multi_module" 165923a0898aSmrg continue 166023a0898aSmrg ;; 166123a0898aSmrg 1662b3062210Smrg -module) 1663b3062210Smrg module=yes 1664b3062210Smrg continue 1665b3062210Smrg ;; 166623a0898aSmrg 1667b3062210Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1668b3062210Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1669b3062210Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1670b3062210Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1671b3062210Smrg # -q* pass through compiler args for the IBM compiler 1672b3062210Smrg # -m* pass through architecture-specific compiler args for GCC 1673b3062210Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1674b3062210Smrg # compiler args for GCC 1675b3062210Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1676b3062210Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1677b3062210Smrg # @file GCC response files 1678b3062210Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1679b3062210Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 168023a0898aSmrg 1681b3062210Smrg # Unknown arguments in both finalize_command and compile_command need 1682b3062210Smrg # to be aesthetically quoted because they are evaled later. 1683b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1684b3062210Smrg case $arg in 1685b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1686b3062210Smrg arg="\"$arg\"" 1687b3062210Smrg ;; 1688b3062210Smrg esac 1689b3062210Smrg compile_command="$compile_command $arg" 1690b3062210Smrg finalize_command="$finalize_command $arg" 1691b3062210Smrg compiler_flags="$compiler_flags $arg" 1692b3062210Smrg continue 1693b3062210Smrg ;; 169423a0898aSmrg 1695b3062210Smrg -shrext) 1696b3062210Smrg prev=shrext 1697b3062210Smrg continue 16987f7f5e4eSmrg ;; 169923a0898aSmrg 1700b3062210Smrg -no-fast-install) 1701b3062210Smrg fast_install=no 1702b3062210Smrg continue 1703b3062210Smrg ;; 170423a0898aSmrg 1705b3062210Smrg -no-install) 1706b3062210Smrg case $host in 1707b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1708b3062210Smrg # The PATH hackery in wrapper scripts is required on Windows 1709b3062210Smrg # and Darwin in order for the loader to find any dlls it needs. 1710b3062210Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1711b3062210Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1712b3062210Smrg fast_install=no 1713b3062210Smrg ;; 1714b3062210Smrg *) no_install=yes ;; 1715b3062210Smrg esac 1716b3062210Smrg continue 1717b3062210Smrg ;; 171823a0898aSmrg 1719b3062210Smrg -no-undefined) 1720b3062210Smrg allow_undefined=no 1721b3062210Smrg continue 1722b3062210Smrg ;; 17237f7f5e4eSmrg 1724b3062210Smrg -objectlist) 1725b3062210Smrg prev=objectlist 1726b3062210Smrg continue 17277f7f5e4eSmrg ;; 17287f7f5e4eSmrg 1729b3062210Smrg -o) prev=output ;; 17307f7f5e4eSmrg 1731b3062210Smrg -precious-files-regex) 1732b3062210Smrg prev=precious_regex 1733b3062210Smrg continue 1734b3062210Smrg ;; 17357f7f5e4eSmrg 1736b3062210Smrg -release) 1737b3062210Smrg prev=release 1738b3062210Smrg continue 1739b3062210Smrg ;; 17407f7f5e4eSmrg 1741b3062210Smrg -rpath) 1742b3062210Smrg prev=rpath 1743b3062210Smrg continue 1744b3062210Smrg ;; 17457f7f5e4eSmrg 1746b3062210Smrg -R) 1747b3062210Smrg prev=xrpath 17487f7f5e4eSmrg continue 1749b3062210Smrg ;; 17507f7f5e4eSmrg 1751b3062210Smrg -R*) 1752b3062210Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1753b3062210Smrg # We need an absolute path. 1754b3062210Smrg case $dir in 1755b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1756b3062210Smrg *) 1757b3062210Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1758b3062210Smrg exit $EXIT_FAILURE 1759b3062210Smrg ;; 1760b3062210Smrg esac 1761b3062210Smrg case "$xrpath " in 1762b3062210Smrg *" $dir "*) ;; 1763b3062210Smrg *) xrpath="$xrpath $dir" ;; 17647f7f5e4eSmrg esac 1765b3062210Smrg continue 17667f7f5e4eSmrg ;; 1767b3062210Smrg 1768b3062210Smrg -static | -static-libtool-libs) 1769b3062210Smrg # The effects of -static are defined in a previous loop. 1770b3062210Smrg # We used to do the same as -all-static on platforms that 1771b3062210Smrg # didn't have a PIC flag, but the assumption that the effects 1772b3062210Smrg # would be equivalent was wrong. It would break on at least 1773b3062210Smrg # Digital Unix and AIX. 1774b3062210Smrg continue 17757f7f5e4eSmrg ;; 1776b3062210Smrg 1777b3062210Smrg -thread-safe) 1778b3062210Smrg thread_safe=yes 17797f7f5e4eSmrg continue 17807f7f5e4eSmrg ;; 1781b3062210Smrg 1782b3062210Smrg -version-info) 1783b3062210Smrg prev=vinfo 1784b3062210Smrg continue 17857f7f5e4eSmrg ;; 1786b3062210Smrg -version-number) 1787b3062210Smrg prev=vinfo 1788b3062210Smrg vinfo_number=yes 1789b3062210Smrg continue 179023a0898aSmrg ;; 179123a0898aSmrg 1792b3062210Smrg -Wc,*) 1793b3062210Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1794b3062210Smrg arg= 1795b3062210Smrg save_ifs="$IFS"; IFS=',' 1796b3062210Smrg for flag in $args; do 1797b3062210Smrg IFS="$save_ifs" 1798b3062210Smrg case $flag in 1799b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1800b3062210Smrg flag="\"$flag\"" 1801b3062210Smrg ;; 1802b3062210Smrg esac 1803b3062210Smrg arg="$arg $wl$flag" 1804b3062210Smrg compiler_flags="$compiler_flags $flag" 1805b3062210Smrg done 1806b3062210Smrg IFS="$save_ifs" 1807b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1808b3062210Smrg ;; 180923a0898aSmrg 1810b3062210Smrg -Wl,*) 1811b3062210Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1812b3062210Smrg arg= 1813b3062210Smrg save_ifs="$IFS"; IFS=',' 1814b3062210Smrg for flag in $args; do 1815b3062210Smrg IFS="$save_ifs" 1816b3062210Smrg case $flag in 1817b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1818b3062210Smrg flag="\"$flag\"" 1819b3062210Smrg ;; 1820b3062210Smrg esac 1821b3062210Smrg arg="$arg $wl$flag" 1822b3062210Smrg compiler_flags="$compiler_flags $wl$flag" 1823b3062210Smrg linker_flags="$linker_flags $flag" 1824b3062210Smrg done 1825b3062210Smrg IFS="$save_ifs" 1826b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1827b3062210Smrg ;; 182823a0898aSmrg 1829b3062210Smrg -Xcompiler) 1830b3062210Smrg prev=xcompiler 1831b3062210Smrg continue 1832b3062210Smrg ;; 183323a0898aSmrg 1834b3062210Smrg -Xlinker) 1835b3062210Smrg prev=xlinker 1836b3062210Smrg continue 1837b3062210Smrg ;; 183823a0898aSmrg 1839b3062210Smrg -XCClinker) 1840b3062210Smrg prev=xcclinker 1841b3062210Smrg continue 1842b3062210Smrg ;; 184323a0898aSmrg 1844b3062210Smrg # Some other compiler flag. 1845b3062210Smrg -* | +*) 1846b3062210Smrg # Unknown arguments in both finalize_command and compile_command need 1847b3062210Smrg # to be aesthetically quoted because they are evaled later. 1848b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1849b3062210Smrg case $arg in 1850b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1851b3062210Smrg arg="\"$arg\"" 18527f7f5e4eSmrg ;; 18537f7f5e4eSmrg esac 1854b3062210Smrg ;; 185523a0898aSmrg 1856b3062210Smrg *.$objext) 1857b3062210Smrg # A standard object. 1858b3062210Smrg objs="$objs $arg" 18597f7f5e4eSmrg ;; 18607f7f5e4eSmrg 1861b3062210Smrg *.lo) 1862b3062210Smrg # A libtool-controlled object. 18637f7f5e4eSmrg 1864b3062210Smrg # Check to see that this really is a libtool object. 1865b3062210Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1866b3062210Smrg pic_object= 1867b3062210Smrg non_pic_object= 18687f7f5e4eSmrg 1869b3062210Smrg # Read the .lo file 1870b3062210Smrg # If there is no directory component, then add one. 1871b3062210Smrg case $arg in 1872b3062210Smrg */* | *\\*) . $arg ;; 1873b3062210Smrg *) . ./$arg ;; 18747f7f5e4eSmrg esac 18757f7f5e4eSmrg 1876b3062210Smrg if test -z "$pic_object" || \ 1877b3062210Smrg test -z "$non_pic_object" || 1878b3062210Smrg test "$pic_object" = none && \ 1879b3062210Smrg test "$non_pic_object" = none; then 1880b3062210Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1881b3062210Smrg exit $EXIT_FAILURE 1882b3062210Smrg fi 18837f7f5e4eSmrg 1884b3062210Smrg # Extract subdirectory from the argument. 1885b3062210Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1886b3062210Smrg if test "X$xdir" = "X$arg"; then 1887b3062210Smrg xdir= 1888b3062210Smrg else 1889b3062210Smrg xdir="$xdir/" 18907f7f5e4eSmrg fi 18917f7f5e4eSmrg 1892b3062210Smrg if test "$pic_object" != none; then 1893b3062210Smrg # Prepend the subdirectory the object is found in. 1894b3062210Smrg pic_object="$xdir$pic_object" 18957f7f5e4eSmrg 1896b3062210Smrg if test "$prev" = dlfiles; then 1897b3062210Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1898b3062210Smrg dlfiles="$dlfiles $pic_object" 1899b3062210Smrg prev= 1900b3062210Smrg continue 1901b3062210Smrg else 1902b3062210Smrg # If libtool objects are unsupported, then we need to preload. 1903b3062210Smrg prev=dlprefiles 1904b3062210Smrg fi 1905b3062210Smrg fi 19067f7f5e4eSmrg 1907b3062210Smrg # CHECK ME: I think I busted this. -Ossama 1908b3062210Smrg if test "$prev" = dlprefiles; then 1909b3062210Smrg # Preload the old-style object. 1910b3062210Smrg dlprefiles="$dlprefiles $pic_object" 1911b3062210Smrg prev= 1912b3062210Smrg fi 19137f7f5e4eSmrg 1914b3062210Smrg # A PIC object. 1915b3062210Smrg libobjs="$libobjs $pic_object" 1916b3062210Smrg arg="$pic_object" 191723a0898aSmrg fi 19187f7f5e4eSmrg 1919b3062210Smrg # Non-PIC object. 1920b3062210Smrg if test "$non_pic_object" != none; then 1921b3062210Smrg # Prepend the subdirectory the object is found in. 1922b3062210Smrg non_pic_object="$xdir$non_pic_object" 1923b3062210Smrg 1924b3062210Smrg # A standard non-PIC object 1925b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1926b3062210Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 1927b3062210Smrg arg="$non_pic_object" 1928b3062210Smrg fi 1929b3062210Smrg else 1930b3062210Smrg # If the PIC object exists, use it instead. 1931b3062210Smrg # $xdir was prepended to $pic_object above. 1932b3062210Smrg non_pic_object="$pic_object" 1933b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 193423a0898aSmrg fi 1935b3062210Smrg else 1936b3062210Smrg # Only an error if not doing a dry-run. 1937b3062210Smrg if test -z "$run"; then 1938b3062210Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1939b3062210Smrg exit $EXIT_FAILURE 1940b3062210Smrg else 1941b3062210Smrg # Dry-run case. 194223a0898aSmrg 1943b3062210Smrg # Extract subdirectory from the argument. 1944b3062210Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1945b3062210Smrg if test "X$xdir" = "X$arg"; then 1946b3062210Smrg xdir= 1947b3062210Smrg else 1948b3062210Smrg xdir="$xdir/" 1949b3062210Smrg fi 195023a0898aSmrg 1951b3062210Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1952b3062210Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1953b3062210Smrg libobjs="$libobjs $pic_object" 1954b3062210Smrg non_pic_objects="$non_pic_objects $non_pic_object" 1955b3062210Smrg fi 1956b3062210Smrg fi 1957b3062210Smrg ;; 195823a0898aSmrg 1959b3062210Smrg *.$libext) 1960b3062210Smrg # An archive. 1961b3062210Smrg deplibs="$deplibs $arg" 1962b3062210Smrg old_deplibs="$old_deplibs $arg" 1963b3062210Smrg continue 19647f7f5e4eSmrg ;; 196523a0898aSmrg 1966b3062210Smrg *.la) 1967b3062210Smrg # A libtool-controlled library. 196823a0898aSmrg 1969b3062210Smrg if test "$prev" = dlfiles; then 1970b3062210Smrg # This library was specified with -dlopen. 1971b3062210Smrg dlfiles="$dlfiles $arg" 1972b3062210Smrg prev= 1973b3062210Smrg elif test "$prev" = dlprefiles; then 1974b3062210Smrg # The library was specified with -dlpreopen. 1975b3062210Smrg dlprefiles="$dlprefiles $arg" 1976b3062210Smrg prev= 19777f7f5e4eSmrg else 1978b3062210Smrg deplibs="$deplibs $arg" 197923a0898aSmrg fi 1980b3062210Smrg continue 1981b3062210Smrg ;; 198223a0898aSmrg 1983b3062210Smrg # Some other compiler argument. 1984b3062210Smrg *) 1985b3062210Smrg # Unknown arguments in both finalize_command and compile_command need 1986b3062210Smrg # to be aesthetically quoted because they are evaled later. 1987b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1988b3062210Smrg case $arg in 1989b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1990b3062210Smrg arg="\"$arg\"" 19917f7f5e4eSmrg ;; 19927f7f5e4eSmrg esac 19937f7f5e4eSmrg ;; 1994b3062210Smrg esac # arg 199523a0898aSmrg 1996b3062210Smrg # Now actually substitute the argument into the commands. 1997b3062210Smrg if test -n "$arg"; then 1998b3062210Smrg compile_command="$compile_command $arg" 1999b3062210Smrg finalize_command="$finalize_command $arg" 2000b3062210Smrg fi 2001b3062210Smrg done # argument parsing loop 200223a0898aSmrg 2003b3062210Smrg if test -n "$prev"; then 2004b3062210Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2005b3062210Smrg $echo "$help" 1>&2 2006b3062210Smrg exit $EXIT_FAILURE 2007b3062210Smrg fi 20087f7f5e4eSmrg 2009b3062210Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2010b3062210Smrg eval arg=\"$export_dynamic_flag_spec\" 2011b3062210Smrg compile_command="$compile_command $arg" 2012b3062210Smrg finalize_command="$finalize_command $arg" 2013b3062210Smrg fi 20147f7f5e4eSmrg 2015b3062210Smrg oldlibs= 2016b3062210Smrg # calculate the name of the file, without its directory 2017b3062210Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2018b3062210Smrg libobjs_save="$libobjs" 20197f7f5e4eSmrg 2020b3062210Smrg if test -n "$shlibpath_var"; then 2021b3062210Smrg # get the directories listed in $shlibpath_var 2022b3062210Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2023b3062210Smrg else 2024b3062210Smrg shlib_search_path= 2025b3062210Smrg fi 2026b3062210Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2027b3062210Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 20287f7f5e4eSmrg 2029b3062210Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2030b3062210Smrg if test "X$output_objdir" = "X$output"; then 2031b3062210Smrg output_objdir="$objdir" 20327f7f5e4eSmrg else 2033b3062210Smrg output_objdir="$output_objdir/$objdir" 20347f7f5e4eSmrg fi 2035b3062210Smrg # Create the object directory. 2036b3062210Smrg if test ! -d "$output_objdir"; then 2037b3062210Smrg $show "$mkdir $output_objdir" 2038b3062210Smrg $run $mkdir $output_objdir 2039b3062210Smrg exit_status=$? 2040b3062210Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2041b3062210Smrg exit $exit_status 20427f7f5e4eSmrg fi 20437f7f5e4eSmrg fi 20447f7f5e4eSmrg 2045b3062210Smrg # Determine the type of output 2046b3062210Smrg case $output in 2047b3062210Smrg "") 2048b3062210Smrg $echo "$modename: you must specify an output file" 1>&2 2049b3062210Smrg $echo "$help" 1>&2 2050b3062210Smrg exit $EXIT_FAILURE 2051b3062210Smrg ;; 2052b3062210Smrg *.$libext) linkmode=oldlib ;; 2053b3062210Smrg *.lo | *.$objext) linkmode=obj ;; 2054b3062210Smrg *.la) linkmode=lib ;; 2055b3062210Smrg *) linkmode=prog ;; # Anything else should be a program. 2056b3062210Smrg esac 205723a0898aSmrg 2058b3062210Smrg case $host in 2059b3062210Smrg *cygwin* | *mingw* | *pw32*) 2060b3062210Smrg # don't eliminate duplications in $postdeps and $predeps 2061b3062210Smrg duplicate_compiler_generated_deps=yes 2062b3062210Smrg ;; 2063b3062210Smrg *) 2064b3062210Smrg duplicate_compiler_generated_deps=$duplicate_deps 2065b3062210Smrg ;; 2066b3062210Smrg esac 2067b3062210Smrg specialdeplibs= 206823a0898aSmrg 2069b3062210Smrg libs= 2070b3062210Smrg # Find all interdependent deplibs by searching for libraries 2071b3062210Smrg # that are linked more than once (e.g. -la -lb -la) 2072b3062210Smrg for deplib in $deplibs; do 2073b3062210Smrg if test "X$duplicate_deps" = "Xyes" ; then 2074b3062210Smrg case "$libs " in 2075b3062210Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2076b3062210Smrg esac 2077b3062210Smrg fi 2078b3062210Smrg libs="$libs $deplib" 2079b3062210Smrg done 208023a0898aSmrg 2081b3062210Smrg if test "$linkmode" = lib; then 2082b3062210Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 208323a0898aSmrg 2084b3062210Smrg # Compute libraries that are listed more than once in $predeps 2085b3062210Smrg # $postdeps and mark them as special (i.e., whose duplicates are 2086b3062210Smrg # not to be eliminated). 2087b3062210Smrg pre_post_deps= 2088b3062210Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2089b3062210Smrg for pre_post_dep in $predeps $postdeps; do 2090b3062210Smrg case "$pre_post_deps " in 2091b3062210Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 20927f7f5e4eSmrg esac 2093b3062210Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 2094b3062210Smrg done 2095b3062210Smrg fi 2096b3062210Smrg pre_post_deps= 2097b3062210Smrg fi 209823a0898aSmrg 2099b3062210Smrg deplibs= 2100b3062210Smrg newdependency_libs= 2101b3062210Smrg newlib_search_path= 2102b3062210Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 2103b3062210Smrg notinst_deplibs= # not-installed libtool libraries 2104b3062210Smrg case $linkmode in 2105b3062210Smrg lib) 2106b3062210Smrg passes="conv link" 2107b3062210Smrg for file in $dlfiles $dlprefiles; do 2108b3062210Smrg case $file in 2109b3062210Smrg *.la) ;; 21107f7f5e4eSmrg *) 2111b3062210Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2112b3062210Smrg exit $EXIT_FAILURE 21137f7f5e4eSmrg ;; 21147f7f5e4eSmrg esac 21157f7f5e4eSmrg done 21167f7f5e4eSmrg ;; 2117b3062210Smrg prog) 2118b3062210Smrg compile_deplibs= 2119b3062210Smrg finalize_deplibs= 2120b3062210Smrg alldeplibs=no 2121b3062210Smrg newdlfiles= 2122b3062210Smrg newdlprefiles= 2123b3062210Smrg passes="conv scan dlopen dlpreopen link" 2124b3062210Smrg ;; 2125b3062210Smrg *) passes="conv" 21267f7f5e4eSmrg ;; 21277f7f5e4eSmrg esac 2128b3062210Smrg for pass in $passes; do 2129b3062210Smrg if test "$linkmode,$pass" = "lib,link" || 2130b3062210Smrg test "$linkmode,$pass" = "prog,scan"; then 2131b3062210Smrg libs="$deplibs" 2132b3062210Smrg deplibs= 2133b3062210Smrg fi 2134b3062210Smrg if test "$linkmode" = prog; then 2135b3062210Smrg case $pass in 2136b3062210Smrg dlopen) libs="$dlfiles" ;; 2137b3062210Smrg dlpreopen) libs="$dlprefiles" ;; 2138b3062210Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2139b3062210Smrg esac 2140b3062210Smrg fi 2141b3062210Smrg if test "$pass" = dlopen; then 2142b3062210Smrg # Collect dlpreopened libraries 2143b3062210Smrg save_deplibs="$deplibs" 2144b3062210Smrg deplibs= 2145b3062210Smrg fi 2146b3062210Smrg for deplib in $libs; do 2147b3062210Smrg lib= 2148b3062210Smrg found=no 2149b3062210Smrg case $deplib in 2150b3062210Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2151b3062210Smrg if test "$linkmode,$pass" = "prog,link"; then 2152b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2153b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2154b3062210Smrg else 2155b3062210Smrg compiler_flags="$compiler_flags $deplib" 2156b3062210Smrg fi 2157b3062210Smrg continue 2158b3062210Smrg ;; 2159b3062210Smrg -l*) 2160b3062210Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2161b3062210Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2162b3062210Smrg continue 2163b3062210Smrg fi 2164b3062210Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2165b3062210Smrg if test "$linkmode" = lib; then 2166b3062210Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2167b3062210Smrg else 2168b3062210Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2169b3062210Smrg fi 2170b3062210Smrg for searchdir in $searchdirs; do 2171b3062210Smrg for search_ext in .la $std_shrext .so .a; do 2172b3062210Smrg # Search the libtool library 2173b3062210Smrg lib="$searchdir/lib${name}${search_ext}" 2174b3062210Smrg if test -f "$lib"; then 2175b3062210Smrg if test "$search_ext" = ".la"; then 2176b3062210Smrg found=yes 2177b3062210Smrg else 2178b3062210Smrg found=no 2179b3062210Smrg fi 2180b3062210Smrg break 2 2181b3062210Smrg fi 2182b3062210Smrg done 2183b3062210Smrg done 2184b3062210Smrg if test "$found" != yes; then 2185b3062210Smrg # deplib doesn't seem to be a libtool library 2186b3062210Smrg if test "$linkmode,$pass" = "prog,link"; then 2187b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2188b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2189b3062210Smrg else 2190b3062210Smrg deplibs="$deplib $deplibs" 2191b3062210Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2192b3062210Smrg fi 2193b3062210Smrg continue 2194b3062210Smrg else # deplib is a libtool library 2195b3062210Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2196b3062210Smrg # We need to do some special things here, and not later. 2197b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2198b3062210Smrg case " $predeps $postdeps " in 2199b3062210Smrg *" $deplib "*) 2200b3062210Smrg if (${SED} -e '2q' $lib | 2201b3062210Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2202b3062210Smrg library_names= 2203b3062210Smrg old_library= 2204b3062210Smrg case $lib in 2205b3062210Smrg */* | *\\*) . $lib ;; 2206b3062210Smrg *) . ./$lib ;; 2207b3062210Smrg esac 2208b3062210Smrg for l in $old_library $library_names; do 2209b3062210Smrg ll="$l" 2210b3062210Smrg done 2211b3062210Smrg if test "X$ll" = "X$old_library" ; then # only static version available 2212b3062210Smrg found=no 2213b3062210Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2214b3062210Smrg test "X$ladir" = "X$lib" && ladir="." 2215b3062210Smrg lib=$ladir/$old_library 2216b3062210Smrg if test "$linkmode,$pass" = "prog,link"; then 2217b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2218b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2219b3062210Smrg else 2220b3062210Smrg deplibs="$deplib $deplibs" 2221b3062210Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2222b3062210Smrg fi 2223b3062210Smrg continue 2224b3062210Smrg fi 2225b3062210Smrg fi 2226b3062210Smrg ;; 2227b3062210Smrg *) ;; 2228b3062210Smrg esac 2229b3062210Smrg fi 2230b3062210Smrg fi 2231b3062210Smrg ;; # -l 2232b3062210Smrg -L*) 2233b3062210Smrg case $linkmode in 2234b3062210Smrg lib) 2235b3062210Smrg deplibs="$deplib $deplibs" 2236b3062210Smrg test "$pass" = conv && continue 2237b3062210Smrg newdependency_libs="$deplib $newdependency_libs" 2238b3062210Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2239b3062210Smrg ;; 2240b3062210Smrg prog) 2241b3062210Smrg if test "$pass" = conv; then 2242b3062210Smrg deplibs="$deplib $deplibs" 2243b3062210Smrg continue 2244b3062210Smrg fi 2245b3062210Smrg if test "$pass" = scan; then 2246b3062210Smrg deplibs="$deplib $deplibs" 2247b3062210Smrg else 2248b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2249b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2250b3062210Smrg fi 2251b3062210Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2252b3062210Smrg ;; 2253b3062210Smrg *) 2254b3062210Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2255b3062210Smrg ;; 2256b3062210Smrg esac # linkmode 2257b3062210Smrg continue 2258b3062210Smrg ;; # -L 2259b3062210Smrg -R*) 2260b3062210Smrg if test "$pass" = link; then 2261b3062210Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2262b3062210Smrg # Make sure the xrpath contains only unique directories. 2263b3062210Smrg case "$xrpath " in 2264b3062210Smrg *" $dir "*) ;; 2265b3062210Smrg *) xrpath="$xrpath $dir" ;; 2266b3062210Smrg esac 2267b3062210Smrg fi 2268b3062210Smrg deplibs="$deplib $deplibs" 2269b3062210Smrg continue 2270b3062210Smrg ;; 2271b3062210Smrg *.la) lib="$deplib" ;; 2272b3062210Smrg *.$libext) 2273b3062210Smrg if test "$pass" = conv; then 2274b3062210Smrg deplibs="$deplib $deplibs" 2275b3062210Smrg continue 2276b3062210Smrg fi 2277b3062210Smrg case $linkmode in 2278b3062210Smrg lib) 2279b3062210Smrg valid_a_lib=no 2280b3062210Smrg case $deplibs_check_method in 2281b3062210Smrg match_pattern*) 2282b3062210Smrg set dummy $deplibs_check_method 2283b3062210Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2284b3062210Smrg if eval $echo \"$deplib\" 2>/dev/null \ 2285b3062210Smrg | $SED 10q \ 2286b3062210Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 2287b3062210Smrg valid_a_lib=yes 2288b3062210Smrg fi 2289b3062210Smrg ;; 2290b3062210Smrg pass_all) 2291b3062210Smrg valid_a_lib=yes 2292b3062210Smrg ;; 2293b3062210Smrg esac 2294b3062210Smrg if test "$valid_a_lib" != yes; then 2295b3062210Smrg $echo 2296b3062210Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2297b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 2298b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 2299b3062210Smrg $echo "*** shared version of the library, which you do not appear to have" 2300b3062210Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2301b3062210Smrg $echo "*** that it is just a static archive that I should not used here." 2302b3062210Smrg else 2303b3062210Smrg $echo 2304b3062210Smrg $echo "*** Warning: Linking the shared library $output against the" 2305b3062210Smrg $echo "*** static library $deplib is not portable!" 2306b3062210Smrg deplibs="$deplib $deplibs" 2307b3062210Smrg fi 2308b3062210Smrg continue 2309b3062210Smrg ;; 2310b3062210Smrg prog) 2311b3062210Smrg if test "$pass" != link; then 2312b3062210Smrg deplibs="$deplib $deplibs" 2313b3062210Smrg else 2314b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2315b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2316b3062210Smrg fi 2317b3062210Smrg continue 2318b3062210Smrg ;; 2319b3062210Smrg esac # linkmode 2320b3062210Smrg ;; # *.$libext 2321b3062210Smrg *.lo | *.$objext) 2322b3062210Smrg if test "$pass" = conv; then 2323b3062210Smrg deplibs="$deplib $deplibs" 2324b3062210Smrg elif test "$linkmode" = prog; then 2325b3062210Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2326b3062210Smrg # If there is no dlopen support or we're linking statically, 2327b3062210Smrg # we need to preload. 2328b3062210Smrg newdlprefiles="$newdlprefiles $deplib" 2329b3062210Smrg compile_deplibs="$deplib $compile_deplibs" 2330b3062210Smrg finalize_deplibs="$deplib $finalize_deplibs" 2331b3062210Smrg else 2332b3062210Smrg newdlfiles="$newdlfiles $deplib" 2333b3062210Smrg fi 2334b3062210Smrg fi 2335b3062210Smrg continue 2336b3062210Smrg ;; 2337b3062210Smrg %DEPLIBS%) 2338b3062210Smrg alldeplibs=yes 2339b3062210Smrg continue 2340b3062210Smrg ;; 2341b3062210Smrg esac # case $deplib 2342b3062210Smrg if test "$found" = yes || test -f "$lib"; then : 2343b3062210Smrg else 2344b3062210Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2345b3062210Smrg exit $EXIT_FAILURE 2346b3062210Smrg fi 234723a0898aSmrg 2348b3062210Smrg # Check to see that this really is a libtool archive. 2349b3062210Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2350b3062210Smrg else 2351b3062210Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2352b3062210Smrg exit $EXIT_FAILURE 2353b3062210Smrg fi 235423a0898aSmrg 2355b3062210Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2356b3062210Smrg test "X$ladir" = "X$lib" && ladir="." 235723a0898aSmrg 2358b3062210Smrg dlname= 2359b3062210Smrg dlopen= 2360b3062210Smrg dlpreopen= 2361b3062210Smrg libdir= 2362b3062210Smrg library_names= 2363b3062210Smrg old_library= 2364b3062210Smrg # If the library was installed with an old release of libtool, 2365b3062210Smrg # it will not redefine variables installed, or shouldnotlink 2366b3062210Smrg installed=yes 2367b3062210Smrg shouldnotlink=no 2368b3062210Smrg avoidtemprpath= 236923a0898aSmrg 237023a0898aSmrg 2371b3062210Smrg # Read the .la file 2372b3062210Smrg case $lib in 2373b3062210Smrg */* | *\\*) . $lib ;; 2374b3062210Smrg *) . ./$lib ;; 23757f7f5e4eSmrg esac 237623a0898aSmrg 2377b3062210Smrg if test "$linkmode,$pass" = "lib,link" || 2378b3062210Smrg test "$linkmode,$pass" = "prog,scan" || 2379b3062210Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2380b3062210Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2381b3062210Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2382b3062210Smrg fi 238323a0898aSmrg 2384b3062210Smrg if test "$pass" = conv; then 2385b3062210Smrg # Only check for convenience libraries 2386b3062210Smrg deplibs="$lib $deplibs" 2387b3062210Smrg if test -z "$libdir"; then 2388b3062210Smrg if test -z "$old_library"; then 2389b3062210Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2390b3062210Smrg exit $EXIT_FAILURE 2391b3062210Smrg fi 2392b3062210Smrg # It is a libtool convenience library, so add in its objects. 2393b3062210Smrg convenience="$convenience $ladir/$objdir/$old_library" 2394b3062210Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2395b3062210Smrg tmp_libs= 2396b3062210Smrg for deplib in $dependency_libs; do 2397b3062210Smrg deplibs="$deplib $deplibs" 2398b3062210Smrg if test "X$duplicate_deps" = "Xyes" ; then 2399b3062210Smrg case "$tmp_libs " in 2400b3062210Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2401b3062210Smrg esac 2402b3062210Smrg fi 2403b3062210Smrg tmp_libs="$tmp_libs $deplib" 2404b3062210Smrg done 2405b3062210Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2406b3062210Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2407b3062210Smrg exit $EXIT_FAILURE 2408b3062210Smrg fi 2409b3062210Smrg continue 2410b3062210Smrg fi # $pass = conv 241123a0898aSmrg 241223a0898aSmrg 2413b3062210Smrg # Get the name of the library we link against. 2414b3062210Smrg linklib= 2415b3062210Smrg for l in $old_library $library_names; do 2416b3062210Smrg linklib="$l" 2417b3062210Smrg done 2418b3062210Smrg if test -z "$linklib"; then 2419b3062210Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2420b3062210Smrg exit $EXIT_FAILURE 242123a0898aSmrg fi 242223a0898aSmrg 2423b3062210Smrg # This library was specified with -dlopen. 2424b3062210Smrg if test "$pass" = dlopen; then 2425b3062210Smrg if test -z "$libdir"; then 2426b3062210Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2427b3062210Smrg exit $EXIT_FAILURE 2428b3062210Smrg fi 2429b3062210Smrg if test -z "$dlname" || 2430b3062210Smrg test "$dlopen_support" != yes || 2431b3062210Smrg test "$build_libtool_libs" = no; then 2432b3062210Smrg # If there is no dlname, no dlopen support or we're linking 2433b3062210Smrg # statically, we need to preload. We also need to preload any 2434b3062210Smrg # dependent libraries so libltdl's deplib preloader doesn't 2435b3062210Smrg # bomb out in the load deplibs phase. 2436b3062210Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 2437b3062210Smrg else 2438b3062210Smrg newdlfiles="$newdlfiles $lib" 2439b3062210Smrg fi 2440b3062210Smrg continue 2441b3062210Smrg fi # $pass = dlopen 244223a0898aSmrg 2443b3062210Smrg # We need an absolute path. 2444b3062210Smrg case $ladir in 2445b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2446b3062210Smrg *) 2447b3062210Smrg abs_ladir=`cd "$ladir" && pwd` 2448b3062210Smrg if test -z "$abs_ladir"; then 2449b3062210Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2450b3062210Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2451b3062210Smrg abs_ladir="$ladir" 2452b3062210Smrg fi 2453b3062210Smrg ;; 2454b3062210Smrg esac 2455b3062210Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 245623a0898aSmrg 2457b3062210Smrg # Find the relevant object directory and library name. 2458b3062210Smrg if test "X$installed" = Xyes; then 2459b3062210Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2460b3062210Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2461b3062210Smrg dir="$ladir" 2462b3062210Smrg absdir="$abs_ladir" 2463b3062210Smrg libdir="$abs_ladir" 2464b3062210Smrg else 2465b3062210Smrg dir="$libdir" 2466b3062210Smrg absdir="$libdir" 2467b3062210Smrg fi 2468b3062210Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2469b3062210Smrg else 2470b3062210Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2471b3062210Smrg dir="$ladir" 2472b3062210Smrg absdir="$abs_ladir" 2473b3062210Smrg # Remove this search path later 2474b3062210Smrg notinst_path="$notinst_path $abs_ladir" 2475b3062210Smrg else 2476b3062210Smrg dir="$ladir/$objdir" 2477b3062210Smrg absdir="$abs_ladir/$objdir" 2478b3062210Smrg # Remove this search path later 2479b3062210Smrg notinst_path="$notinst_path $abs_ladir" 2480b3062210Smrg fi 2481b3062210Smrg fi # $installed = yes 2482b3062210Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 248323a0898aSmrg 2484b3062210Smrg # This library was specified with -dlpreopen. 2485b3062210Smrg if test "$pass" = dlpreopen; then 2486b3062210Smrg if test -z "$libdir"; then 2487b3062210Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2488b3062210Smrg exit $EXIT_FAILURE 2489b3062210Smrg fi 2490b3062210Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2491b3062210Smrg # are required to link). 2492b3062210Smrg if test -n "$old_library"; then 2493b3062210Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 2494b3062210Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2495b3062210Smrg elif test -n "$dlname"; then 2496b3062210Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 2497b3062210Smrg else 2498b3062210Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 2499b3062210Smrg fi 2500b3062210Smrg fi # $pass = dlpreopen 250123a0898aSmrg 2502b3062210Smrg if test -z "$libdir"; then 2503b3062210Smrg # Link the convenience library 2504b3062210Smrg if test "$linkmode" = lib; then 2505b3062210Smrg deplibs="$dir/$old_library $deplibs" 2506b3062210Smrg elif test "$linkmode,$pass" = "prog,link"; then 2507b3062210Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 2508b3062210Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2509b3062210Smrg else 2510b3062210Smrg deplibs="$lib $deplibs" # used for prog,scan pass 2511b3062210Smrg fi 2512b3062210Smrg continue 2513b3062210Smrg fi 251423a0898aSmrg 251523a0898aSmrg 2516b3062210Smrg if test "$linkmode" = prog && test "$pass" != link; then 2517b3062210Smrg newlib_search_path="$newlib_search_path $ladir" 2518b3062210Smrg deplibs="$lib $deplibs" 251923a0898aSmrg 2520b3062210Smrg linkalldeplibs=no 2521b3062210Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2522b3062210Smrg test "$build_libtool_libs" = no; then 2523b3062210Smrg linkalldeplibs=yes 2524b3062210Smrg fi 252523a0898aSmrg 2526b3062210Smrg tmp_libs= 2527b3062210Smrg for deplib in $dependency_libs; do 2528b3062210Smrg case $deplib in 2529b3062210Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2530b3062210Smrg esac 2531b3062210Smrg # Need to link against all dependency_libs? 2532b3062210Smrg if test "$linkalldeplibs" = yes; then 2533b3062210Smrg deplibs="$deplib $deplibs" 2534b3062210Smrg else 2535b3062210Smrg # Need to hardcode shared library paths 2536b3062210Smrg # or/and link against static libraries 2537b3062210Smrg newdependency_libs="$deplib $newdependency_libs" 2538b3062210Smrg fi 2539b3062210Smrg if test "X$duplicate_deps" = "Xyes" ; then 2540b3062210Smrg case "$tmp_libs " in 2541b3062210Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2542b3062210Smrg esac 2543b3062210Smrg fi 2544b3062210Smrg tmp_libs="$tmp_libs $deplib" 2545b3062210Smrg done # for deplib 2546b3062210Smrg continue 2547b3062210Smrg fi # $linkmode = prog... 25487f7f5e4eSmrg 2549b3062210Smrg if test "$linkmode,$pass" = "prog,link"; then 2550b3062210Smrg if test -n "$library_names" && 2551b3062210Smrg { { test "$prefer_static_libs" = no || 2552b3062210Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2553b3062210Smrg test -z "$old_library"; }; then 2554b3062210Smrg # We need to hardcode the library path 2555b3062210Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2556b3062210Smrg # Make sure the rpath contains only unique directories. 2557b3062210Smrg case "$temp_rpath " in 2558b3062210Smrg *" $dir "*) ;; 2559b3062210Smrg *" $absdir "*) ;; 2560b3062210Smrg *) temp_rpath="$temp_rpath $absdir" ;; 2561b3062210Smrg esac 2562b3062210Smrg fi 256323a0898aSmrg 2564b3062210Smrg # Hardcode the library path. 2565b3062210Smrg # Skip directories that are in the system default run-time 2566b3062210Smrg # search path. 2567b3062210Smrg case " $sys_lib_dlsearch_path " in 2568b3062210Smrg *" $absdir "*) ;; 2569b3062210Smrg *) 2570b3062210Smrg case "$compile_rpath " in 2571b3062210Smrg *" $absdir "*) ;; 2572b3062210Smrg *) compile_rpath="$compile_rpath $absdir" 2573b3062210Smrg esac 2574b3062210Smrg ;; 2575b3062210Smrg esac 2576b3062210Smrg case " $sys_lib_dlsearch_path " in 2577b3062210Smrg *" $libdir "*) ;; 2578b3062210Smrg *) 2579b3062210Smrg case "$finalize_rpath " in 2580b3062210Smrg *" $libdir "*) ;; 2581b3062210Smrg *) finalize_rpath="$finalize_rpath $libdir" 2582b3062210Smrg esac 2583b3062210Smrg ;; 2584b3062210Smrg esac 2585b3062210Smrg fi # $linkmode,$pass = prog,link... 25867f7f5e4eSmrg 2587b3062210Smrg if test "$alldeplibs" = yes && 2588b3062210Smrg { test "$deplibs_check_method" = pass_all || 2589b3062210Smrg { test "$build_libtool_libs" = yes && 2590b3062210Smrg test -n "$library_names"; }; }; then 2591b3062210Smrg # We only need to search for static libraries 2592b3062210Smrg continue 2593b3062210Smrg fi 259423a0898aSmrg fi 259523a0898aSmrg 2596b3062210Smrg link_static=no # Whether the deplib will be linked statically 2597b3062210Smrg use_static_libs=$prefer_static_libs 2598b3062210Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2599b3062210Smrg use_static_libs=no 2600b3062210Smrg fi 2601b3062210Smrg if test -n "$library_names" && 2602b3062210Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2603b3062210Smrg if test "$installed" = no; then 2604b3062210Smrg notinst_deplibs="$notinst_deplibs $lib" 2605b3062210Smrg need_relink=yes 2606b3062210Smrg fi 2607b3062210Smrg # This is a shared library 260823a0898aSmrg 2609b3062210Smrg # Warn about portability, can't link against -module's on 2610b3062210Smrg # some systems (darwin) 2611b3062210Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2612b3062210Smrg $echo 2613b3062210Smrg if test "$linkmode" = prog; then 2614b3062210Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 2615b3062210Smrg else 2616b3062210Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2617b3062210Smrg fi 2618b3062210Smrg $echo "*** $linklib is not portable!" 2619b3062210Smrg fi 2620b3062210Smrg if test "$linkmode" = lib && 2621b3062210Smrg test "$hardcode_into_libs" = yes; then 2622b3062210Smrg # Hardcode the library path. 2623b3062210Smrg # Skip directories that are in the system default run-time 2624b3062210Smrg # search path. 2625b3062210Smrg case " $sys_lib_dlsearch_path " in 2626b3062210Smrg *" $absdir "*) ;; 2627b3062210Smrg *) 2628b3062210Smrg case "$compile_rpath " in 2629b3062210Smrg *" $absdir "*) ;; 2630b3062210Smrg *) compile_rpath="$compile_rpath $absdir" 2631b3062210Smrg esac 2632b3062210Smrg ;; 2633b3062210Smrg esac 2634b3062210Smrg case " $sys_lib_dlsearch_path " in 2635b3062210Smrg *" $libdir "*) ;; 2636b3062210Smrg *) 2637b3062210Smrg case "$finalize_rpath " in 2638b3062210Smrg *" $libdir "*) ;; 2639b3062210Smrg *) finalize_rpath="$finalize_rpath $libdir" 2640b3062210Smrg esac 2641b3062210Smrg ;; 2642b3062210Smrg esac 2643b3062210Smrg fi 26447f7f5e4eSmrg 2645b3062210Smrg if test -n "$old_archive_from_expsyms_cmds"; then 2646b3062210Smrg # figure out the soname 2647b3062210Smrg set dummy $library_names 2648b3062210Smrg realname="$2" 2649b3062210Smrg shift; shift 2650b3062210Smrg libname=`eval \\$echo \"$libname_spec\"` 2651b3062210Smrg # use dlname if we got it. it's perfectly good, no? 2652b3062210Smrg if test -n "$dlname"; then 2653b3062210Smrg soname="$dlname" 2654b3062210Smrg elif test -n "$soname_spec"; then 2655b3062210Smrg # bleh windows 2656b3062210Smrg case $host in 2657b3062210Smrg *cygwin* | mingw*) 2658b3062210Smrg major=`expr $current - $age` 2659b3062210Smrg versuffix="-$major" 2660b3062210Smrg ;; 2661b3062210Smrg esac 2662b3062210Smrg eval soname=\"$soname_spec\" 2663b3062210Smrg else 2664b3062210Smrg soname="$realname" 2665b3062210Smrg fi 26667f7f5e4eSmrg 2667b3062210Smrg # Make a new name for the extract_expsyms_cmds to use 2668b3062210Smrg soroot="$soname" 2669b3062210Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2670b3062210Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 26717f7f5e4eSmrg 2672b3062210Smrg # If the library has no export list, then create one now 2673b3062210Smrg if test -f "$output_objdir/$soname-def"; then : 2674b3062210Smrg else 2675b3062210Smrg $show "extracting exported symbol list from \`$soname'" 2676b3062210Smrg save_ifs="$IFS"; IFS='~' 2677b3062210Smrg cmds=$extract_expsyms_cmds 2678b3062210Smrg for cmd in $cmds; do 2679b3062210Smrg IFS="$save_ifs" 2680b3062210Smrg eval cmd=\"$cmd\" 2681b3062210Smrg $show "$cmd" 2682b3062210Smrg $run eval "$cmd" || exit $? 2683b3062210Smrg done 2684b3062210Smrg IFS="$save_ifs" 2685b3062210Smrg fi 26867f7f5e4eSmrg 2687b3062210Smrg # Create $newlib 2688b3062210Smrg if test -f "$output_objdir/$newlib"; then :; else 2689b3062210Smrg $show "generating import library for \`$soname'" 2690b3062210Smrg save_ifs="$IFS"; IFS='~' 2691b3062210Smrg cmds=$old_archive_from_expsyms_cmds 2692b3062210Smrg for cmd in $cmds; do 2693b3062210Smrg IFS="$save_ifs" 2694b3062210Smrg eval cmd=\"$cmd\" 2695b3062210Smrg $show "$cmd" 2696b3062210Smrg $run eval "$cmd" || exit $? 2697b3062210Smrg done 2698b3062210Smrg IFS="$save_ifs" 2699b3062210Smrg fi 2700b3062210Smrg # make sure the library variables are pointing to the new library 2701b3062210Smrg dir=$output_objdir 2702b3062210Smrg linklib=$newlib 2703b3062210Smrg fi # test -n "$old_archive_from_expsyms_cmds" 270423a0898aSmrg 2705b3062210Smrg if test "$linkmode" = prog || test "$mode" != relink; then 2706b3062210Smrg add_shlibpath= 2707b3062210Smrg add_dir= 2708b3062210Smrg add= 2709b3062210Smrg lib_linked=yes 2710b3062210Smrg case $hardcode_action in 2711b3062210Smrg immediate | unsupported) 2712b3062210Smrg if test "$hardcode_direct" = no; then 2713b3062210Smrg add="$dir/$linklib" 2714b3062210Smrg case $host in 2715b3062210Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2716b3062210Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2717b3062210Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2718b3062210Smrg *-*-unixware7*) add_dir="-L$dir" ;; 2719b3062210Smrg *-*-darwin* ) 2720b3062210Smrg # if the lib is a module then we can not link against 2721b3062210Smrg # it, someone is ignoring the new warnings I added 2722b3062210Smrg if /usr/bin/file -L $add 2> /dev/null | 2723b3062210Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 2724b3062210Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 2725b3062210Smrg if test -z "$old_library" ; then 2726b3062210Smrg $echo 2727b3062210Smrg $echo "** And there doesn't seem to be a static archive available" 2728b3062210Smrg $echo "** The link will probably fail, sorry" 2729b3062210Smrg else 2730b3062210Smrg add="$dir/$old_library" 2731b3062210Smrg fi 2732b3062210Smrg fi 2733b3062210Smrg esac 2734b3062210Smrg elif test "$hardcode_minus_L" = no; then 2735b3062210Smrg case $host in 2736b3062210Smrg *-*-sunos*) add_shlibpath="$dir" ;; 2737b3062210Smrg esac 2738b3062210Smrg add_dir="-L$dir" 2739b3062210Smrg add="-l$name" 2740b3062210Smrg elif test "$hardcode_shlibpath_var" = no; then 2741b3062210Smrg add_shlibpath="$dir" 2742b3062210Smrg add="-l$name" 2743b3062210Smrg else 2744b3062210Smrg lib_linked=no 2745b3062210Smrg fi 2746b3062210Smrg ;; 2747b3062210Smrg relink) 2748b3062210Smrg if test "$hardcode_direct" = yes; then 2749b3062210Smrg add="$dir/$linklib" 2750b3062210Smrg elif test "$hardcode_minus_L" = yes; then 2751b3062210Smrg add_dir="-L$dir" 2752b3062210Smrg # Try looking first in the location we're being installed to. 2753b3062210Smrg if test -n "$inst_prefix_dir"; then 2754b3062210Smrg case $libdir in 2755b3062210Smrg [\\/]*) 2756b3062210Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2757b3062210Smrg ;; 2758b3062210Smrg esac 2759b3062210Smrg fi 2760b3062210Smrg add="-l$name" 2761b3062210Smrg elif test "$hardcode_shlibpath_var" = yes; then 2762b3062210Smrg add_shlibpath="$dir" 2763b3062210Smrg add="-l$name" 2764b3062210Smrg else 2765b3062210Smrg lib_linked=no 2766b3062210Smrg fi 2767b3062210Smrg ;; 2768b3062210Smrg *) lib_linked=no ;; 2769b3062210Smrg esac 277023a0898aSmrg 2771b3062210Smrg if test "$lib_linked" != yes; then 2772b3062210Smrg $echo "$modename: configuration error: unsupported hardcode properties" 2773b3062210Smrg exit $EXIT_FAILURE 2774b3062210Smrg fi 27757f7f5e4eSmrg 2776b3062210Smrg if test -n "$add_shlibpath"; then 2777b3062210Smrg case :$compile_shlibpath: in 2778b3062210Smrg *":$add_shlibpath:"*) ;; 2779b3062210Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2780b3062210Smrg esac 2781b3062210Smrg fi 2782b3062210Smrg if test "$linkmode" = prog; then 2783b3062210Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2784b3062210Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2785b3062210Smrg else 2786b3062210Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2787b3062210Smrg test -n "$add" && deplibs="$add $deplibs" 2788b3062210Smrg if test "$hardcode_direct" != yes && \ 2789b3062210Smrg test "$hardcode_minus_L" != yes && \ 2790b3062210Smrg test "$hardcode_shlibpath_var" = yes; then 2791b3062210Smrg case :$finalize_shlibpath: in 2792b3062210Smrg *":$libdir:"*) ;; 2793b3062210Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2794b3062210Smrg esac 2795b3062210Smrg fi 2796b3062210Smrg fi 2797b3062210Smrg fi 27987f7f5e4eSmrg 2799b3062210Smrg if test "$linkmode" = prog || test "$mode" = relink; then 2800b3062210Smrg add_shlibpath= 2801b3062210Smrg add_dir= 2802b3062210Smrg add= 2803b3062210Smrg # Finalize command for both is simple: just hardcode it. 2804b3062210Smrg if test "$hardcode_direct" = yes; then 2805b3062210Smrg add="$libdir/$linklib" 2806b3062210Smrg elif test "$hardcode_minus_L" = yes; then 2807b3062210Smrg add_dir="-L$libdir" 2808b3062210Smrg add="-l$name" 2809b3062210Smrg elif test "$hardcode_shlibpath_var" = yes; then 2810b3062210Smrg case :$finalize_shlibpath: in 2811b3062210Smrg *":$libdir:"*) ;; 2812b3062210Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2813b3062210Smrg esac 2814b3062210Smrg add="-l$name" 2815b3062210Smrg elif test "$hardcode_automatic" = yes; then 2816b3062210Smrg if test -n "$inst_prefix_dir" && 2817b3062210Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2818b3062210Smrg add="$inst_prefix_dir$libdir/$linklib" 2819b3062210Smrg else 2820b3062210Smrg add="$libdir/$linklib" 2821b3062210Smrg fi 2822b3062210Smrg else 2823b3062210Smrg # We cannot seem to hardcode it, guess we'll fake it. 2824b3062210Smrg add_dir="-L$libdir" 2825b3062210Smrg # Try looking first in the location we're being installed to. 2826b3062210Smrg if test -n "$inst_prefix_dir"; then 2827b3062210Smrg case $libdir in 2828b3062210Smrg [\\/]*) 2829b3062210Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2830b3062210Smrg ;; 2831b3062210Smrg esac 2832b3062210Smrg fi 2833b3062210Smrg add="-l$name" 2834b3062210Smrg fi 28357f7f5e4eSmrg 2836b3062210Smrg if test "$linkmode" = prog; then 2837b3062210Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2838b3062210Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2839b3062210Smrg else 2840b3062210Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2841b3062210Smrg test -n "$add" && deplibs="$add $deplibs" 2842b3062210Smrg fi 2843b3062210Smrg fi 2844b3062210Smrg elif test "$linkmode" = prog; then 2845b3062210Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2846b3062210Smrg # is not unsupported. This is valid on all known static and 2847b3062210Smrg # shared platforms. 2848b3062210Smrg if test "$hardcode_direct" != unsupported; then 2849b3062210Smrg test -n "$old_library" && linklib="$old_library" 2850b3062210Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 2851b3062210Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2852b3062210Smrg else 2853b3062210Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2854b3062210Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2855b3062210Smrg fi 2856b3062210Smrg elif test "$build_libtool_libs" = yes; then 2857b3062210Smrg # Not a shared library 2858b3062210Smrg if test "$deplibs_check_method" != pass_all; then 2859b3062210Smrg # We're trying link a shared library against a static one 2860b3062210Smrg # but the system doesn't support it. 28617f7f5e4eSmrg 2862b3062210Smrg # Just print a warning and add the library to dependency_libs so 2863b3062210Smrg # that the program can be linked against the static library. 2864b3062210Smrg $echo 2865b3062210Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 2866b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 2867b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 2868b3062210Smrg $echo "*** shared version of the library, which you do not appear to have." 2869b3062210Smrg if test "$module" = yes; then 2870b3062210Smrg $echo "*** But as you try to build a module library, libtool will still create " 2871b3062210Smrg $echo "*** a static module, that should work as long as the dlopening application" 2872b3062210Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2873b3062210Smrg if test -z "$global_symbol_pipe"; then 2874b3062210Smrg $echo 2875b3062210Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 2876b3062210Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2877b3062210Smrg $echo "*** not find such a program. So, this module is probably useless." 2878b3062210Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2879b3062210Smrg fi 2880b3062210Smrg if test "$build_old_libs" = no; then 2881b3062210Smrg build_libtool_libs=module 2882b3062210Smrg build_old_libs=yes 2883b3062210Smrg else 2884b3062210Smrg build_libtool_libs=no 2885b3062210Smrg fi 2886b3062210Smrg fi 2887b3062210Smrg else 2888b3062210Smrg deplibs="$dir/$old_library $deplibs" 2889b3062210Smrg link_static=yes 2890b3062210Smrg fi 2891b3062210Smrg fi # link shared/static library? 289223a0898aSmrg 2893b3062210Smrg if test "$linkmode" = lib; then 2894b3062210Smrg if test -n "$dependency_libs" && 2895b3062210Smrg { test "$hardcode_into_libs" != yes || 2896b3062210Smrg test "$build_old_libs" = yes || 2897b3062210Smrg test "$link_static" = yes; }; then 2898b3062210Smrg # Extract -R from dependency_libs 2899b3062210Smrg temp_deplibs= 2900b3062210Smrg for libdir in $dependency_libs; do 2901b3062210Smrg case $libdir in 2902b3062210Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2903b3062210Smrg case " $xrpath " in 2904b3062210Smrg *" $temp_xrpath "*) ;; 2905b3062210Smrg *) xrpath="$xrpath $temp_xrpath";; 2906b3062210Smrg esac;; 2907b3062210Smrg *) temp_deplibs="$temp_deplibs $libdir";; 2908b3062210Smrg esac 2909b3062210Smrg done 2910b3062210Smrg dependency_libs="$temp_deplibs" 2911b3062210Smrg fi 291223a0898aSmrg 2913b3062210Smrg newlib_search_path="$newlib_search_path $absdir" 2914b3062210Smrg # Link against this library 2915b3062210Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2916b3062210Smrg # ... and its dependency_libs 2917b3062210Smrg tmp_libs= 2918b3062210Smrg for deplib in $dependency_libs; do 2919b3062210Smrg newdependency_libs="$deplib $newdependency_libs" 2920b3062210Smrg if test "X$duplicate_deps" = "Xyes" ; then 2921b3062210Smrg case "$tmp_libs " in 2922b3062210Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2923b3062210Smrg esac 2924b3062210Smrg fi 2925b3062210Smrg tmp_libs="$tmp_libs $deplib" 2926b3062210Smrg done 29277f7f5e4eSmrg 2928b3062210Smrg if test "$link_all_deplibs" != no; then 2929b3062210Smrg # Add the search paths of all dependency libraries 2930b3062210Smrg for deplib in $dependency_libs; do 2931b3062210Smrg case $deplib in 2932b3062210Smrg -L*) path="$deplib" ;; 2933b3062210Smrg *.la) 2934b3062210Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2935b3062210Smrg test "X$dir" = "X$deplib" && dir="." 2936b3062210Smrg # We need an absolute path. 2937b3062210Smrg case $dir in 2938b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2939b3062210Smrg *) 2940b3062210Smrg absdir=`cd "$dir" && pwd` 2941b3062210Smrg if test -z "$absdir"; then 2942b3062210Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2943b3062210Smrg absdir="$dir" 2944b3062210Smrg fi 2945b3062210Smrg ;; 2946b3062210Smrg esac 2947b3062210Smrg if grep "^installed=no" $deplib > /dev/null; then 2948b3062210Smrg path="$absdir/$objdir" 2949b3062210Smrg else 2950b3062210Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2951b3062210Smrg if test -z "$libdir"; then 2952b3062210Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2953b3062210Smrg exit $EXIT_FAILURE 2954b3062210Smrg fi 2955b3062210Smrg if test "$absdir" != "$libdir"; then 2956b3062210Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2957b3062210Smrg fi 2958b3062210Smrg path="$absdir" 2959b3062210Smrg fi 2960b3062210Smrg depdepl= 2961b3062210Smrg case $host in 2962b3062210Smrg *-*-darwin*) 2963b3062210Smrg # we do not want to link against static libs, 2964b3062210Smrg # but need to link against shared 2965b3062210Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2966b3062210Smrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2967b3062210Smrg if test -n "$deplibrary_names" ; then 2968b3062210Smrg for tmp in $deplibrary_names ; do 2969b3062210Smrg depdepl=$tmp 2970b3062210Smrg done 2971b3062210Smrg if test -f "$deplibdir/$depdepl" ; then 2972b3062210Smrg depdepl="$deplibdir/$depdepl" 2973b3062210Smrg elif test -f "$path/$depdepl" ; then 2974b3062210Smrg depdepl="$path/$depdepl" 2975b3062210Smrg else 2976b3062210Smrg # Can't find it, oh well... 2977b3062210Smrg depdepl= 2978b3062210Smrg fi 2979b3062210Smrg # do not add paths which are already there 2980b3062210Smrg case " $newlib_search_path " in 2981b3062210Smrg *" $path "*) ;; 2982b3062210Smrg *) newlib_search_path="$newlib_search_path $path";; 2983b3062210Smrg esac 2984b3062210Smrg fi 2985b3062210Smrg path="" 2986b3062210Smrg ;; 2987b3062210Smrg *) 2988b3062210Smrg path="-L$path" 2989b3062210Smrg ;; 2990b3062210Smrg esac 2991b3062210Smrg ;; 2992b3062210Smrg -l*) 2993b3062210Smrg case $host in 2994b3062210Smrg *-*-darwin*) 2995b3062210Smrg # Again, we only want to link against shared libraries 2996b3062210Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2997b3062210Smrg for tmp in $newlib_search_path ; do 2998b3062210Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2999b3062210Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 3000b3062210Smrg break 3001b3062210Smrg fi 3002b3062210Smrg done 3003b3062210Smrg path="" 3004b3062210Smrg ;; 3005b3062210Smrg *) continue ;; 3006b3062210Smrg esac 3007b3062210Smrg ;; 3008b3062210Smrg *) continue ;; 3009b3062210Smrg esac 3010b3062210Smrg case " $deplibs " in 3011b3062210Smrg *" $path "*) ;; 3012b3062210Smrg *) deplibs="$path $deplibs" ;; 3013b3062210Smrg esac 3014b3062210Smrg case " $deplibs " in 3015b3062210Smrg *" $depdepl "*) ;; 3016b3062210Smrg *) deplibs="$depdepl $deplibs" ;; 3017b3062210Smrg esac 3018b3062210Smrg done 3019b3062210Smrg fi # link_all_deplibs != no 3020b3062210Smrg fi # linkmode = lib 3021b3062210Smrg done # for deplib in $libs 3022b3062210Smrg dependency_libs="$newdependency_libs" 3023b3062210Smrg if test "$pass" = dlpreopen; then 3024b3062210Smrg # Link the dlpreopened libraries before other libraries 3025b3062210Smrg for deplib in $save_deplibs; do 3026b3062210Smrg deplibs="$deplib $deplibs" 3027b3062210Smrg done 3028b3062210Smrg fi 3029b3062210Smrg if test "$pass" != dlopen; then 3030b3062210Smrg if test "$pass" != conv; then 3031b3062210Smrg # Make sure lib_search_path contains only unique directories. 3032b3062210Smrg lib_search_path= 3033b3062210Smrg for dir in $newlib_search_path; do 3034b3062210Smrg case "$lib_search_path " in 3035b3062210Smrg *" $dir "*) ;; 3036b3062210Smrg *) lib_search_path="$lib_search_path $dir" ;; 3037b3062210Smrg esac 3038b3062210Smrg done 3039b3062210Smrg newlib_search_path= 3040b3062210Smrg fi 3041b3062210Smrg 3042b3062210Smrg if test "$linkmode,$pass" != "prog,link"; then 3043b3062210Smrg vars="deplibs" 3044b3062210Smrg else 3045b3062210Smrg vars="compile_deplibs finalize_deplibs" 3046b3062210Smrg fi 3047b3062210Smrg for var in $vars dependency_libs; do 3048b3062210Smrg # Add libraries to $var in reverse order 3049b3062210Smrg eval tmp_libs=\"\$$var\" 3050b3062210Smrg new_libs= 3051b3062210Smrg for deplib in $tmp_libs; do 3052b3062210Smrg # FIXME: Pedantically, this is the right thing to do, so 3053b3062210Smrg # that some nasty dependency loop isn't accidentally 3054b3062210Smrg # broken: 3055b3062210Smrg #new_libs="$deplib $new_libs" 3056b3062210Smrg # Pragmatically, this seems to cause very few problems in 3057b3062210Smrg # practice: 3058b3062210Smrg case $deplib in 3059b3062210Smrg -L*) new_libs="$deplib $new_libs" ;; 3060b3062210Smrg -R*) ;; 3061b3062210Smrg *) 3062b3062210Smrg # And here is the reason: when a library appears more 3063b3062210Smrg # than once as an explicit dependence of a library, or 3064b3062210Smrg # is implicitly linked in more than once by the 3065b3062210Smrg # compiler, it is considered special, and multiple 3066b3062210Smrg # occurrences thereof are not removed. Compare this 3067b3062210Smrg # with having the same library being listed as a 3068b3062210Smrg # dependency of multiple other libraries: in this case, 3069b3062210Smrg # we know (pedantically, we assume) the library does not 3070b3062210Smrg # need to be listed more than once, so we keep only the 3071b3062210Smrg # last copy. This is not always right, but it is rare 3072b3062210Smrg # enough that we require users that really mean to play 3073b3062210Smrg # such unportable linking tricks to link the library 3074b3062210Smrg # using -Wl,-lname, so that libtool does not consider it 3075b3062210Smrg # for duplicate removal. 3076b3062210Smrg case " $specialdeplibs " in 3077b3062210Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3078b3062210Smrg *) 3079b3062210Smrg case " $new_libs " in 3080b3062210Smrg *" $deplib "*) ;; 3081b3062210Smrg *) new_libs="$deplib $new_libs" ;; 3082b3062210Smrg esac 3083b3062210Smrg ;; 3084b3062210Smrg esac 3085b3062210Smrg ;; 3086b3062210Smrg esac 3087b3062210Smrg done 3088b3062210Smrg tmp_libs= 3089b3062210Smrg for deplib in $new_libs; do 3090b3062210Smrg case $deplib in 3091b3062210Smrg -L*) 3092b3062210Smrg case " $tmp_libs " in 3093b3062210Smrg *" $deplib "*) ;; 3094b3062210Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3095b3062210Smrg esac 3096b3062210Smrg ;; 3097b3062210Smrg *) tmp_libs="$tmp_libs $deplib" ;; 3098b3062210Smrg esac 3099b3062210Smrg done 3100b3062210Smrg eval $var=\"$tmp_libs\" 3101b3062210Smrg done # for var 3102b3062210Smrg fi 3103b3062210Smrg # Last step: remove runtime libs from dependency_libs 3104b3062210Smrg # (they stay in deplibs) 3105b3062210Smrg tmp_libs= 3106b3062210Smrg for i in $dependency_libs ; do 3107b3062210Smrg case " $predeps $postdeps $compiler_lib_search_path " in 3108b3062210Smrg *" $i "*) 3109b3062210Smrg i="" 31107f7f5e4eSmrg ;; 31117f7f5e4eSmrg esac 3112b3062210Smrg if test -n "$i" ; then 3113b3062210Smrg tmp_libs="$tmp_libs $i" 3114b3062210Smrg fi 3115b3062210Smrg done 3116b3062210Smrg dependency_libs=$tmp_libs 3117b3062210Smrg done # for pass 3118b3062210Smrg if test "$linkmode" = prog; then 3119b3062210Smrg dlfiles="$newdlfiles" 3120b3062210Smrg dlprefiles="$newdlprefiles" 31217f7f5e4eSmrg fi 31227f7f5e4eSmrg 3123b3062210Smrg case $linkmode in 3124b3062210Smrg oldlib) 3125b3062210Smrg case " $deplibs" in 3126b3062210Smrg *\ -l* | *\ -L*) 3127b3062210Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3128b3062210Smrg esac 312923a0898aSmrg 3130b3062210Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3131b3062210Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3132b3062210Smrg fi 313323a0898aSmrg 3134b3062210Smrg if test -n "$rpath"; then 3135b3062210Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3136b3062210Smrg fi 313723a0898aSmrg 3138b3062210Smrg if test -n "$xrpath"; then 3139b3062210Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3140b3062210Smrg fi 314123a0898aSmrg 3142b3062210Smrg if test -n "$vinfo"; then 3143b3062210Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3144b3062210Smrg fi 314523a0898aSmrg 3146b3062210Smrg if test -n "$release"; then 3147b3062210Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3148b3062210Smrg fi 314923a0898aSmrg 3150b3062210Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3151b3062210Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3152b3062210Smrg fi 315323a0898aSmrg 3154b3062210Smrg # Now set the variables for building old libraries. 3155b3062210Smrg build_libtool_libs=no 3156b3062210Smrg oldlibs="$output" 3157b3062210Smrg objs="$objs$old_deplibs" 3158b3062210Smrg ;; 315923a0898aSmrg 3160b3062210Smrg lib) 3161b3062210Smrg # Make sure we only generate libraries of the form `libNAME.la'. 3162b3062210Smrg case $outputname in 3163b3062210Smrg lib*) 3164b3062210Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3165b3062210Smrg eval shared_ext=\"$shrext_cmds\" 3166b3062210Smrg eval libname=\"$libname_spec\" 3167b3062210Smrg ;; 3168b3062210Smrg *) 3169b3062210Smrg if test "$module" = no; then 3170b3062210Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3171b3062210Smrg $echo "$help" 1>&2 3172b3062210Smrg exit $EXIT_FAILURE 3173b3062210Smrg fi 3174b3062210Smrg if test "$need_lib_prefix" != no; then 3175b3062210Smrg # Add the "lib" prefix for modules if required 3176b3062210Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3177b3062210Smrg eval shared_ext=\"$shrext_cmds\" 3178b3062210Smrg eval libname=\"$libname_spec\" 3179b3062210Smrg else 3180b3062210Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3181b3062210Smrg fi 3182b3062210Smrg ;; 3183b3062210Smrg esac 318423a0898aSmrg 3185b3062210Smrg if test -n "$objs"; then 3186b3062210Smrg if test "$deplibs_check_method" != pass_all; then 3187b3062210Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3188b3062210Smrg exit $EXIT_FAILURE 3189b3062210Smrg else 3190b3062210Smrg $echo 3191b3062210Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3192b3062210Smrg $echo "*** objects $objs is not portable!" 3193b3062210Smrg libobjs="$libobjs $objs" 3194b3062210Smrg fi 3195b3062210Smrg fi 319623a0898aSmrg 3197b3062210Smrg if test "$dlself" != no; then 3198b3062210Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3199b3062210Smrg fi 320023a0898aSmrg 3201b3062210Smrg set dummy $rpath 3202b3062210Smrg if test "$#" -gt 2; then 3203b3062210Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3204b3062210Smrg fi 3205b3062210Smrg install_libdir="$2" 320623a0898aSmrg 3207b3062210Smrg oldlibs= 3208b3062210Smrg if test -z "$rpath"; then 3209b3062210Smrg if test "$build_libtool_libs" = yes; then 3210b3062210Smrg # Building a libtool convenience library. 3211b3062210Smrg # Some compilers have problems with a `.al' extension so 3212b3062210Smrg # convenience libraries should have the same extension an 3213b3062210Smrg # archive normally would. 3214b3062210Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3215b3062210Smrg build_libtool_libs=convenience 3216b3062210Smrg build_old_libs=yes 3217b3062210Smrg fi 321823a0898aSmrg 3219b3062210Smrg if test -n "$vinfo"; then 3220b3062210Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3221b3062210Smrg fi 322223a0898aSmrg 3223b3062210Smrg if test -n "$release"; then 3224b3062210Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3225b3062210Smrg fi 3226b3062210Smrg else 322723a0898aSmrg 3228b3062210Smrg # Parse the version information argument. 3229b3062210Smrg save_ifs="$IFS"; IFS=':' 3230b3062210Smrg set dummy $vinfo 0 0 0 3231b3062210Smrg IFS="$save_ifs" 323223a0898aSmrg 3233b3062210Smrg if test -n "$8"; then 3234b3062210Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3235b3062210Smrg $echo "$help" 1>&2 3236b3062210Smrg exit $EXIT_FAILURE 3237b3062210Smrg fi 323823a0898aSmrg 3239b3062210Smrg # convert absolute version numbers to libtool ages 3240b3062210Smrg # this retains compatibility with .la files and attempts 3241b3062210Smrg # to make the code below a bit more comprehensible 324223a0898aSmrg 3243b3062210Smrg case $vinfo_number in 3244b3062210Smrg yes) 3245b3062210Smrg number_major="$2" 3246b3062210Smrg number_minor="$3" 3247b3062210Smrg number_revision="$4" 3248b3062210Smrg # 3249b3062210Smrg # There are really only two kinds -- those that 3250b3062210Smrg # use the current revision as the major version 3251b3062210Smrg # and those that subtract age and use age as 3252b3062210Smrg # a minor version. But, then there is irix 3253b3062210Smrg # which has an extra 1 added just for fun 3254b3062210Smrg # 3255b3062210Smrg case $version_type in 3256b3062210Smrg darwin|linux|osf|windows|none) 3257b3062210Smrg current=`expr $number_major + $number_minor` 3258b3062210Smrg age="$number_minor" 3259b3062210Smrg revision="$number_revision" 3260b3062210Smrg ;; 3261b3062210Smrg freebsd-aout|freebsd-elf|sunos) 3262b3062210Smrg current="$number_major" 3263b3062210Smrg revision="$number_minor" 3264b3062210Smrg age="0" 3265b3062210Smrg ;; 3266b3062210Smrg irix|nonstopux) 3267b3062210Smrg current=`expr $number_major + $number_minor` 3268b3062210Smrg age="$number_minor" 3269b3062210Smrg revision="$number_minor" 3270b3062210Smrg lt_irix_increment=no 3271b3062210Smrg ;; 3272b3062210Smrg esac 3273b3062210Smrg ;; 3274b3062210Smrg no) 3275b3062210Smrg current="$2" 3276b3062210Smrg revision="$3" 3277b3062210Smrg age="$4" 3278b3062210Smrg ;; 3279b3062210Smrg esac 328023a0898aSmrg 3281b3062210Smrg # Check that each of the things are valid numbers. 3282b3062210Smrg case $current in 3283b3062210Smrg 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]) ;; 3284b3062210Smrg *) 3285b3062210Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3286b3062210Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287b3062210Smrg exit $EXIT_FAILURE 3288b3062210Smrg ;; 3289b3062210Smrg esac 329023a0898aSmrg 3291b3062210Smrg case $revision in 3292b3062210Smrg 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]) ;; 3293b3062210Smrg *) 3294b3062210Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3295b3062210Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3296b3062210Smrg exit $EXIT_FAILURE 3297b3062210Smrg ;; 3298b3062210Smrg esac 329923a0898aSmrg 3300b3062210Smrg case $age in 3301b3062210Smrg 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]) ;; 3302b3062210Smrg *) 3303b3062210Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3304b3062210Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3305b3062210Smrg exit $EXIT_FAILURE 3306b3062210Smrg ;; 3307b3062210Smrg esac 330823a0898aSmrg 3309b3062210Smrg if test "$age" -gt "$current"; then 3310b3062210Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3311b3062210Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3312b3062210Smrg exit $EXIT_FAILURE 3313b3062210Smrg fi 331423a0898aSmrg 3315b3062210Smrg # Calculate the version variables. 3316b3062210Smrg major= 3317b3062210Smrg versuffix= 3318b3062210Smrg verstring= 3319b3062210Smrg case $version_type in 3320b3062210Smrg none) ;; 332123a0898aSmrg 3322b3062210Smrg darwin) 3323b3062210Smrg # Like Linux, but with the current version available in 3324b3062210Smrg # verstring for coding it into the library header 3325b3062210Smrg major=.`expr $current - $age` 3326b3062210Smrg versuffix="$major.$age.$revision" 3327b3062210Smrg # Darwin ld doesn't like 0 for these options... 3328b3062210Smrg minor_current=`expr $current + 1` 3329b3062210Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3330b3062210Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3331b3062210Smrg ;; 333223a0898aSmrg 3333b3062210Smrg freebsd-aout) 3334b3062210Smrg major=".$current" 3335b3062210Smrg versuffix=".$current.$revision"; 3336b3062210Smrg ;; 333723a0898aSmrg 3338b3062210Smrg freebsd-elf) 3339b3062210Smrg major=".$current" 3340b3062210Smrg versuffix=".$current"; 3341b3062210Smrg ;; 334223a0898aSmrg 3343b3062210Smrg irix | nonstopux) 3344b3062210Smrg if test "X$lt_irix_increment" = "Xno"; then 3345b3062210Smrg major=`expr $current - $age` 3346b3062210Smrg else 3347b3062210Smrg major=`expr $current - $age + 1` 3348b3062210Smrg fi 3349b3062210Smrg case $version_type in 3350b3062210Smrg nonstopux) verstring_prefix=nonstopux ;; 3351b3062210Smrg *) verstring_prefix=sgi ;; 3352b3062210Smrg esac 3353b3062210Smrg verstring="$verstring_prefix$major.$revision" 335423a0898aSmrg 3355b3062210Smrg # Add in all the interfaces that we are compatible with. 3356b3062210Smrg loop=$revision 3357b3062210Smrg while test "$loop" -ne 0; do 3358b3062210Smrg iface=`expr $revision - $loop` 3359b3062210Smrg loop=`expr $loop - 1` 3360b3062210Smrg verstring="$verstring_prefix$major.$iface:$verstring" 3361b3062210Smrg done 336223a0898aSmrg 3363b3062210Smrg # Before this point, $major must not contain `.'. 3364b3062210Smrg major=.$major 3365b3062210Smrg versuffix="$major.$revision" 3366b3062210Smrg ;; 336723a0898aSmrg 3368b3062210Smrg linux) 3369b3062210Smrg major=.`expr $current - $age` 3370b3062210Smrg versuffix="$major.$age.$revision" 3371b3062210Smrg ;; 337223a0898aSmrg 3373b3062210Smrg osf) 3374b3062210Smrg major=.`expr $current - $age` 3375b3062210Smrg versuffix=".$current.$age.$revision" 3376b3062210Smrg verstring="$current.$age.$revision" 33777f7f5e4eSmrg 3378b3062210Smrg # Add in all the interfaces that we are compatible with. 3379b3062210Smrg loop=$age 3380b3062210Smrg while test "$loop" -ne 0; do 3381b3062210Smrg iface=`expr $current - $loop` 3382b3062210Smrg loop=`expr $loop - 1` 3383b3062210Smrg verstring="$verstring:${iface}.0" 3384b3062210Smrg done 33857f7f5e4eSmrg 3386b3062210Smrg # Make executables depend on our current version. 3387b3062210Smrg verstring="$verstring:${current}.0" 3388b3062210Smrg ;; 33897f7f5e4eSmrg 3390b3062210Smrg sunos) 3391b3062210Smrg major=".$current" 3392b3062210Smrg versuffix=".$current.$revision" 3393b3062210Smrg ;; 33947f7f5e4eSmrg 3395b3062210Smrg windows) 3396b3062210Smrg # Use '-' rather than '.', since we only want one 3397b3062210Smrg # extension on DOS 8.3 filesystems. 3398b3062210Smrg major=`expr $current - $age` 3399b3062210Smrg versuffix="-$major" 3400b3062210Smrg ;; 34017f7f5e4eSmrg 3402b3062210Smrg *) 3403b3062210Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3404b3062210Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3405b3062210Smrg exit $EXIT_FAILURE 3406b3062210Smrg ;; 3407b3062210Smrg esac 34087f7f5e4eSmrg 3409b3062210Smrg # Clear the version info if we defaulted, and they specified a release. 3410b3062210Smrg if test -z "$vinfo" && test -n "$release"; then 3411b3062210Smrg major= 3412b3062210Smrg case $version_type in 3413b3062210Smrg darwin) 3414b3062210Smrg # we can't check for "0.0" in archive_cmds due to quoting 3415b3062210Smrg # problems, so we reset it completely 3416b3062210Smrg verstring= 341723a0898aSmrg ;; 3418b3062210Smrg *) 3419b3062210Smrg verstring="0.0" 3420b3062210Smrg ;; 3421b3062210Smrg esac 3422b3062210Smrg if test "$need_version" = no; then 3423b3062210Smrg versuffix= 3424b3062210Smrg else 3425b3062210Smrg versuffix=".0.0" 3426b3062210Smrg fi 3427b3062210Smrg fi 342823a0898aSmrg 3429b3062210Smrg # Remove version info from name if versioning should be avoided 3430b3062210Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 3431b3062210Smrg major= 3432b3062210Smrg versuffix= 3433b3062210Smrg verstring="" 3434b3062210Smrg fi 343523a0898aSmrg 3436b3062210Smrg # Check to see if the archive will have undefined symbols. 3437b3062210Smrg if test "$allow_undefined" = yes; then 3438b3062210Smrg if test "$allow_undefined_flag" = unsupported; then 3439b3062210Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3440b3062210Smrg build_libtool_libs=no 3441b3062210Smrg build_old_libs=yes 3442b3062210Smrg fi 3443b3062210Smrg else 3444b3062210Smrg # Don't allow undefined symbols. 3445b3062210Smrg allow_undefined_flag="$no_undefined_flag" 3446b3062210Smrg fi 3447b3062210Smrg fi 344823a0898aSmrg 3449b3062210Smrg if test "$mode" != relink; then 3450b3062210Smrg # Remove our outputs, but don't remove object files since they 3451b3062210Smrg # may have been created when compiling PIC objects. 3452b3062210Smrg removelist= 3453b3062210Smrg tempremovelist=`$echo "$output_objdir/*"` 3454b3062210Smrg for p in $tempremovelist; do 3455b3062210Smrg case $p in 3456b3062210Smrg *.$objext) 3457b3062210Smrg ;; 3458b3062210Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3459b3062210Smrg if test "X$precious_files_regex" != "X"; then 3460b3062210Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3461b3062210Smrg then 3462b3062210Smrg continue 3463b3062210Smrg fi 3464b3062210Smrg fi 3465b3062210Smrg removelist="$removelist $p" 3466b3062210Smrg ;; 3467b3062210Smrg *) ;; 3468b3062210Smrg esac 3469b3062210Smrg done 3470b3062210Smrg if test -n "$removelist"; then 3471b3062210Smrg $show "${rm}r $removelist" 3472b3062210Smrg $run ${rm}r $removelist 3473b3062210Smrg fi 3474b3062210Smrg fi 347523a0898aSmrg 3476b3062210Smrg # Now set the variables for building old libraries. 3477b3062210Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3478b3062210Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 347923a0898aSmrg 3480b3062210Smrg # Transform .lo files to .o files. 3481b3062210Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3482b3062210Smrg fi 348323a0898aSmrg 3484b3062210Smrg # Eliminate all temporary directories. 3485b3062210Smrg #for path in $notinst_path; do 3486b3062210Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3487b3062210Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3488b3062210Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3489b3062210Smrg #done 349023a0898aSmrg 3491b3062210Smrg if test -n "$xrpath"; then 3492b3062210Smrg # If the user specified any rpath flags, then add them. 3493b3062210Smrg temp_xrpath= 3494b3062210Smrg for libdir in $xrpath; do 3495b3062210Smrg temp_xrpath="$temp_xrpath -R$libdir" 3496b3062210Smrg case "$finalize_rpath " in 3497b3062210Smrg *" $libdir "*) ;; 3498b3062210Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3499b3062210Smrg esac 3500b3062210Smrg done 3501b3062210Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3502b3062210Smrg dependency_libs="$temp_xrpath $dependency_libs" 3503b3062210Smrg fi 3504b3062210Smrg fi 350523a0898aSmrg 3506b3062210Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3507b3062210Smrg old_dlfiles="$dlfiles" 3508b3062210Smrg dlfiles= 3509b3062210Smrg for lib in $old_dlfiles; do 3510b3062210Smrg case " $dlprefiles $dlfiles " in 3511b3062210Smrg *" $lib "*) ;; 3512b3062210Smrg *) dlfiles="$dlfiles $lib" ;; 3513b3062210Smrg esac 3514b3062210Smrg done 351523a0898aSmrg 3516b3062210Smrg # Make sure dlprefiles contains only unique files 3517b3062210Smrg old_dlprefiles="$dlprefiles" 3518b3062210Smrg dlprefiles= 3519b3062210Smrg for lib in $old_dlprefiles; do 3520b3062210Smrg case "$dlprefiles " in 3521b3062210Smrg *" $lib "*) ;; 3522b3062210Smrg *) dlprefiles="$dlprefiles $lib" ;; 3523b3062210Smrg esac 3524b3062210Smrg done 352523a0898aSmrg 3526b3062210Smrg if test "$build_libtool_libs" = yes; then 3527b3062210Smrg if test -n "$rpath"; then 3528b3062210Smrg case $host in 3529b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3530b3062210Smrg # these systems don't actually have a c library (as such)! 3531b3062210Smrg ;; 3532b3062210Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3533b3062210Smrg # Rhapsody C library is in the System framework 3534b3062210Smrg deplibs="$deplibs -framework System" 3535b3062210Smrg ;; 3536b3062210Smrg *-*-netbsd*) 3537b3062210Smrg # Don't link with libc until the a.out ld.so is fixed. 3538b3062210Smrg ;; 3539b3062210Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3540b3062210Smrg # Do not include libc due to us having libc/libc_r. 3541b3062210Smrg ;; 3542b3062210Smrg *-*-sco3.2v5* | *-*-sco5v6*) 3543b3062210Smrg # Causes problems with __ctype 3544b3062210Smrg ;; 3545b3062210Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3546b3062210Smrg # Compiler inserts libc in the correct place for threads to work 3547b3062210Smrg ;; 3548b3062210Smrg *) 3549b3062210Smrg # Add libc to deplibs on all other systems if necessary. 3550b3062210Smrg if test "$build_libtool_need_lc" = "yes"; then 3551b3062210Smrg deplibs="$deplibs -lc" 3552b3062210Smrg fi 3553b3062210Smrg ;; 3554b3062210Smrg esac 3555b3062210Smrg fi 355623a0898aSmrg 3557b3062210Smrg # Transform deplibs into only deplibs that can be linked in shared. 3558b3062210Smrg name_save=$name 3559b3062210Smrg libname_save=$libname 3560b3062210Smrg release_save=$release 3561b3062210Smrg versuffix_save=$versuffix 3562b3062210Smrg major_save=$major 3563b3062210Smrg # I'm not sure if I'm treating the release correctly. I think 3564b3062210Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 3565b3062210Smrg # add it in twice. Is that correct? 3566b3062210Smrg release="" 3567b3062210Smrg versuffix="" 3568b3062210Smrg major="" 3569b3062210Smrg newdeplibs= 3570b3062210Smrg droppeddeps=no 3571b3062210Smrg case $deplibs_check_method in 3572b3062210Smrg pass_all) 3573b3062210Smrg # Don't check for shared/static. Everything works. 3574b3062210Smrg # This might be a little naive. We might want to check 3575b3062210Smrg # whether the library exists or not. But this is on 3576b3062210Smrg # osf3 & osf4 and I'm not really sure... Just 3577b3062210Smrg # implementing what was already the behavior. 3578b3062210Smrg newdeplibs=$deplibs 3579b3062210Smrg ;; 3580b3062210Smrg test_compile) 3581b3062210Smrg # This code stresses the "libraries are programs" paradigm to its 3582b3062210Smrg # limits. Maybe even breaks it. We compile a program, linking it 3583b3062210Smrg # against the deplibs as a proxy for the library. Then we can check 3584b3062210Smrg # whether they linked in statically or dynamically with ldd. 3585b3062210Smrg $rm conftest.c 3586b3062210Smrg cat > conftest.c <<EOF 3587b3062210Smrg int main() { return 0; } 3588b3062210SmrgEOF 3589b3062210Smrg $rm conftest 3590b3062210Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3591b3062210Smrg ldd_output=`ldd conftest` 3592b3062210Smrg for i in $deplibs; do 3593b3062210Smrg name=`expr $i : '-l\(.*\)'` 3594b3062210Smrg # If $name is empty we are operating on a -L argument. 3595b3062210Smrg if test "$name" != "" && test "$name" != "0"; then 3596b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3597b3062210Smrg case " $predeps $postdeps " in 3598b3062210Smrg *" $i "*) 3599b3062210Smrg newdeplibs="$newdeplibs $i" 3600b3062210Smrg i="" 3601b3062210Smrg ;; 3602b3062210Smrg esac 3603b3062210Smrg fi 3604b3062210Smrg if test -n "$i" ; then 3605b3062210Smrg libname=`eval \\$echo \"$libname_spec\"` 3606b3062210Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3607b3062210Smrg set dummy $deplib_matches 3608b3062210Smrg deplib_match=$2 3609b3062210Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3610b3062210Smrg newdeplibs="$newdeplibs $i" 3611b3062210Smrg else 3612b3062210Smrg droppeddeps=yes 3613b3062210Smrg $echo 3614b3062210Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3615b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 3616b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 3617b3062210Smrg $echo "*** shared version of the library, which I believe you do not have" 3618b3062210Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3619b3062210Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3620b3062210Smrg fi 3621b3062210Smrg fi 3622b3062210Smrg else 3623b3062210Smrg newdeplibs="$newdeplibs $i" 3624b3062210Smrg fi 3625b3062210Smrg done 3626b3062210Smrg else 3627b3062210Smrg # Error occurred in the first compile. Let's try to salvage 3628b3062210Smrg # the situation: Compile a separate program for each library. 3629b3062210Smrg for i in $deplibs; do 3630b3062210Smrg name=`expr $i : '-l\(.*\)'` 3631b3062210Smrg # If $name is empty we are operating on a -L argument. 3632b3062210Smrg if test "$name" != "" && test "$name" != "0"; then 3633b3062210Smrg $rm conftest 3634b3062210Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3635b3062210Smrg ldd_output=`ldd conftest` 3636b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3637b3062210Smrg case " $predeps $postdeps " in 3638b3062210Smrg *" $i "*) 3639b3062210Smrg newdeplibs="$newdeplibs $i" 3640b3062210Smrg i="" 3641b3062210Smrg ;; 3642b3062210Smrg esac 3643b3062210Smrg fi 3644b3062210Smrg if test -n "$i" ; then 3645b3062210Smrg libname=`eval \\$echo \"$libname_spec\"` 3646b3062210Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3647b3062210Smrg set dummy $deplib_matches 3648b3062210Smrg deplib_match=$2 3649b3062210Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3650b3062210Smrg newdeplibs="$newdeplibs $i" 3651b3062210Smrg else 3652b3062210Smrg droppeddeps=yes 3653b3062210Smrg $echo 3654b3062210Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3655b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 3656b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 3657b3062210Smrg $echo "*** shared version of the library, which you do not appear to have" 3658b3062210Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3659b3062210Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3660b3062210Smrg fi 3661b3062210Smrg fi 3662b3062210Smrg else 3663b3062210Smrg droppeddeps=yes 3664b3062210Smrg $echo 3665b3062210Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3666b3062210Smrg $echo "*** make it link in! You will probably need to install it or some" 3667b3062210Smrg $echo "*** library that it depends on before this library will be fully" 3668b3062210Smrg $echo "*** functional. Installing it before continuing would be even better." 3669b3062210Smrg fi 3670b3062210Smrg else 3671b3062210Smrg newdeplibs="$newdeplibs $i" 3672b3062210Smrg fi 3673b3062210Smrg done 3674b3062210Smrg fi 3675b3062210Smrg ;; 3676b3062210Smrg file_magic*) 3677b3062210Smrg set dummy $deplibs_check_method 3678b3062210Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3679b3062210Smrg for a_deplib in $deplibs; do 3680b3062210Smrg name=`expr $a_deplib : '-l\(.*\)'` 3681b3062210Smrg # If $name is empty we are operating on a -L argument. 3682b3062210Smrg if test "$name" != "" && test "$name" != "0"; then 3683b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3684b3062210Smrg case " $predeps $postdeps " in 3685b3062210Smrg *" $a_deplib "*) 3686b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3687b3062210Smrg a_deplib="" 3688b3062210Smrg ;; 3689b3062210Smrg esac 3690b3062210Smrg fi 3691b3062210Smrg if test -n "$a_deplib" ; then 3692b3062210Smrg libname=`eval \\$echo \"$libname_spec\"` 3693b3062210Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3694b3062210Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3695b3062210Smrg for potent_lib in $potential_libs; do 3696b3062210Smrg # Follow soft links. 3697b3062210Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 3698b3062210Smrg | grep " -> " >/dev/null; then 3699b3062210Smrg continue 3700b3062210Smrg fi 3701b3062210Smrg # The statement above tries to avoid entering an 3702b3062210Smrg # endless loop below, in case of cyclic links. 3703b3062210Smrg # We might still enter an endless loop, since a link 3704b3062210Smrg # loop can be closed while we follow links, 3705b3062210Smrg # but so what? 3706b3062210Smrg potlib="$potent_lib" 3707b3062210Smrg while test -h "$potlib" 2>/dev/null; do 3708b3062210Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3709b3062210Smrg case $potliblink in 3710b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3711b3062210Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3712b3062210Smrg esac 3713b3062210Smrg done 3714b3062210Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3715b3062210Smrg | ${SED} 10q \ 3716b3062210Smrg | $EGREP "$file_magic_regex" > /dev/null; then 3717b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3718b3062210Smrg a_deplib="" 3719b3062210Smrg break 2 3720b3062210Smrg fi 3721b3062210Smrg done 3722b3062210Smrg done 3723b3062210Smrg fi 3724b3062210Smrg if test -n "$a_deplib" ; then 3725b3062210Smrg droppeddeps=yes 3726b3062210Smrg $echo 3727b3062210Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3728b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 3729b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 3730b3062210Smrg $echo "*** shared version of the library, which you do not appear to have" 3731b3062210Smrg $echo "*** because I did check the linker path looking for a file starting" 3732b3062210Smrg if test -z "$potlib" ; then 3733b3062210Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3734b3062210Smrg else 3735b3062210Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3736b3062210Smrg $echo "*** using a file magic. Last file checked: $potlib" 3737b3062210Smrg fi 3738b3062210Smrg fi 3739b3062210Smrg else 3740b3062210Smrg # Add a -L argument. 3741b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3742b3062210Smrg fi 3743b3062210Smrg done # Gone through all deplibs. 3744b3062210Smrg ;; 3745b3062210Smrg match_pattern*) 3746b3062210Smrg set dummy $deplibs_check_method 3747b3062210Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3748b3062210Smrg for a_deplib in $deplibs; do 3749b3062210Smrg name=`expr $a_deplib : '-l\(.*\)'` 3750b3062210Smrg # If $name is empty we are operating on a -L argument. 3751b3062210Smrg if test -n "$name" && test "$name" != "0"; then 3752b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3753b3062210Smrg case " $predeps $postdeps " in 3754b3062210Smrg *" $a_deplib "*) 3755b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3756b3062210Smrg a_deplib="" 3757b3062210Smrg ;; 3758b3062210Smrg esac 3759b3062210Smrg fi 3760b3062210Smrg if test -n "$a_deplib" ; then 3761b3062210Smrg libname=`eval \\$echo \"$libname_spec\"` 3762b3062210Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3763b3062210Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3764b3062210Smrg for potent_lib in $potential_libs; do 3765b3062210Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 3766b3062210Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3767b3062210Smrg | ${SED} 10q \ 3768b3062210Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 3769b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3770b3062210Smrg a_deplib="" 3771b3062210Smrg break 2 3772b3062210Smrg fi 3773b3062210Smrg done 3774b3062210Smrg done 3775b3062210Smrg fi 3776b3062210Smrg if test -n "$a_deplib" ; then 3777b3062210Smrg droppeddeps=yes 3778b3062210Smrg $echo 3779b3062210Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3780b3062210Smrg $echo "*** I have the capability to make that library automatically link in when" 3781b3062210Smrg $echo "*** you link to this library. But I can only do this if you have a" 3782b3062210Smrg $echo "*** shared version of the library, which you do not appear to have" 3783b3062210Smrg $echo "*** because I did check the linker path looking for a file starting" 3784b3062210Smrg if test -z "$potlib" ; then 3785b3062210Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3786b3062210Smrg else 3787b3062210Smrg $echo "*** with $libname and none of the candidates passed a file format test" 3788b3062210Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 3789b3062210Smrg fi 3790b3062210Smrg fi 3791b3062210Smrg else 3792b3062210Smrg # Add a -L argument. 3793b3062210Smrg newdeplibs="$newdeplibs $a_deplib" 3794b3062210Smrg fi 3795b3062210Smrg done # Gone through all deplibs. 3796b3062210Smrg ;; 3797b3062210Smrg none | unknown | *) 3798b3062210Smrg newdeplibs="" 3799b3062210Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3800b3062210Smrg -e 's/ -[LR][^ ]*//g'` 3801b3062210Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3802b3062210Smrg for i in $predeps $postdeps ; do 3803b3062210Smrg # can't use Xsed below, because $i might contain '/' 3804b3062210Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3805b3062210Smrg done 3806b3062210Smrg fi 3807b3062210Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3808b3062210Smrg | grep . >/dev/null; then 3809b3062210Smrg $echo 3810b3062210Smrg if test "X$deplibs_check_method" = "Xnone"; then 3811b3062210Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3812b3062210Smrg else 3813b3062210Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3814b3062210Smrg fi 3815b3062210Smrg $echo "*** All declared inter-library dependencies are being dropped." 3816b3062210Smrg droppeddeps=yes 3817b3062210Smrg fi 3818b3062210Smrg ;; 3819b3062210Smrg esac 3820b3062210Smrg versuffix=$versuffix_save 3821b3062210Smrg major=$major_save 3822b3062210Smrg release=$release_save 3823b3062210Smrg libname=$libname_save 3824b3062210Smrg name=$name_save 382523a0898aSmrg 3826b3062210Smrg case $host in 3827b3062210Smrg *-*-rhapsody* | *-*-darwin1.[012]) 3828b3062210Smrg # On Rhapsody replace the C library is the System framework 3829b3062210Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3830b3062210Smrg ;; 3831b3062210Smrg esac 383223a0898aSmrg 3833b3062210Smrg if test "$droppeddeps" = yes; then 3834b3062210Smrg if test "$module" = yes; then 3835b3062210Smrg $echo 3836b3062210Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3837b3062210Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3838b3062210Smrg $echo "*** a static module, that should work as long as the dlopening" 3839b3062210Smrg $echo "*** application is linked with the -dlopen flag." 3840b3062210Smrg if test -z "$global_symbol_pipe"; then 3841b3062210Smrg $echo 3842b3062210Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 3843b3062210Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3844b3062210Smrg $echo "*** not find such a program. So, this module is probably useless." 3845b3062210Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3846b3062210Smrg fi 3847b3062210Smrg if test "$build_old_libs" = no; then 3848b3062210Smrg oldlibs="$output_objdir/$libname.$libext" 3849b3062210Smrg build_libtool_libs=module 3850b3062210Smrg build_old_libs=yes 3851b3062210Smrg else 3852b3062210Smrg build_libtool_libs=no 3853b3062210Smrg fi 3854b3062210Smrg else 3855b3062210Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 3856b3062210Smrg $echo "*** automatically added whenever a program is linked with this library" 3857b3062210Smrg $echo "*** or is declared to -dlopen it." 385823a0898aSmrg 3859b3062210Smrg if test "$allow_undefined" = no; then 3860b3062210Smrg $echo 3861b3062210Smrg $echo "*** Since this library must not contain undefined symbols," 3862b3062210Smrg $echo "*** because either the platform does not support them or" 3863b3062210Smrg $echo "*** it was explicitly requested with -no-undefined," 3864b3062210Smrg $echo "*** libtool will only create a static version of it." 3865b3062210Smrg if test "$build_old_libs" = no; then 3866b3062210Smrg oldlibs="$output_objdir/$libname.$libext" 3867b3062210Smrg build_libtool_libs=module 3868b3062210Smrg build_old_libs=yes 3869b3062210Smrg else 3870b3062210Smrg build_libtool_libs=no 3871b3062210Smrg fi 3872b3062210Smrg fi 3873b3062210Smrg fi 3874b3062210Smrg fi 3875b3062210Smrg # Done checking deplibs! 3876b3062210Smrg deplibs=$newdeplibs 3877b3062210Smrg fi 387823a0898aSmrg 387923a0898aSmrg 3880b3062210Smrg # move library search paths that coincide with paths to not yet 3881b3062210Smrg # installed libraries to the beginning of the library search list 3882b3062210Smrg new_libs= 3883b3062210Smrg for path in $notinst_path; do 3884b3062210Smrg case " $new_libs " in 3885b3062210Smrg *" -L$path/$objdir "*) ;; 3886b3062210Smrg *) 3887b3062210Smrg case " $deplibs " in 3888b3062210Smrg *" -L$path/$objdir "*) 3889b3062210Smrg new_libs="$new_libs -L$path/$objdir" ;; 3890b3062210Smrg esac 3891b3062210Smrg ;; 3892b3062210Smrg esac 3893b3062210Smrg done 3894b3062210Smrg for deplib in $deplibs; do 3895b3062210Smrg case $deplib in 3896b3062210Smrg -L*) 3897b3062210Smrg case " $new_libs " in 3898b3062210Smrg *" $deplib "*) ;; 3899b3062210Smrg *) new_libs="$new_libs $deplib" ;; 3900b3062210Smrg esac 3901b3062210Smrg ;; 3902b3062210Smrg *) new_libs="$new_libs $deplib" ;; 3903b3062210Smrg esac 3904b3062210Smrg done 3905b3062210Smrg deplibs="$new_libs" 390623a0898aSmrg 390723a0898aSmrg 3908b3062210Smrg # All the library-specific variables (install_libdir is set above). 3909b3062210Smrg library_names= 3910b3062210Smrg old_library= 3911b3062210Smrg dlname= 391223a0898aSmrg 3913b3062210Smrg # Test again, we may have decided not to build it any more 3914b3062210Smrg if test "$build_libtool_libs" = yes; then 3915b3062210Smrg if test "$hardcode_into_libs" = yes; then 3916b3062210Smrg # Hardcode the library paths 3917b3062210Smrg hardcode_libdirs= 3918b3062210Smrg dep_rpath= 3919b3062210Smrg rpath="$finalize_rpath" 3920b3062210Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3921b3062210Smrg for libdir in $rpath; do 3922b3062210Smrg if test -n "$hardcode_libdir_flag_spec"; then 3923b3062210Smrg if test -n "$hardcode_libdir_separator"; then 3924b3062210Smrg if test -z "$hardcode_libdirs"; then 3925b3062210Smrg hardcode_libdirs="$libdir" 3926b3062210Smrg else 3927b3062210Smrg # Just accumulate the unique libdirs. 3928b3062210Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3929b3062210Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3930b3062210Smrg ;; 3931b3062210Smrg *) 3932b3062210Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3933b3062210Smrg ;; 3934b3062210Smrg esac 3935b3062210Smrg fi 3936b3062210Smrg else 3937b3062210Smrg eval flag=\"$hardcode_libdir_flag_spec\" 3938b3062210Smrg dep_rpath="$dep_rpath $flag" 3939b3062210Smrg fi 3940b3062210Smrg elif test -n "$runpath_var"; then 3941b3062210Smrg case "$perm_rpath " in 3942b3062210Smrg *" $libdir "*) ;; 3943b3062210Smrg *) perm_rpath="$perm_rpath $libdir" ;; 3944b3062210Smrg esac 3945b3062210Smrg fi 3946b3062210Smrg done 3947b3062210Smrg # Substitute the hardcoded libdirs into the rpath. 3948b3062210Smrg if test -n "$hardcode_libdir_separator" && 3949b3062210Smrg test -n "$hardcode_libdirs"; then 3950b3062210Smrg libdir="$hardcode_libdirs" 3951b3062210Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3952b3062210Smrg case $archive_cmds in 3953b3062210Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3954b3062210Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3955b3062210Smrg esac 3956b3062210Smrg else 3957b3062210Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3958b3062210Smrg fi 3959b3062210Smrg fi 3960b3062210Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3961b3062210Smrg # We should set the runpath_var. 3962b3062210Smrg rpath= 3963b3062210Smrg for dir in $perm_rpath; do 3964b3062210Smrg rpath="$rpath$dir:" 3965b3062210Smrg done 3966b3062210Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3967b3062210Smrg fi 3968b3062210Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3969b3062210Smrg fi 397023a0898aSmrg 3971b3062210Smrg shlibpath="$finalize_shlibpath" 3972b3062210Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3973b3062210Smrg if test -n "$shlibpath"; then 3974b3062210Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3975b3062210Smrg fi 397623a0898aSmrg 3977b3062210Smrg # Get the real and link names of the library. 3978b3062210Smrg eval shared_ext=\"$shrext_cmds\" 3979b3062210Smrg eval library_names=\"$library_names_spec\" 3980b3062210Smrg set dummy $library_names 3981b3062210Smrg realname="$2" 3982b3062210Smrg shift; shift 398323a0898aSmrg 3984b3062210Smrg if test -n "$soname_spec"; then 3985b3062210Smrg eval soname=\"$soname_spec\" 3986b3062210Smrg else 3987b3062210Smrg soname="$realname" 3988b3062210Smrg fi 3989b3062210Smrg if test -z "$dlname"; then 3990b3062210Smrg dlname=$soname 3991b3062210Smrg fi 399223a0898aSmrg 3993b3062210Smrg lib="$output_objdir/$realname" 3994b3062210Smrg linknames= 3995b3062210Smrg for link 3996b3062210Smrg do 3997b3062210Smrg linknames="$linknames $link" 3998b3062210Smrg done 399923a0898aSmrg 4000b3062210Smrg # Use standard objects if they are pic 4001b3062210Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 400223a0898aSmrg 4003b3062210Smrg # Prepare the list of exported symbols 4004b3062210Smrg if test -z "$export_symbols"; then 4005b3062210Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4006b3062210Smrg $show "generating symbol list for \`$libname.la'" 4007b3062210Smrg export_symbols="$output_objdir/$libname.exp" 4008b3062210Smrg $run $rm $export_symbols 4009b3062210Smrg cmds=$export_symbols_cmds 4010b3062210Smrg save_ifs="$IFS"; IFS='~' 4011b3062210Smrg for cmd in $cmds; do 4012b3062210Smrg IFS="$save_ifs" 4013b3062210Smrg eval cmd=\"$cmd\" 4014b3062210Smrg if len=`expr "X$cmd" : ".*"` && 4015b3062210Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4016b3062210Smrg $show "$cmd" 4017b3062210Smrg $run eval "$cmd" || exit $? 4018b3062210Smrg skipped_export=false 4019b3062210Smrg else 4020b3062210Smrg # The command line is too long to execute in one step. 4021b3062210Smrg $show "using reloadable object file for export list..." 4022b3062210Smrg skipped_export=: 4023b3062210Smrg # Break out early, otherwise skipped_export may be 4024b3062210Smrg # set to false by a later but shorter cmd. 4025b3062210Smrg break 4026b3062210Smrg fi 4027b3062210Smrg done 4028b3062210Smrg IFS="$save_ifs" 4029b3062210Smrg if test -n "$export_symbols_regex"; then 4030b3062210Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4031b3062210Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4032b3062210Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4033b3062210Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4034b3062210Smrg fi 4035b3062210Smrg fi 4036b3062210Smrg fi 403723a0898aSmrg 4038b3062210Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4039b3062210Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4040b3062210Smrg fi 404123a0898aSmrg 4042b3062210Smrg tmp_deplibs= 4043b3062210Smrg for test_deplib in $deplibs; do 4044b3062210Smrg case " $convenience " in 4045b3062210Smrg *" $test_deplib "*) ;; 4046b3062210Smrg *) 4047b3062210Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 4048b3062210Smrg ;; 4049b3062210Smrg esac 4050b3062210Smrg done 4051b3062210Smrg deplibs="$tmp_deplibs" 405223a0898aSmrg 4053b3062210Smrg if test -n "$convenience"; then 4054b3062210Smrg if test -n "$whole_archive_flag_spec"; then 4055b3062210Smrg save_libobjs=$libobjs 4056b3062210Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4057b3062210Smrg else 4058b3062210Smrg gentop="$output_objdir/${outputname}x" 4059b3062210Smrg generated="$generated $gentop" 406023a0898aSmrg 4061b3062210Smrg func_extract_archives $gentop $convenience 4062b3062210Smrg libobjs="$libobjs $func_extract_archives_result" 4063b3062210Smrg fi 4064b3062210Smrg fi 4065b3062210Smrg 4066b3062210Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4067b3062210Smrg eval flag=\"$thread_safe_flag_spec\" 4068b3062210Smrg linker_flags="$linker_flags $flag" 4069b3062210Smrg fi 407023a0898aSmrg 4071b3062210Smrg # Make a backup of the uninstalled library when relinking 4072b3062210Smrg if test "$mode" = relink; then 4073b3062210Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4074b3062210Smrg fi 407523a0898aSmrg 4076b3062210Smrg # Do each of the archive commands. 4077b3062210Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4078b3062210Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4079b3062210Smrg eval test_cmds=\"$module_expsym_cmds\" 4080b3062210Smrg cmds=$module_expsym_cmds 4081b3062210Smrg else 4082b3062210Smrg eval test_cmds=\"$module_cmds\" 4083b3062210Smrg cmds=$module_cmds 4084b3062210Smrg fi 4085b3062210Smrg else 4086b3062210Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4087b3062210Smrg eval test_cmds=\"$archive_expsym_cmds\" 4088b3062210Smrg cmds=$archive_expsym_cmds 4089b3062210Smrg else 4090b3062210Smrg eval test_cmds=\"$archive_cmds\" 4091b3062210Smrg cmds=$archive_cmds 4092b3062210Smrg fi 4093b3062210Smrg fi 409423a0898aSmrg 4095b3062210Smrg if test "X$skipped_export" != "X:" && 4096b3062210Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4097b3062210Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4098b3062210Smrg : 4099b3062210Smrg else 4100b3062210Smrg # The command line is too long to link in one step, link piecewise. 4101b3062210Smrg $echo "creating reloadable object files..." 410223a0898aSmrg 4103b3062210Smrg # Save the value of $output and $libobjs because we want to 4104b3062210Smrg # use them later. If we have whole_archive_flag_spec, we 4105b3062210Smrg # want to use save_libobjs as it was before 4106b3062210Smrg # whole_archive_flag_spec was expanded, because we can't 4107b3062210Smrg # assume the linker understands whole_archive_flag_spec. 4108b3062210Smrg # This may have to be revisited, in case too many 4109b3062210Smrg # convenience libraries get linked in and end up exceeding 4110b3062210Smrg # the spec. 4111b3062210Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4112b3062210Smrg save_libobjs=$libobjs 4113b3062210Smrg fi 4114b3062210Smrg save_output=$output 4115b3062210Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 411623a0898aSmrg 4117b3062210Smrg # Clear the reloadable object creation command queue and 4118b3062210Smrg # initialize k to one. 4119b3062210Smrg test_cmds= 4120b3062210Smrg concat_cmds= 4121b3062210Smrg objlist= 4122b3062210Smrg delfiles= 4123b3062210Smrg last_robj= 4124b3062210Smrg k=1 4125b3062210Smrg output=$output_objdir/$output_la-${k}.$objext 4126b3062210Smrg # Loop over the list of objects to be linked. 4127b3062210Smrg for obj in $save_libobjs 4128b3062210Smrg do 4129b3062210Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4130b3062210Smrg if test "X$objlist" = X || 4131b3062210Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4132b3062210Smrg test "$len" -le "$max_cmd_len"; }; then 4133b3062210Smrg objlist="$objlist $obj" 4134b3062210Smrg else 4135b3062210Smrg # The command $test_cmds is almost too long, add a 4136b3062210Smrg # command to the queue. 4137b3062210Smrg if test "$k" -eq 1 ; then 4138b3062210Smrg # The first file doesn't have a previous command to add. 4139b3062210Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4140b3062210Smrg else 4141b3062210Smrg # All subsequent reloadable object files will link in 4142b3062210Smrg # the last one created. 4143b3062210Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4144b3062210Smrg fi 4145b3062210Smrg last_robj=$output_objdir/$output_la-${k}.$objext 4146b3062210Smrg k=`expr $k + 1` 4147b3062210Smrg output=$output_objdir/$output_la-${k}.$objext 4148b3062210Smrg objlist=$obj 4149b3062210Smrg len=1 4150b3062210Smrg fi 4151b3062210Smrg done 4152b3062210Smrg # Handle the remaining objects by creating one last 4153b3062210Smrg # reloadable object file. All subsequent reloadable object 4154b3062210Smrg # files will link in the last one created. 4155b3062210Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4156b3062210Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4157b3062210Smrg 4158b3062210Smrg if ${skipped_export-false}; then 4159b3062210Smrg $show "generating symbol list for \`$libname.la'" 4160b3062210Smrg export_symbols="$output_objdir/$libname.exp" 4161b3062210Smrg $run $rm $export_symbols 4162b3062210Smrg libobjs=$output 4163b3062210Smrg # Append the command to create the export file. 4164b3062210Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4165b3062210Smrg fi 4166b3062210Smrg 4167b3062210Smrg # Set up a command to remove the reloadable object files 4168b3062210Smrg # after they are used. 4169b3062210Smrg i=0 4170b3062210Smrg while test "$i" -lt "$k" 4171b3062210Smrg do 4172b3062210Smrg i=`expr $i + 1` 4173b3062210Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4174b3062210Smrg done 417523a0898aSmrg 4176b3062210Smrg $echo "creating a temporary reloadable object file: $output" 417723a0898aSmrg 4178b3062210Smrg # Loop through the commands generated above and execute them. 4179b3062210Smrg save_ifs="$IFS"; IFS='~' 4180b3062210Smrg for cmd in $concat_cmds; do 4181b3062210Smrg IFS="$save_ifs" 4182b3062210Smrg $show "$cmd" 4183b3062210Smrg $run eval "$cmd" || exit $? 4184b3062210Smrg done 4185b3062210Smrg IFS="$save_ifs" 418623a0898aSmrg 4187b3062210Smrg libobjs=$output 4188b3062210Smrg # Restore the value of output. 4189b3062210Smrg output=$save_output 419023a0898aSmrg 4191b3062210Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4192b3062210Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4193b3062210Smrg fi 4194b3062210Smrg # Expand the library linking commands again to reset the 4195b3062210Smrg # value of $libobjs for piecewise linking. 419623a0898aSmrg 4197b3062210Smrg # Do each of the archive commands. 4198b3062210Smrg if test "$module" = yes && test -n "$module_cmds" ; then 4199b3062210Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4200b3062210Smrg cmds=$module_expsym_cmds 4201b3062210Smrg else 4202b3062210Smrg cmds=$module_cmds 4203b3062210Smrg fi 4204b3062210Smrg else 4205b3062210Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4206b3062210Smrg cmds=$archive_expsym_cmds 4207b3062210Smrg else 4208b3062210Smrg cmds=$archive_cmds 4209b3062210Smrg fi 4210b3062210Smrg fi 421123a0898aSmrg 4212b3062210Smrg # Append the command to remove the reloadable object files 4213b3062210Smrg # to the just-reset $cmds. 4214b3062210Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 4215b3062210Smrg fi 4216b3062210Smrg save_ifs="$IFS"; IFS='~' 4217b3062210Smrg for cmd in $cmds; do 4218b3062210Smrg IFS="$save_ifs" 4219b3062210Smrg eval cmd=\"$cmd\" 4220b3062210Smrg $show "$cmd" 4221b3062210Smrg $run eval "$cmd" || { 4222b3062210Smrg lt_exit=$? 422323a0898aSmrg 4224b3062210Smrg # Restore the uninstalled library and exit 4225b3062210Smrg if test "$mode" = relink; then 4226b3062210Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4227b3062210Smrg fi 422823a0898aSmrg 4229b3062210Smrg exit $lt_exit 4230b3062210Smrg } 4231b3062210Smrg done 4232b3062210Smrg IFS="$save_ifs" 4233b3062210Smrg 4234b3062210Smrg # Restore the uninstalled library and exit 4235b3062210Smrg if test "$mode" = relink; then 4236b3062210Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4237b3062210Smrg 4238b3062210Smrg if test -n "$convenience"; then 4239b3062210Smrg if test -z "$whole_archive_flag_spec"; then 4240b3062210Smrg $show "${rm}r $gentop" 4241b3062210Smrg $run ${rm}r "$gentop" 4242b3062210Smrg fi 4243b3062210Smrg fi 4244b3062210Smrg 4245b3062210Smrg exit $EXIT_SUCCESS 4246b3062210Smrg fi 4247b3062210Smrg 4248b3062210Smrg # Create links to the real library. 4249b3062210Smrg for linkname in $linknames; do 4250b3062210Smrg if test "$realname" != "$linkname"; then 4251b3062210Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4252b3062210Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4253b3062210Smrg fi 4254b3062210Smrg done 4255b3062210Smrg 4256b3062210Smrg # If -module or -export-dynamic was specified, set the dlname. 4257b3062210Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 4258b3062210Smrg # On all known operating systems, these are identical. 4259b3062210Smrg dlname="$soname" 4260b3062210Smrg fi 4261b3062210Smrg fi 42627f7f5e4eSmrg ;; 426323a0898aSmrg 4264b3062210Smrg obj) 4265b3062210Smrg case " $deplibs" in 4266b3062210Smrg *\ -l* | *\ -L*) 4267b3062210Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4268b3062210Smrg esac 426923a0898aSmrg 4270b3062210Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4271b3062210Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4272b3062210Smrg fi 427323a0898aSmrg 4274b3062210Smrg if test -n "$rpath"; then 4275b3062210Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4276b3062210Smrg fi 4277b3062210Smrg 4278b3062210Smrg if test -n "$xrpath"; then 4279b3062210Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4280b3062210Smrg fi 4281b3062210Smrg 4282b3062210Smrg if test -n "$vinfo"; then 4283b3062210Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4284b3062210Smrg fi 4285b3062210Smrg 4286b3062210Smrg if test -n "$release"; then 4287b3062210Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4288b3062210Smrg fi 4289b3062210Smrg 4290b3062210Smrg case $output in 4291b3062210Smrg *.lo) 4292b3062210Smrg if test -n "$objs$old_deplibs"; then 4293b3062210Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4294b3062210Smrg exit $EXIT_FAILURE 4295b3062210Smrg fi 4296b3062210Smrg libobj="$output" 4297b3062210Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 42987f7f5e4eSmrg ;; 4299b3062210Smrg *) 4300b3062210Smrg libobj= 4301b3062210Smrg obj="$output" 430223a0898aSmrg ;; 430323a0898aSmrg esac 430423a0898aSmrg 4305b3062210Smrg # Delete the old objects. 4306b3062210Smrg $run $rm $obj $libobj 430723a0898aSmrg 4308b3062210Smrg # Objects from convenience libraries. This assumes 4309b3062210Smrg # single-version convenience libraries. Whenever we create 4310b3062210Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 4311b3062210Smrg # the extraction. 4312b3062210Smrg reload_conv_objs= 4313b3062210Smrg gentop= 4314b3062210Smrg # reload_cmds runs $LD directly, so let us get rid of 4315b3062210Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 4316b3062210Smrg # turning comma into space.. 4317b3062210Smrg wl= 431823a0898aSmrg 4319b3062210Smrg if test -n "$convenience"; then 4320b3062210Smrg if test -n "$whole_archive_flag_spec"; then 4321b3062210Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4322b3062210Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4323b3062210Smrg else 4324b3062210Smrg gentop="$output_objdir/${obj}x" 4325b3062210Smrg generated="$generated $gentop" 432623a0898aSmrg 4327b3062210Smrg func_extract_archives $gentop $convenience 4328b3062210Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4329b3062210Smrg fi 4330b3062210Smrg fi 433123a0898aSmrg 4332b3062210Smrg # Create the old-style object. 4333b3062210Smrg 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 433423a0898aSmrg 4335b3062210Smrg output="$obj" 4336b3062210Smrg cmds=$reload_cmds 4337b3062210Smrg save_ifs="$IFS"; IFS='~' 4338b3062210Smrg for cmd in $cmds; do 4339b3062210Smrg IFS="$save_ifs" 4340b3062210Smrg eval cmd=\"$cmd\" 4341b3062210Smrg $show "$cmd" 4342b3062210Smrg $run eval "$cmd" || exit $? 4343b3062210Smrg done 4344b3062210Smrg IFS="$save_ifs" 434523a0898aSmrg 4346b3062210Smrg # Exit if we aren't doing a library object file. 4347b3062210Smrg if test -z "$libobj"; then 4348b3062210Smrg if test -n "$gentop"; then 4349b3062210Smrg $show "${rm}r $gentop" 4350b3062210Smrg $run ${rm}r $gentop 4351b3062210Smrg fi 435223a0898aSmrg 4353b3062210Smrg exit $EXIT_SUCCESS 4354b3062210Smrg fi 435523a0898aSmrg 4356b3062210Smrg if test "$build_libtool_libs" != yes; then 4357b3062210Smrg if test -n "$gentop"; then 4358b3062210Smrg $show "${rm}r $gentop" 4359b3062210Smrg $run ${rm}r $gentop 4360b3062210Smrg fi 436123a0898aSmrg 4362b3062210Smrg # Create an invalid libtool object if no PIC, so that we don't 4363b3062210Smrg # accidentally link it into a program. 4364b3062210Smrg # $show "echo timestamp > $libobj" 4365b3062210Smrg # $run eval "echo timestamp > $libobj" || exit $? 4366b3062210Smrg exit $EXIT_SUCCESS 4367b3062210Smrg fi 436823a0898aSmrg 4369b3062210Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4370b3062210Smrg # Only do commands if we really have different PIC objects. 4371b3062210Smrg reload_objs="$libobjs $reload_conv_objs" 4372b3062210Smrg output="$libobj" 4373b3062210Smrg cmds=$reload_cmds 4374b3062210Smrg save_ifs="$IFS"; IFS='~' 4375b3062210Smrg for cmd in $cmds; do 4376b3062210Smrg IFS="$save_ifs" 4377b3062210Smrg eval cmd=\"$cmd\" 4378b3062210Smrg $show "$cmd" 4379b3062210Smrg $run eval "$cmd" || exit $? 4380b3062210Smrg done 4381b3062210Smrg IFS="$save_ifs" 4382b3062210Smrg fi 438323a0898aSmrg 4384b3062210Smrg if test -n "$gentop"; then 4385b3062210Smrg $show "${rm}r $gentop" 4386b3062210Smrg $run ${rm}r $gentop 4387b3062210Smrg fi 438823a0898aSmrg 4389b3062210Smrg exit $EXIT_SUCCESS 4390b3062210Smrg ;; 439123a0898aSmrg 4392b3062210Smrg prog) 4393b3062210Smrg case $host in 4394b3062210Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4395b3062210Smrg esac 4396b3062210Smrg if test -n "$vinfo"; then 4397b3062210Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4398b3062210Smrg fi 439923a0898aSmrg 4400b3062210Smrg if test -n "$release"; then 4401b3062210Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4402b3062210Smrg fi 440323a0898aSmrg 4404b3062210Smrg if test "$preload" = yes; then 4405b3062210Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4406b3062210Smrg test "$dlopen_self_static" = unknown; then 4407b3062210Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 440823a0898aSmrg fi 4409b3062210Smrg fi 441023a0898aSmrg 4411b3062210Smrg case $host in 4412b3062210Smrg *-*-rhapsody* | *-*-darwin1.[012]) 4413b3062210Smrg # On Rhapsody replace the C library is the System framework 4414b3062210Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4415b3062210Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44167f7f5e4eSmrg ;; 4417b3062210Smrg esac 441823a0898aSmrg 4419b3062210Smrg case $host in 4420b3062210Smrg *darwin*) 4421b3062210Smrg # Don't allow lazy linking, it breaks C++ global constructors 4422b3062210Smrg if test "$tagname" = CXX ; then 4423b3062210Smrg compile_command="$compile_command ${wl}-bind_at_load" 4424b3062210Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 4425b3062210Smrg fi 4426b3062210Smrg ;; 4427b3062210Smrg esac 442823a0898aSmrg 442923a0898aSmrg 4430b3062210Smrg # move library search paths that coincide with paths to not yet 4431b3062210Smrg # installed libraries to the beginning of the library search list 4432b3062210Smrg new_libs= 4433b3062210Smrg for path in $notinst_path; do 4434b3062210Smrg case " $new_libs " in 4435b3062210Smrg *" -L$path/$objdir "*) ;; 4436b3062210Smrg *) 4437b3062210Smrg case " $compile_deplibs " in 4438b3062210Smrg *" -L$path/$objdir "*) 4439b3062210Smrg new_libs="$new_libs -L$path/$objdir" ;; 4440b3062210Smrg esac 4441b3062210Smrg ;; 4442b3062210Smrg esac 4443b3062210Smrg done 4444b3062210Smrg for deplib in $compile_deplibs; do 4445b3062210Smrg case $deplib in 4446b3062210Smrg -L*) 4447b3062210Smrg case " $new_libs " in 4448b3062210Smrg *" $deplib "*) ;; 4449b3062210Smrg *) new_libs="$new_libs $deplib" ;; 4450b3062210Smrg esac 4451b3062210Smrg ;; 4452b3062210Smrg *) new_libs="$new_libs $deplib" ;; 4453b3062210Smrg esac 4454b3062210Smrg done 4455b3062210Smrg compile_deplibs="$new_libs" 445623a0898aSmrg 445723a0898aSmrg 4458b3062210Smrg compile_command="$compile_command $compile_deplibs" 4459b3062210Smrg finalize_command="$finalize_command $finalize_deplibs" 446023a0898aSmrg 4461b3062210Smrg if test -n "$rpath$xrpath"; then 4462b3062210Smrg # If the user specified any rpath flags, then add them. 4463b3062210Smrg for libdir in $rpath $xrpath; do 4464b3062210Smrg # This is the magic to use -rpath. 4465b3062210Smrg case "$finalize_rpath " in 4466b3062210Smrg *" $libdir "*) ;; 4467b3062210Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4468b3062210Smrg esac 4469b3062210Smrg done 4470b3062210Smrg fi 447123a0898aSmrg 4472b3062210Smrg # Now hardcode the library paths 4473b3062210Smrg rpath= 4474b3062210Smrg hardcode_libdirs= 4475b3062210Smrg for libdir in $compile_rpath $finalize_rpath; do 4476b3062210Smrg if test -n "$hardcode_libdir_flag_spec"; then 4477b3062210Smrg if test -n "$hardcode_libdir_separator"; then 4478b3062210Smrg if test -z "$hardcode_libdirs"; then 4479b3062210Smrg hardcode_libdirs="$libdir" 4480b3062210Smrg else 4481b3062210Smrg # Just accumulate the unique libdirs. 4482b3062210Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4483b3062210Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4484b3062210Smrg ;; 4485b3062210Smrg *) 4486b3062210Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4487b3062210Smrg ;; 4488b3062210Smrg esac 4489b3062210Smrg fi 449023a0898aSmrg else 4491b3062210Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4492b3062210Smrg rpath="$rpath $flag" 449323a0898aSmrg fi 4494b3062210Smrg elif test -n "$runpath_var"; then 4495b3062210Smrg case "$perm_rpath " in 4496b3062210Smrg *" $libdir "*) ;; 4497b3062210Smrg *) perm_rpath="$perm_rpath $libdir" ;; 4498b3062210Smrg esac 44997f7f5e4eSmrg fi 450023a0898aSmrg case $host in 4501b3062210Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4502b3062210Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 45037f7f5e4eSmrg case :$dllsearchpath: in 4504b3062210Smrg *":$libdir:"*) ;; 4505b3062210Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 45067f7f5e4eSmrg esac 45077f7f5e4eSmrg case :$dllsearchpath: in 45087f7f5e4eSmrg *":$testbindir:"*) ;; 45097f7f5e4eSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45107f7f5e4eSmrg esac 45117f7f5e4eSmrg ;; 451223a0898aSmrg esac 4513b3062210Smrg done 4514b3062210Smrg # Substitute the hardcoded libdirs into the rpath. 4515b3062210Smrg if test -n "$hardcode_libdir_separator" && 4516b3062210Smrg test -n "$hardcode_libdirs"; then 4517b3062210Smrg libdir="$hardcode_libdirs" 4518b3062210Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4519b3062210Smrg fi 4520b3062210Smrg compile_rpath="$rpath" 452123a0898aSmrg 4522b3062210Smrg rpath= 4523b3062210Smrg hardcode_libdirs= 4524b3062210Smrg for libdir in $finalize_rpath; do 4525b3062210Smrg if test -n "$hardcode_libdir_flag_spec"; then 4526b3062210Smrg if test -n "$hardcode_libdir_separator"; then 4527b3062210Smrg if test -z "$hardcode_libdirs"; then 4528b3062210Smrg hardcode_libdirs="$libdir" 4529b3062210Smrg else 4530b3062210Smrg # Just accumulate the unique libdirs. 4531b3062210Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4532b3062210Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4533b3062210Smrg ;; 4534b3062210Smrg *) 4535b3062210Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4536b3062210Smrg ;; 4537b3062210Smrg esac 4538b3062210Smrg fi 4539b3062210Smrg else 4540b3062210Smrg eval flag=\"$hardcode_libdir_flag_spec\" 4541b3062210Smrg rpath="$rpath $flag" 4542b3062210Smrg fi 4543b3062210Smrg elif test -n "$runpath_var"; then 4544b3062210Smrg case "$finalize_perm_rpath " in 4545b3062210Smrg *" $libdir "*) ;; 4546b3062210Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 45477f7f5e4eSmrg esac 45487f7f5e4eSmrg fi 4549b3062210Smrg done 4550b3062210Smrg # Substitute the hardcoded libdirs into the rpath. 4551b3062210Smrg if test -n "$hardcode_libdir_separator" && 4552b3062210Smrg test -n "$hardcode_libdirs"; then 4553b3062210Smrg libdir="$hardcode_libdirs" 4554b3062210Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 4555b3062210Smrg fi 4556b3062210Smrg finalize_rpath="$rpath" 455723a0898aSmrg 4558b3062210Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4559b3062210Smrg # Transform all the library objects into standard objects. 4560b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4561b3062210Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4562b3062210Smrg fi 456323a0898aSmrg 4564b3062210Smrg dlsyms= 4565b3062210Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4566b3062210Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4567b3062210Smrg dlsyms="${outputname}S.c" 4568b3062210Smrg else 4569b3062210Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4570b3062210Smrg fi 4571b3062210Smrg fi 457223a0898aSmrg 4573b3062210Smrg if test -n "$dlsyms"; then 4574b3062210Smrg case $dlsyms in 4575b3062210Smrg "") ;; 4576b3062210Smrg *.c) 4577b3062210Smrg # Discover the nlist of each of the dlfiles. 4578b3062210Smrg nlist="$output_objdir/${outputname}.nm" 457923a0898aSmrg 4580b3062210Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 4581b3062210Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 458223a0898aSmrg 4583b3062210Smrg # Parse the name list into a source file. 4584b3062210Smrg $show "creating $output_objdir/$dlsyms" 458523a0898aSmrg 4586b3062210Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4587b3062210Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4588b3062210Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 458923a0898aSmrg 4590b3062210Smrg#ifdef __cplusplus 4591b3062210Smrgextern \"C\" { 4592b3062210Smrg#endif 459323a0898aSmrg 4594b3062210Smrg/* Prevent the only kind of declaration conflicts we can make. */ 4595b3062210Smrg#define lt_preloaded_symbols some_other_symbol 459623a0898aSmrg 4597b3062210Smrg/* External symbol declarations for the compiler. */\ 4598b3062210Smrg" 459923a0898aSmrg 4600b3062210Smrg if test "$dlself" = yes; then 4601b3062210Smrg $show "generating symbol list for \`$output'" 460223a0898aSmrg 4603b3062210Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 460423a0898aSmrg 4605b3062210Smrg # Add our own program objects to the symbol list. 4606b3062210Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4607b3062210Smrg for arg in $progfiles; do 4608b3062210Smrg $show "extracting global C symbols from \`$arg'" 4609b3062210Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4610b3062210Smrg done 461123a0898aSmrg 4612b3062210Smrg if test -n "$exclude_expsyms"; then 4613b3062210Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4614b3062210Smrg $run eval '$mv "$nlist"T "$nlist"' 4615b3062210Smrg fi 461623a0898aSmrg 4617b3062210Smrg if test -n "$export_symbols_regex"; then 4618b3062210Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4619b3062210Smrg $run eval '$mv "$nlist"T "$nlist"' 4620b3062210Smrg fi 462123a0898aSmrg 4622b3062210Smrg # Prepare the list of exported symbols 4623b3062210Smrg if test -z "$export_symbols"; then 4624b3062210Smrg export_symbols="$output_objdir/$outputname.exp" 4625b3062210Smrg $run $rm $export_symbols 4626b3062210Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4627b3062210Smrg case $host in 4628b3062210Smrg *cygwin* | *mingw* ) 4629b3062210Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4630b3062210Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4631b3062210Smrg ;; 4632b3062210Smrg esac 4633b3062210Smrg else 4634b3062210Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4635b3062210Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4636b3062210Smrg $run eval 'mv "$nlist"T "$nlist"' 4637b3062210Smrg case $host in 4638b3062210Smrg *cygwin* | *mingw* ) 4639b3062210Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4640b3062210Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4641b3062210Smrg ;; 4642b3062210Smrg esac 4643b3062210Smrg fi 4644b3062210Smrg fi 464523a0898aSmrg 4646b3062210Smrg for arg in $dlprefiles; do 4647b3062210Smrg $show "extracting global C symbols from \`$arg'" 4648b3062210Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4649b3062210Smrg $run eval '$echo ": $name " >> "$nlist"' 4650b3062210Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4651b3062210Smrg done 465223a0898aSmrg 4653b3062210Smrg if test -z "$run"; then 4654b3062210Smrg # Make sure we have at least an empty file. 4655b3062210Smrg test -f "$nlist" || : > "$nlist" 465623a0898aSmrg 4657b3062210Smrg if test -n "$exclude_expsyms"; then 4658b3062210Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4659b3062210Smrg $mv "$nlist"T "$nlist" 4660b3062210Smrg fi 466123a0898aSmrg 4662b3062210Smrg # Try sorting and uniquifying the output. 4663b3062210Smrg if grep -v "^: " < "$nlist" | 4664b3062210Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4665b3062210Smrg sort -k 3 4666b3062210Smrg else 4667b3062210Smrg sort +2 4668b3062210Smrg fi | 4669b3062210Smrg uniq > "$nlist"S; then 4670b3062210Smrg : 4671b3062210Smrg else 4672b3062210Smrg grep -v "^: " < "$nlist" > "$nlist"S 4673b3062210Smrg fi 467423a0898aSmrg 4675b3062210Smrg if test -f "$nlist"S; then 4676b3062210Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4677b3062210Smrg else 4678b3062210Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4679b3062210Smrg fi 468023a0898aSmrg 4681b3062210Smrg $echo >> "$output_objdir/$dlsyms" "\ 468223a0898aSmrg 4683b3062210Smrg#undef lt_preloaded_symbols 468423a0898aSmrg 4685b3062210Smrg#if defined (__STDC__) && __STDC__ 4686b3062210Smrg# define lt_ptr void * 4687b3062210Smrg#else 4688b3062210Smrg# define lt_ptr char * 4689b3062210Smrg# define const 4690b3062210Smrg#endif 469123a0898aSmrg 4692b3062210Smrg/* The mapping between symbol names and symbols. */ 4693b3062210Smrg" 469423a0898aSmrg 4695b3062210Smrg case $host in 4696b3062210Smrg *cygwin* | *mingw* ) 4697b3062210Smrg $echo >> "$output_objdir/$dlsyms" "\ 4698b3062210Smrg/* DATA imports from DLLs on WIN32 can't be const, because 4699b3062210Smrg runtime relocations are performed -- see ld's documentation 4700b3062210Smrg on pseudo-relocs */ 4701b3062210Smrgstruct { 4702b3062210Smrg" 4703b3062210Smrg ;; 4704b3062210Smrg * ) 4705b3062210Smrg $echo >> "$output_objdir/$dlsyms" "\ 4706b3062210Smrgconst struct { 4707b3062210Smrg" 4708b3062210Smrg ;; 4709b3062210Smrg esac 471023a0898aSmrg 471123a0898aSmrg 4712b3062210Smrg $echo >> "$output_objdir/$dlsyms" "\ 4713b3062210Smrg const char *name; 4714b3062210Smrg lt_ptr address; 4715b3062210Smrg} 4716b3062210Smrglt_preloaded_symbols[] = 4717b3062210Smrg{\ 4718b3062210Smrg" 471923a0898aSmrg 4720b3062210Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 472123a0898aSmrg 4722b3062210Smrg $echo >> "$output_objdir/$dlsyms" "\ 4723b3062210Smrg {0, (lt_ptr) 0} 4724b3062210Smrg}; 472523a0898aSmrg 4726b3062210Smrg/* This works around a problem in FreeBSD linker */ 4727b3062210Smrg#ifdef FREEBSD_WORKAROUND 4728b3062210Smrgstatic const void *lt_preloaded_setup() { 4729b3062210Smrg return lt_preloaded_symbols; 4730b3062210Smrg} 4731b3062210Smrg#endif 473223a0898aSmrg 4733b3062210Smrg#ifdef __cplusplus 4734b3062210Smrg} 4735b3062210Smrg#endif\ 4736b3062210Smrg" 47377f7f5e4eSmrg fi 473823a0898aSmrg 4739b3062210Smrg pic_flag_for_symtable= 4740b3062210Smrg case $host in 4741b3062210Smrg # compiling the symbol table file with pic_flag works around 4742b3062210Smrg # a FreeBSD bug that causes programs to crash when -lm is 4743b3062210Smrg # linked before any other PIC object. But we must not use 4744b3062210Smrg # pic_flag when linking with -static. The problem exists in 4745b3062210Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4746b3062210Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4747b3062210Smrg case "$compile_command " in 4748b3062210Smrg *" -static "*) ;; 4749b3062210Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4750b3062210Smrg esac;; 4751b3062210Smrg *-*-hpux*) 4752b3062210Smrg case "$compile_command " in 4753b3062210Smrg *" -static "*) ;; 4754b3062210Smrg *) pic_flag_for_symtable=" $pic_flag";; 4755b3062210Smrg esac 4756b3062210Smrg esac 475723a0898aSmrg 4758b3062210Smrg # Now compile the dynamic symbol file. 4759b3062210Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4760b3062210Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 476123a0898aSmrg 4762b3062210Smrg # Clean up the generated files. 4763b3062210Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4764b3062210Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 476523a0898aSmrg 4766b3062210Smrg # Transform the symbol file into the correct name. 4767b3062210Smrg case $host in 4768b3062210Smrg *cygwin* | *mingw* ) 4769b3062210Smrg if test -f "$output_objdir/${outputname}.def" ; then 4770b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4771b3062210Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4772b3062210Smrg else 4773b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4774b3062210Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4775b3062210Smrg fi 4776b3062210Smrg ;; 4777b3062210Smrg * ) 4778b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4779b3062210Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4780b3062210Smrg ;; 4781b3062210Smrg esac 4782b3062210Smrg ;; 4783b3062210Smrg *) 4784b3062210Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4785b3062210Smrg exit $EXIT_FAILURE 4786b3062210Smrg ;; 4787b3062210Smrg esac 4788b3062210Smrg else 4789b3062210Smrg # We keep going just in case the user didn't refer to 4790b3062210Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4791b3062210Smrg # really was required. 479223a0898aSmrg 4793b3062210Smrg # Nullify the symbol file. 4794b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4795b3062210Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4796b3062210Smrg fi 479723a0898aSmrg 4798b3062210Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4799b3062210Smrg # Replace the output file specification. 4800b3062210Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4801b3062210Smrg link_command="$compile_command$compile_rpath" 480223a0898aSmrg 4803b3062210Smrg # We have no uninstalled library dependencies, so finalize right now. 4804b3062210Smrg $show "$link_command" 4805b3062210Smrg $run eval "$link_command" 4806b3062210Smrg exit_status=$? 480723a0898aSmrg 4808b3062210Smrg # Delete the generated files. 4809b3062210Smrg if test -n "$dlsyms"; then 4810b3062210Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 4811b3062210Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 48127f7f5e4eSmrg fi 481323a0898aSmrg 4814b3062210Smrg exit $exit_status 4815b3062210Smrg fi 481623a0898aSmrg 4817b3062210Smrg if test -n "$shlibpath_var"; then 4818b3062210Smrg # We should set the shlibpath_var 4819b3062210Smrg rpath= 4820b3062210Smrg for dir in $temp_rpath; do 4821b3062210Smrg case $dir in 4822b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) 4823b3062210Smrg # Absolute path. 4824b3062210Smrg rpath="$rpath$dir:" 4825b3062210Smrg ;; 4826b3062210Smrg *) 4827b3062210Smrg # Relative path: add a thisdir entry. 4828b3062210Smrg rpath="$rpath\$thisdir/$dir:" 4829b3062210Smrg ;; 4830b3062210Smrg esac 4831b3062210Smrg done 4832b3062210Smrg temp_rpath="$rpath" 48337f7f5e4eSmrg fi 483423a0898aSmrg 4835b3062210Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4836b3062210Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4837b3062210Smrg fi 4838b3062210Smrg if test -n "$finalize_shlibpath"; then 4839b3062210Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4840b3062210Smrg fi 484123a0898aSmrg 4842b3062210Smrg compile_var= 4843b3062210Smrg finalize_var= 4844b3062210Smrg if test -n "$runpath_var"; then 4845b3062210Smrg if test -n "$perm_rpath"; then 4846b3062210Smrg # We should set the runpath_var. 4847b3062210Smrg rpath= 4848b3062210Smrg for dir in $perm_rpath; do 4849b3062210Smrg rpath="$rpath$dir:" 4850b3062210Smrg done 4851b3062210Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4852b3062210Smrg fi 4853b3062210Smrg if test -n "$finalize_perm_rpath"; then 4854b3062210Smrg # We should set the runpath_var. 4855b3062210Smrg rpath= 4856b3062210Smrg for dir in $finalize_perm_rpath; do 4857b3062210Smrg rpath="$rpath$dir:" 4858b3062210Smrg done 4859b3062210Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4860b3062210Smrg fi 4861b3062210Smrg fi 486223a0898aSmrg 4863b3062210Smrg if test "$no_install" = yes; then 4864b3062210Smrg # We don't need to create a wrapper script. 4865b3062210Smrg link_command="$compile_var$compile_command$compile_rpath" 4866b3062210Smrg # Replace the output file specification. 4867b3062210Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4868b3062210Smrg # Delete the old output file. 4869b3062210Smrg $run $rm $output 4870b3062210Smrg # Link the executable and exit 4871b3062210Smrg $show "$link_command" 4872b3062210Smrg $run eval "$link_command" || exit $? 4873b3062210Smrg exit $EXIT_SUCCESS 4874b3062210Smrg fi 48757f7f5e4eSmrg 4876b3062210Smrg if test "$hardcode_action" = relink; then 4877b3062210Smrg # Fast installation is not supported 4878b3062210Smrg link_command="$compile_var$compile_command$compile_rpath" 4879b3062210Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48807f7f5e4eSmrg 4881b3062210Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4882b3062210Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4883b3062210Smrg else 4884b3062210Smrg if test "$fast_install" != no; then 4885b3062210Smrg link_command="$finalize_var$compile_command$finalize_rpath" 4886b3062210Smrg if test "$fast_install" = yes; then 4887b3062210Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4888b3062210Smrg else 4889b3062210Smrg # fast_install is set to needless 4890b3062210Smrg relink_command= 4891b3062210Smrg fi 4892b3062210Smrg else 4893b3062210Smrg link_command="$compile_var$compile_command$compile_rpath" 4894b3062210Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4895b3062210Smrg fi 48967f7f5e4eSmrg fi 48977f7f5e4eSmrg 4898b3062210Smrg # Replace the output file specification. 4899b3062210Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 49007f7f5e4eSmrg 4901b3062210Smrg # Delete the old output files. 4902b3062210Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 49037f7f5e4eSmrg 4904b3062210Smrg $show "$link_command" 4905b3062210Smrg $run eval "$link_command" || exit $? 49067f7f5e4eSmrg 4907b3062210Smrg # Now create the wrapper script. 4908b3062210Smrg $show "creating $output" 49097f7f5e4eSmrg 4910b3062210Smrg # Quote the relink command for shipping. 4911b3062210Smrg if test -n "$relink_command"; then 4912b3062210Smrg # Preserve any variables that may affect compiler behavior 4913b3062210Smrg for var in $variables_saved_for_relink; do 4914b3062210Smrg if eval test -z \"\${$var+set}\"; then 4915b3062210Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4916b3062210Smrg elif eval var_value=\$$var; test -z "$var_value"; then 4917b3062210Smrg relink_command="$var=; export $var; $relink_command" 4918b3062210Smrg else 4919b3062210Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4920b3062210Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4921b3062210Smrg fi 49227f7f5e4eSmrg done 4923b3062210Smrg relink_command="(cd `pwd`; $relink_command)" 4924b3062210Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 49257f7f5e4eSmrg fi 49267f7f5e4eSmrg 4927b3062210Smrg # Quote $echo for shipping. 4928b3062210Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4929b3062210Smrg case $progpath in 4930b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4931b3062210Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 49327f7f5e4eSmrg esac 4933b3062210Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4934b3062210Smrg else 4935b3062210Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 49367f7f5e4eSmrg fi 49377f7f5e4eSmrg 4938b3062210Smrg # Only actually do things if our run command is non-null. 4939b3062210Smrg if test -z "$run"; then 4940b3062210Smrg # win32 will think the script is a binary if it has 4941b3062210Smrg # a .exe suffix, so we strip it off here. 4942b3062210Smrg case $output in 4943b3062210Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4944b3062210Smrg esac 4945b3062210Smrg # test for cygwin because mv fails w/o .exe extensions 4946b3062210Smrg case $host in 4947b3062210Smrg *cygwin*) 4948b3062210Smrg exeext=.exe 4949b3062210Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4950b3062210Smrg *) exeext= ;; 4951b3062210Smrg esac 4952b3062210Smrg case $host in 4953b3062210Smrg *cygwin* | *mingw* ) 4954b3062210Smrg output_name=`basename $output` 4955b3062210Smrg output_path=`dirname $output` 4956b3062210Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4957b3062210Smrg cwrapper="$output_path/$output_name.exe" 4958b3062210Smrg $rm $cwrappersource $cwrapper 4959b3062210Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 49607f7f5e4eSmrg 4961b3062210Smrg cat > $cwrappersource <<EOF 49627f7f5e4eSmrg 4963b3062210Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4964b3062210Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 49657f7f5e4eSmrg 4966b3062210Smrg The $output program cannot be directly executed until all the libtool 4967b3062210Smrg libraries that it depends on are installed. 49687f7f5e4eSmrg 4969b3062210Smrg This wrapper executable should never be moved out of the build directory. 4970b3062210Smrg If it is, it will not operate correctly. 49717f7f5e4eSmrg 4972b3062210Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4973b3062210Smrg but could eventually absorb all of the scripts functionality and 4974b3062210Smrg exec $objdir/$outputname directly. 4975b3062210Smrg*/ 4976b3062210SmrgEOF 4977b3062210Smrg cat >> $cwrappersource<<"EOF" 4978b3062210Smrg#include <stdio.h> 4979b3062210Smrg#include <stdlib.h> 4980b3062210Smrg#include <unistd.h> 4981b3062210Smrg#include <malloc.h> 4982b3062210Smrg#include <stdarg.h> 4983b3062210Smrg#include <assert.h> 4984b3062210Smrg#include <string.h> 4985b3062210Smrg#include <ctype.h> 4986b3062210Smrg#include <sys/stat.h> 49877f7f5e4eSmrg 4988b3062210Smrg#if defined(PATH_MAX) 4989b3062210Smrg# define LT_PATHMAX PATH_MAX 4990b3062210Smrg#elif defined(MAXPATHLEN) 4991b3062210Smrg# define LT_PATHMAX MAXPATHLEN 4992b3062210Smrg#else 4993b3062210Smrg# define LT_PATHMAX 1024 4994b3062210Smrg#endif 49957f7f5e4eSmrg 4996b3062210Smrg#ifndef DIR_SEPARATOR 4997b3062210Smrg# define DIR_SEPARATOR '/' 4998b3062210Smrg# define PATH_SEPARATOR ':' 4999b3062210Smrg#endif 50007f7f5e4eSmrg 5001b3062210Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5002b3062210Smrg defined (__OS2__) 5003b3062210Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 5004b3062210Smrg# ifndef DIR_SEPARATOR_2 5005b3062210Smrg# define DIR_SEPARATOR_2 '\\' 5006b3062210Smrg# endif 5007b3062210Smrg# ifndef PATH_SEPARATOR_2 5008b3062210Smrg# define PATH_SEPARATOR_2 ';' 5009b3062210Smrg# endif 5010b3062210Smrg#endif 50117f7f5e4eSmrg 5012b3062210Smrg#ifndef DIR_SEPARATOR_2 5013b3062210Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5014b3062210Smrg#else /* DIR_SEPARATOR_2 */ 5015b3062210Smrg# define IS_DIR_SEPARATOR(ch) \ 5016b3062210Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5017b3062210Smrg#endif /* DIR_SEPARATOR_2 */ 50187f7f5e4eSmrg 5019b3062210Smrg#ifndef PATH_SEPARATOR_2 5020b3062210Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5021b3062210Smrg#else /* PATH_SEPARATOR_2 */ 5022b3062210Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5023b3062210Smrg#endif /* PATH_SEPARATOR_2 */ 50247f7f5e4eSmrg 5025b3062210Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5026b3062210Smrg#define XFREE(stale) do { \ 5027b3062210Smrg if (stale) { free ((void *) stale); stale = 0; } \ 5028b3062210Smrg} while (0) 50297f7f5e4eSmrg 5030b3062210Smrg/* -DDEBUG is fairly common in CFLAGS. */ 5031b3062210Smrg#undef DEBUG 5032b3062210Smrg#if defined DEBUGWRAPPER 5033b3062210Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5034b3062210Smrg#else 5035b3062210Smrg# define DEBUG(format, ...) 5036b3062210Smrg#endif 50377f7f5e4eSmrg 5038b3062210Smrgconst char *program_name = NULL; 50397f7f5e4eSmrg 5040b3062210Smrgvoid * xmalloc (size_t num); 5041b3062210Smrgchar * xstrdup (const char *string); 5042b3062210Smrgconst char * base_name (const char *name); 5043b3062210Smrgchar * find_executable(const char *wrapper); 5044b3062210Smrgint check_executable(const char *path); 5045b3062210Smrgchar * strendzap(char *str, const char *pat); 5046b3062210Smrgvoid lt_fatal (const char *message, ...); 50477f7f5e4eSmrg 5048b3062210Smrgint 5049b3062210Smrgmain (int argc, char *argv[]) 5050b3062210Smrg{ 5051b3062210Smrg char **newargz; 5052b3062210Smrg int i; 50537f7f5e4eSmrg 5054b3062210Smrg program_name = (char *) xstrdup (base_name (argv[0])); 5055b3062210Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5056b3062210Smrg DEBUG("(main) program_name : %s\n",program_name); 5057b3062210Smrg newargz = XMALLOC(char *, argc+2); 5058b3062210SmrgEOF 50597f7f5e4eSmrg 5060b3062210Smrg cat >> $cwrappersource <<EOF 5061b3062210Smrg newargz[0] = (char *) xstrdup("$SHELL"); 5062b3062210SmrgEOF 50637f7f5e4eSmrg 5064b3062210Smrg cat >> $cwrappersource <<"EOF" 5065b3062210Smrg newargz[1] = find_executable(argv[0]); 5066b3062210Smrg if (newargz[1] == NULL) 5067b3062210Smrg lt_fatal("Couldn't find %s", argv[0]); 5068b3062210Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5069b3062210Smrg /* we know the script has the same name, without the .exe */ 5070b3062210Smrg /* so make sure newargz[1] doesn't end in .exe */ 5071b3062210Smrg strendzap(newargz[1],".exe"); 5072b3062210Smrg for (i = 1; i < argc; i++) 5073b3062210Smrg newargz[i+1] = xstrdup(argv[i]); 5074b3062210Smrg newargz[argc+1] = NULL; 50757f7f5e4eSmrg 5076b3062210Smrg for (i=0; i<argc+1; i++) 5077b3062210Smrg { 5078b3062210Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5079b3062210Smrg ; 5080b3062210Smrg } 50817f7f5e4eSmrg 5082b3062210SmrgEOF 50837f7f5e4eSmrg 5084b3062210Smrg case $host_os in 5085b3062210Smrg mingw*) 5086b3062210Smrg cat >> $cwrappersource <<EOF 5087b3062210Smrg execv("$SHELL",(char const **)newargz); 5088b3062210SmrgEOF 5089b3062210Smrg ;; 5090b3062210Smrg *) 5091b3062210Smrg cat >> $cwrappersource <<EOF 5092b3062210Smrg execv("$SHELL",newargz); 5093b3062210SmrgEOF 5094b3062210Smrg ;; 5095b3062210Smrg esac 50967f7f5e4eSmrg 5097b3062210Smrg cat >> $cwrappersource <<"EOF" 5098b3062210Smrg return 127; 5099b3062210Smrg} 51007f7f5e4eSmrg 5101b3062210Smrgvoid * 5102b3062210Smrgxmalloc (size_t num) 5103b3062210Smrg{ 5104b3062210Smrg void * p = (void *) malloc (num); 5105b3062210Smrg if (!p) 5106b3062210Smrg lt_fatal ("Memory exhausted"); 51077f7f5e4eSmrg 5108b3062210Smrg return p; 5109b3062210Smrg} 51107f7f5e4eSmrg 5111b3062210Smrgchar * 5112b3062210Smrgxstrdup (const char *string) 5113b3062210Smrg{ 5114b3062210Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5115b3062210Smrg; 5116b3062210Smrg} 51177f7f5e4eSmrg 5118b3062210Smrgconst char * 5119b3062210Smrgbase_name (const char *name) 5120b3062210Smrg{ 5121b3062210Smrg const char *base; 51227f7f5e4eSmrg 5123b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5124b3062210Smrg /* Skip over the disk name in MSDOS pathnames. */ 5125b3062210Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5126b3062210Smrg name += 2; 5127b3062210Smrg#endif 51287f7f5e4eSmrg 5129b3062210Smrg for (base = name; *name; name++) 5130b3062210Smrg if (IS_DIR_SEPARATOR (*name)) 5131b3062210Smrg base = name + 1; 5132b3062210Smrg return base; 5133b3062210Smrg} 51347f7f5e4eSmrg 5135b3062210Smrgint 5136b3062210Smrgcheck_executable(const char * path) 5137b3062210Smrg{ 5138b3062210Smrg struct stat st; 51397f7f5e4eSmrg 5140b3062210Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5141b3062210Smrg if ((!path) || (!*path)) 5142b3062210Smrg return 0; 51437f7f5e4eSmrg 5144b3062210Smrg if ((stat (path, &st) >= 0) && 5145b3062210Smrg ( 5146b3062210Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5147b3062210Smrg#if defined (S_IXOTH) 5148b3062210Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5149b3062210Smrg#endif 5150b3062210Smrg#if defined (S_IXGRP) 5151b3062210Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5152b3062210Smrg#endif 5153b3062210Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5154b3062210Smrg ) 5155b3062210Smrg return 1; 5156b3062210Smrg else 5157b3062210Smrg return 0; 5158b3062210Smrg} 51597f7f5e4eSmrg 5160b3062210Smrg/* Searches for the full path of the wrapper. Returns 5161b3062210Smrg newly allocated full path name if found, NULL otherwise */ 5162b3062210Smrgchar * 5163b3062210Smrgfind_executable (const char* wrapper) 5164b3062210Smrg{ 5165b3062210Smrg int has_slash = 0; 5166b3062210Smrg const char* p; 5167b3062210Smrg const char* p_next; 5168b3062210Smrg /* static buffer for getcwd */ 5169b3062210Smrg char tmp[LT_PATHMAX + 1]; 5170b3062210Smrg int tmp_len; 5171b3062210Smrg char* concat_name; 51727f7f5e4eSmrg 5173b3062210Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 51747f7f5e4eSmrg 5175b3062210Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 5176b3062210Smrg return NULL; 517723a0898aSmrg 5178b3062210Smrg /* Absolute path? */ 5179b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5180b3062210Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5181b3062210Smrg { 5182b3062210Smrg concat_name = xstrdup (wrapper); 5183b3062210Smrg if (check_executable(concat_name)) 5184b3062210Smrg return concat_name; 5185b3062210Smrg XFREE(concat_name); 5186b3062210Smrg } 5187b3062210Smrg else 5188b3062210Smrg { 5189b3062210Smrg#endif 5190b3062210Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 5191b3062210Smrg { 5192b3062210Smrg concat_name = xstrdup (wrapper); 5193b3062210Smrg if (check_executable(concat_name)) 5194b3062210Smrg return concat_name; 5195b3062210Smrg XFREE(concat_name); 5196b3062210Smrg } 5197b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5198b3062210Smrg } 5199b3062210Smrg#endif 5200b3062210Smrg 5201b3062210Smrg for (p = wrapper; *p; p++) 5202b3062210Smrg if (*p == '/') 5203b3062210Smrg { 5204b3062210Smrg has_slash = 1; 5205b3062210Smrg break; 5206b3062210Smrg } 5207b3062210Smrg if (!has_slash) 5208b3062210Smrg { 5209b3062210Smrg /* no slashes; search PATH */ 5210b3062210Smrg const char* path = getenv ("PATH"); 5211b3062210Smrg if (path != NULL) 5212b3062210Smrg { 5213b3062210Smrg for (p = path; *p; p = p_next) 5214b3062210Smrg { 5215b3062210Smrg const char* q; 5216b3062210Smrg size_t p_len; 5217b3062210Smrg for (q = p; *q; q++) 5218b3062210Smrg if (IS_PATH_SEPARATOR(*q)) 5219b3062210Smrg break; 5220b3062210Smrg p_len = q - p; 5221b3062210Smrg p_next = (*q == '\0' ? q : q + 1); 5222b3062210Smrg if (p_len == 0) 5223b3062210Smrg { 5224b3062210Smrg /* empty path: current directory */ 5225b3062210Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5226b3062210Smrg lt_fatal ("getcwd failed"); 5227b3062210Smrg tmp_len = strlen(tmp); 5228b3062210Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5229b3062210Smrg memcpy (concat_name, tmp, tmp_len); 5230b3062210Smrg concat_name[tmp_len] = '/'; 5231b3062210Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5232b3062210Smrg } 5233b3062210Smrg else 5234b3062210Smrg { 5235b3062210Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5236b3062210Smrg memcpy (concat_name, p, p_len); 5237b3062210Smrg concat_name[p_len] = '/'; 5238b3062210Smrg strcpy (concat_name + p_len + 1, wrapper); 5239b3062210Smrg } 5240b3062210Smrg if (check_executable(concat_name)) 5241b3062210Smrg return concat_name; 5242b3062210Smrg XFREE(concat_name); 5243b3062210Smrg } 5244b3062210Smrg } 5245b3062210Smrg /* not found in PATH; assume curdir */ 5246b3062210Smrg } 5247b3062210Smrg /* Relative path | not found in path: prepend cwd */ 5248b3062210Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5249b3062210Smrg lt_fatal ("getcwd failed"); 5250b3062210Smrg tmp_len = strlen(tmp); 5251b3062210Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5252b3062210Smrg memcpy (concat_name, tmp, tmp_len); 5253b3062210Smrg concat_name[tmp_len] = '/'; 5254b3062210Smrg strcpy (concat_name + tmp_len + 1, wrapper); 5255b3062210Smrg 5256b3062210Smrg if (check_executable(concat_name)) 5257b3062210Smrg return concat_name; 5258b3062210Smrg XFREE(concat_name); 5259b3062210Smrg return NULL; 5260b3062210Smrg} 5261b3062210Smrg 5262b3062210Smrgchar * 5263b3062210Smrgstrendzap(char *str, const char *pat) 5264b3062210Smrg{ 5265b3062210Smrg size_t len, patlen; 5266b3062210Smrg 5267b3062210Smrg assert(str != NULL); 5268b3062210Smrg assert(pat != NULL); 5269b3062210Smrg 5270b3062210Smrg len = strlen(str); 5271b3062210Smrg patlen = strlen(pat); 5272b3062210Smrg 5273b3062210Smrg if (patlen <= len) 5274b3062210Smrg { 5275b3062210Smrg str += len - patlen; 5276b3062210Smrg if (strcmp(str, pat) == 0) 5277b3062210Smrg *str = '\0'; 5278b3062210Smrg } 5279b3062210Smrg return str; 5280b3062210Smrg} 5281b3062210Smrg 5282b3062210Smrgstatic void 5283b3062210Smrglt_error_core (int exit_status, const char * mode, 5284b3062210Smrg const char * message, va_list ap) 5285b3062210Smrg{ 5286b3062210Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 5287b3062210Smrg vfprintf (stderr, message, ap); 5288b3062210Smrg fprintf (stderr, ".\n"); 5289b3062210Smrg 5290b3062210Smrg if (exit_status >= 0) 5291b3062210Smrg exit (exit_status); 5292b3062210Smrg} 5293b3062210Smrg 5294b3062210Smrgvoid 5295b3062210Smrglt_fatal (const char *message, ...) 5296b3062210Smrg{ 5297b3062210Smrg va_list ap; 5298b3062210Smrg va_start (ap, message); 5299b3062210Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5300b3062210Smrg va_end (ap); 5301b3062210Smrg} 5302b3062210SmrgEOF 5303b3062210Smrg # we should really use a build-platform specific compiler 5304b3062210Smrg # here, but OTOH, the wrappers (shell script and this C one) 5305b3062210Smrg # are only useful if you want to execute the "real" binary. 5306b3062210Smrg # Since the "real" binary is built for $host, then this 5307b3062210Smrg # wrapper might as well be built for $host, too. 5308b3062210Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5309b3062210Smrg ;; 5310b3062210Smrg esac 5311b3062210Smrg $rm $output 5312b3062210Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5313b3062210Smrg 5314b3062210Smrg $echo > $output "\ 5315b3062210Smrg#! $SHELL 5316b3062210Smrg 5317b3062210Smrg# $output - temporary wrapper script for $objdir/$outputname 5318b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5319b3062210Smrg# 5320b3062210Smrg# The $output program cannot be directly executed until all the libtool 5321b3062210Smrg# libraries that it depends on are installed. 5322b3062210Smrg# 5323b3062210Smrg# This wrapper script should never be moved out of the build directory. 5324b3062210Smrg# If it is, it will not operate correctly. 5325b3062210Smrg 5326b3062210Smrg# Sed substitution that helps us do robust quoting. It backslashifies 5327b3062210Smrg# metacharacters that are still active within double-quoted strings. 5328b3062210SmrgXsed='${SED} -e 1s/^X//' 5329b3062210Smrgsed_quote_subst='$sed_quote_subst' 5330b3062210Smrg 5331b3062210Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5332b3062210Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5333b3062210Smrg emulate sh 5334b3062210Smrg NULLCMD=: 5335b3062210Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5336b3062210Smrg # is contrary to our usage. Disable this feature. 5337b3062210Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5338b3062210Smrg setopt NO_GLOB_SUBST 5339b3062210Smrgelse 5340b3062210Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5341b3062210Smrgfi 5342b3062210SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5343b3062210SmrgDUALCASE=1; export DUALCASE # for MKS sh 5344b3062210Smrg 5345b3062210Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5346b3062210Smrg# if CDPATH is set. 5347b3062210Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5348b3062210Smrg 5349b3062210Smrgrelink_command=\"$relink_command\" 5350b3062210Smrg 5351b3062210Smrg# This environment variable determines our operation mode. 5352b3062210Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5353b3062210Smrg # install mode needs the following variable: 5354b3062210Smrg notinst_deplibs='$notinst_deplibs' 5355b3062210Smrgelse 5356b3062210Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 5357b3062210Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5358b3062210Smrg echo=\"$qecho\" 5359b3062210Smrg file=\"\$0\" 5360b3062210Smrg # Make sure echo works. 5361b3062210Smrg if test \"X\$1\" = X--no-reexec; then 5362b3062210Smrg # Discard the --no-reexec flag, and continue. 5363b3062210Smrg shift 5364b3062210Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5365b3062210Smrg # Yippee, \$echo works! 5366b3062210Smrg : 5367b3062210Smrg else 5368b3062210Smrg # Restart under the correct shell, and then maybe \$echo will work. 5369b3062210Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5370b3062210Smrg fi 5371b3062210Smrg fi\ 5372b3062210Smrg" 5373b3062210Smrg $echo >> $output "\ 537423a0898aSmrg 5375b3062210Smrg # Find the directory that this script lives in. 5376b3062210Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5377b3062210Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 537823a0898aSmrg 5379b3062210Smrg # Follow symbolic links until we get to the real thisdir. 5380b3062210Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5381b3062210Smrg while test -n \"\$file\"; do 5382b3062210Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 538323a0898aSmrg 5384b3062210Smrg # If there was a directory component, then change thisdir. 5385b3062210Smrg if test \"x\$destdir\" != \"x\$file\"; then 5386b3062210Smrg case \"\$destdir\" in 5387b3062210Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5388b3062210Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5389b3062210Smrg esac 5390b3062210Smrg fi 539123a0898aSmrg 5392b3062210Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5393b3062210Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5394b3062210Smrg done 539523a0898aSmrg 5396b3062210Smrg # Try to get the absolute directory name. 5397b3062210Smrg absdir=\`cd \"\$thisdir\" && pwd\` 5398b3062210Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5399b3062210Smrg" 540023a0898aSmrg 5401b3062210Smrg if test "$fast_install" = yes; then 5402b3062210Smrg $echo >> $output "\ 5403b3062210Smrg program=lt-'$outputname'$exeext 5404b3062210Smrg progdir=\"\$thisdir/$objdir\" 540523a0898aSmrg 5406b3062210Smrg if test ! -f \"\$progdir/\$program\" || \\ 5407b3062210Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5408b3062210Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 540923a0898aSmrg 5410b3062210Smrg file=\"\$\$-\$program\" 541123a0898aSmrg 5412b3062210Smrg if test ! -d \"\$progdir\"; then 5413b3062210Smrg $mkdir \"\$progdir\" 5414b3062210Smrg else 5415b3062210Smrg $rm \"\$progdir/\$file\" 5416b3062210Smrg fi" 541723a0898aSmrg 5418b3062210Smrg $echo >> $output "\ 541923a0898aSmrg 5420b3062210Smrg # relink executable if necessary 5421b3062210Smrg if test -n \"\$relink_command\"; then 5422b3062210Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5423b3062210Smrg else 5424b3062210Smrg $echo \"\$relink_command_output\" >&2 5425b3062210Smrg $rm \"\$progdir/\$file\" 5426b3062210Smrg exit $EXIT_FAILURE 5427b3062210Smrg fi 5428b3062210Smrg fi 542923a0898aSmrg 5430b3062210Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5431b3062210Smrg { $rm \"\$progdir/\$program\"; 5432b3062210Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5433b3062210Smrg $rm \"\$progdir/\$file\" 5434b3062210Smrg fi" 5435b3062210Smrg else 5436b3062210Smrg $echo >> $output "\ 5437b3062210Smrg program='$outputname' 5438b3062210Smrg progdir=\"\$thisdir/$objdir\" 5439b3062210Smrg" 54407f7f5e4eSmrg fi 544123a0898aSmrg 5442b3062210Smrg $echo >> $output "\ 544323a0898aSmrg 5444b3062210Smrg if test -f \"\$progdir/\$program\"; then" 544523a0898aSmrg 5446b3062210Smrg # Export our shlibpath_var if we have one. 5447b3062210Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5448b3062210Smrg $echo >> $output "\ 5449b3062210Smrg # Add our own library path to $shlibpath_var 5450b3062210Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 545123a0898aSmrg 5452b3062210Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 5453b3062210Smrg # The second colon is a workaround for a bug in BeOS R4 sed 5454b3062210Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 545523a0898aSmrg 5456b3062210Smrg export $shlibpath_var 5457b3062210Smrg" 5458b3062210Smrg fi 545923a0898aSmrg 5460b3062210Smrg # fixup the dll searchpath if we need to. 5461b3062210Smrg if test -n "$dllsearchpath"; then 5462b3062210Smrg $echo >> $output "\ 5463b3062210Smrg # Add the dll search path components to the executable PATH 5464b3062210Smrg PATH=$dllsearchpath:\$PATH 5465b3062210Smrg" 5466b3062210Smrg fi 546723a0898aSmrg 5468b3062210Smrg $echo >> $output "\ 5469b3062210Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5470b3062210Smrg # Run the actual program with our arguments. 5471b3062210Smrg" 5472b3062210Smrg case $host in 5473b3062210Smrg # Backslashes separate directories on plain windows 5474b3062210Smrg *-*-mingw | *-*-os2*) 5475b3062210Smrg $echo >> $output "\ 5476b3062210Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5477b3062210Smrg" 5478b3062210Smrg ;; 547923a0898aSmrg 5480b3062210Smrg *) 5481b3062210Smrg $echo >> $output "\ 5482b3062210Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5483b3062210Smrg" 5484b3062210Smrg ;; 5485b3062210Smrg esac 5486b3062210Smrg $echo >> $output "\ 5487b3062210Smrg \$echo \"\$0: cannot exec \$program \$*\" 5488b3062210Smrg exit $EXIT_FAILURE 5489b3062210Smrg fi 5490b3062210Smrg else 5491b3062210Smrg # The program doesn't exist. 5492b3062210Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5493b3062210Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5494b3062210Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5495b3062210Smrg exit $EXIT_FAILURE 5496b3062210Smrg fi 5497b3062210Smrgfi\ 5498b3062210Smrg" 5499b3062210Smrg chmod +x $output 5500b3062210Smrg fi 5501b3062210Smrg exit $EXIT_SUCCESS 5502b3062210Smrg ;; 5503b3062210Smrg esac 55047f7f5e4eSmrg 5505b3062210Smrg # See if we need to build an old-fashioned archive. 5506b3062210Smrg for oldlib in $oldlibs; do 550723a0898aSmrg 5508b3062210Smrg if test "$build_libtool_libs" = convenience; then 5509b3062210Smrg oldobjs="$libobjs_save" 5510b3062210Smrg addlibs="$convenience" 5511b3062210Smrg build_libtool_libs=no 5512b3062210Smrg else 5513b3062210Smrg if test "$build_libtool_libs" = module; then 5514b3062210Smrg oldobjs="$libobjs_save" 5515b3062210Smrg build_libtool_libs=no 5516b3062210Smrg else 5517b3062210Smrg oldobjs="$old_deplibs $non_pic_objects" 5518b3062210Smrg fi 5519b3062210Smrg addlibs="$old_convenience" 5520b3062210Smrg fi 552123a0898aSmrg 5522b3062210Smrg if test -n "$addlibs"; then 5523b3062210Smrg gentop="$output_objdir/${outputname}x" 5524b3062210Smrg generated="$generated $gentop" 552523a0898aSmrg 5526b3062210Smrg func_extract_archives $gentop $addlibs 5527b3062210Smrg oldobjs="$oldobjs $func_extract_archives_result" 5528b3062210Smrg fi 552923a0898aSmrg 5530b3062210Smrg # Do each command in the archive commands. 5531b3062210Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5532b3062210Smrg cmds=$old_archive_from_new_cmds 5533b3062210Smrg else 5534b3062210Smrg # POSIX demands no paths to be encoded in archives. We have 5535b3062210Smrg # to avoid creating archives with duplicate basenames if we 5536b3062210Smrg # might have to extract them afterwards, e.g., when creating a 5537b3062210Smrg # static archive out of a convenience library, or when linking 5538b3062210Smrg # the entirety of a libtool archive into another (currently 5539b3062210Smrg # not supported by libtool). 5540b3062210Smrg if (for obj in $oldobjs 5541b3062210Smrg do 5542b3062210Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5543b3062210Smrg done | sort | sort -uc >/dev/null 2>&1); then 5544b3062210Smrg : 5545b3062210Smrg else 5546b3062210Smrg $echo "copying selected object files to avoid basename conflicts..." 554723a0898aSmrg 5548b3062210Smrg if test -z "$gentop"; then 5549b3062210Smrg gentop="$output_objdir/${outputname}x" 5550b3062210Smrg generated="$generated $gentop" 555123a0898aSmrg 5552b3062210Smrg $show "${rm}r $gentop" 5553b3062210Smrg $run ${rm}r "$gentop" 5554b3062210Smrg $show "$mkdir $gentop" 5555b3062210Smrg $run $mkdir "$gentop" 5556b3062210Smrg exit_status=$? 5557b3062210Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5558b3062210Smrg exit $exit_status 55597f7f5e4eSmrg fi 55607f7f5e4eSmrg fi 556123a0898aSmrg 5562b3062210Smrg save_oldobjs=$oldobjs 5563b3062210Smrg oldobjs= 5564b3062210Smrg counter=1 5565b3062210Smrg for obj in $save_oldobjs 5566b3062210Smrg do 5567b3062210Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5568b3062210Smrg case " $oldobjs " in 5569b3062210Smrg " ") oldobjs=$obj ;; 5570b3062210Smrg *[\ /]"$objbase "*) 5571b3062210Smrg while :; do 5572b3062210Smrg # Make sure we don't pick an alternate name that also 5573b3062210Smrg # overlaps. 5574b3062210Smrg newobj=lt$counter-$objbase 5575b3062210Smrg counter=`expr $counter + 1` 5576b3062210Smrg case " $oldobjs " in 5577b3062210Smrg *[\ /]"$newobj "*) ;; 5578b3062210Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5579b3062210Smrg esac 5580b3062210Smrg done 5581b3062210Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5582b3062210Smrg $run ln "$obj" "$gentop/$newobj" || 5583b3062210Smrg $run cp "$obj" "$gentop/$newobj" 5584b3062210Smrg oldobjs="$oldobjs $gentop/$newobj" 5585b3062210Smrg ;; 5586b3062210Smrg *) oldobjs="$oldobjs $obj" ;; 5587b3062210Smrg esac 5588b3062210Smrg done 5589b3062210Smrg fi 559023a0898aSmrg 5591b3062210Smrg eval cmds=\"$old_archive_cmds\" 55927f7f5e4eSmrg 5593b3062210Smrg if len=`expr "X$cmds" : ".*"` && 5594b3062210Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5595b3062210Smrg cmds=$old_archive_cmds 5596b3062210Smrg else 5597b3062210Smrg # the command line is too long to link in one step, link in parts 5598b3062210Smrg $echo "using piecewise archive linking..." 5599b3062210Smrg save_RANLIB=$RANLIB 5600b3062210Smrg RANLIB=: 5601b3062210Smrg objlist= 5602b3062210Smrg concat_cmds= 5603b3062210Smrg save_oldobjs=$oldobjs 5604b3062210Smrg 5605b3062210Smrg # Is there a better way of finding the last object in the list? 5606b3062210Smrg for obj in $save_oldobjs 5607b3062210Smrg do 5608b3062210Smrg last_oldobj=$obj 5609b3062210Smrg done 5610b3062210Smrg for obj in $save_oldobjs 5611b3062210Smrg do 5612b3062210Smrg oldobjs="$objlist $obj" 5613b3062210Smrg objlist="$objlist $obj" 5614b3062210Smrg eval test_cmds=\"$old_archive_cmds\" 5615b3062210Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5616b3062210Smrg test "$len" -le "$max_cmd_len"; then 5617b3062210Smrg : 561823a0898aSmrg else 5619b3062210Smrg # the above command should be used before it gets too long 5620b3062210Smrg oldobjs=$objlist 5621b3062210Smrg if test "$obj" = "$last_oldobj" ; then 5622b3062210Smrg RANLIB=$save_RANLIB 5623b3062210Smrg fi 5624b3062210Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5625b3062210Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5626b3062210Smrg objlist= 562723a0898aSmrg fi 5628b3062210Smrg done 5629b3062210Smrg RANLIB=$save_RANLIB 5630b3062210Smrg oldobjs=$objlist 5631b3062210Smrg if test "X$oldobjs" = "X" ; then 5632b3062210Smrg eval cmds=\"\$concat_cmds\" 563323a0898aSmrg else 5634b3062210Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 563523a0898aSmrg fi 563623a0898aSmrg fi 5637b3062210Smrg fi 5638b3062210Smrg save_ifs="$IFS"; IFS='~' 5639b3062210Smrg for cmd in $cmds; do 5640b3062210Smrg eval cmd=\"$cmd\" 56417f7f5e4eSmrg IFS="$save_ifs" 5642b3062210Smrg $show "$cmd" 5643b3062210Smrg $run eval "$cmd" || exit $? 5644b3062210Smrg done 5645b3062210Smrg IFS="$save_ifs" 5646b3062210Smrg done 564723a0898aSmrg 5648b3062210Smrg if test -n "$generated"; then 5649b3062210Smrg $show "${rm}r$generated" 5650b3062210Smrg $run ${rm}r$generated 5651b3062210Smrg fi 565223a0898aSmrg 5653b3062210Smrg # Now create the libtool archive. 5654b3062210Smrg case $output in 5655b3062210Smrg *.la) 5656b3062210Smrg old_library= 5657b3062210Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5658b3062210Smrg $show "creating $output" 565923a0898aSmrg 5660b3062210Smrg # Preserve any variables that may affect compiler behavior 5661b3062210Smrg for var in $variables_saved_for_relink; do 5662b3062210Smrg if eval test -z \"\${$var+set}\"; then 5663b3062210Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5664b3062210Smrg elif eval var_value=\$$var; test -z "$var_value"; then 5665b3062210Smrg relink_command="$var=; export $var; $relink_command" 5666b3062210Smrg else 5667b3062210Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5668b3062210Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 56697f7f5e4eSmrg fi 5670b3062210Smrg done 5671b3062210Smrg # Quote the link command for shipping. 5672b3062210Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5673b3062210Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5674b3062210Smrg if test "$hardcode_automatic" = yes ; then 5675b3062210Smrg relink_command= 56767f7f5e4eSmrg fi 567723a0898aSmrg 567823a0898aSmrg 5679b3062210Smrg # Only create the output if not a dry run. 5680b3062210Smrg if test -z "$run"; then 5681b3062210Smrg for installed in no yes; do 5682b3062210Smrg if test "$installed" = yes; then 5683b3062210Smrg if test -z "$install_libdir"; then 5684b3062210Smrg break 5685b3062210Smrg fi 5686b3062210Smrg output="$output_objdir/$outputname"i 5687b3062210Smrg # Replace all uninstalled libtool libraries with the installed ones 5688b3062210Smrg newdependency_libs= 5689b3062210Smrg for deplib in $dependency_libs; do 5690b3062210Smrg case $deplib in 5691b3062210Smrg *.la) 5692b3062210Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5693b3062210Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5694b3062210Smrg if test -z "$libdir"; then 5695b3062210Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5696b3062210Smrg exit $EXIT_FAILURE 5697b3062210Smrg fi 5698b3062210Smrg newdependency_libs="$newdependency_libs $libdir/$name" 5699b3062210Smrg ;; 5700b3062210Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5701b3062210Smrg esac 5702b3062210Smrg done 5703b3062210Smrg dependency_libs="$newdependency_libs" 5704b3062210Smrg newdlfiles= 5705b3062210Smrg for lib in $dlfiles; do 5706b3062210Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5707b3062210Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5708b3062210Smrg if test -z "$libdir"; then 5709b3062210Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5710b3062210Smrg exit $EXIT_FAILURE 5711b3062210Smrg fi 5712b3062210Smrg newdlfiles="$newdlfiles $libdir/$name" 5713b3062210Smrg done 5714b3062210Smrg dlfiles="$newdlfiles" 5715b3062210Smrg newdlprefiles= 5716b3062210Smrg for lib in $dlprefiles; do 5717b3062210Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5718b3062210Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5719b3062210Smrg if test -z "$libdir"; then 5720b3062210Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5721b3062210Smrg exit $EXIT_FAILURE 5722b3062210Smrg fi 5723b3062210Smrg newdlprefiles="$newdlprefiles $libdir/$name" 5724b3062210Smrg done 5725b3062210Smrg dlprefiles="$newdlprefiles" 5726b3062210Smrg else 5727b3062210Smrg newdlfiles= 5728b3062210Smrg for lib in $dlfiles; do 5729b3062210Smrg case $lib in 5730b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5731b3062210Smrg *) abs=`pwd`"/$lib" ;; 5732b3062210Smrg esac 5733b3062210Smrg newdlfiles="$newdlfiles $abs" 5734b3062210Smrg done 5735b3062210Smrg dlfiles="$newdlfiles" 5736b3062210Smrg newdlprefiles= 5737b3062210Smrg for lib in $dlprefiles; do 5738b3062210Smrg case $lib in 5739b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5740b3062210Smrg *) abs=`pwd`"/$lib" ;; 5741b3062210Smrg esac 5742b3062210Smrg newdlprefiles="$newdlprefiles $abs" 5743b3062210Smrg done 5744b3062210Smrg dlprefiles="$newdlprefiles" 5745b3062210Smrg fi 5746b3062210Smrg $rm $output 5747b3062210Smrg # place dlname in correct position for cygwin 5748b3062210Smrg tdlname=$dlname 5749b3062210Smrg case $host,$output,$installed,$module,$dlname in 5750b3062210Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5751b3062210Smrg esac 5752b3062210Smrg $echo > $output "\ 5753b3062210Smrg# $outputname - a libtool library file 5754b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5755b3062210Smrg# 5756b3062210Smrg# Please DO NOT delete this file! 5757b3062210Smrg# It is necessary for linking the library. 575823a0898aSmrg 5759b3062210Smrg# The name that we can dlopen(3). 5760b3062210Smrgdlname='$tdlname' 576123a0898aSmrg 5762b3062210Smrg# Names of this library. 5763b3062210Smrglibrary_names='$library_names' 576423a0898aSmrg 5765b3062210Smrg# The name of the static archive. 5766b3062210Smrgold_library='$old_library' 576723a0898aSmrg 5768b3062210Smrg# Libraries that this one depends upon. 5769b3062210Smrgdependency_libs='$dependency_libs' 57707f7f5e4eSmrg 5771b3062210Smrg# Version information for $libname. 5772b3062210Smrgcurrent=$current 5773b3062210Smrgage=$age 5774b3062210Smrgrevision=$revision 57757f7f5e4eSmrg 5776b3062210Smrg# Is this an already installed library? 5777b3062210Smrginstalled=$installed 57787f7f5e4eSmrg 5779b3062210Smrg# Should we warn about portability when linking against -modules? 5780b3062210Smrgshouldnotlink=$module 57817f7f5e4eSmrg 5782b3062210Smrg# Files to dlopen/dlpreopen 5783b3062210Smrgdlopen='$dlfiles' 5784b3062210Smrgdlpreopen='$dlprefiles' 57857f7f5e4eSmrg 5786b3062210Smrg# Directory that this library needs to be installed in: 5787b3062210Smrglibdir='$install_libdir'" 5788b3062210Smrg if test "$installed" = no && test "$need_relink" = yes; then 5789b3062210Smrg $echo >> $output "\ 5790b3062210Smrgrelink_command=\"$relink_command\"" 5791b3062210Smrg fi 5792b3062210Smrg done 57937f7f5e4eSmrg fi 57947f7f5e4eSmrg 5795b3062210Smrg # Do a symbolic link so that the libtool archive can be found in 5796b3062210Smrg # LD_LIBRARY_PATH before the program is installed. 5797b3062210Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5798b3062210Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 579923a0898aSmrg ;; 5800b3062210Smrg esac 5801b3062210Smrg exit $EXIT_SUCCESS 5802b3062210Smrg ;; 580323a0898aSmrg 5804b3062210Smrg # libtool install mode 5805b3062210Smrg install) 5806b3062210Smrg modename="$modename: install" 5807b3062210Smrg 5808b3062210Smrg # There may be an optional sh(1) argument at the beginning of 5809b3062210Smrg # install_prog (especially on Windows NT). 5810b3062210Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5811b3062210Smrg # Allow the use of GNU shtool's install command. 5812b3062210Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 5813b3062210Smrg # Aesthetically quote it. 5814b3062210Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5815b3062210Smrg case $arg in 5816b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5817b3062210Smrg arg="\"$arg\"" 5818b3062210Smrg ;; 58197f7f5e4eSmrg esac 5820b3062210Smrg install_prog="$arg " 5821b3062210Smrg arg="$1" 5822b3062210Smrg shift 5823b3062210Smrg else 5824b3062210Smrg install_prog= 5825b3062210Smrg arg=$nonopt 5826b3062210Smrg fi 582723a0898aSmrg 5828b3062210Smrg # The real first argument should be the name of the installation program. 5829b3062210Smrg # Aesthetically quote it. 5830b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5831b3062210Smrg case $arg in 5832b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5833b3062210Smrg arg="\"$arg\"" 5834b3062210Smrg ;; 5835b3062210Smrg esac 5836b3062210Smrg install_prog="$install_prog$arg" 583723a0898aSmrg 5838b3062210Smrg # We need to accept at least all the BSD install flags. 5839b3062210Smrg dest= 5840b3062210Smrg files= 5841b3062210Smrg opts= 5842b3062210Smrg prev= 5843b3062210Smrg install_type= 5844b3062210Smrg isdir=no 5845b3062210Smrg stripme= 5846b3062210Smrg for arg 5847b3062210Smrg do 5848b3062210Smrg if test -n "$dest"; then 5849b3062210Smrg files="$files $dest" 5850b3062210Smrg dest=$arg 5851b3062210Smrg continue 5852b3062210Smrg fi 58537f7f5e4eSmrg 5854b3062210Smrg case $arg in 5855b3062210Smrg -d) isdir=yes ;; 5856b3062210Smrg -f) 5857b3062210Smrg case " $install_prog " in 5858b3062210Smrg *[\\\ /]cp\ *) ;; 5859b3062210Smrg *) prev=$arg ;; 5860b3062210Smrg esac 5861b3062210Smrg ;; 5862b3062210Smrg -g | -m | -o) prev=$arg ;; 5863b3062210Smrg -s) 5864b3062210Smrg stripme=" -s" 5865b3062210Smrg continue 5866b3062210Smrg ;; 5867b3062210Smrg -*) 5868b3062210Smrg ;; 5869b3062210Smrg *) 5870b3062210Smrg # If the previous option needed an argument, then skip it. 5871b3062210Smrg if test -n "$prev"; then 5872b3062210Smrg prev= 5873b3062210Smrg else 5874b3062210Smrg dest=$arg 5875b3062210Smrg continue 5876b3062210Smrg fi 587723a0898aSmrg ;; 58787f7f5e4eSmrg esac 587923a0898aSmrg 5880b3062210Smrg # Aesthetically quote the argument. 5881b3062210Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5882b3062210Smrg case $arg in 5883b3062210Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5884b3062210Smrg arg="\"$arg\"" 58857f7f5e4eSmrg ;; 58867f7f5e4eSmrg esac 5887b3062210Smrg install_prog="$install_prog $arg" 5888b3062210Smrg done 588923a0898aSmrg 5890b3062210Smrg if test -z "$install_prog"; then 5891b3062210Smrg $echo "$modename: you must specify an install program" 1>&2 5892b3062210Smrg $echo "$help" 1>&2 5893b3062210Smrg exit $EXIT_FAILURE 5894b3062210Smrg fi 589523a0898aSmrg 5896b3062210Smrg if test -n "$prev"; then 5897b3062210Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5898b3062210Smrg $echo "$help" 1>&2 5899b3062210Smrg exit $EXIT_FAILURE 5900b3062210Smrg fi 5901b3062210Smrg 5902b3062210Smrg if test -z "$files"; then 5903b3062210Smrg if test -z "$dest"; then 5904b3062210Smrg $echo "$modename: no file or destination specified" 1>&2 5905b3062210Smrg else 5906b3062210Smrg $echo "$modename: you must specify a destination" 1>&2 5907b3062210Smrg fi 5908b3062210Smrg $echo "$help" 1>&2 5909b3062210Smrg exit $EXIT_FAILURE 5910b3062210Smrg fi 5911b3062210Smrg 5912b3062210Smrg # Strip any trailing slash from the destination. 5913b3062210Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5914b3062210Smrg 5915b3062210Smrg # Check to see that the destination is a directory. 5916b3062210Smrg test -d "$dest" && isdir=yes 5917b3062210Smrg if test "$isdir" = yes; then 5918b3062210Smrg destdir="$dest" 5919b3062210Smrg destname= 5920b3062210Smrg else 5921b3062210Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5922b3062210Smrg test "X$destdir" = "X$dest" && destdir=. 5923b3062210Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5924b3062210Smrg 5925b3062210Smrg # Not a directory, so check to see that there is only one file specified. 5926b3062210Smrg set dummy $files 5927b3062210Smrg if test "$#" -gt 2; then 5928b3062210Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 5929b3062210Smrg $echo "$help" 1>&2 5930b3062210Smrg exit $EXIT_FAILURE 5931b3062210Smrg fi 5932b3062210Smrg fi 5933b3062210Smrg case $destdir in 5934b3062210Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5935b3062210Smrg *) 5936b3062210Smrg for file in $files; do 5937b3062210Smrg case $file in 5938b3062210Smrg *.lo) ;; 59397f7f5e4eSmrg *) 5940b3062210Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5941b3062210Smrg $echo "$help" 1>&2 5942b3062210Smrg exit $EXIT_FAILURE 59437f7f5e4eSmrg ;; 59447f7f5e4eSmrg esac 59457f7f5e4eSmrg done 5946b3062210Smrg ;; 5947b3062210Smrg esac 594823a0898aSmrg 5949b3062210Smrg # This variable tells wrapper scripts just to set variables rather 5950b3062210Smrg # than running their programs. 5951b3062210Smrg libtool_install_magic="$magic" 595223a0898aSmrg 5953b3062210Smrg staticlibs= 5954b3062210Smrg future_libdirs= 5955b3062210Smrg current_libdirs= 5956b3062210Smrg for file in $files; do 595723a0898aSmrg 5958b3062210Smrg # Do each installation. 5959b3062210Smrg case $file in 5960b3062210Smrg *.$libext) 5961b3062210Smrg # Do the static libraries later. 5962b3062210Smrg staticlibs="$staticlibs $file" 5963b3062210Smrg ;; 5964b3062210Smrg 5965b3062210Smrg *.la) 5966b3062210Smrg # Check to see that this really is a libtool archive. 5967b3062210Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5968b3062210Smrg else 5969b3062210Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5970b3062210Smrg $echo "$help" 1>&2 5971b3062210Smrg exit $EXIT_FAILURE 5972b3062210Smrg fi 5973b3062210Smrg 5974b3062210Smrg library_names= 5975b3062210Smrg old_library= 5976b3062210Smrg relink_command= 5977b3062210Smrg # If there is no directory component, then add one. 5978b3062210Smrg case $file in 5979b3062210Smrg */* | *\\*) . $file ;; 5980b3062210Smrg *) . ./$file ;; 5981b3062210Smrg esac 5982b3062210Smrg 5983b3062210Smrg # Add the libdir to current_libdirs if it is the destination. 5984b3062210Smrg if test "X$destdir" = "X$libdir"; then 5985b3062210Smrg case "$current_libdirs " in 59867f7f5e4eSmrg *" $libdir "*) ;; 5987b3062210Smrg *) current_libdirs="$current_libdirs $libdir" ;; 59887f7f5e4eSmrg esac 5989b3062210Smrg else 5990b3062210Smrg # Note the libdir as a future libdir. 5991b3062210Smrg case "$future_libdirs " in 59927f7f5e4eSmrg *" $libdir "*) ;; 5993b3062210Smrg *) future_libdirs="$future_libdirs $libdir" ;; 59947f7f5e4eSmrg esac 59957f7f5e4eSmrg fi 599623a0898aSmrg 5997b3062210Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5998b3062210Smrg test "X$dir" = "X$file/" && dir= 5999b3062210Smrg dir="$dir$objdir" 6000b3062210Smrg 6001b3062210Smrg if test -n "$relink_command"; then 6002b3062210Smrg # Determine the prefix the user has applied to our future dir. 6003b3062210Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6004b3062210Smrg 6005b3062210Smrg # Don't allow the user to place us outside of our expected 6006b3062210Smrg # location b/c this prevents finding dependent libraries that 6007b3062210Smrg # are installed to the same prefix. 6008b3062210Smrg # At present, this check doesn't affect windows .dll's that 6009b3062210Smrg # are installed into $libdir/../bin (currently, that works fine) 6010b3062210Smrg # but it's something to keep an eye on. 6011b3062210Smrg if test "$inst_prefix_dir" = "$destdir"; then 6012b3062210Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6013b3062210Smrg exit $EXIT_FAILURE 6014b3062210Smrg fi 6015b3062210Smrg 6016b3062210Smrg if test -n "$inst_prefix_dir"; then 6017b3062210Smrg # Stick the inst_prefix_dir data into the link command. 6018b3062210Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6019b3062210Smrg else 6020b3062210Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6021b3062210Smrg fi 6022b3062210Smrg 6023b3062210Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 6024b3062210Smrg $show "$relink_command" 6025b3062210Smrg if $run eval "$relink_command"; then : 602623a0898aSmrg else 6027b3062210Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6028b3062210Smrg exit $EXIT_FAILURE 602923a0898aSmrg fi 603023a0898aSmrg fi 603123a0898aSmrg 6032b3062210Smrg # See the names of the shared library. 6033b3062210Smrg set dummy $library_names 6034b3062210Smrg if test -n "$2"; then 6035b3062210Smrg realname="$2" 6036b3062210Smrg shift 6037b3062210Smrg shift 603823a0898aSmrg 6039b3062210Smrg srcname="$realname" 6040b3062210Smrg test -n "$relink_command" && srcname="$realname"T 604123a0898aSmrg 6042b3062210Smrg # Install the shared library and build the symlinks. 6043b3062210Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 6044b3062210Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6045b3062210Smrg if test -n "$stripme" && test -n "$striplib"; then 6046b3062210Smrg $show "$striplib $destdir/$realname" 6047b3062210Smrg $run eval "$striplib $destdir/$realname" || exit $? 6048b3062210Smrg fi 604923a0898aSmrg 6050b3062210Smrg if test "$#" -gt 0; then 6051b3062210Smrg # Delete the old symlinks, and create new ones. 6052b3062210Smrg # Try `ln -sf' first, because the `ln' binary might depend on 6053b3062210Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6054b3062210Smrg # so we also need to try rm && ln -s. 6055b3062210Smrg for linkname 6056b3062210Smrg do 6057b3062210Smrg if test "$linkname" != "$realname"; then 6058b3062210Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6059b3062210Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6060b3062210Smrg fi 6061b3062210Smrg done 6062b3062210Smrg fi 606323a0898aSmrg 6064b3062210Smrg # Do each command in the postinstall commands. 6065b3062210Smrg lib="$destdir/$realname" 6066b3062210Smrg cmds=$postinstall_cmds 6067b3062210Smrg save_ifs="$IFS"; IFS='~' 6068b3062210Smrg for cmd in $cmds; do 6069b3062210Smrg IFS="$save_ifs" 6070b3062210Smrg eval cmd=\"$cmd\" 6071b3062210Smrg $show "$cmd" 6072b3062210Smrg $run eval "$cmd" || { 6073b3062210Smrg lt_exit=$? 6074b3062210Smrg 6075b3062210Smrg # Restore the uninstalled library and exit 6076b3062210Smrg if test "$mode" = relink; then 6077b3062210Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6078b3062210Smrg fi 607923a0898aSmrg 6080b3062210Smrg exit $lt_exit 6081b3062210Smrg } 6082b3062210Smrg done 6083b3062210Smrg IFS="$save_ifs" 608423a0898aSmrg fi 608523a0898aSmrg 6086b3062210Smrg # Install the pseudo-library for information purposes. 6087b3062210Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6088b3062210Smrg instname="$dir/$name"i 6089b3062210Smrg $show "$install_prog $instname $destdir/$name" 6090b3062210Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 609123a0898aSmrg 6092b3062210Smrg # Maybe install the static library, too. 6093b3062210Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6094b3062210Smrg ;; 609523a0898aSmrg 6096b3062210Smrg *.lo) 6097b3062210Smrg # Install (i.e. copy) a libtool object. 6098b3062210Smrg 6099b3062210Smrg # Figure out destination file name, if it wasn't already specified. 6100b3062210Smrg if test -n "$destname"; then 6101b3062210Smrg destfile="$destdir/$destname" 6102b3062210Smrg else 6103b3062210Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6104b3062210Smrg destfile="$destdir/$destfile" 610523a0898aSmrg fi 6106b3062210Smrg 6107b3062210Smrg # Deduce the name of the destination old-style object file. 6108b3062210Smrg case $destfile in 6109b3062210Smrg *.lo) 6110b3062210Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6111b3062210Smrg ;; 6112b3062210Smrg *.$objext) 6113b3062210Smrg staticdest="$destfile" 6114b3062210Smrg destfile= 6115b3062210Smrg ;; 6116b3062210Smrg *) 6117b3062210Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6118b3062210Smrg $echo "$help" 1>&2 6119b3062210Smrg exit $EXIT_FAILURE 6120b3062210Smrg ;; 6121b3062210Smrg esac 6122b3062210Smrg 6123b3062210Smrg # Install the libtool object if requested. 6124b3062210Smrg if test -n "$destfile"; then 6125b3062210Smrg $show "$install_prog $file $destfile" 6126b3062210Smrg $run eval "$install_prog $file $destfile" || exit $? 612723a0898aSmrg fi 612823a0898aSmrg 6129b3062210Smrg # Install the old object if enabled. 6130b3062210Smrg if test "$build_old_libs" = yes; then 6131b3062210Smrg # Deduce the name of the old-style object file. 6132b3062210Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 613323a0898aSmrg 6134b3062210Smrg $show "$install_prog $staticobj $staticdest" 6135b3062210Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6136b3062210Smrg fi 6137b3062210Smrg exit $EXIT_SUCCESS 6138b3062210Smrg ;; 61397f7f5e4eSmrg 6140b3062210Smrg *) 6141b3062210Smrg # Figure out destination file name, if it wasn't already specified. 6142b3062210Smrg if test -n "$destname"; then 6143b3062210Smrg destfile="$destdir/$destname" 614423a0898aSmrg else 6145b3062210Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6146b3062210Smrg destfile="$destdir/$destfile" 614723a0898aSmrg fi 614823a0898aSmrg 6149b3062210Smrg # If the file is missing, and there is a .exe on the end, strip it 6150b3062210Smrg # because it is most likely a libtool script we actually want to 6151b3062210Smrg # install 6152b3062210Smrg stripped_ext="" 6153b3062210Smrg case $file in 6154b3062210Smrg *.exe) 6155b3062210Smrg if test ! -f "$file"; then 6156b3062210Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6157b3062210Smrg stripped_ext=".exe" 6158b3062210Smrg fi 6159b3062210Smrg ;; 6160b3062210Smrg esac 616123a0898aSmrg 6162b3062210Smrg # Do a test to see if this is really a libtool program. 6163b3062210Smrg case $host in 6164b3062210Smrg *cygwin*|*mingw*) 6165b3062210Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6166b3062210Smrg ;; 6167b3062210Smrg *) 6168b3062210Smrg wrapper=$file 6169b3062210Smrg ;; 6170b3062210Smrg esac 6171b3062210Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6172b3062210Smrg notinst_deplibs= 6173b3062210Smrg relink_command= 617423a0898aSmrg 6175b3062210Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6176b3062210Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6177b3062210Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6178b3062210Smrg # `FILE.' does not work on cygwin managed mounts. 6179b3062210Smrg # 6180b3062210Smrg # If there is no directory component, then add one. 6181b3062210Smrg case $wrapper in 6182b3062210Smrg */* | *\\*) . ${wrapper} ;; 6183b3062210Smrg *) . ./${wrapper} ;; 6184b3062210Smrg esac 618523a0898aSmrg 6186b3062210Smrg # Check the variables that should have been set. 6187b3062210Smrg if test -z "$notinst_deplibs"; then 6188b3062210Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6189b3062210Smrg exit $EXIT_FAILURE 6190b3062210Smrg fi 619123a0898aSmrg 6192b3062210Smrg finalize=yes 6193b3062210Smrg for lib in $notinst_deplibs; do 6194b3062210Smrg # Check to see that each library is installed. 6195b3062210Smrg libdir= 6196b3062210Smrg if test -f "$lib"; then 6197b3062210Smrg # If there is no directory component, then add one. 6198b3062210Smrg case $lib in 6199b3062210Smrg */* | *\\*) . $lib ;; 6200b3062210Smrg *) . ./$lib ;; 6201b3062210Smrg esac 6202b3062210Smrg fi 6203b3062210Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6204b3062210Smrg if test -n "$libdir" && test ! -f "$libfile"; then 6205b3062210Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6206b3062210Smrg finalize=no 6207b3062210Smrg fi 6208b3062210Smrg done 6209b3062210Smrg 6210b3062210Smrg relink_command= 6211b3062210Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 6212b3062210Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6213b3062210Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6214b3062210Smrg # `FILE.' does not work on cygwin managed mounts. 6215b3062210Smrg # 6216b3062210Smrg # If there is no directory component, then add one. 6217b3062210Smrg case $wrapper in 6218b3062210Smrg */* | *\\*) . ${wrapper} ;; 6219b3062210Smrg *) . ./${wrapper} ;; 6220b3062210Smrg esac 6221b3062210Smrg 6222b3062210Smrg outputname= 6223b3062210Smrg if test "$fast_install" = no && test -n "$relink_command"; then 6224b3062210Smrg if test "$finalize" = yes && test -z "$run"; then 6225b3062210Smrg tmpdir=`func_mktempdir` 6226b3062210Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6227b3062210Smrg outputname="$tmpdir/$file" 6228b3062210Smrg # Replace the output file specification. 6229b3062210Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6230b3062210Smrg 6231b3062210Smrg $show "$relink_command" 6232b3062210Smrg if $run eval "$relink_command"; then : 6233b3062210Smrg else 6234b3062210Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6235b3062210Smrg ${rm}r "$tmpdir" 6236b3062210Smrg continue 6237b3062210Smrg fi 6238b3062210Smrg file="$outputname" 6239b3062210Smrg else 6240b3062210Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6241b3062210Smrg fi 624223a0898aSmrg else 6243b3062210Smrg # Install the binary that we compiled earlier. 6244b3062210Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 624523a0898aSmrg fi 6246b3062210Smrg fi 62477f7f5e4eSmrg 6248b3062210Smrg # remove .exe since cygwin /usr/bin/install will append another 6249b3062210Smrg # one anyway 6250b3062210Smrg case $install_prog,$host in 6251b3062210Smrg */usr/bin/install*,*cygwin*) 6252b3062210Smrg case $file:$destfile in 6253b3062210Smrg *.exe:*.exe) 6254b3062210Smrg # this is ok 6255b3062210Smrg ;; 6256b3062210Smrg *.exe:*) 6257b3062210Smrg destfile=$destfile.exe 6258b3062210Smrg ;; 6259b3062210Smrg *:*.exe) 6260b3062210Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6261b3062210Smrg ;; 6262b3062210Smrg esac 6263b3062210Smrg ;; 626423a0898aSmrg esac 6265b3062210Smrg $show "$install_prog$stripme $file $destfile" 6266b3062210Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6267b3062210Smrg test -n "$outputname" && ${rm}r "$tmpdir" 6268b3062210Smrg ;; 6269b3062210Smrg esac 6270b3062210Smrg done 627123a0898aSmrg 6272b3062210Smrg for file in $staticlibs; do 6273b3062210Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 627423a0898aSmrg 6275b3062210Smrg # Set up the ranlib parameters. 6276b3062210Smrg oldlib="$destdir/$name" 627723a0898aSmrg 6278b3062210Smrg $show "$install_prog $file $oldlib" 6279b3062210Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 628023a0898aSmrg 6281b3062210Smrg if test -n "$stripme" && test -n "$old_striplib"; then 6282b3062210Smrg $show "$old_striplib $oldlib" 6283b3062210Smrg $run eval "$old_striplib $oldlib" || exit $? 628423a0898aSmrg fi 628523a0898aSmrg 6286b3062210Smrg # Do each command in the postinstall commands. 6287b3062210Smrg cmds=$old_postinstall_cmds 6288b3062210Smrg save_ifs="$IFS"; IFS='~' 6289b3062210Smrg for cmd in $cmds; do 6290b3062210Smrg IFS="$save_ifs" 6291b3062210Smrg eval cmd=\"$cmd\" 6292b3062210Smrg $show "$cmd" 6293b3062210Smrg $run eval "$cmd" || exit $? 6294b3062210Smrg done 6295b3062210Smrg IFS="$save_ifs" 6296b3062210Smrg done 629723a0898aSmrg 6298b3062210Smrg if test -n "$future_libdirs"; then 6299b3062210Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6300b3062210Smrg fi 630123a0898aSmrg 6302b3062210Smrg if test -n "$current_libdirs"; then 6303b3062210Smrg # Maybe just do a dry run. 6304b3062210Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6305b3062210Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6306b3062210Smrg else 6307b3062210Smrg exit $EXIT_SUCCESS 6308b3062210Smrg fi 6309b3062210Smrg ;; 631023a0898aSmrg 6311b3062210Smrg # libtool finish mode 6312b3062210Smrg finish) 6313b3062210Smrg modename="$modename: finish" 6314b3062210Smrg libdirs="$nonopt" 6315b3062210Smrg admincmds= 631623a0898aSmrg 6317b3062210Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6318b3062210Smrg for dir 6319b3062210Smrg do 6320b3062210Smrg libdirs="$libdirs $dir" 6321b3062210Smrg done 632223a0898aSmrg 6323b3062210Smrg for libdir in $libdirs; do 6324b3062210Smrg if test -n "$finish_cmds"; then 6325b3062210Smrg # Do each command in the finish commands. 6326b3062210Smrg cmds=$finish_cmds 6327b3062210Smrg save_ifs="$IFS"; IFS='~' 6328b3062210Smrg for cmd in $cmds; do 6329b3062210Smrg IFS="$save_ifs" 6330b3062210Smrg eval cmd=\"$cmd\" 6331b3062210Smrg $show "$cmd" 6332b3062210Smrg $run eval "$cmd" || admincmds="$admincmds 6333b3062210Smrg $cmd" 633423a0898aSmrg done 6335b3062210Smrg IFS="$save_ifs" 633623a0898aSmrg fi 6337b3062210Smrg if test -n "$finish_eval"; then 6338b3062210Smrg # Do the single finish_eval. 6339b3062210Smrg eval cmds=\"$finish_eval\" 6340b3062210Smrg $run eval "$cmds" || admincmds="$admincmds 6341b3062210Smrg $cmds" 63427f7f5e4eSmrg fi 6343b3062210Smrg done 6344b3062210Smrg fi 6345b3062210Smrg 6346b3062210Smrg # Exit here if they wanted silent mode. 6347b3062210Smrg test "$show" = : && exit $EXIT_SUCCESS 6348b3062210Smrg 6349b3062210Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6350b3062210Smrg $echo "Libraries have been installed in:" 6351b3062210Smrg for libdir in $libdirs; do 6352b3062210Smrg $echo " $libdir" 635323a0898aSmrg done 6354b3062210Smrg $echo 6355b3062210Smrg $echo "If you ever happen to want to link against installed libraries" 6356b3062210Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6357b3062210Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6358b3062210Smrg $echo "flag during linking and do at least one of the following:" 6359b3062210Smrg if test -n "$shlibpath_var"; then 6360b3062210Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6361b3062210Smrg $echo " during execution" 6362b3062210Smrg fi 6363b3062210Smrg if test -n "$runpath_var"; then 6364b3062210Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6365b3062210Smrg $echo " during linking" 6366b3062210Smrg fi 6367b3062210Smrg if test -n "$hardcode_libdir_flag_spec"; then 6368b3062210Smrg libdir=LIBDIR 6369b3062210Smrg eval flag=\"$hardcode_libdir_flag_spec\" 637023a0898aSmrg 6371b3062210Smrg $echo " - use the \`$flag' linker flag" 6372b3062210Smrg fi 6373b3062210Smrg if test -n "$admincmds"; then 6374b3062210Smrg $echo " - have your system administrator run these commands:$admincmds" 6375b3062210Smrg fi 6376b3062210Smrg if test -f /etc/ld.so.conf; then 6377b3062210Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6378b3062210Smrg fi 6379b3062210Smrg $echo 6380b3062210Smrg $echo "See any operating system documentation about shared libraries for" 6381b3062210Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6382b3062210Smrg $echo "X----------------------------------------------------------------------" | $Xsed 6383b3062210Smrg exit $EXIT_SUCCESS 6384b3062210Smrg ;; 638523a0898aSmrg 6386b3062210Smrg # libtool execute mode 6387b3062210Smrg execute) 6388b3062210Smrg modename="$modename: execute" 638923a0898aSmrg 6390b3062210Smrg # The first argument is the command name. 6391b3062210Smrg cmd="$nonopt" 6392b3062210Smrg if test -z "$cmd"; then 6393b3062210Smrg $echo "$modename: you must specify a COMMAND" 1>&2 6394b3062210Smrg $echo "$help" 6395b3062210Smrg exit $EXIT_FAILURE 6396b3062210Smrg fi 639723a0898aSmrg 6398b3062210Smrg # Handle -dlopen flags immediately. 6399b3062210Smrg for file in $execute_dlfiles; do 6400b3062210Smrg if test ! -f "$file"; then 6401b3062210Smrg $echo "$modename: \`$file' is not a file" 1>&2 6402b3062210Smrg $echo "$help" 1>&2 6403b3062210Smrg exit $EXIT_FAILURE 6404b3062210Smrg fi 64057f7f5e4eSmrg 6406b3062210Smrg dir= 6407b3062210Smrg case $file in 6408b3062210Smrg *.la) 6409b3062210Smrg # Check to see that this really is a libtool archive. 6410b3062210Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6411b3062210Smrg else 6412b3062210Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6413b3062210Smrg $echo "$help" 1>&2 6414b3062210Smrg exit $EXIT_FAILURE 6415b3062210Smrg fi 641623a0898aSmrg 6417b3062210Smrg # Read the libtool library. 6418b3062210Smrg dlname= 6419b3062210Smrg library_names= 642023a0898aSmrg 6421b3062210Smrg # If there is no directory component, then add one. 6422b3062210Smrg case $file in 6423b3062210Smrg */* | *\\*) . $file ;; 6424b3062210Smrg *) . ./$file ;; 6425b3062210Smrg esac 642623a0898aSmrg 6427b3062210Smrg # Skip this library if it cannot be dlopened. 6428b3062210Smrg if test -z "$dlname"; then 6429b3062210Smrg # Warn if it was a shared library. 6430b3062210Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6431b3062210Smrg continue 6432b3062210Smrg fi 643323a0898aSmrg 6434b3062210Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6435b3062210Smrg test "X$dir" = "X$file" && dir=. 643623a0898aSmrg 6437b3062210Smrg if test -f "$dir/$objdir/$dlname"; then 6438b3062210Smrg dir="$dir/$objdir" 6439b3062210Smrg else 6440b3062210Smrg if test ! -f "$dir/$dlname"; then 6441b3062210Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6442b3062210Smrg exit $EXIT_FAILURE 6443b3062210Smrg fi 6444b3062210Smrg fi 6445b3062210Smrg ;; 644623a0898aSmrg 6447b3062210Smrg *.lo) 6448b3062210Smrg # Just add the directory containing the .lo file. 6449b3062210Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6450b3062210Smrg test "X$dir" = "X$file" && dir=. 6451b3062210Smrg ;; 645223a0898aSmrg 6453b3062210Smrg *) 6454b3062210Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6455b3062210Smrg continue 6456b3062210Smrg ;; 6457b3062210Smrg esac 645823a0898aSmrg 6459b3062210Smrg # Get the absolute pathname. 6460b3062210Smrg absdir=`cd "$dir" && pwd` 6461b3062210Smrg test -n "$absdir" && dir="$absdir" 646223a0898aSmrg 6463b3062210Smrg # Now add the directory to shlibpath_var. 6464b3062210Smrg if eval "test -z \"\$$shlibpath_var\""; then 6465b3062210Smrg eval "$shlibpath_var=\"\$dir\"" 6466b3062210Smrg else 6467b3062210Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6468b3062210Smrg fi 6469b3062210Smrg done 647023a0898aSmrg 6471b3062210Smrg # This variable tells wrapper scripts just to set shlibpath_var 6472b3062210Smrg # rather than running their programs. 6473b3062210Smrg libtool_execute_magic="$magic" 647423a0898aSmrg 6475b3062210Smrg # Check if any of the arguments is a wrapper script. 6476b3062210Smrg args= 6477b3062210Smrg for file 6478b3062210Smrg do 6479b3062210Smrg case $file in 6480b3062210Smrg -*) ;; 6481b3062210Smrg *) 6482b3062210Smrg # Do a test to see if this is really a libtool program. 6483b3062210Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6484b3062210Smrg # If there is no directory component, then add one. 6485b3062210Smrg case $file in 6486b3062210Smrg */* | *\\*) . $file ;; 6487b3062210Smrg *) . ./$file ;; 6488b3062210Smrg esac 648923a0898aSmrg 6490b3062210Smrg # Transform arg to wrapped name. 6491b3062210Smrg file="$progdir/$program" 6492b3062210Smrg fi 6493b3062210Smrg ;; 6494b3062210Smrg esac 6495b3062210Smrg # Quote arguments (to preserve shell metacharacters). 6496b3062210Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6497b3062210Smrg args="$args \"$file\"" 6498b3062210Smrg done 649923a0898aSmrg 6500b3062210Smrg if test -z "$run"; then 6501b3062210Smrg if test -n "$shlibpath_var"; then 6502b3062210Smrg # Export the shlibpath_var. 6503b3062210Smrg eval "export $shlibpath_var" 6504b3062210Smrg fi 6505b3062210Smrg 6506b3062210Smrg # Restore saved environment variables 6507b3062210Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6508b3062210Smrg do 6509b3062210Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 6510b3062210Smrg $lt_var=\$save_$lt_var; export $lt_var 6511b3062210Smrg fi" 6512b3062210Smrg done 651323a0898aSmrg 6514b3062210Smrg # Now prepare to actually exec the command. 6515b3062210Smrg exec_cmd="\$cmd$args" 6516b3062210Smrg else 6517b3062210Smrg # Display what would be done. 6518b3062210Smrg if test -n "$shlibpath_var"; then 6519b3062210Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6520b3062210Smrg $echo "export $shlibpath_var" 6521b3062210Smrg fi 6522b3062210Smrg $echo "$cmd$args" 6523b3062210Smrg exit $EXIT_SUCCESS 6524b3062210Smrg fi 6525b3062210Smrg ;; 652623a0898aSmrg 6527b3062210Smrg # libtool clean and uninstall mode 6528b3062210Smrg clean | uninstall) 6529b3062210Smrg modename="$modename: $mode" 6530b3062210Smrg rm="$nonopt" 653123a0898aSmrg files= 653223a0898aSmrg rmforce= 653323a0898aSmrg exit_status=0 653423a0898aSmrg 653523a0898aSmrg # This variable tells wrapper scripts just to set variables rather 653623a0898aSmrg # than running their programs. 653723a0898aSmrg libtool_install_magic="$magic" 653823a0898aSmrg 653923a0898aSmrg for arg 654023a0898aSmrg do 654123a0898aSmrg case $arg in 6542b3062210Smrg -f) rm="$rm $arg"; rmforce=yes ;; 6543b3062210Smrg -*) rm="$rm $arg" ;; 654423a0898aSmrg *) files="$files $arg" ;; 654523a0898aSmrg esac 654623a0898aSmrg done 654723a0898aSmrg 6548b3062210Smrg if test -z "$rm"; then 6549b3062210Smrg $echo "$modename: you must specify an RM program" 1>&2 6550b3062210Smrg $echo "$help" 1>&2 6551b3062210Smrg exit $EXIT_FAILURE 6552b3062210Smrg fi 655323a0898aSmrg 655423a0898aSmrg rmdirs= 655523a0898aSmrg 655623a0898aSmrg origobjdir="$objdir" 655723a0898aSmrg for file in $files; do 6558b3062210Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6559b3062210Smrg if test "X$dir" = "X$file"; then 6560b3062210Smrg dir=. 656123a0898aSmrg objdir="$origobjdir" 656223a0898aSmrg else 656323a0898aSmrg objdir="$dir/$origobjdir" 656423a0898aSmrg fi 6565b3062210Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 656623a0898aSmrg test "$mode" = uninstall && objdir="$dir" 656723a0898aSmrg 656823a0898aSmrg # Remember objdir for removal later, being careful to avoid duplicates 656923a0898aSmrg if test "$mode" = clean; then 657023a0898aSmrg case " $rmdirs " in 657123a0898aSmrg *" $objdir "*) ;; 657223a0898aSmrg *) rmdirs="$rmdirs $objdir" ;; 657323a0898aSmrg esac 657423a0898aSmrg fi 657523a0898aSmrg 657623a0898aSmrg # Don't error if the file doesn't exist and rm -f was used. 6577b3062210Smrg if (test -L "$file") >/dev/null 2>&1 \ 6578b3062210Smrg || (test -h "$file") >/dev/null 2>&1 \ 6579b3062210Smrg || test -f "$file"; then 658023a0898aSmrg : 658123a0898aSmrg elif test -d "$file"; then 658223a0898aSmrg exit_status=1 658323a0898aSmrg continue 658423a0898aSmrg elif test "$rmforce" = yes; then 658523a0898aSmrg continue 658623a0898aSmrg fi 658723a0898aSmrg 658823a0898aSmrg rmfiles="$file" 658923a0898aSmrg 659023a0898aSmrg case $name in 659123a0898aSmrg *.la) 659223a0898aSmrg # Possibly a libtool archive, so verify it. 6593b3062210Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6594b3062210Smrg . $dir/$name 659523a0898aSmrg 659623a0898aSmrg # Delete the libtool libraries and symlinks. 659723a0898aSmrg for n in $library_names; do 659823a0898aSmrg rmfiles="$rmfiles $objdir/$n" 659923a0898aSmrg done 660023a0898aSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 660123a0898aSmrg 660223a0898aSmrg case "$mode" in 660323a0898aSmrg clean) 660423a0898aSmrg case " $library_names " in 660523a0898aSmrg # " " in the beginning catches empty $dlname 660623a0898aSmrg *" $dlname "*) ;; 660723a0898aSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 660823a0898aSmrg esac 6609b3062210Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 661023a0898aSmrg ;; 661123a0898aSmrg uninstall) 661223a0898aSmrg if test -n "$library_names"; then 661323a0898aSmrg # Do each command in the postuninstall commands. 6614b3062210Smrg cmds=$postuninstall_cmds 6615b3062210Smrg save_ifs="$IFS"; IFS='~' 6616b3062210Smrg for cmd in $cmds; do 6617b3062210Smrg IFS="$save_ifs" 6618b3062210Smrg eval cmd=\"$cmd\" 6619b3062210Smrg $show "$cmd" 6620b3062210Smrg $run eval "$cmd" 6621b3062210Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6622b3062210Smrg exit_status=1 6623b3062210Smrg fi 6624b3062210Smrg done 6625b3062210Smrg IFS="$save_ifs" 662623a0898aSmrg fi 662723a0898aSmrg 662823a0898aSmrg if test -n "$old_library"; then 662923a0898aSmrg # Do each command in the old_postuninstall commands. 6630b3062210Smrg cmds=$old_postuninstall_cmds 6631b3062210Smrg save_ifs="$IFS"; IFS='~' 6632b3062210Smrg for cmd in $cmds; do 6633b3062210Smrg IFS="$save_ifs" 6634b3062210Smrg eval cmd=\"$cmd\" 6635b3062210Smrg $show "$cmd" 6636b3062210Smrg $run eval "$cmd" 6637b3062210Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6638b3062210Smrg exit_status=1 6639b3062210Smrg fi 6640b3062210Smrg done 6641b3062210Smrg IFS="$save_ifs" 664223a0898aSmrg fi 664323a0898aSmrg # FIXME: should reinstall the best remaining shared library. 664423a0898aSmrg ;; 664523a0898aSmrg esac 664623a0898aSmrg fi 664723a0898aSmrg ;; 664823a0898aSmrg 664923a0898aSmrg *.lo) 665023a0898aSmrg # Possibly a libtool object, so verify it. 6651b3062210Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 665223a0898aSmrg 665323a0898aSmrg # Read the .lo file 6654b3062210Smrg . $dir/$name 665523a0898aSmrg 665623a0898aSmrg # Add PIC object to the list of files to remove. 6657b3062210Smrg if test -n "$pic_object" \ 6658b3062210Smrg && test "$pic_object" != none; then 665923a0898aSmrg rmfiles="$rmfiles $dir/$pic_object" 666023a0898aSmrg fi 666123a0898aSmrg 666223a0898aSmrg # Add non-PIC object to the list of files to remove. 6663b3062210Smrg if test -n "$non_pic_object" \ 6664b3062210Smrg && test "$non_pic_object" != none; then 666523a0898aSmrg rmfiles="$rmfiles $dir/$non_pic_object" 666623a0898aSmrg fi 666723a0898aSmrg fi 666823a0898aSmrg ;; 666923a0898aSmrg 667023a0898aSmrg *) 667123a0898aSmrg if test "$mode" = clean ; then 667223a0898aSmrg noexename=$name 667323a0898aSmrg case $file in 667423a0898aSmrg *.exe) 6675b3062210Smrg file=`$echo $file|${SED} 's,.exe$,,'` 6676b3062210Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 667723a0898aSmrg # $file with .exe has already been added to rmfiles, 667823a0898aSmrg # add $file without .exe 667923a0898aSmrg rmfiles="$rmfiles $file" 668023a0898aSmrg ;; 668123a0898aSmrg esac 668223a0898aSmrg # Do a test to see if this is a libtool program. 6683b3062210Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6684b3062210Smrg relink_command= 6685b3062210Smrg . $dir/$noexename 668623a0898aSmrg 668723a0898aSmrg # note $name still contains .exe if it was in $file originally 668823a0898aSmrg # as does the version of $file that was added into $rmfiles 668923a0898aSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 669023a0898aSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 669123a0898aSmrg rmfiles="$rmfiles $objdir/lt-$name" 669223a0898aSmrg fi 669323a0898aSmrg if test "X$noexename" != "X$name" ; then 669423a0898aSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 669523a0898aSmrg fi 669623a0898aSmrg fi 669723a0898aSmrg fi 669823a0898aSmrg ;; 669923a0898aSmrg esac 6700b3062210Smrg $show "$rm $rmfiles" 6701b3062210Smrg $run $rm $rmfiles || exit_status=1 670223a0898aSmrg done 670323a0898aSmrg objdir="$origobjdir" 670423a0898aSmrg 670523a0898aSmrg # Try to remove the ${objdir}s in the directories where we deleted files 670623a0898aSmrg for dir in $rmdirs; do 670723a0898aSmrg if test -d "$dir"; then 6708b3062210Smrg $show "rmdir $dir" 6709b3062210Smrg $run rmdir $dir >/dev/null 2>&1 671023a0898aSmrg fi 671123a0898aSmrg done 671223a0898aSmrg 671323a0898aSmrg exit $exit_status 6714b3062210Smrg ;; 671523a0898aSmrg 6716b3062210Smrg "") 6717b3062210Smrg $echo "$modename: you must specify a MODE" 1>&2 6718b3062210Smrg $echo "$generic_help" 1>&2 6719b3062210Smrg exit $EXIT_FAILURE 6720b3062210Smrg ;; 6721b3062210Smrg esac 67227f7f5e4eSmrg 6723b3062210Smrg if test -z "$exec_cmd"; then 6724b3062210Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6725b3062210Smrg $echo "$generic_help" 1>&2 6726b3062210Smrg exit $EXIT_FAILURE 6727b3062210Smrg fi 6728b3062210Smrgfi # test -z "$show_help" 672923a0898aSmrg 673023a0898aSmrgif test -n "$exec_cmd"; then 6731b3062210Smrg eval exec $exec_cmd 673223a0898aSmrg exit $EXIT_FAILURE 673323a0898aSmrgfi 673423a0898aSmrg 6735b3062210Smrg# We need to display help for each of the modes. 6736b3062210Smrgcase $mode in 6737b3062210Smrg"") $echo \ 6738b3062210Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 6739b3062210Smrg 6740b3062210SmrgProvide generalized library-building support services. 6741b3062210Smrg 6742b3062210Smrg --config show all configuration variables 6743b3062210Smrg --debug enable verbose shell tracing 6744b3062210Smrg-n, --dry-run display commands without modifying any files 6745b3062210Smrg --features display basic configuration information and exit 6746b3062210Smrg --finish same as \`--mode=finish' 6747b3062210Smrg --help display this help message and exit 6748b3062210Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6749b3062210Smrg --quiet same as \`--silent' 6750b3062210Smrg --silent don't print informational messages 6751b3062210Smrg --tag=TAG use configuration variables from tag TAG 6752b3062210Smrg --version print version information 6753b3062210Smrg 6754b3062210SmrgMODE must be one of the following: 6755b3062210Smrg 6756b3062210Smrg clean remove files from the build directory 6757b3062210Smrg compile compile a source file into a libtool object 6758b3062210Smrg execute automatically set library path, then run a program 6759b3062210Smrg finish complete the installation of libtool libraries 6760b3062210Smrg install install libraries or executables 6761b3062210Smrg link create a library or an executable 6762b3062210Smrg uninstall remove libraries from an installed directory 6763b3062210Smrg 6764b3062210SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6765b3062210Smrga more detailed description of MODE. 6766b3062210Smrg 6767b3062210SmrgReport bugs to <bug-libtool@gnu.org>." 6768b3062210Smrg exit $EXIT_SUCCESS 6769b3062210Smrg ;; 6770b3062210Smrg 6771b3062210Smrgclean) 6772b3062210Smrg $echo \ 6773b3062210Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6774b3062210Smrg 6775b3062210SmrgRemove files from the build directory. 6776b3062210Smrg 6777b3062210SmrgRM is the name of the program to use to delete files associated with each FILE 6778b3062210Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6779b3062210Smrgto RM. 6780b3062210Smrg 6781b3062210SmrgIf FILE is a libtool library, object or program, all the files associated 6782b3062210Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6783b3062210Smrg ;; 6784b3062210Smrg 6785b3062210Smrgcompile) 6786b3062210Smrg $echo \ 6787b3062210Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6788b3062210Smrg 6789b3062210SmrgCompile a source file into a libtool library object. 6790b3062210Smrg 6791b3062210SmrgThis mode accepts the following additional options: 6792b3062210Smrg 6793b3062210Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6794b3062210Smrg -prefer-pic try to building PIC objects only 6795b3062210Smrg -prefer-non-pic try to building non-PIC objects only 6796b3062210Smrg -static always build a \`.o' file suitable for static linking 6797b3062210Smrg 6798b3062210SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6799b3062210Smrgfrom the given SOURCEFILE. 6800b3062210Smrg 6801b3062210SmrgThe output file name is determined by removing the directory component from 6802b3062210SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6803b3062210Smrglibrary object suffix, \`.lo'." 6804b3062210Smrg ;; 6805b3062210Smrg 6806b3062210Smrgexecute) 6807b3062210Smrg $echo \ 6808b3062210Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6809b3062210Smrg 6810b3062210SmrgAutomatically set library path, then run a program. 6811b3062210Smrg 6812b3062210SmrgThis mode accepts the following additional options: 6813b3062210Smrg 6814b3062210Smrg -dlopen FILE add the directory containing FILE to the library path 6815b3062210Smrg 6816b3062210SmrgThis mode sets the library path environment variable according to \`-dlopen' 6817b3062210Smrgflags. 6818b3062210Smrg 6819b3062210SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6820b3062210Smrginto their corresponding uninstalled binary, and any of their required library 6821b3062210Smrgdirectories are added to the library path. 6822b3062210Smrg 6823b3062210SmrgThen, COMMAND is executed, with ARGS as arguments." 6824b3062210Smrg ;; 6825b3062210Smrg 6826b3062210Smrgfinish) 6827b3062210Smrg $echo \ 6828b3062210Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6829b3062210Smrg 6830b3062210SmrgComplete the installation of libtool libraries. 6831b3062210Smrg 6832b3062210SmrgEach LIBDIR is a directory that contains libtool libraries. 6833b3062210Smrg 6834b3062210SmrgThe commands that this mode executes may require superuser privileges. Use 6835b3062210Smrgthe \`--dry-run' option if you just want to see what would be executed." 6836b3062210Smrg ;; 6837b3062210Smrg 6838b3062210Smrginstall) 6839b3062210Smrg $echo \ 6840b3062210Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6841b3062210Smrg 6842b3062210SmrgInstall executables or libraries. 6843b3062210Smrg 6844b3062210SmrgINSTALL-COMMAND is the installation command. The first component should be 6845b3062210Smrgeither the \`install' or \`cp' program. 6846b3062210Smrg 6847b3062210SmrgThe rest of the components are interpreted as arguments to that command (only 6848b3062210SmrgBSD-compatible install options are recognized)." 6849b3062210Smrg ;; 6850b3062210Smrg 6851b3062210Smrglink) 6852b3062210Smrg $echo \ 6853b3062210Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6854b3062210Smrg 6855b3062210SmrgLink object files or libraries together to form another library, or to 6856b3062210Smrgcreate an executable program. 685723a0898aSmrg 6858b3062210SmrgLINK-COMMAND is a command using the C compiler that you would use to create 6859b3062210Smrga program from several object files. 6860b3062210Smrg 6861b3062210SmrgThe following components of LINK-COMMAND are treated specially: 6862b3062210Smrg 6863b3062210Smrg -all-static do not do any dynamic linking at all 6864b3062210Smrg -avoid-version do not add a version suffix if possible 6865b3062210Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6866b3062210Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6867b3062210Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6868b3062210Smrg -export-symbols SYMFILE 6869b3062210Smrg try to export only the symbols listed in SYMFILE 6870b3062210Smrg -export-symbols-regex REGEX 6871b3062210Smrg try to export only the symbols matching REGEX 6872b3062210Smrg -LLIBDIR search LIBDIR for required installed libraries 6873b3062210Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 6874b3062210Smrg -module build a library that can dlopened 6875b3062210Smrg -no-fast-install disable the fast-install mode 6876b3062210Smrg -no-install link a not-installable executable 6877b3062210Smrg -no-undefined declare that a library does not refer to external symbols 6878b3062210Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6879b3062210Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 6880b3062210Smrg -precious-files-regex REGEX 6881b3062210Smrg don't remove output files matching REGEX 6882b3062210Smrg -release RELEASE specify package release information 6883b3062210Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6884b3062210Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6885b3062210Smrg -static do not do any dynamic linking of uninstalled libtool libraries 6886b3062210Smrg -static-libtool-libs 6887b3062210Smrg do not do any dynamic linking of libtool libraries 6888b3062210Smrg -version-info CURRENT[:REVISION[:AGE]] 6889b3062210Smrg specify library version info [each variable defaults to 0] 6890b3062210Smrg 6891b3062210SmrgAll other options (arguments beginning with \`-') are ignored. 6892b3062210Smrg 6893b3062210SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6894b3062210Smrgtreated as uninstalled libtool libraries, other files are standard or library 6895b3062210Smrgobject files. 6896b3062210Smrg 6897b3062210SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6898b3062210Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6899b3062210Smrgrequired, except when creating a convenience library. 6900b3062210Smrg 6901b3062210SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6902b3062210Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6903b3062210Smrg 6904b3062210SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6905b3062210Smrgis created, otherwise an executable program is created." 6906b3062210Smrg ;; 6907b3062210Smrg 6908b3062210Smrguninstall) 6909b3062210Smrg $echo \ 6910b3062210Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6911b3062210Smrg 6912b3062210SmrgRemove libraries from an installation directory. 6913b3062210Smrg 6914b3062210SmrgRM is the name of the program to use to delete files associated with each FILE 6915b3062210Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6916b3062210Smrgto RM. 6917b3062210Smrg 6918b3062210SmrgIf FILE is a libtool library, all the files associated with it are deleted. 6919b3062210SmrgOtherwise, only FILE itself is deleted using RM." 6920b3062210Smrg ;; 6921b3062210Smrg 6922b3062210Smrg*) 6923b3062210Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6924b3062210Smrg $echo "$help" 1>&2 6925b3062210Smrg exit $EXIT_FAILURE 6926b3062210Smrg ;; 6927b3062210Smrgesac 6928b3062210Smrg 6929b3062210Smrg$echo 6930b3062210Smrg$echo "Try \`$modename --help' for more information about other modes." 6931b3062210Smrg 6932b3062210Smrgexit $? 693323a0898aSmrg 693423a0898aSmrg# The TAGs below are defined such that we never get into a situation 693523a0898aSmrg# in which we disable both kinds of libraries. Given conflicting 693623a0898aSmrg# choices, we go for a static library, that is the most portable, 693723a0898aSmrg# since we can't tell whether shared libraries were disabled because 693823a0898aSmrg# the user asked for that or because the platform doesn't support 693923a0898aSmrg# them. This is particularly important on AIX, because we don't 694023a0898aSmrg# support having both static and shared libraries enabled at the same 694123a0898aSmrg# time on that platform, so we default to a shared-only configuration. 694223a0898aSmrg# If a disable-shared tag is given, we'll fallback to a static-only 694323a0898aSmrg# configuration. But we'll never go from static-only to shared-only. 694423a0898aSmrg 694523a0898aSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6946b3062210Smrgdisable_libs=shared 694723a0898aSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 694823a0898aSmrg 694923a0898aSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6950b3062210Smrgdisable_libs=static 695123a0898aSmrg# ### END LIBTOOL TAG CONFIG: disable-static 695223a0898aSmrg 695323a0898aSmrg# Local Variables: 695423a0898aSmrg# mode:shell-script 695523a0898aSmrg# sh-indentation:2 695623a0898aSmrg# End: 6957