ltmain.sh revision 7965d9ac
150806d53Smrg# ltmain.sh - Provide generalized library-building support services. 250806d53Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 350806d53Smrg# 47965d9acSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 57965d9acSmrg# 2007, 2008 Free Software Foundation, Inc. 650806d53Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 750806d53Smrg# 850806d53Smrg# This program is free software; you can redistribute it and/or modify 950806d53Smrg# it under the terms of the GNU General Public License as published by 1050806d53Smrg# the Free Software Foundation; either version 2 of the License, or 1150806d53Smrg# (at your option) any later version. 1250806d53Smrg# 1350806d53Smrg# This program is distributed in the hope that it will be useful, but 1450806d53Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 1550806d53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1650806d53Smrg# General Public License for more details. 1750806d53Smrg# 1850806d53Smrg# You should have received a copy of the GNU General Public License 1950806d53Smrg# along with this program; if not, write to the Free Software 2050806d53Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 2150806d53Smrg# 2250806d53Smrg# As a special exception to the GNU General Public License, if you 2350806d53Smrg# distribute this file as part of a program that contains a 2450806d53Smrg# configuration script generated by Autoconf, you may include it under 2550806d53Smrg# the same distribution terms that you use for the rest of that program. 2650806d53Smrg 2750806d53Smrgbasename="s,^.*/,,g" 2850806d53Smrg 2950806d53Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 3050806d53Smrg# is ksh but when the shell is invoked as "sh" and the current value of 3150806d53Smrg# the _XPG environment variable is not equal to 1 (one), the special 3250806d53Smrg# positional parameter $0, within a function call, is the name of the 3350806d53Smrg# function. 3450806d53Smrgprogpath="$0" 3550806d53Smrg 3650806d53Smrg# The name of this program: 3750806d53Smrgprogname=`echo "$progpath" | $SED $basename` 3850806d53Smrgmodename="$progname" 3950806d53Smrg 4050806d53Smrg# Global variables: 4150806d53SmrgEXIT_SUCCESS=0 4250806d53SmrgEXIT_FAILURE=1 4350806d53Smrg 4450806d53SmrgPROGRAM=ltmain.sh 4550806d53SmrgPACKAGE=libtool 467965d9acSmrgVERSION="1.5.26 Debian 1.5.26-4" 477965d9acSmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" 4850806d53Smrg 4950806d53Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5050806d53Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 5150806d53Smrg emulate sh 5250806d53Smrg NULLCMD=: 5350806d53Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 5450806d53Smrg # is contrary to our usage. Disable this feature. 5550806d53Smrg alias -g '${1+"$@"}'='"$@"' 5650806d53Smrg setopt NO_GLOB_SUBST 5750806d53Smrgelse 5850806d53Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 5950806d53Smrgfi 607965d9acSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 617965d9acSmrgDUALCASE=1; export DUALCASE # for MKS sh 6250806d53Smrg 6350806d53Smrg# Check that we have a working $echo. 6450806d53Smrgif test "X$1" = X--no-reexec; then 6550806d53Smrg # Discard the --no-reexec flag, and continue. 6650806d53Smrg shift 6750806d53Smrgelif test "X$1" = X--fallback-echo; then 6850806d53Smrg # Avoid inline document here, it may be left over 6950806d53Smrg : 7050806d53Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 7150806d53Smrg # Yippee, $echo works! 7250806d53Smrg : 7350806d53Smrgelse 7450806d53Smrg # Restart under the correct shell, and then maybe $echo will work. 7550806d53Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 7650806d53Smrgfi 7750806d53Smrg 7850806d53Smrgif test "X$1" = X--fallback-echo; then 7950806d53Smrg # used as fallback echo 8050806d53Smrg shift 8150806d53Smrg cat <<EOF 8250806d53Smrg$* 8350806d53SmrgEOF 8450806d53Smrg exit $EXIT_SUCCESS 8550806d53Smrgfi 8650806d53Smrg 8750806d53Smrgdefault_mode= 8850806d53Smrghelp="Try \`$progname --help' for more information." 8950806d53Smrgmagic="%%%MAGIC variable%%%" 9050806d53Smrgmkdir="mkdir" 9150806d53Smrgmv="mv -f" 9250806d53Smrgrm="rm -f" 9350806d53Smrg 9450806d53Smrg# Sed substitution that helps us do robust quoting. It backslashifies 9550806d53Smrg# metacharacters that are still active within double-quoted strings. 9650806d53SmrgXsed="${SED}"' -e 1s/^X//' 9750806d53Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 9850806d53Smrg# test EBCDIC or ASCII 9950806d53Smrgcase `echo X|tr X '\101'` in 10050806d53Smrg A) # ASCII based system 10150806d53Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 10250806d53Smrg SP2NL='tr \040 \012' 10350806d53Smrg NL2SP='tr \015\012 \040\040' 10450806d53Smrg ;; 10550806d53Smrg *) # EBCDIC based system 10650806d53Smrg SP2NL='tr \100 \n' 10750806d53Smrg NL2SP='tr \r\n \100\100' 10850806d53Smrg ;; 10950806d53Smrgesac 11050806d53Smrg 11150806d53Smrg# NLS nuisances. 11250806d53Smrg# Only set LANG and LC_ALL to C if already set. 11350806d53Smrg# These must not be set unconditionally because not all systems understand 11450806d53Smrg# e.g. LANG=C (notably SCO). 11550806d53Smrg# We save the old values to restore during execute mode. 1167965d9acSmrglt_env= 1177965d9acSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11850806d53Smrgdo 11950806d53Smrg eval "if test \"\${$lt_var+set}\" = set; then 1207965d9acSmrg save_$lt_var=\$$lt_var 1217965d9acSmrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 1227965d9acSmrg $lt_var=C 1237965d9acSmrg export $lt_var 1247965d9acSmrg fi" 12550806d53Smrgdone 12650806d53Smrg 1277965d9acSmrgif test -n "$lt_env"; then 1287965d9acSmrg lt_env="env $lt_env" 1297965d9acSmrgfi 1307965d9acSmrg 13150806d53Smrg# Make sure IFS has a sensible default 13250806d53Smrglt_nl=' 13350806d53Smrg' 13450806d53SmrgIFS=" $lt_nl" 13550806d53Smrg 13650806d53Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 13750806d53Smrg $echo "$modename: not configured to build any kind of library" 1>&2 13850806d53Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 13950806d53Smrg exit $EXIT_FAILURE 14050806d53Smrgfi 14150806d53Smrg 14250806d53Smrg# Global variables. 14350806d53Smrgmode=$default_mode 14450806d53Smrgnonopt= 14550806d53Smrgprev= 14650806d53Smrgprevopt= 14750806d53Smrgrun= 14850806d53Smrgshow="$echo" 14950806d53Smrgshow_help= 15050806d53Smrgexecute_dlfiles= 15150806d53Smrgduplicate_deps=no 15250806d53Smrgpreserve_args= 15350806d53Smrglo2o="s/\\.lo\$/.${objext}/" 15450806d53Smrgo2lo="s/\\.${objext}\$/.lo/" 15550806d53Smrgextracted_archives= 15650806d53Smrgextracted_serial=0 15750806d53Smrg 15850806d53Smrg##################################### 15950806d53Smrg# Shell function definitions: 16050806d53Smrg# This seems to be the best place for them 16150806d53Smrg 16250806d53Smrg# func_mktempdir [string] 16350806d53Smrg# Make a temporary directory that won't clash with other running 16450806d53Smrg# libtool processes, and avoids race conditions if possible. If 16550806d53Smrg# given, STRING is the basename for that directory. 16650806d53Smrgfunc_mktempdir () 16750806d53Smrg{ 16850806d53Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 16950806d53Smrg 17050806d53Smrg if test "$run" = ":"; then 17150806d53Smrg # Return a directory name, but don't create it in dry-run mode 17250806d53Smrg my_tmpdir="${my_template}-$$" 17350806d53Smrg else 17450806d53Smrg 17550806d53Smrg # If mktemp works, use that first and foremost 17650806d53Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 17750806d53Smrg 17850806d53Smrg if test ! -d "$my_tmpdir"; then 17950806d53Smrg # Failing that, at least try and use $RANDOM to avoid a race 18050806d53Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 18150806d53Smrg 18250806d53Smrg save_mktempdir_umask=`umask` 18350806d53Smrg umask 0077 18450806d53Smrg $mkdir "$my_tmpdir" 18550806d53Smrg umask $save_mktempdir_umask 18650806d53Smrg fi 18750806d53Smrg 18850806d53Smrg # If we're not in dry-run mode, bomb out on failure 18950806d53Smrg test -d "$my_tmpdir" || { 19050806d53Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 19150806d53Smrg exit $EXIT_FAILURE 19250806d53Smrg } 19350806d53Smrg fi 19450806d53Smrg 19550806d53Smrg $echo "X$my_tmpdir" | $Xsed 19650806d53Smrg} 19750806d53Smrg 19850806d53Smrg 19950806d53Smrg# func_win32_libid arg 20050806d53Smrg# return the library type of file 'arg' 20150806d53Smrg# 20250806d53Smrg# Need a lot of goo to handle *both* DLLs and import libs 20350806d53Smrg# Has to be a shell function in order to 'eat' the argument 20450806d53Smrg# that is supplied when $file_magic_command is called. 20550806d53Smrgfunc_win32_libid () 20650806d53Smrg{ 20750806d53Smrg win32_libid_type="unknown" 20850806d53Smrg win32_fileres=`file -L $1 2>/dev/null` 20950806d53Smrg case $win32_fileres in 21050806d53Smrg *ar\ archive\ import\ library*) # definitely import 21150806d53Smrg win32_libid_type="x86 archive import" 21250806d53Smrg ;; 21350806d53Smrg *ar\ archive*) # could be an import, or static 21450806d53Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 21550806d53Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 21650806d53Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 2177965d9acSmrg $SED -n -e '1,100{ 2187965d9acSmrg / I /{ 2197965d9acSmrg s,.*,import, 2207965d9acSmrg p 2217965d9acSmrg q 2227965d9acSmrg } 2237965d9acSmrg }'` 22450806d53Smrg case $win32_nmres in 22550806d53Smrg import*) win32_libid_type="x86 archive import";; 22650806d53Smrg *) win32_libid_type="x86 archive static";; 22750806d53Smrg esac 22850806d53Smrg fi 22950806d53Smrg ;; 23050806d53Smrg *DLL*) 23150806d53Smrg win32_libid_type="x86 DLL" 23250806d53Smrg ;; 23350806d53Smrg *executable*) # but shell scripts are "executable" too... 23450806d53Smrg case $win32_fileres in 23550806d53Smrg *MS\ Windows\ PE\ Intel*) 23650806d53Smrg win32_libid_type="x86 DLL" 23750806d53Smrg ;; 23850806d53Smrg esac 23950806d53Smrg ;; 24050806d53Smrg esac 24150806d53Smrg $echo $win32_libid_type 24250806d53Smrg} 24350806d53Smrg 24450806d53Smrg 24550806d53Smrg# func_infer_tag arg 24650806d53Smrg# Infer tagged configuration to use if any are available and 24750806d53Smrg# if one wasn't chosen via the "--tag" command line option. 24850806d53Smrg# Only attempt this if the compiler in the base compile 24950806d53Smrg# command doesn't match the default compiler. 25050806d53Smrg# arg is usually of the form 'gcc ...' 25150806d53Smrgfunc_infer_tag () 25250806d53Smrg{ 25350806d53Smrg if test -n "$available_tags" && test -z "$tagname"; then 25450806d53Smrg CC_quoted= 25550806d53Smrg for arg in $CC; do 25650806d53Smrg case $arg in 25750806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 25850806d53Smrg arg="\"$arg\"" 25950806d53Smrg ;; 26050806d53Smrg esac 26150806d53Smrg CC_quoted="$CC_quoted $arg" 26250806d53Smrg done 26350806d53Smrg case $@ in 26450806d53Smrg # Blanks in the command may have been stripped by the calling shell, 26550806d53Smrg # but not from the CC environment variable when configure was run. 26650806d53Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 26750806d53Smrg # Blanks at the start of $base_compile will cause this to fail 26850806d53Smrg # if we don't check for them as well. 26950806d53Smrg *) 27050806d53Smrg for z in $available_tags; do 27150806d53Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 27250806d53Smrg # Evaluate the configuration. 27350806d53Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 27450806d53Smrg CC_quoted= 27550806d53Smrg for arg in $CC; do 27650806d53Smrg # Double-quote args containing other shell metacharacters. 27750806d53Smrg case $arg in 27850806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 27950806d53Smrg arg="\"$arg\"" 28050806d53Smrg ;; 28150806d53Smrg esac 28250806d53Smrg CC_quoted="$CC_quoted $arg" 28350806d53Smrg done 28450806d53Smrg case "$@ " in 28550806d53Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 28650806d53Smrg # The compiler in the base compile command matches 28750806d53Smrg # the one in the tagged configuration. 28850806d53Smrg # Assume this is the tagged configuration we want. 28950806d53Smrg tagname=$z 29050806d53Smrg break 29150806d53Smrg ;; 29250806d53Smrg esac 29350806d53Smrg fi 29450806d53Smrg done 29550806d53Smrg # If $tagname still isn't set, then no tagged configuration 29650806d53Smrg # was found and let the user know that the "--tag" command 29750806d53Smrg # line option must be used. 29850806d53Smrg if test -z "$tagname"; then 29950806d53Smrg $echo "$modename: unable to infer tagged configuration" 30050806d53Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 30150806d53Smrg exit $EXIT_FAILURE 30250806d53Smrg# else 30350806d53Smrg# $echo "$modename: using $tagname tagged configuration" 30450806d53Smrg fi 30550806d53Smrg ;; 30650806d53Smrg esac 30750806d53Smrg fi 30850806d53Smrg} 30950806d53Smrg 31050806d53Smrg 31150806d53Smrg# func_extract_an_archive dir oldlib 31250806d53Smrgfunc_extract_an_archive () 31350806d53Smrg{ 31450806d53Smrg f_ex_an_ar_dir="$1"; shift 31550806d53Smrg f_ex_an_ar_oldlib="$1" 31650806d53Smrg 31750806d53Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 31850806d53Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 31950806d53Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 32050806d53Smrg : 32150806d53Smrg else 32250806d53Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 32350806d53Smrg exit $EXIT_FAILURE 32450806d53Smrg fi 32550806d53Smrg} 32650806d53Smrg 32750806d53Smrg# func_extract_archives gentop oldlib ... 32850806d53Smrgfunc_extract_archives () 32950806d53Smrg{ 33050806d53Smrg my_gentop="$1"; shift 33150806d53Smrg my_oldlibs=${1+"$@"} 33250806d53Smrg my_oldobjs="" 33350806d53Smrg my_xlib="" 33450806d53Smrg my_xabs="" 33550806d53Smrg my_xdir="" 33650806d53Smrg my_status="" 33750806d53Smrg 33850806d53Smrg $show "${rm}r $my_gentop" 33950806d53Smrg $run ${rm}r "$my_gentop" 34050806d53Smrg $show "$mkdir $my_gentop" 34150806d53Smrg $run $mkdir "$my_gentop" 34250806d53Smrg my_status=$? 34350806d53Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 34450806d53Smrg exit $my_status 34550806d53Smrg fi 34650806d53Smrg 34750806d53Smrg for my_xlib in $my_oldlibs; do 34850806d53Smrg # Extract the objects. 34950806d53Smrg case $my_xlib in 35050806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 35150806d53Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 35250806d53Smrg esac 35350806d53Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 35450806d53Smrg my_xlib_u=$my_xlib 35550806d53Smrg while :; do 35650806d53Smrg case " $extracted_archives " in 3577965d9acSmrg *" $my_xlib_u "*) 3587965d9acSmrg extracted_serial=`expr $extracted_serial + 1` 3597965d9acSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 3607965d9acSmrg *) break ;; 3617965d9acSmrg esac 36250806d53Smrg done 36350806d53Smrg extracted_archives="$extracted_archives $my_xlib_u" 36450806d53Smrg my_xdir="$my_gentop/$my_xlib_u" 36550806d53Smrg 36650806d53Smrg $show "${rm}r $my_xdir" 36750806d53Smrg $run ${rm}r "$my_xdir" 36850806d53Smrg $show "$mkdir $my_xdir" 36950806d53Smrg $run $mkdir "$my_xdir" 37050806d53Smrg exit_status=$? 37150806d53Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 37250806d53Smrg exit $exit_status 37350806d53Smrg fi 37450806d53Smrg case $host in 37550806d53Smrg *-darwin*) 37650806d53Smrg $show "Extracting $my_xabs" 37750806d53Smrg # Do not bother doing anything if just a dry run 37850806d53Smrg if test -z "$run"; then 37950806d53Smrg darwin_orig_dir=`pwd` 38050806d53Smrg cd $my_xdir || exit $? 38150806d53Smrg darwin_archive=$my_xabs 38250806d53Smrg darwin_curdir=`pwd` 38350806d53Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 38450806d53Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 38550806d53Smrg if test -n "$darwin_arches"; then 38650806d53Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 38750806d53Smrg darwin_arch= 38850806d53Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 38950806d53Smrg for darwin_arch in $darwin_arches ; do 39050806d53Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 39150806d53Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 39250806d53Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 39350806d53Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 39450806d53Smrg cd "$darwin_curdir" 39550806d53Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 39650806d53Smrg done # $darwin_arches 39750806d53Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 39850806d53Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 39950806d53Smrg darwin_file= 40050806d53Smrg darwin_files= 40150806d53Smrg for darwin_file in $darwin_filelist; do 40250806d53Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 40350806d53Smrg lipo -create -output "$darwin_file" $darwin_files 40450806d53Smrg done # $darwin_filelist 40550806d53Smrg ${rm}r unfat-$$ 40650806d53Smrg cd "$darwin_orig_dir" 40750806d53Smrg else 40850806d53Smrg cd "$darwin_orig_dir" 40950806d53Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 41050806d53Smrg fi # $darwin_arches 41150806d53Smrg fi # $run 41250806d53Smrg ;; 41350806d53Smrg *) 41450806d53Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 41550806d53Smrg ;; 41650806d53Smrg esac 41750806d53Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 41850806d53Smrg done 41950806d53Smrg func_extract_archives_result="$my_oldobjs" 42050806d53Smrg} 42150806d53Smrg# End of Shell function definitions 42250806d53Smrg##################################### 42350806d53Smrg 42450806d53Smrg# Darwin sucks 42550806d53Smrgeval std_shrext=\"$shrext_cmds\" 42650806d53Smrg 42750806d53Smrgdisable_libs=no 42850806d53Smrg 42950806d53Smrg# Parse our command line options once, thoroughly. 43050806d53Smrgwhile test "$#" -gt 0 43150806d53Smrgdo 43250806d53Smrg arg="$1" 43350806d53Smrg shift 43450806d53Smrg 43550806d53Smrg case $arg in 43650806d53Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 43750806d53Smrg *) optarg= ;; 43850806d53Smrg esac 43950806d53Smrg 44050806d53Smrg # If the previous option needs an argument, assign it. 44150806d53Smrg if test -n "$prev"; then 44250806d53Smrg case $prev in 44350806d53Smrg execute_dlfiles) 44450806d53Smrg execute_dlfiles="$execute_dlfiles $arg" 44550806d53Smrg ;; 44650806d53Smrg tag) 44750806d53Smrg tagname="$arg" 44850806d53Smrg preserve_args="${preserve_args}=$arg" 44950806d53Smrg 45050806d53Smrg # Check whether tagname contains only valid characters 45150806d53Smrg case $tagname in 45250806d53Smrg *[!-_A-Za-z0-9,/]*) 45350806d53Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 45450806d53Smrg exit $EXIT_FAILURE 45550806d53Smrg ;; 45650806d53Smrg esac 45750806d53Smrg 45850806d53Smrg case $tagname in 45950806d53Smrg CC) 46050806d53Smrg # Don't test for the "default" C tag, as we know, it's there, but 46150806d53Smrg # not specially marked. 46250806d53Smrg ;; 46350806d53Smrg *) 46450806d53Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 46550806d53Smrg taglist="$taglist $tagname" 46650806d53Smrg # Evaluate the configuration. 46750806d53Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 46850806d53Smrg else 46950806d53Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 47050806d53Smrg fi 47150806d53Smrg ;; 47250806d53Smrg esac 47350806d53Smrg ;; 47450806d53Smrg *) 47550806d53Smrg eval "$prev=\$arg" 47650806d53Smrg ;; 47750806d53Smrg esac 47850806d53Smrg 47950806d53Smrg prev= 48050806d53Smrg prevopt= 48150806d53Smrg continue 48250806d53Smrg fi 48350806d53Smrg 48450806d53Smrg # Have we seen a non-optional argument yet? 48550806d53Smrg case $arg in 48650806d53Smrg --help) 48750806d53Smrg show_help=yes 48850806d53Smrg ;; 48950806d53Smrg 49050806d53Smrg --version) 4917965d9acSmrg echo "\ 4927965d9acSmrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 4937965d9acSmrg 4947965d9acSmrgCopyright (C) 2008 Free Software Foundation, Inc. 4957965d9acSmrgThis is free software; see the source for copying conditions. There is NO 4967965d9acSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 49750806d53Smrg exit $? 49850806d53Smrg ;; 49950806d53Smrg 50050806d53Smrg --config) 50150806d53Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 50250806d53Smrg # Now print the configurations for the tags. 50350806d53Smrg for tagname in $taglist; do 50450806d53Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 50550806d53Smrg done 50650806d53Smrg exit $? 50750806d53Smrg ;; 50850806d53Smrg 50950806d53Smrg --debug) 51050806d53Smrg $echo "$progname: enabling shell trace mode" 51150806d53Smrg set -x 51250806d53Smrg preserve_args="$preserve_args $arg" 51350806d53Smrg ;; 51450806d53Smrg 51550806d53Smrg --dry-run | -n) 51650806d53Smrg run=: 51750806d53Smrg ;; 51850806d53Smrg 51950806d53Smrg --features) 52050806d53Smrg $echo "host: $host" 52150806d53Smrg if test "$build_libtool_libs" = yes; then 52250806d53Smrg $echo "enable shared libraries" 52350806d53Smrg else 52450806d53Smrg $echo "disable shared libraries" 52550806d53Smrg fi 52650806d53Smrg if test "$build_old_libs" = yes; then 52750806d53Smrg $echo "enable static libraries" 52850806d53Smrg else 52950806d53Smrg $echo "disable static libraries" 53050806d53Smrg fi 53150806d53Smrg exit $? 53250806d53Smrg ;; 53350806d53Smrg 53450806d53Smrg --finish) mode="finish" ;; 53550806d53Smrg 53650806d53Smrg --mode) prevopt="--mode" prev=mode ;; 53750806d53Smrg --mode=*) mode="$optarg" ;; 53850806d53Smrg 53950806d53Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 54050806d53Smrg 54150806d53Smrg --quiet | --silent) 54250806d53Smrg show=: 54350806d53Smrg preserve_args="$preserve_args $arg" 54450806d53Smrg ;; 54550806d53Smrg 54650806d53Smrg --tag) 54750806d53Smrg prevopt="--tag" 54850806d53Smrg prev=tag 54950806d53Smrg preserve_args="$preserve_args --tag" 55050806d53Smrg ;; 55150806d53Smrg --tag=*) 55250806d53Smrg set tag "$optarg" ${1+"$@"} 55350806d53Smrg shift 55450806d53Smrg prev=tag 55550806d53Smrg preserve_args="$preserve_args --tag" 55650806d53Smrg ;; 55750806d53Smrg 55850806d53Smrg -dlopen) 55950806d53Smrg prevopt="-dlopen" 56050806d53Smrg prev=execute_dlfiles 56150806d53Smrg ;; 56250806d53Smrg 56350806d53Smrg -*) 56450806d53Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 56550806d53Smrg $echo "$help" 1>&2 56650806d53Smrg exit $EXIT_FAILURE 56750806d53Smrg ;; 56850806d53Smrg 56950806d53Smrg *) 57050806d53Smrg nonopt="$arg" 57150806d53Smrg break 57250806d53Smrg ;; 57350806d53Smrg esac 57450806d53Smrgdone 57550806d53Smrg 57650806d53Smrgif test -n "$prevopt"; then 57750806d53Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 57850806d53Smrg $echo "$help" 1>&2 57950806d53Smrg exit $EXIT_FAILURE 58050806d53Smrgfi 58150806d53Smrg 58250806d53Smrgcase $disable_libs in 58350806d53Smrgno) 58450806d53Smrg ;; 58550806d53Smrgshared) 58650806d53Smrg build_libtool_libs=no 58750806d53Smrg build_old_libs=yes 58850806d53Smrg ;; 58950806d53Smrgstatic) 59050806d53Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 59150806d53Smrg ;; 59250806d53Smrgesac 59350806d53Smrg 59450806d53Smrg# If this variable is set in any of the actions, the command in it 59550806d53Smrg# will be execed at the end. This prevents here-documents from being 59650806d53Smrg# left over by shells. 59750806d53Smrgexec_cmd= 59850806d53Smrg 59950806d53Smrgif test -z "$show_help"; then 60050806d53Smrg 60150806d53Smrg # Infer the operation mode. 60250806d53Smrg if test -z "$mode"; then 60350806d53Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 60450806d53Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 60550806d53Smrg case $nonopt in 60650806d53Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 60750806d53Smrg mode=link 60850806d53Smrg for arg 60950806d53Smrg do 61050806d53Smrg case $arg in 61150806d53Smrg -c) 61250806d53Smrg mode=compile 61350806d53Smrg break 61450806d53Smrg ;; 61550806d53Smrg esac 61650806d53Smrg done 61750806d53Smrg ;; 61850806d53Smrg *db | *dbx | *strace | *truss) 61950806d53Smrg mode=execute 62050806d53Smrg ;; 62150806d53Smrg *install*|cp|mv) 62250806d53Smrg mode=install 62350806d53Smrg ;; 62450806d53Smrg *rm) 62550806d53Smrg mode=uninstall 62650806d53Smrg ;; 62750806d53Smrg *) 62850806d53Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 62950806d53Smrg test -n "$execute_dlfiles" && mode=execute 63050806d53Smrg 63150806d53Smrg # Just use the default operation mode. 63250806d53Smrg if test -z "$mode"; then 63350806d53Smrg if test -n "$nonopt"; then 63450806d53Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 63550806d53Smrg else 63650806d53Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 63750806d53Smrg fi 63850806d53Smrg fi 63950806d53Smrg ;; 64050806d53Smrg esac 64150806d53Smrg fi 64250806d53Smrg 64350806d53Smrg # Only execute mode is allowed to have -dlopen flags. 64450806d53Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 64550806d53Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 64650806d53Smrg $echo "$help" 1>&2 64750806d53Smrg exit $EXIT_FAILURE 64850806d53Smrg fi 64950806d53Smrg 65050806d53Smrg # Change the help message to a mode-specific one. 65150806d53Smrg generic_help="$help" 65250806d53Smrg help="Try \`$modename --help --mode=$mode' for more information." 65350806d53Smrg 65450806d53Smrg # These modes are in order of execution frequency so that they run quickly. 65550806d53Smrg case $mode in 65650806d53Smrg # libtool compile mode 65750806d53Smrg compile) 65850806d53Smrg modename="$modename: compile" 65950806d53Smrg # Get the compilation command and the source file. 66050806d53Smrg base_compile= 66150806d53Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 66250806d53Smrg suppress_opt=yes 66350806d53Smrg suppress_output= 66450806d53Smrg arg_mode=normal 66550806d53Smrg libobj= 66650806d53Smrg later= 66750806d53Smrg 66850806d53Smrg for arg 66950806d53Smrg do 67050806d53Smrg case $arg_mode in 67150806d53Smrg arg ) 67250806d53Smrg # do not "continue". Instead, add this to base_compile 67350806d53Smrg lastarg="$arg" 67450806d53Smrg arg_mode=normal 67550806d53Smrg ;; 67650806d53Smrg 67750806d53Smrg target ) 67850806d53Smrg libobj="$arg" 67950806d53Smrg arg_mode=normal 68050806d53Smrg continue 68150806d53Smrg ;; 68250806d53Smrg 68350806d53Smrg normal ) 68450806d53Smrg # Accept any command-line options. 68550806d53Smrg case $arg in 68650806d53Smrg -o) 68750806d53Smrg if test -n "$libobj" ; then 68850806d53Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 68950806d53Smrg exit $EXIT_FAILURE 69050806d53Smrg fi 69150806d53Smrg arg_mode=target 69250806d53Smrg continue 69350806d53Smrg ;; 69450806d53Smrg 69550806d53Smrg -static | -prefer-pic | -prefer-non-pic) 69650806d53Smrg later="$later $arg" 69750806d53Smrg continue 69850806d53Smrg ;; 69950806d53Smrg 70050806d53Smrg -no-suppress) 70150806d53Smrg suppress_opt=no 70250806d53Smrg continue 70350806d53Smrg ;; 70450806d53Smrg 70550806d53Smrg -Xcompiler) 70650806d53Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 70750806d53Smrg continue # The current "srcfile" will either be retained or 70850806d53Smrg ;; # replaced later. I would guess that would be a bug. 70950806d53Smrg 71050806d53Smrg -Wc,*) 71150806d53Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 71250806d53Smrg lastarg= 71350806d53Smrg save_ifs="$IFS"; IFS=',' 71450806d53Smrg for arg in $args; do 71550806d53Smrg IFS="$save_ifs" 71650806d53Smrg 71750806d53Smrg # Double-quote args containing other shell metacharacters. 71850806d53Smrg # Many Bourne shells cannot handle close brackets correctly 71950806d53Smrg # in scan sets, so we specify it separately. 72050806d53Smrg case $arg in 72150806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 72250806d53Smrg arg="\"$arg\"" 72350806d53Smrg ;; 72450806d53Smrg esac 72550806d53Smrg lastarg="$lastarg $arg" 72650806d53Smrg done 72750806d53Smrg IFS="$save_ifs" 72850806d53Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 72950806d53Smrg 73050806d53Smrg # Add the arguments to base_compile. 73150806d53Smrg base_compile="$base_compile $lastarg" 73250806d53Smrg continue 73350806d53Smrg ;; 73450806d53Smrg 73550806d53Smrg * ) 73650806d53Smrg # Accept the current argument as the source file. 73750806d53Smrg # The previous "srcfile" becomes the current argument. 73850806d53Smrg # 73950806d53Smrg lastarg="$srcfile" 74050806d53Smrg srcfile="$arg" 74150806d53Smrg ;; 74250806d53Smrg esac # case $arg 74350806d53Smrg ;; 74450806d53Smrg esac # case $arg_mode 74550806d53Smrg 74650806d53Smrg # Aesthetically quote the previous argument. 74750806d53Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 74850806d53Smrg 74950806d53Smrg case $lastarg in 75050806d53Smrg # Double-quote args containing other shell metacharacters. 75150806d53Smrg # Many Bourne shells cannot handle close brackets correctly 75250806d53Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 75350806d53Smrg # in scan sets (worked around with variable expansion), 75450806d53Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 75550806d53Smrg # at all, so we specify them separately. 75650806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 75750806d53Smrg lastarg="\"$lastarg\"" 75850806d53Smrg ;; 75950806d53Smrg esac 76050806d53Smrg 76150806d53Smrg base_compile="$base_compile $lastarg" 76250806d53Smrg done # for arg 76350806d53Smrg 76450806d53Smrg case $arg_mode in 76550806d53Smrg arg) 76650806d53Smrg $echo "$modename: you must specify an argument for -Xcompile" 76750806d53Smrg exit $EXIT_FAILURE 76850806d53Smrg ;; 76950806d53Smrg target) 77050806d53Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 77150806d53Smrg exit $EXIT_FAILURE 77250806d53Smrg ;; 77350806d53Smrg *) 77450806d53Smrg # Get the name of the library object. 77550806d53Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 77650806d53Smrg ;; 77750806d53Smrg esac 77850806d53Smrg 77950806d53Smrg # Recognize several different file suffixes. 78050806d53Smrg # If the user specifies -o file.o, it is replaced with file.lo 78150806d53Smrg xform='[cCFSifmso]' 78250806d53Smrg case $libobj in 78350806d53Smrg *.ada) xform=ada ;; 78450806d53Smrg *.adb) xform=adb ;; 78550806d53Smrg *.ads) xform=ads ;; 78650806d53Smrg *.asm) xform=asm ;; 78750806d53Smrg *.c++) xform=c++ ;; 78850806d53Smrg *.cc) xform=cc ;; 78950806d53Smrg *.ii) xform=ii ;; 79050806d53Smrg *.class) xform=class ;; 79150806d53Smrg *.cpp) xform=cpp ;; 79250806d53Smrg *.cxx) xform=cxx ;; 7937965d9acSmrg *.[fF][09]?) xform=[fF][09]. ;; 79450806d53Smrg *.for) xform=for ;; 79550806d53Smrg *.java) xform=java ;; 79650806d53Smrg *.obj) xform=obj ;; 7977965d9acSmrg *.sx) xform=sx ;; 79850806d53Smrg esac 79950806d53Smrg 80050806d53Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 80150806d53Smrg 80250806d53Smrg case $libobj in 80350806d53Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 80450806d53Smrg *) 80550806d53Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 80650806d53Smrg exit $EXIT_FAILURE 80750806d53Smrg ;; 80850806d53Smrg esac 80950806d53Smrg 81050806d53Smrg func_infer_tag $base_compile 81150806d53Smrg 81250806d53Smrg for arg in $later; do 81350806d53Smrg case $arg in 81450806d53Smrg -static) 81550806d53Smrg build_old_libs=yes 81650806d53Smrg continue 81750806d53Smrg ;; 81850806d53Smrg 81950806d53Smrg -prefer-pic) 82050806d53Smrg pic_mode=yes 82150806d53Smrg continue 82250806d53Smrg ;; 82350806d53Smrg 82450806d53Smrg -prefer-non-pic) 82550806d53Smrg pic_mode=no 82650806d53Smrg continue 82750806d53Smrg ;; 82850806d53Smrg esac 82950806d53Smrg done 83050806d53Smrg 83150806d53Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 83250806d53Smrg case $qlibobj in 83350806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 83450806d53Smrg qlibobj="\"$qlibobj\"" ;; 83550806d53Smrg esac 83650806d53Smrg test "X$libobj" != "X$qlibobj" \ 83750806d53Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 83850806d53Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 83950806d53Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 84050806d53Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 84150806d53Smrg if test "X$xdir" = "X$obj"; then 84250806d53Smrg xdir= 84350806d53Smrg else 84450806d53Smrg xdir=$xdir/ 84550806d53Smrg fi 84650806d53Smrg lobj=${xdir}$objdir/$objname 84750806d53Smrg 84850806d53Smrg if test -z "$base_compile"; then 84950806d53Smrg $echo "$modename: you must specify a compilation command" 1>&2 85050806d53Smrg $echo "$help" 1>&2 85150806d53Smrg exit $EXIT_FAILURE 85250806d53Smrg fi 85350806d53Smrg 85450806d53Smrg # Delete any leftover library objects. 85550806d53Smrg if test "$build_old_libs" = yes; then 85650806d53Smrg removelist="$obj $lobj $libobj ${libobj}T" 85750806d53Smrg else 85850806d53Smrg removelist="$lobj $libobj ${libobj}T" 85950806d53Smrg fi 86050806d53Smrg 86150806d53Smrg $run $rm $removelist 86250806d53Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 86350806d53Smrg 86450806d53Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 86550806d53Smrg case $host_os in 86650806d53Smrg cygwin* | mingw* | pw32* | os2*) 86750806d53Smrg pic_mode=default 86850806d53Smrg ;; 86950806d53Smrg esac 87050806d53Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 87150806d53Smrg # non-PIC code in shared libraries is not supported 87250806d53Smrg pic_mode=default 87350806d53Smrg fi 87450806d53Smrg 87550806d53Smrg # Calculate the filename of the output object if compiler does 87650806d53Smrg # not support -o with -c 87750806d53Smrg if test "$compiler_c_o" = no; then 87850806d53Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 87950806d53Smrg lockfile="$output_obj.lock" 88050806d53Smrg removelist="$removelist $output_obj $lockfile" 88150806d53Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 88250806d53Smrg else 88350806d53Smrg output_obj= 88450806d53Smrg need_locks=no 88550806d53Smrg lockfile= 88650806d53Smrg fi 88750806d53Smrg 88850806d53Smrg # Lock this critical section if it is needed 88950806d53Smrg # We use this script file to make the link, it avoids creating a new file 89050806d53Smrg if test "$need_locks" = yes; then 89150806d53Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 89250806d53Smrg $show "Waiting for $lockfile to be removed" 89350806d53Smrg sleep 2 89450806d53Smrg done 89550806d53Smrg elif test "$need_locks" = warn; then 89650806d53Smrg if test -f "$lockfile"; then 89750806d53Smrg $echo "\ 89850806d53Smrg*** ERROR, $lockfile exists and contains: 89950806d53Smrg`cat $lockfile 2>/dev/null` 90050806d53Smrg 90150806d53SmrgThis indicates that another process is trying to use the same 90250806d53Smrgtemporary object file, and libtool could not work around it because 90350806d53Smrgyour compiler does not support \`-c' and \`-o' together. If you 90450806d53Smrgrepeat this compilation, it may succeed, by chance, but you had better 90550806d53Smrgavoid parallel builds (make -j) in this platform, or get a better 90650806d53Smrgcompiler." 90750806d53Smrg 90850806d53Smrg $run $rm $removelist 90950806d53Smrg exit $EXIT_FAILURE 91050806d53Smrg fi 91150806d53Smrg $echo "$srcfile" > "$lockfile" 91250806d53Smrg fi 91350806d53Smrg 91450806d53Smrg if test -n "$fix_srcfile_path"; then 91550806d53Smrg eval srcfile=\"$fix_srcfile_path\" 91650806d53Smrg fi 91750806d53Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 91850806d53Smrg case $qsrcfile in 91950806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 92050806d53Smrg qsrcfile="\"$qsrcfile\"" ;; 92150806d53Smrg esac 92250806d53Smrg 92350806d53Smrg $run $rm "$libobj" "${libobj}T" 92450806d53Smrg 92550806d53Smrg # Create a libtool object file (analogous to a ".la" file), 92650806d53Smrg # but don't create it if we're doing a dry run. 92750806d53Smrg test -z "$run" && cat > ${libobj}T <<EOF 92850806d53Smrg# $libobj - a libtool object file 92950806d53Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 93050806d53Smrg# 93150806d53Smrg# Please DO NOT delete this file! 93250806d53Smrg# It is necessary for linking the library. 93350806d53Smrg 93450806d53Smrg# Name of the PIC object. 93550806d53SmrgEOF 93650806d53Smrg 93750806d53Smrg # Only build a PIC object if we are building libtool libraries. 93850806d53Smrg if test "$build_libtool_libs" = yes; then 93950806d53Smrg # Without this assignment, base_compile gets emptied. 94050806d53Smrg fbsd_hideous_sh_bug=$base_compile 94150806d53Smrg 94250806d53Smrg if test "$pic_mode" != no; then 94350806d53Smrg command="$base_compile $qsrcfile $pic_flag" 94450806d53Smrg else 94550806d53Smrg # Don't build PIC code 94650806d53Smrg command="$base_compile $qsrcfile" 94750806d53Smrg fi 94850806d53Smrg 94950806d53Smrg if test ! -d "${xdir}$objdir"; then 95050806d53Smrg $show "$mkdir ${xdir}$objdir" 95150806d53Smrg $run $mkdir ${xdir}$objdir 95250806d53Smrg exit_status=$? 95350806d53Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 95450806d53Smrg exit $exit_status 95550806d53Smrg fi 95650806d53Smrg fi 95750806d53Smrg 95850806d53Smrg if test -z "$output_obj"; then 95950806d53Smrg # Place PIC objects in $objdir 96050806d53Smrg command="$command -o $lobj" 96150806d53Smrg fi 96250806d53Smrg 96350806d53Smrg $run $rm "$lobj" "$output_obj" 96450806d53Smrg 96550806d53Smrg $show "$command" 9667965d9acSmrg if $run eval $lt_env "$command"; then : 96750806d53Smrg else 96850806d53Smrg test -n "$output_obj" && $run $rm $removelist 96950806d53Smrg exit $EXIT_FAILURE 97050806d53Smrg fi 97150806d53Smrg 97250806d53Smrg if test "$need_locks" = warn && 97350806d53Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 97450806d53Smrg $echo "\ 97550806d53Smrg*** ERROR, $lockfile contains: 97650806d53Smrg`cat $lockfile 2>/dev/null` 97750806d53Smrg 97850806d53Smrgbut it should contain: 97950806d53Smrg$srcfile 98050806d53Smrg 98150806d53SmrgThis indicates that another process is trying to use the same 98250806d53Smrgtemporary object file, and libtool could not work around it because 98350806d53Smrgyour compiler does not support \`-c' and \`-o' together. If you 98450806d53Smrgrepeat this compilation, it may succeed, by chance, but you had better 98550806d53Smrgavoid parallel builds (make -j) in this platform, or get a better 98650806d53Smrgcompiler." 98750806d53Smrg 98850806d53Smrg $run $rm $removelist 98950806d53Smrg exit $EXIT_FAILURE 99050806d53Smrg fi 99150806d53Smrg 99250806d53Smrg # Just move the object if needed, then go on to compile the next one 99350806d53Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 99450806d53Smrg $show "$mv $output_obj $lobj" 99550806d53Smrg if $run $mv $output_obj $lobj; then : 99650806d53Smrg else 99750806d53Smrg error=$? 99850806d53Smrg $run $rm $removelist 99950806d53Smrg exit $error 100050806d53Smrg fi 100150806d53Smrg fi 100250806d53Smrg 100350806d53Smrg # Append the name of the PIC object to the libtool object file. 100450806d53Smrg test -z "$run" && cat >> ${libobj}T <<EOF 100550806d53Smrgpic_object='$objdir/$objname' 100650806d53Smrg 100750806d53SmrgEOF 100850806d53Smrg 100950806d53Smrg # Allow error messages only from the first compilation. 101050806d53Smrg if test "$suppress_opt" = yes; then 101150806d53Smrg suppress_output=' >/dev/null 2>&1' 101250806d53Smrg fi 101350806d53Smrg else 101450806d53Smrg # No PIC object so indicate it doesn't exist in the libtool 101550806d53Smrg # object file. 101650806d53Smrg test -z "$run" && cat >> ${libobj}T <<EOF 101750806d53Smrgpic_object=none 101850806d53Smrg 101950806d53SmrgEOF 102050806d53Smrg fi 102150806d53Smrg 102250806d53Smrg # Only build a position-dependent object if we build old libraries. 102350806d53Smrg if test "$build_old_libs" = yes; then 102450806d53Smrg if test "$pic_mode" != yes; then 102550806d53Smrg # Don't build PIC code 102650806d53Smrg command="$base_compile $qsrcfile" 102750806d53Smrg else 102850806d53Smrg command="$base_compile $qsrcfile $pic_flag" 102950806d53Smrg fi 103050806d53Smrg if test "$compiler_c_o" = yes; then 103150806d53Smrg command="$command -o $obj" 103250806d53Smrg fi 103350806d53Smrg 103450806d53Smrg # Suppress compiler output if we already did a PIC compilation. 103550806d53Smrg command="$command$suppress_output" 103650806d53Smrg $run $rm "$obj" "$output_obj" 103750806d53Smrg $show "$command" 10387965d9acSmrg if $run eval $lt_env "$command"; then : 103950806d53Smrg else 104050806d53Smrg $run $rm $removelist 104150806d53Smrg exit $EXIT_FAILURE 104250806d53Smrg fi 104350806d53Smrg 104450806d53Smrg if test "$need_locks" = warn && 104550806d53Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 104650806d53Smrg $echo "\ 104750806d53Smrg*** ERROR, $lockfile contains: 104850806d53Smrg`cat $lockfile 2>/dev/null` 104950806d53Smrg 105050806d53Smrgbut it should contain: 105150806d53Smrg$srcfile 105250806d53Smrg 105350806d53SmrgThis indicates that another process is trying to use the same 105450806d53Smrgtemporary object file, and libtool could not work around it because 105550806d53Smrgyour compiler does not support \`-c' and \`-o' together. If you 105650806d53Smrgrepeat this compilation, it may succeed, by chance, but you had better 105750806d53Smrgavoid parallel builds (make -j) in this platform, or get a better 105850806d53Smrgcompiler." 105950806d53Smrg 106050806d53Smrg $run $rm $removelist 106150806d53Smrg exit $EXIT_FAILURE 106250806d53Smrg fi 106350806d53Smrg 106450806d53Smrg # Just move the object if needed 106550806d53Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 106650806d53Smrg $show "$mv $output_obj $obj" 106750806d53Smrg if $run $mv $output_obj $obj; then : 106850806d53Smrg else 106950806d53Smrg error=$? 107050806d53Smrg $run $rm $removelist 107150806d53Smrg exit $error 107250806d53Smrg fi 107350806d53Smrg fi 107450806d53Smrg 107550806d53Smrg # Append the name of the non-PIC object the libtool object file. 107650806d53Smrg # Only append if the libtool object file exists. 107750806d53Smrg test -z "$run" && cat >> ${libobj}T <<EOF 107850806d53Smrg# Name of the non-PIC object. 107950806d53Smrgnon_pic_object='$objname' 108050806d53Smrg 108150806d53SmrgEOF 108250806d53Smrg else 108350806d53Smrg # Append the name of the non-PIC object the libtool object file. 108450806d53Smrg # Only append if the libtool object file exists. 108550806d53Smrg test -z "$run" && cat >> ${libobj}T <<EOF 108650806d53Smrg# Name of the non-PIC object. 108750806d53Smrgnon_pic_object=none 108850806d53Smrg 108950806d53SmrgEOF 109050806d53Smrg fi 109150806d53Smrg 109250806d53Smrg $run $mv "${libobj}T" "${libobj}" 109350806d53Smrg 109450806d53Smrg # Unlock the critical section if it was locked 109550806d53Smrg if test "$need_locks" != no; then 109650806d53Smrg $run $rm "$lockfile" 109750806d53Smrg fi 109850806d53Smrg 109950806d53Smrg exit $EXIT_SUCCESS 110050806d53Smrg ;; 110150806d53Smrg 110250806d53Smrg # libtool link mode 110350806d53Smrg link | relink) 110450806d53Smrg modename="$modename: link" 110550806d53Smrg case $host in 110650806d53Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 110750806d53Smrg # It is impossible to link a dll without this setting, and 110850806d53Smrg # we shouldn't force the makefile maintainer to figure out 110950806d53Smrg # which system we are compiling for in order to pass an extra 111050806d53Smrg # flag for every libtool invocation. 111150806d53Smrg # allow_undefined=no 111250806d53Smrg 111350806d53Smrg # FIXME: Unfortunately, there are problems with the above when trying 111450806d53Smrg # to make a dll which has undefined symbols, in which case not 111550806d53Smrg # even a static library is built. For now, we need to specify 111650806d53Smrg # -no-undefined on the libtool link line when we can be certain 111750806d53Smrg # that all symbols are satisfied, otherwise we get a static library. 111850806d53Smrg allow_undefined=yes 111950806d53Smrg ;; 112050806d53Smrg *) 112150806d53Smrg allow_undefined=yes 112250806d53Smrg ;; 112350806d53Smrg esac 112450806d53Smrg libtool_args="$nonopt" 112550806d53Smrg base_compile="$nonopt $@" 112650806d53Smrg compile_command="$nonopt" 112750806d53Smrg finalize_command="$nonopt" 112850806d53Smrg 112950806d53Smrg compile_rpath= 113050806d53Smrg finalize_rpath= 113150806d53Smrg compile_shlibpath= 113250806d53Smrg finalize_shlibpath= 113350806d53Smrg convenience= 113450806d53Smrg old_convenience= 113550806d53Smrg deplibs= 113650806d53Smrg old_deplibs= 113750806d53Smrg compiler_flags= 113850806d53Smrg linker_flags= 113950806d53Smrg dllsearchpath= 114050806d53Smrg lib_search_path=`pwd` 114150806d53Smrg inst_prefix_dir= 114250806d53Smrg 114350806d53Smrg avoid_version=no 114450806d53Smrg dlfiles= 114550806d53Smrg dlprefiles= 114650806d53Smrg dlself=no 114750806d53Smrg export_dynamic=no 114850806d53Smrg export_symbols= 114950806d53Smrg export_symbols_regex= 115050806d53Smrg generated= 115150806d53Smrg libobjs= 115250806d53Smrg ltlibs= 115350806d53Smrg module=no 115450806d53Smrg no_install=no 115550806d53Smrg objs= 115650806d53Smrg non_pic_objects= 115750806d53Smrg notinst_path= # paths that contain not-installed libtool libraries 115850806d53Smrg precious_files_regex= 115950806d53Smrg prefer_static_libs=no 116050806d53Smrg preload=no 116150806d53Smrg prev= 116250806d53Smrg prevarg= 116350806d53Smrg release= 116450806d53Smrg rpath= 116550806d53Smrg xrpath= 116650806d53Smrg perm_rpath= 116750806d53Smrg temp_rpath= 116850806d53Smrg thread_safe=no 116950806d53Smrg vinfo= 117050806d53Smrg vinfo_number=no 11717965d9acSmrg single_module="${wl}-single_module" 117250806d53Smrg 117350806d53Smrg func_infer_tag $base_compile 117450806d53Smrg 117550806d53Smrg # We need to know -static, to get the right output filenames. 117650806d53Smrg for arg 117750806d53Smrg do 117850806d53Smrg case $arg in 117950806d53Smrg -all-static | -static | -static-libtool-libs) 11807965d9acSmrg case $arg in 11817965d9acSmrg -all-static) 118250806d53Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 118350806d53Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 118450806d53Smrg fi 118550806d53Smrg if test -n "$link_static_flag"; then 118650806d53Smrg dlopen_self=$dlopen_self_static 118750806d53Smrg fi 118850806d53Smrg prefer_static_libs=yes 118950806d53Smrg ;; 11907965d9acSmrg -static) 119150806d53Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 119250806d53Smrg dlopen_self=$dlopen_self_static 119350806d53Smrg fi 119450806d53Smrg prefer_static_libs=built 119550806d53Smrg ;; 11967965d9acSmrg -static-libtool-libs) 11977965d9acSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11987965d9acSmrg dlopen_self=$dlopen_self_static 11997965d9acSmrg fi 12007965d9acSmrg prefer_static_libs=yes 12017965d9acSmrg ;; 12027965d9acSmrg esac 120350806d53Smrg build_libtool_libs=no 120450806d53Smrg build_old_libs=yes 120550806d53Smrg break 120650806d53Smrg ;; 120750806d53Smrg esac 120850806d53Smrg done 120950806d53Smrg 121050806d53Smrg # See if our shared archives depend on static archives. 121150806d53Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 121250806d53Smrg 121350806d53Smrg # Go through the arguments, transforming them on the way. 121450806d53Smrg while test "$#" -gt 0; do 121550806d53Smrg arg="$1" 121650806d53Smrg shift 121750806d53Smrg case $arg in 121850806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 121950806d53Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 122050806d53Smrg ;; 122150806d53Smrg *) qarg=$arg ;; 122250806d53Smrg esac 122350806d53Smrg libtool_args="$libtool_args $qarg" 122450806d53Smrg 122550806d53Smrg # If the previous option needs an argument, assign it. 122650806d53Smrg if test -n "$prev"; then 122750806d53Smrg case $prev in 122850806d53Smrg output) 122950806d53Smrg compile_command="$compile_command @OUTPUT@" 123050806d53Smrg finalize_command="$finalize_command @OUTPUT@" 123150806d53Smrg ;; 123250806d53Smrg esac 123350806d53Smrg 123450806d53Smrg case $prev in 123550806d53Smrg dlfiles|dlprefiles) 123650806d53Smrg if test "$preload" = no; then 123750806d53Smrg # Add the symbol object into the linking commands. 123850806d53Smrg compile_command="$compile_command @SYMFILE@" 123950806d53Smrg finalize_command="$finalize_command @SYMFILE@" 124050806d53Smrg preload=yes 124150806d53Smrg fi 124250806d53Smrg case $arg in 124350806d53Smrg *.la | *.lo) ;; # We handle these cases below. 124450806d53Smrg force) 124550806d53Smrg if test "$dlself" = no; then 124650806d53Smrg dlself=needless 124750806d53Smrg export_dynamic=yes 124850806d53Smrg fi 124950806d53Smrg prev= 125050806d53Smrg continue 125150806d53Smrg ;; 125250806d53Smrg self) 125350806d53Smrg if test "$prev" = dlprefiles; then 125450806d53Smrg dlself=yes 125550806d53Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 125650806d53Smrg dlself=yes 125750806d53Smrg else 125850806d53Smrg dlself=needless 125950806d53Smrg export_dynamic=yes 126050806d53Smrg fi 126150806d53Smrg prev= 126250806d53Smrg continue 126350806d53Smrg ;; 126450806d53Smrg *) 126550806d53Smrg if test "$prev" = dlfiles; then 126650806d53Smrg dlfiles="$dlfiles $arg" 126750806d53Smrg else 126850806d53Smrg dlprefiles="$dlprefiles $arg" 126950806d53Smrg fi 127050806d53Smrg prev= 127150806d53Smrg continue 127250806d53Smrg ;; 127350806d53Smrg esac 127450806d53Smrg ;; 127550806d53Smrg expsyms) 127650806d53Smrg export_symbols="$arg" 127750806d53Smrg if test ! -f "$arg"; then 127850806d53Smrg $echo "$modename: symbol file \`$arg' does not exist" 127950806d53Smrg exit $EXIT_FAILURE 128050806d53Smrg fi 128150806d53Smrg prev= 128250806d53Smrg continue 128350806d53Smrg ;; 128450806d53Smrg expsyms_regex) 128550806d53Smrg export_symbols_regex="$arg" 128650806d53Smrg prev= 128750806d53Smrg continue 128850806d53Smrg ;; 128950806d53Smrg inst_prefix) 129050806d53Smrg inst_prefix_dir="$arg" 129150806d53Smrg prev= 129250806d53Smrg continue 129350806d53Smrg ;; 129450806d53Smrg precious_regex) 129550806d53Smrg precious_files_regex="$arg" 129650806d53Smrg prev= 129750806d53Smrg continue 129850806d53Smrg ;; 129950806d53Smrg release) 130050806d53Smrg release="-$arg" 130150806d53Smrg prev= 130250806d53Smrg continue 130350806d53Smrg ;; 130450806d53Smrg objectlist) 130550806d53Smrg if test -f "$arg"; then 130650806d53Smrg save_arg=$arg 130750806d53Smrg moreargs= 130850806d53Smrg for fil in `cat $save_arg` 130950806d53Smrg do 131050806d53Smrg# moreargs="$moreargs $fil" 131150806d53Smrg arg=$fil 131250806d53Smrg # A libtool-controlled object. 131350806d53Smrg 131450806d53Smrg # Check to see that this really is a libtool object. 131550806d53Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 131650806d53Smrg pic_object= 131750806d53Smrg non_pic_object= 131850806d53Smrg 131950806d53Smrg # Read the .lo file 132050806d53Smrg # If there is no directory component, then add one. 132150806d53Smrg case $arg in 132250806d53Smrg */* | *\\*) . $arg ;; 132350806d53Smrg *) . ./$arg ;; 132450806d53Smrg esac 132550806d53Smrg 132650806d53Smrg if test -z "$pic_object" || \ 132750806d53Smrg test -z "$non_pic_object" || 132850806d53Smrg test "$pic_object" = none && \ 132950806d53Smrg test "$non_pic_object" = none; then 133050806d53Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 133150806d53Smrg exit $EXIT_FAILURE 133250806d53Smrg fi 133350806d53Smrg 133450806d53Smrg # Extract subdirectory from the argument. 133550806d53Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 133650806d53Smrg if test "X$xdir" = "X$arg"; then 133750806d53Smrg xdir= 133850806d53Smrg else 133950806d53Smrg xdir="$xdir/" 134050806d53Smrg fi 134150806d53Smrg 134250806d53Smrg if test "$pic_object" != none; then 134350806d53Smrg # Prepend the subdirectory the object is found in. 134450806d53Smrg pic_object="$xdir$pic_object" 134550806d53Smrg 134650806d53Smrg if test "$prev" = dlfiles; then 134750806d53Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 134850806d53Smrg dlfiles="$dlfiles $pic_object" 134950806d53Smrg prev= 135050806d53Smrg continue 135150806d53Smrg else 135250806d53Smrg # If libtool objects are unsupported, then we need to preload. 135350806d53Smrg prev=dlprefiles 135450806d53Smrg fi 135550806d53Smrg fi 135650806d53Smrg 135750806d53Smrg # CHECK ME: I think I busted this. -Ossama 135850806d53Smrg if test "$prev" = dlprefiles; then 135950806d53Smrg # Preload the old-style object. 136050806d53Smrg dlprefiles="$dlprefiles $pic_object" 136150806d53Smrg prev= 136250806d53Smrg fi 136350806d53Smrg 136450806d53Smrg # A PIC object. 136550806d53Smrg libobjs="$libobjs $pic_object" 136650806d53Smrg arg="$pic_object" 136750806d53Smrg fi 136850806d53Smrg 136950806d53Smrg # Non-PIC object. 137050806d53Smrg if test "$non_pic_object" != none; then 137150806d53Smrg # Prepend the subdirectory the object is found in. 137250806d53Smrg non_pic_object="$xdir$non_pic_object" 137350806d53Smrg 137450806d53Smrg # A standard non-PIC object 137550806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 137650806d53Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 137750806d53Smrg arg="$non_pic_object" 137850806d53Smrg fi 137950806d53Smrg else 138050806d53Smrg # If the PIC object exists, use it instead. 138150806d53Smrg # $xdir was prepended to $pic_object above. 138250806d53Smrg non_pic_object="$pic_object" 138350806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 138450806d53Smrg fi 138550806d53Smrg else 138650806d53Smrg # Only an error if not doing a dry-run. 138750806d53Smrg if test -z "$run"; then 138850806d53Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 138950806d53Smrg exit $EXIT_FAILURE 139050806d53Smrg else 139150806d53Smrg # Dry-run case. 139250806d53Smrg 139350806d53Smrg # Extract subdirectory from the argument. 139450806d53Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 139550806d53Smrg if test "X$xdir" = "X$arg"; then 139650806d53Smrg xdir= 139750806d53Smrg else 139850806d53Smrg xdir="$xdir/" 139950806d53Smrg fi 140050806d53Smrg 140150806d53Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 140250806d53Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 140350806d53Smrg libobjs="$libobjs $pic_object" 140450806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 140550806d53Smrg fi 140650806d53Smrg fi 140750806d53Smrg done 140850806d53Smrg else 140950806d53Smrg $echo "$modename: link input file \`$save_arg' does not exist" 141050806d53Smrg exit $EXIT_FAILURE 141150806d53Smrg fi 141250806d53Smrg arg=$save_arg 141350806d53Smrg prev= 141450806d53Smrg continue 141550806d53Smrg ;; 141650806d53Smrg rpath | xrpath) 141750806d53Smrg # We need an absolute path. 141850806d53Smrg case $arg in 141950806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 142050806d53Smrg *) 142150806d53Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 142250806d53Smrg exit $EXIT_FAILURE 142350806d53Smrg ;; 142450806d53Smrg esac 142550806d53Smrg if test "$prev" = rpath; then 142650806d53Smrg case "$rpath " in 142750806d53Smrg *" $arg "*) ;; 142850806d53Smrg *) rpath="$rpath $arg" ;; 142950806d53Smrg esac 143050806d53Smrg else 143150806d53Smrg case "$xrpath " in 143250806d53Smrg *" $arg "*) ;; 143350806d53Smrg *) xrpath="$xrpath $arg" ;; 143450806d53Smrg esac 143550806d53Smrg fi 143650806d53Smrg prev= 143750806d53Smrg continue 143850806d53Smrg ;; 143950806d53Smrg xcompiler) 144050806d53Smrg compiler_flags="$compiler_flags $qarg" 144150806d53Smrg prev= 144250806d53Smrg compile_command="$compile_command $qarg" 144350806d53Smrg finalize_command="$finalize_command $qarg" 144450806d53Smrg continue 144550806d53Smrg ;; 144650806d53Smrg xlinker) 144750806d53Smrg linker_flags="$linker_flags $qarg" 144850806d53Smrg compiler_flags="$compiler_flags $wl$qarg" 144950806d53Smrg prev= 145050806d53Smrg compile_command="$compile_command $wl$qarg" 145150806d53Smrg finalize_command="$finalize_command $wl$qarg" 145250806d53Smrg continue 145350806d53Smrg ;; 145450806d53Smrg xcclinker) 145550806d53Smrg linker_flags="$linker_flags $qarg" 145650806d53Smrg compiler_flags="$compiler_flags $qarg" 145750806d53Smrg prev= 145850806d53Smrg compile_command="$compile_command $qarg" 145950806d53Smrg finalize_command="$finalize_command $qarg" 146050806d53Smrg continue 146150806d53Smrg ;; 146250806d53Smrg shrext) 146350806d53Smrg shrext_cmds="$arg" 146450806d53Smrg prev= 146550806d53Smrg continue 146650806d53Smrg ;; 146750806d53Smrg darwin_framework|darwin_framework_skip) 146850806d53Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 146950806d53Smrg compile_command="$compile_command $arg" 147050806d53Smrg finalize_command="$finalize_command $arg" 147150806d53Smrg prev= 147250806d53Smrg continue 147350806d53Smrg ;; 147450806d53Smrg *) 147550806d53Smrg eval "$prev=\"\$arg\"" 147650806d53Smrg prev= 147750806d53Smrg continue 147850806d53Smrg ;; 147950806d53Smrg esac 148050806d53Smrg fi # test -n "$prev" 148150806d53Smrg 148250806d53Smrg prevarg="$arg" 148350806d53Smrg 148450806d53Smrg case $arg in 148550806d53Smrg -all-static) 148650806d53Smrg if test -n "$link_static_flag"; then 148750806d53Smrg compile_command="$compile_command $link_static_flag" 148850806d53Smrg finalize_command="$finalize_command $link_static_flag" 148950806d53Smrg fi 149050806d53Smrg continue 149150806d53Smrg ;; 149250806d53Smrg 149350806d53Smrg -allow-undefined) 149450806d53Smrg # FIXME: remove this flag sometime in the future. 149550806d53Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 149650806d53Smrg continue 149750806d53Smrg ;; 149850806d53Smrg 149950806d53Smrg -avoid-version) 150050806d53Smrg avoid_version=yes 150150806d53Smrg continue 150250806d53Smrg ;; 150350806d53Smrg 150450806d53Smrg -dlopen) 150550806d53Smrg prev=dlfiles 150650806d53Smrg continue 150750806d53Smrg ;; 150850806d53Smrg 150950806d53Smrg -dlpreopen) 151050806d53Smrg prev=dlprefiles 151150806d53Smrg continue 151250806d53Smrg ;; 151350806d53Smrg 151450806d53Smrg -export-dynamic) 151550806d53Smrg export_dynamic=yes 151650806d53Smrg continue 151750806d53Smrg ;; 151850806d53Smrg 151950806d53Smrg -export-symbols | -export-symbols-regex) 152050806d53Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 152150806d53Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 152250806d53Smrg exit $EXIT_FAILURE 152350806d53Smrg fi 152450806d53Smrg if test "X$arg" = "X-export-symbols"; then 152550806d53Smrg prev=expsyms 152650806d53Smrg else 152750806d53Smrg prev=expsyms_regex 152850806d53Smrg fi 152950806d53Smrg continue 153050806d53Smrg ;; 153150806d53Smrg 153250806d53Smrg -framework|-arch|-isysroot) 153350806d53Smrg case " $CC " in 153450806d53Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 153550806d53Smrg prev=darwin_framework_skip ;; 153650806d53Smrg *) compiler_flags="$compiler_flags $arg" 153750806d53Smrg prev=darwin_framework ;; 153850806d53Smrg esac 153950806d53Smrg compile_command="$compile_command $arg" 154050806d53Smrg finalize_command="$finalize_command $arg" 154150806d53Smrg continue 154250806d53Smrg ;; 154350806d53Smrg 154450806d53Smrg -inst-prefix-dir) 154550806d53Smrg prev=inst_prefix 154650806d53Smrg continue 154750806d53Smrg ;; 154850806d53Smrg 154950806d53Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 155050806d53Smrg # so, if we see these flags be careful not to treat them like -L 155150806d53Smrg -L[A-Z][A-Z]*:*) 155250806d53Smrg case $with_gcc/$host in 155350806d53Smrg no/*-*-irix* | /*-*-irix*) 155450806d53Smrg compile_command="$compile_command $arg" 155550806d53Smrg finalize_command="$finalize_command $arg" 155650806d53Smrg ;; 155750806d53Smrg esac 155850806d53Smrg continue 155950806d53Smrg ;; 156050806d53Smrg 156150806d53Smrg -L*) 156250806d53Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 156350806d53Smrg # We need an absolute path. 156450806d53Smrg case $dir in 156550806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 156650806d53Smrg *) 156750806d53Smrg absdir=`cd "$dir" && pwd` 156850806d53Smrg if test -z "$absdir"; then 156950806d53Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 157050806d53Smrg absdir="$dir" 157150806d53Smrg notinst_path="$notinst_path $dir" 157250806d53Smrg fi 157350806d53Smrg dir="$absdir" 157450806d53Smrg ;; 157550806d53Smrg esac 157650806d53Smrg case "$deplibs " in 157750806d53Smrg *" -L$dir "*) ;; 157850806d53Smrg *) 157950806d53Smrg deplibs="$deplibs -L$dir" 158050806d53Smrg lib_search_path="$lib_search_path $dir" 158150806d53Smrg ;; 158250806d53Smrg esac 158350806d53Smrg case $host in 158450806d53Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 158550806d53Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 158650806d53Smrg case :$dllsearchpath: in 158750806d53Smrg *":$dir:"*) ;; 158850806d53Smrg *) dllsearchpath="$dllsearchpath:$dir";; 158950806d53Smrg esac 159050806d53Smrg case :$dllsearchpath: in 159150806d53Smrg *":$testbindir:"*) ;; 159250806d53Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 159350806d53Smrg esac 159450806d53Smrg ;; 159550806d53Smrg esac 159650806d53Smrg continue 159750806d53Smrg ;; 159850806d53Smrg 159950806d53Smrg -l*) 160050806d53Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 160150806d53Smrg case $host in 160250806d53Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 160350806d53Smrg # These systems don't actually have a C or math library (as such) 160450806d53Smrg continue 160550806d53Smrg ;; 160650806d53Smrg *-*-os2*) 160750806d53Smrg # These systems don't actually have a C library (as such) 160850806d53Smrg test "X$arg" = "X-lc" && continue 160950806d53Smrg ;; 161050806d53Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 161150806d53Smrg # Do not include libc due to us having libc/libc_r. 161250806d53Smrg test "X$arg" = "X-lc" && continue 161350806d53Smrg ;; 161450806d53Smrg *-*-rhapsody* | *-*-darwin1.[012]) 161550806d53Smrg # Rhapsody C and math libraries are in the System framework 161650806d53Smrg deplibs="$deplibs -framework System" 161750806d53Smrg continue 161850806d53Smrg ;; 161950806d53Smrg *-*-sco3.2v5* | *-*-sco5v6*) 162050806d53Smrg # Causes problems with __ctype 162150806d53Smrg test "X$arg" = "X-lc" && continue 162250806d53Smrg ;; 162350806d53Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 162450806d53Smrg # Compiler inserts libc in the correct place for threads to work 162550806d53Smrg test "X$arg" = "X-lc" && continue 162650806d53Smrg ;; 162750806d53Smrg esac 162850806d53Smrg elif test "X$arg" = "X-lc_r"; then 162950806d53Smrg case $host in 163050806d53Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 163150806d53Smrg # Do not include libc_r directly, use -pthread flag. 163250806d53Smrg continue 163350806d53Smrg ;; 163450806d53Smrg esac 163550806d53Smrg fi 163650806d53Smrg deplibs="$deplibs $arg" 163750806d53Smrg continue 163850806d53Smrg ;; 163950806d53Smrg 164050806d53Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 164150806d53Smrg # classes, name mangling, and exception handling. 164250806d53Smrg -model) 164350806d53Smrg compile_command="$compile_command $arg" 164450806d53Smrg compiler_flags="$compiler_flags $arg" 164550806d53Smrg finalize_command="$finalize_command $arg" 164650806d53Smrg prev=xcompiler 164750806d53Smrg continue 164850806d53Smrg ;; 164950806d53Smrg 16507965d9acSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 165150806d53Smrg compiler_flags="$compiler_flags $arg" 165250806d53Smrg compile_command="$compile_command $arg" 165350806d53Smrg finalize_command="$finalize_command $arg" 165450806d53Smrg continue 165550806d53Smrg ;; 165650806d53Smrg 16577965d9acSmrg -multi_module) 16587965d9acSmrg single_module="${wl}-multi_module" 16597965d9acSmrg continue 16607965d9acSmrg ;; 16617965d9acSmrg 166250806d53Smrg -module) 166350806d53Smrg module=yes 166450806d53Smrg continue 166550806d53Smrg ;; 166650806d53Smrg 166750806d53Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 166850806d53Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 166950806d53Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 167050806d53Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 167150806d53Smrg # -q* pass through compiler args for the IBM compiler 167250806d53Smrg # -m* pass through architecture-specific compiler args for GCC 167350806d53Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 167450806d53Smrg # compiler args for GCC 16757965d9acSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 16767965d9acSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 167750806d53Smrg # @file GCC response files 16787965d9acSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 16797965d9acSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 168050806d53Smrg 168150806d53Smrg # Unknown arguments in both finalize_command and compile_command need 168250806d53Smrg # to be aesthetically quoted because they are evaled later. 168350806d53Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 168450806d53Smrg case $arg in 168550806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 168650806d53Smrg arg="\"$arg\"" 168750806d53Smrg ;; 168850806d53Smrg esac 168950806d53Smrg compile_command="$compile_command $arg" 169050806d53Smrg finalize_command="$finalize_command $arg" 169150806d53Smrg compiler_flags="$compiler_flags $arg" 169250806d53Smrg continue 169350806d53Smrg ;; 169450806d53Smrg 169550806d53Smrg -shrext) 169650806d53Smrg prev=shrext 169750806d53Smrg continue 169850806d53Smrg ;; 169950806d53Smrg 170050806d53Smrg -no-fast-install) 170150806d53Smrg fast_install=no 170250806d53Smrg continue 170350806d53Smrg ;; 170450806d53Smrg 170550806d53Smrg -no-install) 170650806d53Smrg case $host in 17077965d9acSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 170850806d53Smrg # The PATH hackery in wrapper scripts is required on Windows 17097965d9acSmrg # and Darwin in order for the loader to find any dlls it needs. 171050806d53Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 171150806d53Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 171250806d53Smrg fast_install=no 171350806d53Smrg ;; 171450806d53Smrg *) no_install=yes ;; 171550806d53Smrg esac 171650806d53Smrg continue 171750806d53Smrg ;; 171850806d53Smrg 171950806d53Smrg -no-undefined) 172050806d53Smrg allow_undefined=no 172150806d53Smrg continue 172250806d53Smrg ;; 172350806d53Smrg 172450806d53Smrg -objectlist) 172550806d53Smrg prev=objectlist 172650806d53Smrg continue 172750806d53Smrg ;; 172850806d53Smrg 172950806d53Smrg -o) prev=output ;; 173050806d53Smrg 173150806d53Smrg -precious-files-regex) 173250806d53Smrg prev=precious_regex 173350806d53Smrg continue 173450806d53Smrg ;; 173550806d53Smrg 173650806d53Smrg -release) 173750806d53Smrg prev=release 173850806d53Smrg continue 173950806d53Smrg ;; 174050806d53Smrg 174150806d53Smrg -rpath) 174250806d53Smrg prev=rpath 174350806d53Smrg continue 174450806d53Smrg ;; 174550806d53Smrg 174650806d53Smrg -R) 174750806d53Smrg prev=xrpath 174850806d53Smrg continue 174950806d53Smrg ;; 175050806d53Smrg 175150806d53Smrg -R*) 175250806d53Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 175350806d53Smrg # We need an absolute path. 175450806d53Smrg case $dir in 175550806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 175650806d53Smrg *) 175750806d53Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 175850806d53Smrg exit $EXIT_FAILURE 175950806d53Smrg ;; 176050806d53Smrg esac 176150806d53Smrg case "$xrpath " in 176250806d53Smrg *" $dir "*) ;; 176350806d53Smrg *) xrpath="$xrpath $dir" ;; 176450806d53Smrg esac 176550806d53Smrg continue 176650806d53Smrg ;; 176750806d53Smrg 176850806d53Smrg -static | -static-libtool-libs) 176950806d53Smrg # The effects of -static are defined in a previous loop. 177050806d53Smrg # We used to do the same as -all-static on platforms that 177150806d53Smrg # didn't have a PIC flag, but the assumption that the effects 177250806d53Smrg # would be equivalent was wrong. It would break on at least 177350806d53Smrg # Digital Unix and AIX. 177450806d53Smrg continue 177550806d53Smrg ;; 177650806d53Smrg 177750806d53Smrg -thread-safe) 177850806d53Smrg thread_safe=yes 177950806d53Smrg continue 178050806d53Smrg ;; 178150806d53Smrg 178250806d53Smrg -version-info) 178350806d53Smrg prev=vinfo 178450806d53Smrg continue 178550806d53Smrg ;; 178650806d53Smrg -version-number) 178750806d53Smrg prev=vinfo 178850806d53Smrg vinfo_number=yes 178950806d53Smrg continue 179050806d53Smrg ;; 179150806d53Smrg 179250806d53Smrg -Wc,*) 179350806d53Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 179450806d53Smrg arg= 179550806d53Smrg save_ifs="$IFS"; IFS=',' 179650806d53Smrg for flag in $args; do 179750806d53Smrg IFS="$save_ifs" 179850806d53Smrg case $flag in 179950806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 180050806d53Smrg flag="\"$flag\"" 180150806d53Smrg ;; 180250806d53Smrg esac 180350806d53Smrg arg="$arg $wl$flag" 180450806d53Smrg compiler_flags="$compiler_flags $flag" 180550806d53Smrg done 180650806d53Smrg IFS="$save_ifs" 180750806d53Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 180850806d53Smrg ;; 180950806d53Smrg 181050806d53Smrg -Wl,*) 181150806d53Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 181250806d53Smrg arg= 181350806d53Smrg save_ifs="$IFS"; IFS=',' 181450806d53Smrg for flag in $args; do 181550806d53Smrg IFS="$save_ifs" 181650806d53Smrg case $flag in 181750806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 181850806d53Smrg flag="\"$flag\"" 181950806d53Smrg ;; 182050806d53Smrg esac 182150806d53Smrg arg="$arg $wl$flag" 182250806d53Smrg compiler_flags="$compiler_flags $wl$flag" 182350806d53Smrg linker_flags="$linker_flags $flag" 182450806d53Smrg done 182550806d53Smrg IFS="$save_ifs" 182650806d53Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 182750806d53Smrg ;; 182850806d53Smrg 182950806d53Smrg -Xcompiler) 183050806d53Smrg prev=xcompiler 183150806d53Smrg continue 183250806d53Smrg ;; 183350806d53Smrg 183450806d53Smrg -Xlinker) 183550806d53Smrg prev=xlinker 183650806d53Smrg continue 183750806d53Smrg ;; 183850806d53Smrg 183950806d53Smrg -XCClinker) 184050806d53Smrg prev=xcclinker 184150806d53Smrg continue 184250806d53Smrg ;; 184350806d53Smrg 184450806d53Smrg # Some other compiler flag. 184550806d53Smrg -* | +*) 184650806d53Smrg # Unknown arguments in both finalize_command and compile_command need 184750806d53Smrg # to be aesthetically quoted because they are evaled later. 184850806d53Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 184950806d53Smrg case $arg in 185050806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 185150806d53Smrg arg="\"$arg\"" 185250806d53Smrg ;; 185350806d53Smrg esac 185450806d53Smrg ;; 185550806d53Smrg 185650806d53Smrg *.$objext) 185750806d53Smrg # A standard object. 185850806d53Smrg objs="$objs $arg" 185950806d53Smrg ;; 186050806d53Smrg 186150806d53Smrg *.lo) 186250806d53Smrg # A libtool-controlled object. 186350806d53Smrg 186450806d53Smrg # Check to see that this really is a libtool object. 186550806d53Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 186650806d53Smrg pic_object= 186750806d53Smrg non_pic_object= 186850806d53Smrg 186950806d53Smrg # Read the .lo file 187050806d53Smrg # If there is no directory component, then add one. 187150806d53Smrg case $arg in 187250806d53Smrg */* | *\\*) . $arg ;; 187350806d53Smrg *) . ./$arg ;; 187450806d53Smrg esac 187550806d53Smrg 187650806d53Smrg if test -z "$pic_object" || \ 187750806d53Smrg test -z "$non_pic_object" || 187850806d53Smrg test "$pic_object" = none && \ 187950806d53Smrg test "$non_pic_object" = none; then 188050806d53Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 188150806d53Smrg exit $EXIT_FAILURE 188250806d53Smrg fi 188350806d53Smrg 188450806d53Smrg # Extract subdirectory from the argument. 188550806d53Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 188650806d53Smrg if test "X$xdir" = "X$arg"; then 188750806d53Smrg xdir= 188850806d53Smrg else 188950806d53Smrg xdir="$xdir/" 189050806d53Smrg fi 189150806d53Smrg 189250806d53Smrg if test "$pic_object" != none; then 189350806d53Smrg # Prepend the subdirectory the object is found in. 189450806d53Smrg pic_object="$xdir$pic_object" 189550806d53Smrg 189650806d53Smrg if test "$prev" = dlfiles; then 189750806d53Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 189850806d53Smrg dlfiles="$dlfiles $pic_object" 189950806d53Smrg prev= 190050806d53Smrg continue 190150806d53Smrg else 190250806d53Smrg # If libtool objects are unsupported, then we need to preload. 190350806d53Smrg prev=dlprefiles 190450806d53Smrg fi 190550806d53Smrg fi 190650806d53Smrg 190750806d53Smrg # CHECK ME: I think I busted this. -Ossama 190850806d53Smrg if test "$prev" = dlprefiles; then 190950806d53Smrg # Preload the old-style object. 191050806d53Smrg dlprefiles="$dlprefiles $pic_object" 191150806d53Smrg prev= 191250806d53Smrg fi 191350806d53Smrg 191450806d53Smrg # A PIC object. 191550806d53Smrg libobjs="$libobjs $pic_object" 191650806d53Smrg arg="$pic_object" 191750806d53Smrg fi 191850806d53Smrg 191950806d53Smrg # Non-PIC object. 192050806d53Smrg if test "$non_pic_object" != none; then 192150806d53Smrg # Prepend the subdirectory the object is found in. 192250806d53Smrg non_pic_object="$xdir$non_pic_object" 192350806d53Smrg 192450806d53Smrg # A standard non-PIC object 192550806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 192650806d53Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 192750806d53Smrg arg="$non_pic_object" 192850806d53Smrg fi 192950806d53Smrg else 193050806d53Smrg # If the PIC object exists, use it instead. 193150806d53Smrg # $xdir was prepended to $pic_object above. 193250806d53Smrg non_pic_object="$pic_object" 193350806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 193450806d53Smrg fi 193550806d53Smrg else 193650806d53Smrg # Only an error if not doing a dry-run. 193750806d53Smrg if test -z "$run"; then 193850806d53Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 193950806d53Smrg exit $EXIT_FAILURE 194050806d53Smrg else 194150806d53Smrg # Dry-run case. 194250806d53Smrg 194350806d53Smrg # Extract subdirectory from the argument. 194450806d53Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 194550806d53Smrg if test "X$xdir" = "X$arg"; then 194650806d53Smrg xdir= 194750806d53Smrg else 194850806d53Smrg xdir="$xdir/" 194950806d53Smrg fi 195050806d53Smrg 195150806d53Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 195250806d53Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 195350806d53Smrg libobjs="$libobjs $pic_object" 195450806d53Smrg non_pic_objects="$non_pic_objects $non_pic_object" 195550806d53Smrg fi 195650806d53Smrg fi 195750806d53Smrg ;; 195850806d53Smrg 195950806d53Smrg *.$libext) 196050806d53Smrg # An archive. 196150806d53Smrg deplibs="$deplibs $arg" 196250806d53Smrg old_deplibs="$old_deplibs $arg" 196350806d53Smrg continue 196450806d53Smrg ;; 196550806d53Smrg 196650806d53Smrg *.la) 196750806d53Smrg # A libtool-controlled library. 196850806d53Smrg 196950806d53Smrg if test "$prev" = dlfiles; then 197050806d53Smrg # This library was specified with -dlopen. 197150806d53Smrg dlfiles="$dlfiles $arg" 197250806d53Smrg prev= 197350806d53Smrg elif test "$prev" = dlprefiles; then 197450806d53Smrg # The library was specified with -dlpreopen. 197550806d53Smrg dlprefiles="$dlprefiles $arg" 197650806d53Smrg prev= 197750806d53Smrg else 197850806d53Smrg deplibs="$deplibs $arg" 197950806d53Smrg fi 198050806d53Smrg continue 198150806d53Smrg ;; 198250806d53Smrg 198350806d53Smrg # Some other compiler argument. 198450806d53Smrg *) 198550806d53Smrg # Unknown arguments in both finalize_command and compile_command need 198650806d53Smrg # to be aesthetically quoted because they are evaled later. 198750806d53Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 198850806d53Smrg case $arg in 198950806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 199050806d53Smrg arg="\"$arg\"" 199150806d53Smrg ;; 199250806d53Smrg esac 199350806d53Smrg ;; 199450806d53Smrg esac # arg 199550806d53Smrg 199650806d53Smrg # Now actually substitute the argument into the commands. 199750806d53Smrg if test -n "$arg"; then 199850806d53Smrg compile_command="$compile_command $arg" 199950806d53Smrg finalize_command="$finalize_command $arg" 200050806d53Smrg fi 200150806d53Smrg done # argument parsing loop 200250806d53Smrg 200350806d53Smrg if test -n "$prev"; then 200450806d53Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 200550806d53Smrg $echo "$help" 1>&2 200650806d53Smrg exit $EXIT_FAILURE 200750806d53Smrg fi 200850806d53Smrg 200950806d53Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 201050806d53Smrg eval arg=\"$export_dynamic_flag_spec\" 201150806d53Smrg compile_command="$compile_command $arg" 201250806d53Smrg finalize_command="$finalize_command $arg" 201350806d53Smrg fi 201450806d53Smrg 201550806d53Smrg oldlibs= 201650806d53Smrg # calculate the name of the file, without its directory 201750806d53Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 201850806d53Smrg libobjs_save="$libobjs" 201950806d53Smrg 202050806d53Smrg if test -n "$shlibpath_var"; then 202150806d53Smrg # get the directories listed in $shlibpath_var 202250806d53Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 202350806d53Smrg else 202450806d53Smrg shlib_search_path= 202550806d53Smrg fi 202650806d53Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 202750806d53Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 202850806d53Smrg 202950806d53Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 203050806d53Smrg if test "X$output_objdir" = "X$output"; then 203150806d53Smrg output_objdir="$objdir" 203250806d53Smrg else 203350806d53Smrg output_objdir="$output_objdir/$objdir" 203450806d53Smrg fi 203550806d53Smrg # Create the object directory. 203650806d53Smrg if test ! -d "$output_objdir"; then 203750806d53Smrg $show "$mkdir $output_objdir" 203850806d53Smrg $run $mkdir $output_objdir 203950806d53Smrg exit_status=$? 204050806d53Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 204150806d53Smrg exit $exit_status 204250806d53Smrg fi 204350806d53Smrg fi 204450806d53Smrg 204550806d53Smrg # Determine the type of output 204650806d53Smrg case $output in 204750806d53Smrg "") 204850806d53Smrg $echo "$modename: you must specify an output file" 1>&2 204950806d53Smrg $echo "$help" 1>&2 205050806d53Smrg exit $EXIT_FAILURE 205150806d53Smrg ;; 205250806d53Smrg *.$libext) linkmode=oldlib ;; 205350806d53Smrg *.lo | *.$objext) linkmode=obj ;; 205450806d53Smrg *.la) linkmode=lib ;; 205550806d53Smrg *) linkmode=prog ;; # Anything else should be a program. 205650806d53Smrg esac 205750806d53Smrg 205850806d53Smrg case $host in 205950806d53Smrg *cygwin* | *mingw* | *pw32*) 206050806d53Smrg # don't eliminate duplications in $postdeps and $predeps 206150806d53Smrg duplicate_compiler_generated_deps=yes 206250806d53Smrg ;; 206350806d53Smrg *) 206450806d53Smrg duplicate_compiler_generated_deps=$duplicate_deps 206550806d53Smrg ;; 206650806d53Smrg esac 206750806d53Smrg specialdeplibs= 206850806d53Smrg 206950806d53Smrg libs= 207050806d53Smrg # Find all interdependent deplibs by searching for libraries 207150806d53Smrg # that are linked more than once (e.g. -la -lb -la) 207250806d53Smrg for deplib in $deplibs; do 207350806d53Smrg if test "X$duplicate_deps" = "Xyes" ; then 207450806d53Smrg case "$libs " in 207550806d53Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 207650806d53Smrg esac 207750806d53Smrg fi 207850806d53Smrg libs="$libs $deplib" 207950806d53Smrg done 208050806d53Smrg 208150806d53Smrg if test "$linkmode" = lib; then 208250806d53Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 208350806d53Smrg 208450806d53Smrg # Compute libraries that are listed more than once in $predeps 208550806d53Smrg # $postdeps and mark them as special (i.e., whose duplicates are 208650806d53Smrg # not to be eliminated). 208750806d53Smrg pre_post_deps= 208850806d53Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 208950806d53Smrg for pre_post_dep in $predeps $postdeps; do 209050806d53Smrg case "$pre_post_deps " in 209150806d53Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 209250806d53Smrg esac 209350806d53Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 209450806d53Smrg done 209550806d53Smrg fi 209650806d53Smrg pre_post_deps= 209750806d53Smrg fi 209850806d53Smrg 209950806d53Smrg deplibs= 210050806d53Smrg newdependency_libs= 210150806d53Smrg newlib_search_path= 210250806d53Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 210350806d53Smrg notinst_deplibs= # not-installed libtool libraries 210450806d53Smrg case $linkmode in 210550806d53Smrg lib) 210650806d53Smrg passes="conv link" 210750806d53Smrg for file in $dlfiles $dlprefiles; do 210850806d53Smrg case $file in 210950806d53Smrg *.la) ;; 211050806d53Smrg *) 211150806d53Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 211250806d53Smrg exit $EXIT_FAILURE 211350806d53Smrg ;; 211450806d53Smrg esac 211550806d53Smrg done 211650806d53Smrg ;; 211750806d53Smrg prog) 211850806d53Smrg compile_deplibs= 211950806d53Smrg finalize_deplibs= 212050806d53Smrg alldeplibs=no 212150806d53Smrg newdlfiles= 212250806d53Smrg newdlprefiles= 212350806d53Smrg passes="conv scan dlopen dlpreopen link" 212450806d53Smrg ;; 212550806d53Smrg *) passes="conv" 212650806d53Smrg ;; 212750806d53Smrg esac 212850806d53Smrg for pass in $passes; do 212950806d53Smrg if test "$linkmode,$pass" = "lib,link" || 213050806d53Smrg test "$linkmode,$pass" = "prog,scan"; then 213150806d53Smrg libs="$deplibs" 213250806d53Smrg deplibs= 213350806d53Smrg fi 213450806d53Smrg if test "$linkmode" = prog; then 213550806d53Smrg case $pass in 213650806d53Smrg dlopen) libs="$dlfiles" ;; 213750806d53Smrg dlpreopen) libs="$dlprefiles" ;; 21387965d9acSmrg link) 21397965d9acSmrg libs="$deplibs %DEPLIBS%" 21407965d9acSmrg test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 21417965d9acSmrg ;; 214250806d53Smrg esac 214350806d53Smrg fi 214450806d53Smrg if test "$pass" = dlopen; then 214550806d53Smrg # Collect dlpreopened libraries 214650806d53Smrg save_deplibs="$deplibs" 214750806d53Smrg deplibs= 214850806d53Smrg fi 214950806d53Smrg for deplib in $libs; do 215050806d53Smrg lib= 215150806d53Smrg found=no 215250806d53Smrg case $deplib in 21537965d9acSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 215450806d53Smrg if test "$linkmode,$pass" = "prog,link"; then 215550806d53Smrg compile_deplibs="$deplib $compile_deplibs" 215650806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 215750806d53Smrg else 215850806d53Smrg compiler_flags="$compiler_flags $deplib" 215950806d53Smrg fi 216050806d53Smrg continue 216150806d53Smrg ;; 216250806d53Smrg -l*) 216350806d53Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 216450806d53Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 216550806d53Smrg continue 216650806d53Smrg fi 216750806d53Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 21687965d9acSmrg if test "$linkmode" = lib; then 21697965d9acSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 21707965d9acSmrg else 21717965d9acSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 21727965d9acSmrg fi 21737965d9acSmrg for searchdir in $searchdirs; do 217450806d53Smrg for search_ext in .la $std_shrext .so .a; do 217550806d53Smrg # Search the libtool library 217650806d53Smrg lib="$searchdir/lib${name}${search_ext}" 217750806d53Smrg if test -f "$lib"; then 217850806d53Smrg if test "$search_ext" = ".la"; then 217950806d53Smrg found=yes 218050806d53Smrg else 218150806d53Smrg found=no 218250806d53Smrg fi 218350806d53Smrg break 2 218450806d53Smrg fi 218550806d53Smrg done 218650806d53Smrg done 218750806d53Smrg if test "$found" != yes; then 218850806d53Smrg # deplib doesn't seem to be a libtool library 218950806d53Smrg if test "$linkmode,$pass" = "prog,link"; then 219050806d53Smrg compile_deplibs="$deplib $compile_deplibs" 219150806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 219250806d53Smrg else 219350806d53Smrg deplibs="$deplib $deplibs" 219450806d53Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 219550806d53Smrg fi 219650806d53Smrg continue 219750806d53Smrg else # deplib is a libtool library 219850806d53Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 219950806d53Smrg # We need to do some special things here, and not later. 220050806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 220150806d53Smrg case " $predeps $postdeps " in 220250806d53Smrg *" $deplib "*) 220350806d53Smrg if (${SED} -e '2q' $lib | 220450806d53Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 220550806d53Smrg library_names= 220650806d53Smrg old_library= 220750806d53Smrg case $lib in 220850806d53Smrg */* | *\\*) . $lib ;; 220950806d53Smrg *) . ./$lib ;; 221050806d53Smrg esac 221150806d53Smrg for l in $old_library $library_names; do 221250806d53Smrg ll="$l" 221350806d53Smrg done 221450806d53Smrg if test "X$ll" = "X$old_library" ; then # only static version available 221550806d53Smrg found=no 221650806d53Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 221750806d53Smrg test "X$ladir" = "X$lib" && ladir="." 221850806d53Smrg lib=$ladir/$old_library 221950806d53Smrg if test "$linkmode,$pass" = "prog,link"; then 222050806d53Smrg compile_deplibs="$deplib $compile_deplibs" 222150806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 222250806d53Smrg else 222350806d53Smrg deplibs="$deplib $deplibs" 222450806d53Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 222550806d53Smrg fi 222650806d53Smrg continue 222750806d53Smrg fi 222850806d53Smrg fi 222950806d53Smrg ;; 223050806d53Smrg *) ;; 223150806d53Smrg esac 223250806d53Smrg fi 223350806d53Smrg fi 223450806d53Smrg ;; # -l 223550806d53Smrg -L*) 223650806d53Smrg case $linkmode in 223750806d53Smrg lib) 223850806d53Smrg deplibs="$deplib $deplibs" 223950806d53Smrg test "$pass" = conv && continue 224050806d53Smrg newdependency_libs="$deplib $newdependency_libs" 224150806d53Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 224250806d53Smrg ;; 224350806d53Smrg prog) 224450806d53Smrg if test "$pass" = conv; then 224550806d53Smrg deplibs="$deplib $deplibs" 224650806d53Smrg continue 224750806d53Smrg fi 224850806d53Smrg if test "$pass" = scan; then 224950806d53Smrg deplibs="$deplib $deplibs" 225050806d53Smrg else 225150806d53Smrg compile_deplibs="$deplib $compile_deplibs" 225250806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 225350806d53Smrg fi 225450806d53Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 225550806d53Smrg ;; 225650806d53Smrg *) 225750806d53Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 225850806d53Smrg ;; 225950806d53Smrg esac # linkmode 226050806d53Smrg continue 226150806d53Smrg ;; # -L 226250806d53Smrg -R*) 226350806d53Smrg if test "$pass" = link; then 226450806d53Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 226550806d53Smrg # Make sure the xrpath contains only unique directories. 226650806d53Smrg case "$xrpath " in 226750806d53Smrg *" $dir "*) ;; 226850806d53Smrg *) xrpath="$xrpath $dir" ;; 226950806d53Smrg esac 227050806d53Smrg fi 227150806d53Smrg deplibs="$deplib $deplibs" 227250806d53Smrg continue 227350806d53Smrg ;; 227450806d53Smrg *.la) lib="$deplib" ;; 227550806d53Smrg *.$libext) 227650806d53Smrg if test "$pass" = conv; then 227750806d53Smrg deplibs="$deplib $deplibs" 227850806d53Smrg continue 227950806d53Smrg fi 228050806d53Smrg case $linkmode in 228150806d53Smrg lib) 228250806d53Smrg valid_a_lib=no 228350806d53Smrg case $deplibs_check_method in 228450806d53Smrg match_pattern*) 228550806d53Smrg set dummy $deplibs_check_method 228650806d53Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 228750806d53Smrg if eval $echo \"$deplib\" 2>/dev/null \ 228850806d53Smrg | $SED 10q \ 228950806d53Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 229050806d53Smrg valid_a_lib=yes 229150806d53Smrg fi 229250806d53Smrg ;; 229350806d53Smrg pass_all) 229450806d53Smrg valid_a_lib=yes 229550806d53Smrg ;; 229650806d53Smrg esac 229750806d53Smrg if test "$valid_a_lib" != yes; then 229850806d53Smrg $echo 229950806d53Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 230050806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 230150806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 230250806d53Smrg $echo "*** shared version of the library, which you do not appear to have" 230350806d53Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 230450806d53Smrg $echo "*** that it is just a static archive that I should not used here." 230550806d53Smrg else 230650806d53Smrg $echo 230750806d53Smrg $echo "*** Warning: Linking the shared library $output against the" 230850806d53Smrg $echo "*** static library $deplib is not portable!" 230950806d53Smrg deplibs="$deplib $deplibs" 231050806d53Smrg fi 231150806d53Smrg continue 231250806d53Smrg ;; 231350806d53Smrg prog) 231450806d53Smrg if test "$pass" != link; then 231550806d53Smrg deplibs="$deplib $deplibs" 231650806d53Smrg else 231750806d53Smrg compile_deplibs="$deplib $compile_deplibs" 231850806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 231950806d53Smrg fi 232050806d53Smrg continue 232150806d53Smrg ;; 232250806d53Smrg esac # linkmode 232350806d53Smrg ;; # *.$libext 232450806d53Smrg *.lo | *.$objext) 232550806d53Smrg if test "$pass" = conv; then 232650806d53Smrg deplibs="$deplib $deplibs" 232750806d53Smrg elif test "$linkmode" = prog; then 232850806d53Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 232950806d53Smrg # If there is no dlopen support or we're linking statically, 233050806d53Smrg # we need to preload. 233150806d53Smrg newdlprefiles="$newdlprefiles $deplib" 233250806d53Smrg compile_deplibs="$deplib $compile_deplibs" 233350806d53Smrg finalize_deplibs="$deplib $finalize_deplibs" 233450806d53Smrg else 233550806d53Smrg newdlfiles="$newdlfiles $deplib" 233650806d53Smrg fi 233750806d53Smrg fi 233850806d53Smrg continue 233950806d53Smrg ;; 234050806d53Smrg %DEPLIBS%) 234150806d53Smrg alldeplibs=yes 234250806d53Smrg continue 234350806d53Smrg ;; 234450806d53Smrg esac # case $deplib 234550806d53Smrg if test "$found" = yes || test -f "$lib"; then : 234650806d53Smrg else 234750806d53Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 234850806d53Smrg exit $EXIT_FAILURE 234950806d53Smrg fi 235050806d53Smrg 235150806d53Smrg # Check to see that this really is a libtool archive. 235250806d53Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 235350806d53Smrg else 235450806d53Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 235550806d53Smrg exit $EXIT_FAILURE 235650806d53Smrg fi 235750806d53Smrg 235850806d53Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 235950806d53Smrg test "X$ladir" = "X$lib" && ladir="." 236050806d53Smrg 236150806d53Smrg dlname= 236250806d53Smrg dlopen= 236350806d53Smrg dlpreopen= 236450806d53Smrg libdir= 236550806d53Smrg library_names= 236650806d53Smrg old_library= 236750806d53Smrg # If the library was installed with an old release of libtool, 236850806d53Smrg # it will not redefine variables installed, or shouldnotlink 236950806d53Smrg installed=yes 237050806d53Smrg shouldnotlink=no 237150806d53Smrg avoidtemprpath= 237250806d53Smrg 237350806d53Smrg 237450806d53Smrg # Read the .la file 237550806d53Smrg case $lib in 237650806d53Smrg */* | *\\*) . $lib ;; 237750806d53Smrg *) . ./$lib ;; 237850806d53Smrg esac 237950806d53Smrg 238050806d53Smrg if test "$linkmode,$pass" = "lib,link" || 238150806d53Smrg test "$linkmode,$pass" = "prog,scan" || 238250806d53Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 238350806d53Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 238450806d53Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 238550806d53Smrg fi 238650806d53Smrg 238750806d53Smrg if test "$pass" = conv; then 238850806d53Smrg # Only check for convenience libraries 238950806d53Smrg deplibs="$lib $deplibs" 239050806d53Smrg if test -z "$libdir"; then 239150806d53Smrg if test -z "$old_library"; then 239250806d53Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 239350806d53Smrg exit $EXIT_FAILURE 239450806d53Smrg fi 239550806d53Smrg # It is a libtool convenience library, so add in its objects. 239650806d53Smrg convenience="$convenience $ladir/$objdir/$old_library" 239750806d53Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 239850806d53Smrg tmp_libs= 239950806d53Smrg for deplib in $dependency_libs; do 240050806d53Smrg deplibs="$deplib $deplibs" 240150806d53Smrg if test "X$duplicate_deps" = "Xyes" ; then 240250806d53Smrg case "$tmp_libs " in 240350806d53Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 240450806d53Smrg esac 240550806d53Smrg fi 240650806d53Smrg tmp_libs="$tmp_libs $deplib" 240750806d53Smrg done 240850806d53Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 240950806d53Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 241050806d53Smrg exit $EXIT_FAILURE 241150806d53Smrg fi 241250806d53Smrg continue 241350806d53Smrg fi # $pass = conv 241450806d53Smrg 241550806d53Smrg 241650806d53Smrg # Get the name of the library we link against. 241750806d53Smrg linklib= 241850806d53Smrg for l in $old_library $library_names; do 241950806d53Smrg linklib="$l" 242050806d53Smrg done 242150806d53Smrg if test -z "$linklib"; then 242250806d53Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 242350806d53Smrg exit $EXIT_FAILURE 242450806d53Smrg fi 242550806d53Smrg 242650806d53Smrg # This library was specified with -dlopen. 242750806d53Smrg if test "$pass" = dlopen; then 242850806d53Smrg if test -z "$libdir"; then 242950806d53Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 243050806d53Smrg exit $EXIT_FAILURE 243150806d53Smrg fi 243250806d53Smrg if test -z "$dlname" || 243350806d53Smrg test "$dlopen_support" != yes || 243450806d53Smrg test "$build_libtool_libs" = no; then 243550806d53Smrg # If there is no dlname, no dlopen support or we're linking 243650806d53Smrg # statically, we need to preload. We also need to preload any 243750806d53Smrg # dependent libraries so libltdl's deplib preloader doesn't 243850806d53Smrg # bomb out in the load deplibs phase. 243950806d53Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 244050806d53Smrg else 244150806d53Smrg newdlfiles="$newdlfiles $lib" 244250806d53Smrg fi 244350806d53Smrg continue 244450806d53Smrg fi # $pass = dlopen 244550806d53Smrg 244650806d53Smrg # We need an absolute path. 244750806d53Smrg case $ladir in 244850806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 244950806d53Smrg *) 245050806d53Smrg abs_ladir=`cd "$ladir" && pwd` 245150806d53Smrg if test -z "$abs_ladir"; then 245250806d53Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 245350806d53Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 245450806d53Smrg abs_ladir="$ladir" 245550806d53Smrg fi 245650806d53Smrg ;; 245750806d53Smrg esac 245850806d53Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 245950806d53Smrg 246050806d53Smrg # Find the relevant object directory and library name. 246150806d53Smrg if test "X$installed" = Xyes; then 246250806d53Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 246350806d53Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 246450806d53Smrg dir="$ladir" 246550806d53Smrg absdir="$abs_ladir" 246650806d53Smrg libdir="$abs_ladir" 246750806d53Smrg else 246850806d53Smrg dir="$libdir" 246950806d53Smrg absdir="$libdir" 247050806d53Smrg fi 247150806d53Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 247250806d53Smrg else 247350806d53Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 247450806d53Smrg dir="$ladir" 247550806d53Smrg absdir="$abs_ladir" 247650806d53Smrg # Remove this search path later 247750806d53Smrg notinst_path="$notinst_path $abs_ladir" 247850806d53Smrg else 247950806d53Smrg dir="$ladir/$objdir" 248050806d53Smrg absdir="$abs_ladir/$objdir" 248150806d53Smrg # Remove this search path later 248250806d53Smrg notinst_path="$notinst_path $abs_ladir" 248350806d53Smrg fi 248450806d53Smrg fi # $installed = yes 248550806d53Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 248650806d53Smrg 248750806d53Smrg # This library was specified with -dlpreopen. 248850806d53Smrg if test "$pass" = dlpreopen; then 248950806d53Smrg if test -z "$libdir"; then 249050806d53Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 249150806d53Smrg exit $EXIT_FAILURE 249250806d53Smrg fi 249350806d53Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 249450806d53Smrg # are required to link). 249550806d53Smrg if test -n "$old_library"; then 249650806d53Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 249750806d53Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 249850806d53Smrg elif test -n "$dlname"; then 249950806d53Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 250050806d53Smrg else 250150806d53Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 250250806d53Smrg fi 250350806d53Smrg fi # $pass = dlpreopen 250450806d53Smrg 250550806d53Smrg if test -z "$libdir"; then 250650806d53Smrg # Link the convenience library 250750806d53Smrg if test "$linkmode" = lib; then 250850806d53Smrg deplibs="$dir/$old_library $deplibs" 250950806d53Smrg elif test "$linkmode,$pass" = "prog,link"; then 251050806d53Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 251150806d53Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 251250806d53Smrg else 251350806d53Smrg deplibs="$lib $deplibs" # used for prog,scan pass 251450806d53Smrg fi 251550806d53Smrg continue 251650806d53Smrg fi 251750806d53Smrg 251850806d53Smrg 251950806d53Smrg if test "$linkmode" = prog && test "$pass" != link; then 252050806d53Smrg newlib_search_path="$newlib_search_path $ladir" 252150806d53Smrg deplibs="$lib $deplibs" 252250806d53Smrg 252350806d53Smrg linkalldeplibs=no 252450806d53Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 252550806d53Smrg test "$build_libtool_libs" = no; then 252650806d53Smrg linkalldeplibs=yes 252750806d53Smrg fi 252850806d53Smrg 252950806d53Smrg tmp_libs= 253050806d53Smrg for deplib in $dependency_libs; do 253150806d53Smrg case $deplib in 253250806d53Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 253350806d53Smrg esac 253450806d53Smrg # Need to link against all dependency_libs? 253550806d53Smrg if test "$linkalldeplibs" = yes; then 253650806d53Smrg deplibs="$deplib $deplibs" 253750806d53Smrg else 253850806d53Smrg # Need to hardcode shared library paths 253950806d53Smrg # or/and link against static libraries 254050806d53Smrg newdependency_libs="$deplib $newdependency_libs" 254150806d53Smrg fi 254250806d53Smrg if test "X$duplicate_deps" = "Xyes" ; then 254350806d53Smrg case "$tmp_libs " in 254450806d53Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 254550806d53Smrg esac 254650806d53Smrg fi 254750806d53Smrg tmp_libs="$tmp_libs $deplib" 254850806d53Smrg done # for deplib 254950806d53Smrg continue 255050806d53Smrg fi # $linkmode = prog... 255150806d53Smrg 255250806d53Smrg if test "$linkmode,$pass" = "prog,link"; then 255350806d53Smrg if test -n "$library_names" && 25547965d9acSmrg { { test "$prefer_static_libs" = no || 25557965d9acSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 25567965d9acSmrg test -z "$old_library"; }; then 255750806d53Smrg # We need to hardcode the library path 255850806d53Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 255950806d53Smrg # Make sure the rpath contains only unique directories. 256050806d53Smrg case "$temp_rpath " in 256150806d53Smrg *" $dir "*) ;; 256250806d53Smrg *" $absdir "*) ;; 256350806d53Smrg *) temp_rpath="$temp_rpath $absdir" ;; 256450806d53Smrg esac 256550806d53Smrg fi 256650806d53Smrg 256750806d53Smrg # Hardcode the library path. 256850806d53Smrg # Skip directories that are in the system default run-time 256950806d53Smrg # search path. 257050806d53Smrg case " $sys_lib_dlsearch_path " in 257150806d53Smrg *" $absdir "*) ;; 257250806d53Smrg *) 257350806d53Smrg case "$compile_rpath " in 257450806d53Smrg *" $absdir "*) ;; 257550806d53Smrg *) compile_rpath="$compile_rpath $absdir" 257650806d53Smrg esac 257750806d53Smrg ;; 257850806d53Smrg esac 257950806d53Smrg case " $sys_lib_dlsearch_path " in 258050806d53Smrg *" $libdir "*) ;; 258150806d53Smrg *) 258250806d53Smrg case "$finalize_rpath " in 258350806d53Smrg *" $libdir "*) ;; 258450806d53Smrg *) finalize_rpath="$finalize_rpath $libdir" 258550806d53Smrg esac 258650806d53Smrg ;; 258750806d53Smrg esac 258850806d53Smrg fi # $linkmode,$pass = prog,link... 258950806d53Smrg 259050806d53Smrg if test "$alldeplibs" = yes && 259150806d53Smrg { test "$deplibs_check_method" = pass_all || 259250806d53Smrg { test "$build_libtool_libs" = yes && 259350806d53Smrg test -n "$library_names"; }; }; then 259450806d53Smrg # We only need to search for static libraries 259550806d53Smrg continue 259650806d53Smrg fi 259750806d53Smrg fi 259850806d53Smrg 259950806d53Smrg link_static=no # Whether the deplib will be linked statically 260050806d53Smrg use_static_libs=$prefer_static_libs 260150806d53Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 260250806d53Smrg use_static_libs=no 260350806d53Smrg fi 260450806d53Smrg if test -n "$library_names" && 260550806d53Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 260650806d53Smrg if test "$installed" = no; then 260750806d53Smrg notinst_deplibs="$notinst_deplibs $lib" 260850806d53Smrg need_relink=yes 260950806d53Smrg fi 261050806d53Smrg # This is a shared library 261150806d53Smrg 261250806d53Smrg # Warn about portability, can't link against -module's on 261350806d53Smrg # some systems (darwin) 261450806d53Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 261550806d53Smrg $echo 261650806d53Smrg if test "$linkmode" = prog; then 261750806d53Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 261850806d53Smrg else 261950806d53Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 262050806d53Smrg fi 262150806d53Smrg $echo "*** $linklib is not portable!" 262250806d53Smrg fi 262350806d53Smrg if test "$linkmode" = lib && 262450806d53Smrg test "$hardcode_into_libs" = yes; then 262550806d53Smrg # Hardcode the library path. 262650806d53Smrg # Skip directories that are in the system default run-time 262750806d53Smrg # search path. 262850806d53Smrg case " $sys_lib_dlsearch_path " in 262950806d53Smrg *" $absdir "*) ;; 263050806d53Smrg *) 263150806d53Smrg case "$compile_rpath " in 263250806d53Smrg *" $absdir "*) ;; 263350806d53Smrg *) compile_rpath="$compile_rpath $absdir" 263450806d53Smrg esac 263550806d53Smrg ;; 263650806d53Smrg esac 263750806d53Smrg case " $sys_lib_dlsearch_path " in 263850806d53Smrg *" $libdir "*) ;; 263950806d53Smrg *) 264050806d53Smrg case "$finalize_rpath " in 264150806d53Smrg *" $libdir "*) ;; 264250806d53Smrg *) finalize_rpath="$finalize_rpath $libdir" 264350806d53Smrg esac 264450806d53Smrg ;; 264550806d53Smrg esac 264650806d53Smrg fi 264750806d53Smrg 264850806d53Smrg if test -n "$old_archive_from_expsyms_cmds"; then 264950806d53Smrg # figure out the soname 265050806d53Smrg set dummy $library_names 265150806d53Smrg realname="$2" 265250806d53Smrg shift; shift 265350806d53Smrg libname=`eval \\$echo \"$libname_spec\"` 265450806d53Smrg # use dlname if we got it. it's perfectly good, no? 265550806d53Smrg if test -n "$dlname"; then 265650806d53Smrg soname="$dlname" 265750806d53Smrg elif test -n "$soname_spec"; then 265850806d53Smrg # bleh windows 265950806d53Smrg case $host in 266050806d53Smrg *cygwin* | mingw*) 266150806d53Smrg major=`expr $current - $age` 266250806d53Smrg versuffix="-$major" 266350806d53Smrg ;; 266450806d53Smrg esac 266550806d53Smrg eval soname=\"$soname_spec\" 266650806d53Smrg else 266750806d53Smrg soname="$realname" 266850806d53Smrg fi 266950806d53Smrg 267050806d53Smrg # Make a new name for the extract_expsyms_cmds to use 267150806d53Smrg soroot="$soname" 267250806d53Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 267350806d53Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 267450806d53Smrg 267550806d53Smrg # If the library has no export list, then create one now 267650806d53Smrg if test -f "$output_objdir/$soname-def"; then : 267750806d53Smrg else 267850806d53Smrg $show "extracting exported symbol list from \`$soname'" 267950806d53Smrg save_ifs="$IFS"; IFS='~' 268050806d53Smrg cmds=$extract_expsyms_cmds 268150806d53Smrg for cmd in $cmds; do 268250806d53Smrg IFS="$save_ifs" 268350806d53Smrg eval cmd=\"$cmd\" 268450806d53Smrg $show "$cmd" 268550806d53Smrg $run eval "$cmd" || exit $? 268650806d53Smrg done 268750806d53Smrg IFS="$save_ifs" 268850806d53Smrg fi 268950806d53Smrg 269050806d53Smrg # Create $newlib 269150806d53Smrg if test -f "$output_objdir/$newlib"; then :; else 269250806d53Smrg $show "generating import library for \`$soname'" 269350806d53Smrg save_ifs="$IFS"; IFS='~' 269450806d53Smrg cmds=$old_archive_from_expsyms_cmds 269550806d53Smrg for cmd in $cmds; do 269650806d53Smrg IFS="$save_ifs" 269750806d53Smrg eval cmd=\"$cmd\" 269850806d53Smrg $show "$cmd" 269950806d53Smrg $run eval "$cmd" || exit $? 270050806d53Smrg done 270150806d53Smrg IFS="$save_ifs" 270250806d53Smrg fi 270350806d53Smrg # make sure the library variables are pointing to the new library 270450806d53Smrg dir=$output_objdir 270550806d53Smrg linklib=$newlib 270650806d53Smrg fi # test -n "$old_archive_from_expsyms_cmds" 270750806d53Smrg 270850806d53Smrg if test "$linkmode" = prog || test "$mode" != relink; then 270950806d53Smrg add_shlibpath= 271050806d53Smrg add_dir= 271150806d53Smrg add= 271250806d53Smrg lib_linked=yes 271350806d53Smrg case $hardcode_action in 271450806d53Smrg immediate | unsupported) 271550806d53Smrg if test "$hardcode_direct" = no; then 271650806d53Smrg add="$dir/$linklib" 271750806d53Smrg case $host in 271850806d53Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 271950806d53Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 272050806d53Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 272150806d53Smrg *-*-unixware7*) add_dir="-L$dir" ;; 272250806d53Smrg *-*-darwin* ) 272350806d53Smrg # if the lib is a module then we can not link against 272450806d53Smrg # it, someone is ignoring the new warnings I added 272550806d53Smrg if /usr/bin/file -L $add 2> /dev/null | 272650806d53Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 272750806d53Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 272850806d53Smrg if test -z "$old_library" ; then 272950806d53Smrg $echo 273050806d53Smrg $echo "** And there doesn't seem to be a static archive available" 273150806d53Smrg $echo "** The link will probably fail, sorry" 273250806d53Smrg else 273350806d53Smrg add="$dir/$old_library" 273450806d53Smrg fi 273550806d53Smrg fi 273650806d53Smrg esac 273750806d53Smrg elif test "$hardcode_minus_L" = no; then 273850806d53Smrg case $host in 273950806d53Smrg *-*-sunos*) add_shlibpath="$dir" ;; 274050806d53Smrg esac 274150806d53Smrg add_dir="-L$dir" 274250806d53Smrg add="-l$name" 274350806d53Smrg elif test "$hardcode_shlibpath_var" = no; then 274450806d53Smrg add_shlibpath="$dir" 274550806d53Smrg add="-l$name" 274650806d53Smrg else 274750806d53Smrg lib_linked=no 274850806d53Smrg fi 274950806d53Smrg ;; 275050806d53Smrg relink) 275150806d53Smrg if test "$hardcode_direct" = yes; then 275250806d53Smrg add="$dir/$linklib" 275350806d53Smrg elif test "$hardcode_minus_L" = yes; then 275450806d53Smrg add_dir="-L$dir" 275550806d53Smrg # Try looking first in the location we're being installed to. 275650806d53Smrg if test -n "$inst_prefix_dir"; then 275750806d53Smrg case $libdir in 275850806d53Smrg [\\/]*) 275950806d53Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 276050806d53Smrg ;; 276150806d53Smrg esac 276250806d53Smrg fi 276350806d53Smrg add="-l$name" 276450806d53Smrg elif test "$hardcode_shlibpath_var" = yes; then 276550806d53Smrg add_shlibpath="$dir" 276650806d53Smrg add="-l$name" 276750806d53Smrg else 276850806d53Smrg lib_linked=no 276950806d53Smrg fi 277050806d53Smrg ;; 277150806d53Smrg *) lib_linked=no ;; 277250806d53Smrg esac 277350806d53Smrg 277450806d53Smrg if test "$lib_linked" != yes; then 277550806d53Smrg $echo "$modename: configuration error: unsupported hardcode properties" 277650806d53Smrg exit $EXIT_FAILURE 277750806d53Smrg fi 277850806d53Smrg 277950806d53Smrg if test -n "$add_shlibpath"; then 278050806d53Smrg case :$compile_shlibpath: in 278150806d53Smrg *":$add_shlibpath:"*) ;; 278250806d53Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 278350806d53Smrg esac 278450806d53Smrg fi 278550806d53Smrg if test "$linkmode" = prog; then 278650806d53Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 278750806d53Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 278850806d53Smrg else 278950806d53Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 279050806d53Smrg test -n "$add" && deplibs="$add $deplibs" 279150806d53Smrg if test "$hardcode_direct" != yes && \ 279250806d53Smrg test "$hardcode_minus_L" != yes && \ 279350806d53Smrg test "$hardcode_shlibpath_var" = yes; then 279450806d53Smrg case :$finalize_shlibpath: in 279550806d53Smrg *":$libdir:"*) ;; 279650806d53Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 279750806d53Smrg esac 279850806d53Smrg fi 279950806d53Smrg fi 280050806d53Smrg fi 280150806d53Smrg 280250806d53Smrg if test "$linkmode" = prog || test "$mode" = relink; then 280350806d53Smrg add_shlibpath= 280450806d53Smrg add_dir= 280550806d53Smrg add= 280650806d53Smrg # Finalize command for both is simple: just hardcode it. 280750806d53Smrg if test "$hardcode_direct" = yes; then 280850806d53Smrg add="$libdir/$linklib" 280950806d53Smrg elif test "$hardcode_minus_L" = yes; then 281050806d53Smrg add_dir="-L$libdir" 281150806d53Smrg add="-l$name" 281250806d53Smrg elif test "$hardcode_shlibpath_var" = yes; then 281350806d53Smrg case :$finalize_shlibpath: in 281450806d53Smrg *":$libdir:"*) ;; 281550806d53Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 281650806d53Smrg esac 281750806d53Smrg add="-l$name" 281850806d53Smrg elif test "$hardcode_automatic" = yes; then 281950806d53Smrg if test -n "$inst_prefix_dir" && 282050806d53Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 282150806d53Smrg add="$inst_prefix_dir$libdir/$linklib" 282250806d53Smrg else 282350806d53Smrg add="$libdir/$linklib" 282450806d53Smrg fi 282550806d53Smrg else 282650806d53Smrg # We cannot seem to hardcode it, guess we'll fake it. 282750806d53Smrg add_dir="-L$libdir" 282850806d53Smrg # Try looking first in the location we're being installed to. 282950806d53Smrg if test -n "$inst_prefix_dir"; then 283050806d53Smrg case $libdir in 283150806d53Smrg [\\/]*) 283250806d53Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 283350806d53Smrg ;; 283450806d53Smrg esac 283550806d53Smrg fi 283650806d53Smrg add="-l$name" 283750806d53Smrg fi 283850806d53Smrg 283950806d53Smrg if test "$linkmode" = prog; then 284050806d53Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 284150806d53Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 284250806d53Smrg else 284350806d53Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 284450806d53Smrg test -n "$add" && deplibs="$add $deplibs" 284550806d53Smrg fi 284650806d53Smrg fi 284750806d53Smrg elif test "$linkmode" = prog; then 284850806d53Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 284950806d53Smrg # is not unsupported. This is valid on all known static and 285050806d53Smrg # shared platforms. 285150806d53Smrg if test "$hardcode_direct" != unsupported; then 285250806d53Smrg test -n "$old_library" && linklib="$old_library" 285350806d53Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 285450806d53Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 285550806d53Smrg else 285650806d53Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 285750806d53Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 285850806d53Smrg fi 285950806d53Smrg elif test "$build_libtool_libs" = yes; then 286050806d53Smrg # Not a shared library 286150806d53Smrg if test "$deplibs_check_method" != pass_all; then 286250806d53Smrg # We're trying link a shared library against a static one 286350806d53Smrg # but the system doesn't support it. 286450806d53Smrg 286550806d53Smrg # Just print a warning and add the library to dependency_libs so 286650806d53Smrg # that the program can be linked against the static library. 286750806d53Smrg $echo 286850806d53Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 286950806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 287050806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 287150806d53Smrg $echo "*** shared version of the library, which you do not appear to have." 287250806d53Smrg if test "$module" = yes; then 287350806d53Smrg $echo "*** But as you try to build a module library, libtool will still create " 287450806d53Smrg $echo "*** a static module, that should work as long as the dlopening application" 287550806d53Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 287650806d53Smrg if test -z "$global_symbol_pipe"; then 287750806d53Smrg $echo 287850806d53Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 287950806d53Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 288050806d53Smrg $echo "*** not find such a program. So, this module is probably useless." 288150806d53Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 288250806d53Smrg fi 288350806d53Smrg if test "$build_old_libs" = no; then 288450806d53Smrg build_libtool_libs=module 288550806d53Smrg build_old_libs=yes 288650806d53Smrg else 288750806d53Smrg build_libtool_libs=no 288850806d53Smrg fi 288950806d53Smrg fi 289050806d53Smrg else 289150806d53Smrg deplibs="$dir/$old_library $deplibs" 289250806d53Smrg link_static=yes 289350806d53Smrg fi 289450806d53Smrg fi # link shared/static library? 289550806d53Smrg 289650806d53Smrg if test "$linkmode" = lib; then 289750806d53Smrg if test -n "$dependency_libs" && 289850806d53Smrg { test "$hardcode_into_libs" != yes || 289950806d53Smrg test "$build_old_libs" = yes || 290050806d53Smrg test "$link_static" = yes; }; then 290150806d53Smrg # Extract -R from dependency_libs 290250806d53Smrg temp_deplibs= 290350806d53Smrg for libdir in $dependency_libs; do 290450806d53Smrg case $libdir in 290550806d53Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 290650806d53Smrg case " $xrpath " in 290750806d53Smrg *" $temp_xrpath "*) ;; 290850806d53Smrg *) xrpath="$xrpath $temp_xrpath";; 290950806d53Smrg esac;; 291050806d53Smrg *) temp_deplibs="$temp_deplibs $libdir";; 291150806d53Smrg esac 291250806d53Smrg done 291350806d53Smrg dependency_libs="$temp_deplibs" 291450806d53Smrg fi 291550806d53Smrg 291650806d53Smrg newlib_search_path="$newlib_search_path $absdir" 291750806d53Smrg # Link against this library 291850806d53Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 291950806d53Smrg # ... and its dependency_libs 292050806d53Smrg tmp_libs= 292150806d53Smrg for deplib in $dependency_libs; do 292250806d53Smrg newdependency_libs="$deplib $newdependency_libs" 292350806d53Smrg if test "X$duplicate_deps" = "Xyes" ; then 292450806d53Smrg case "$tmp_libs " in 292550806d53Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 292650806d53Smrg esac 292750806d53Smrg fi 292850806d53Smrg tmp_libs="$tmp_libs $deplib" 292950806d53Smrg done 293050806d53Smrg 293150806d53Smrg if test "$link_all_deplibs" != no; then 293250806d53Smrg # Add the search paths of all dependency libraries 293350806d53Smrg for deplib in $dependency_libs; do 293450806d53Smrg case $deplib in 293550806d53Smrg -L*) path="$deplib" ;; 293650806d53Smrg *.la) 293750806d53Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 293850806d53Smrg test "X$dir" = "X$deplib" && dir="." 293950806d53Smrg # We need an absolute path. 294050806d53Smrg case $dir in 294150806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 294250806d53Smrg *) 294350806d53Smrg absdir=`cd "$dir" && pwd` 294450806d53Smrg if test -z "$absdir"; then 294550806d53Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 294650806d53Smrg absdir="$dir" 294750806d53Smrg fi 294850806d53Smrg ;; 294950806d53Smrg esac 295050806d53Smrg if grep "^installed=no" $deplib > /dev/null; then 295150806d53Smrg path="$absdir/$objdir" 295250806d53Smrg else 295350806d53Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 295450806d53Smrg if test -z "$libdir"; then 295550806d53Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 295650806d53Smrg exit $EXIT_FAILURE 295750806d53Smrg fi 295850806d53Smrg if test "$absdir" != "$libdir"; then 295950806d53Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 296050806d53Smrg fi 296150806d53Smrg path="$absdir" 296250806d53Smrg fi 296350806d53Smrg depdepl= 296450806d53Smrg case $host in 296550806d53Smrg *-*-darwin*) 296650806d53Smrg # we do not want to link against static libs, 296750806d53Smrg # but need to link against shared 296850806d53Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 29697965d9acSmrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 297050806d53Smrg if test -n "$deplibrary_names" ; then 297150806d53Smrg for tmp in $deplibrary_names ; do 297250806d53Smrg depdepl=$tmp 297350806d53Smrg done 29747965d9acSmrg if test -f "$deplibdir/$depdepl" ; then 29757965d9acSmrg depdepl="$deplibdir/$depdepl" 29767965d9acSmrg elif test -f "$path/$depdepl" ; then 297750806d53Smrg depdepl="$path/$depdepl" 29787965d9acSmrg else 29797965d9acSmrg # Can't find it, oh well... 29807965d9acSmrg depdepl= 298150806d53Smrg fi 298250806d53Smrg # do not add paths which are already there 298350806d53Smrg case " $newlib_search_path " in 298450806d53Smrg *" $path "*) ;; 298550806d53Smrg *) newlib_search_path="$newlib_search_path $path";; 298650806d53Smrg esac 298750806d53Smrg fi 298850806d53Smrg path="" 298950806d53Smrg ;; 299050806d53Smrg *) 299150806d53Smrg path="-L$path" 299250806d53Smrg ;; 299350806d53Smrg esac 299450806d53Smrg ;; 299550806d53Smrg -l*) 299650806d53Smrg case $host in 299750806d53Smrg *-*-darwin*) 299850806d53Smrg # Again, we only want to link against shared libraries 299950806d53Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 300050806d53Smrg for tmp in $newlib_search_path ; do 300150806d53Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 300250806d53Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 300350806d53Smrg break 300450806d53Smrg fi 300550806d53Smrg done 300650806d53Smrg path="" 300750806d53Smrg ;; 300850806d53Smrg *) continue ;; 300950806d53Smrg esac 301050806d53Smrg ;; 301150806d53Smrg *) continue ;; 301250806d53Smrg esac 301350806d53Smrg case " $deplibs " in 301450806d53Smrg *" $path "*) ;; 301550806d53Smrg *) deplibs="$path $deplibs" ;; 301650806d53Smrg esac 301750806d53Smrg case " $deplibs " in 301850806d53Smrg *" $depdepl "*) ;; 301950806d53Smrg *) deplibs="$depdepl $deplibs" ;; 302050806d53Smrg esac 302150806d53Smrg done 302250806d53Smrg fi # link_all_deplibs != no 302350806d53Smrg fi # linkmode = lib 302450806d53Smrg done # for deplib in $libs 302550806d53Smrg dependency_libs="$newdependency_libs" 302650806d53Smrg if test "$pass" = dlpreopen; then 302750806d53Smrg # Link the dlpreopened libraries before other libraries 302850806d53Smrg for deplib in $save_deplibs; do 302950806d53Smrg deplibs="$deplib $deplibs" 303050806d53Smrg done 303150806d53Smrg fi 303250806d53Smrg if test "$pass" != dlopen; then 303350806d53Smrg if test "$pass" != conv; then 303450806d53Smrg # Make sure lib_search_path contains only unique directories. 303550806d53Smrg lib_search_path= 303650806d53Smrg for dir in $newlib_search_path; do 303750806d53Smrg case "$lib_search_path " in 303850806d53Smrg *" $dir "*) ;; 303950806d53Smrg *) lib_search_path="$lib_search_path $dir" ;; 304050806d53Smrg esac 304150806d53Smrg done 304250806d53Smrg newlib_search_path= 304350806d53Smrg fi 304450806d53Smrg 304550806d53Smrg if test "$linkmode,$pass" != "prog,link"; then 304650806d53Smrg vars="deplibs" 304750806d53Smrg else 304850806d53Smrg vars="compile_deplibs finalize_deplibs" 304950806d53Smrg fi 305050806d53Smrg for var in $vars dependency_libs; do 305150806d53Smrg # Add libraries to $var in reverse order 305250806d53Smrg eval tmp_libs=\"\$$var\" 305350806d53Smrg new_libs= 305450806d53Smrg for deplib in $tmp_libs; do 305550806d53Smrg # FIXME: Pedantically, this is the right thing to do, so 305650806d53Smrg # that some nasty dependency loop isn't accidentally 305750806d53Smrg # broken: 305850806d53Smrg #new_libs="$deplib $new_libs" 305950806d53Smrg # Pragmatically, this seems to cause very few problems in 306050806d53Smrg # practice: 306150806d53Smrg case $deplib in 306250806d53Smrg -L*) new_libs="$deplib $new_libs" ;; 306350806d53Smrg -R*) ;; 306450806d53Smrg *) 306550806d53Smrg # And here is the reason: when a library appears more 306650806d53Smrg # than once as an explicit dependence of a library, or 306750806d53Smrg # is implicitly linked in more than once by the 306850806d53Smrg # compiler, it is considered special, and multiple 306950806d53Smrg # occurrences thereof are not removed. Compare this 307050806d53Smrg # with having the same library being listed as a 307150806d53Smrg # dependency of multiple other libraries: in this case, 307250806d53Smrg # we know (pedantically, we assume) the library does not 307350806d53Smrg # need to be listed more than once, so we keep only the 307450806d53Smrg # last copy. This is not always right, but it is rare 307550806d53Smrg # enough that we require users that really mean to play 307650806d53Smrg # such unportable linking tricks to link the library 307750806d53Smrg # using -Wl,-lname, so that libtool does not consider it 307850806d53Smrg # for duplicate removal. 307950806d53Smrg case " $specialdeplibs " in 308050806d53Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 308150806d53Smrg *) 308250806d53Smrg case " $new_libs " in 308350806d53Smrg *" $deplib "*) ;; 308450806d53Smrg *) new_libs="$deplib $new_libs" ;; 308550806d53Smrg esac 308650806d53Smrg ;; 308750806d53Smrg esac 308850806d53Smrg ;; 308950806d53Smrg esac 309050806d53Smrg done 309150806d53Smrg tmp_libs= 309250806d53Smrg for deplib in $new_libs; do 309350806d53Smrg case $deplib in 309450806d53Smrg -L*) 309550806d53Smrg case " $tmp_libs " in 309650806d53Smrg *" $deplib "*) ;; 309750806d53Smrg *) tmp_libs="$tmp_libs $deplib" ;; 309850806d53Smrg esac 309950806d53Smrg ;; 310050806d53Smrg *) tmp_libs="$tmp_libs $deplib" ;; 310150806d53Smrg esac 310250806d53Smrg done 310350806d53Smrg eval $var=\"$tmp_libs\" 310450806d53Smrg done # for var 310550806d53Smrg fi 310650806d53Smrg # Last step: remove runtime libs from dependency_libs 310750806d53Smrg # (they stay in deplibs) 310850806d53Smrg tmp_libs= 310950806d53Smrg for i in $dependency_libs ; do 311050806d53Smrg case " $predeps $postdeps $compiler_lib_search_path " in 311150806d53Smrg *" $i "*) 311250806d53Smrg i="" 311350806d53Smrg ;; 311450806d53Smrg esac 311550806d53Smrg if test -n "$i" ; then 311650806d53Smrg tmp_libs="$tmp_libs $i" 311750806d53Smrg fi 311850806d53Smrg done 311950806d53Smrg dependency_libs=$tmp_libs 312050806d53Smrg done # for pass 312150806d53Smrg if test "$linkmode" = prog; then 312250806d53Smrg dlfiles="$newdlfiles" 312350806d53Smrg dlprefiles="$newdlprefiles" 312450806d53Smrg fi 312550806d53Smrg 312650806d53Smrg case $linkmode in 312750806d53Smrg oldlib) 31287965d9acSmrg case " $deplibs" in 31297965d9acSmrg *\ -l* | *\ -L*) 31307965d9acSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 31317965d9acSmrg esac 313250806d53Smrg 313350806d53Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 313450806d53Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 313550806d53Smrg fi 313650806d53Smrg 313750806d53Smrg if test -n "$rpath"; then 313850806d53Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 313950806d53Smrg fi 314050806d53Smrg 314150806d53Smrg if test -n "$xrpath"; then 314250806d53Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 314350806d53Smrg fi 314450806d53Smrg 314550806d53Smrg if test -n "$vinfo"; then 314650806d53Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 314750806d53Smrg fi 314850806d53Smrg 314950806d53Smrg if test -n "$release"; then 315050806d53Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 315150806d53Smrg fi 315250806d53Smrg 315350806d53Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 315450806d53Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 315550806d53Smrg fi 315650806d53Smrg 315750806d53Smrg # Now set the variables for building old libraries. 315850806d53Smrg build_libtool_libs=no 315950806d53Smrg oldlibs="$output" 316050806d53Smrg objs="$objs$old_deplibs" 316150806d53Smrg ;; 316250806d53Smrg 316350806d53Smrg lib) 316450806d53Smrg # Make sure we only generate libraries of the form `libNAME.la'. 316550806d53Smrg case $outputname in 316650806d53Smrg lib*) 316750806d53Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 316850806d53Smrg eval shared_ext=\"$shrext_cmds\" 316950806d53Smrg eval libname=\"$libname_spec\" 317050806d53Smrg ;; 317150806d53Smrg *) 317250806d53Smrg if test "$module" = no; then 317350806d53Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 317450806d53Smrg $echo "$help" 1>&2 317550806d53Smrg exit $EXIT_FAILURE 317650806d53Smrg fi 317750806d53Smrg if test "$need_lib_prefix" != no; then 317850806d53Smrg # Add the "lib" prefix for modules if required 317950806d53Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 318050806d53Smrg eval shared_ext=\"$shrext_cmds\" 318150806d53Smrg eval libname=\"$libname_spec\" 318250806d53Smrg else 318350806d53Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 318450806d53Smrg fi 318550806d53Smrg ;; 318650806d53Smrg esac 318750806d53Smrg 318850806d53Smrg if test -n "$objs"; then 318950806d53Smrg if test "$deplibs_check_method" != pass_all; then 319050806d53Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 319150806d53Smrg exit $EXIT_FAILURE 319250806d53Smrg else 319350806d53Smrg $echo 319450806d53Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 319550806d53Smrg $echo "*** objects $objs is not portable!" 319650806d53Smrg libobjs="$libobjs $objs" 319750806d53Smrg fi 319850806d53Smrg fi 319950806d53Smrg 320050806d53Smrg if test "$dlself" != no; then 320150806d53Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 320250806d53Smrg fi 320350806d53Smrg 320450806d53Smrg set dummy $rpath 320550806d53Smrg if test "$#" -gt 2; then 320650806d53Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 320750806d53Smrg fi 320850806d53Smrg install_libdir="$2" 320950806d53Smrg 321050806d53Smrg oldlibs= 321150806d53Smrg if test -z "$rpath"; then 321250806d53Smrg if test "$build_libtool_libs" = yes; then 321350806d53Smrg # Building a libtool convenience library. 321450806d53Smrg # Some compilers have problems with a `.al' extension so 321550806d53Smrg # convenience libraries should have the same extension an 321650806d53Smrg # archive normally would. 321750806d53Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 321850806d53Smrg build_libtool_libs=convenience 321950806d53Smrg build_old_libs=yes 322050806d53Smrg fi 322150806d53Smrg 322250806d53Smrg if test -n "$vinfo"; then 322350806d53Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 322450806d53Smrg fi 322550806d53Smrg 322650806d53Smrg if test -n "$release"; then 322750806d53Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 322850806d53Smrg fi 322950806d53Smrg else 323050806d53Smrg 323150806d53Smrg # Parse the version information argument. 323250806d53Smrg save_ifs="$IFS"; IFS=':' 323350806d53Smrg set dummy $vinfo 0 0 0 323450806d53Smrg IFS="$save_ifs" 323550806d53Smrg 323650806d53Smrg if test -n "$8"; then 323750806d53Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 323850806d53Smrg $echo "$help" 1>&2 323950806d53Smrg exit $EXIT_FAILURE 324050806d53Smrg fi 324150806d53Smrg 324250806d53Smrg # convert absolute version numbers to libtool ages 324350806d53Smrg # this retains compatibility with .la files and attempts 324450806d53Smrg # to make the code below a bit more comprehensible 324550806d53Smrg 324650806d53Smrg case $vinfo_number in 324750806d53Smrg yes) 324850806d53Smrg number_major="$2" 324950806d53Smrg number_minor="$3" 325050806d53Smrg number_revision="$4" 325150806d53Smrg # 325250806d53Smrg # There are really only two kinds -- those that 325350806d53Smrg # use the current revision as the major version 325450806d53Smrg # and those that subtract age and use age as 325550806d53Smrg # a minor version. But, then there is irix 325650806d53Smrg # which has an extra 1 added just for fun 325750806d53Smrg # 325850806d53Smrg case $version_type in 325950806d53Smrg darwin|linux|osf|windows|none) 326050806d53Smrg current=`expr $number_major + $number_minor` 326150806d53Smrg age="$number_minor" 326250806d53Smrg revision="$number_revision" 326350806d53Smrg ;; 326450806d53Smrg freebsd-aout|freebsd-elf|sunos) 326550806d53Smrg current="$number_major" 326650806d53Smrg revision="$number_minor" 326750806d53Smrg age="0" 326850806d53Smrg ;; 326950806d53Smrg irix|nonstopux) 32707965d9acSmrg current=`expr $number_major + $number_minor` 327150806d53Smrg age="$number_minor" 327250806d53Smrg revision="$number_minor" 32737965d9acSmrg lt_irix_increment=no 32747965d9acSmrg ;; 32757965d9acSmrg *) 32767965d9acSmrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 32777965d9acSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 32787965d9acSmrg exit $EXIT_FAILURE 327950806d53Smrg ;; 328050806d53Smrg esac 328150806d53Smrg ;; 328250806d53Smrg no) 328350806d53Smrg current="$2" 328450806d53Smrg revision="$3" 328550806d53Smrg age="$4" 328650806d53Smrg ;; 328750806d53Smrg esac 328850806d53Smrg 328950806d53Smrg # Check that each of the things are valid numbers. 329050806d53Smrg case $current in 329150806d53Smrg 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]) ;; 329250806d53Smrg *) 329350806d53Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 329450806d53Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 329550806d53Smrg exit $EXIT_FAILURE 329650806d53Smrg ;; 329750806d53Smrg esac 329850806d53Smrg 329950806d53Smrg case $revision in 330050806d53Smrg 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]) ;; 330150806d53Smrg *) 330250806d53Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 330350806d53Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 330450806d53Smrg exit $EXIT_FAILURE 330550806d53Smrg ;; 330650806d53Smrg esac 330750806d53Smrg 330850806d53Smrg case $age in 330950806d53Smrg 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]) ;; 331050806d53Smrg *) 331150806d53Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 331250806d53Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 331350806d53Smrg exit $EXIT_FAILURE 331450806d53Smrg ;; 331550806d53Smrg esac 331650806d53Smrg 331750806d53Smrg if test "$age" -gt "$current"; then 331850806d53Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 331950806d53Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 332050806d53Smrg exit $EXIT_FAILURE 332150806d53Smrg fi 332250806d53Smrg 332350806d53Smrg # Calculate the version variables. 332450806d53Smrg major= 332550806d53Smrg versuffix= 332650806d53Smrg verstring= 332750806d53Smrg case $version_type in 332850806d53Smrg none) ;; 332950806d53Smrg 333050806d53Smrg darwin) 333150806d53Smrg # Like Linux, but with the current version available in 333250806d53Smrg # verstring for coding it into the library header 333350806d53Smrg major=.`expr $current - $age` 333450806d53Smrg versuffix="$major.$age.$revision" 333550806d53Smrg # Darwin ld doesn't like 0 for these options... 333650806d53Smrg minor_current=`expr $current + 1` 33377965d9acSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 33387965d9acSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 333950806d53Smrg ;; 334050806d53Smrg 334150806d53Smrg freebsd-aout) 334250806d53Smrg major=".$current" 334350806d53Smrg versuffix=".$current.$revision"; 334450806d53Smrg ;; 334550806d53Smrg 334650806d53Smrg freebsd-elf) 334750806d53Smrg major=".$current" 334850806d53Smrg versuffix=".$current"; 334950806d53Smrg ;; 335050806d53Smrg 335150806d53Smrg irix | nonstopux) 33527965d9acSmrg if test "X$lt_irix_increment" = "Xno"; then 33537965d9acSmrg major=`expr $current - $age` 33547965d9acSmrg else 33557965d9acSmrg major=`expr $current - $age + 1` 33567965d9acSmrg fi 335750806d53Smrg case $version_type in 335850806d53Smrg nonstopux) verstring_prefix=nonstopux ;; 335950806d53Smrg *) verstring_prefix=sgi ;; 336050806d53Smrg esac 336150806d53Smrg verstring="$verstring_prefix$major.$revision" 336250806d53Smrg 336350806d53Smrg # Add in all the interfaces that we are compatible with. 336450806d53Smrg loop=$revision 336550806d53Smrg while test "$loop" -ne 0; do 336650806d53Smrg iface=`expr $revision - $loop` 336750806d53Smrg loop=`expr $loop - 1` 336850806d53Smrg verstring="$verstring_prefix$major.$iface:$verstring" 336950806d53Smrg done 337050806d53Smrg 337150806d53Smrg # Before this point, $major must not contain `.'. 337250806d53Smrg major=.$major 337350806d53Smrg versuffix="$major.$revision" 337450806d53Smrg ;; 337550806d53Smrg 337650806d53Smrg linux) 337750806d53Smrg major=.`expr $current - $age` 337850806d53Smrg versuffix="$major.$age.$revision" 337950806d53Smrg ;; 338050806d53Smrg 338150806d53Smrg osf) 338250806d53Smrg major=.`expr $current - $age` 338350806d53Smrg versuffix=".$current.$age.$revision" 338450806d53Smrg verstring="$current.$age.$revision" 338550806d53Smrg 338650806d53Smrg # Add in all the interfaces that we are compatible with. 338750806d53Smrg loop=$age 338850806d53Smrg while test "$loop" -ne 0; do 338950806d53Smrg iface=`expr $current - $loop` 339050806d53Smrg loop=`expr $loop - 1` 339150806d53Smrg verstring="$verstring:${iface}.0" 339250806d53Smrg done 339350806d53Smrg 339450806d53Smrg # Make executables depend on our current version. 339550806d53Smrg verstring="$verstring:${current}.0" 339650806d53Smrg ;; 339750806d53Smrg 339850806d53Smrg sunos) 339950806d53Smrg major=".$current" 340050806d53Smrg versuffix=".$current.$revision" 340150806d53Smrg ;; 340250806d53Smrg 340350806d53Smrg windows) 340450806d53Smrg # Use '-' rather than '.', since we only want one 340550806d53Smrg # extension on DOS 8.3 filesystems. 340650806d53Smrg major=`expr $current - $age` 340750806d53Smrg versuffix="-$major" 340850806d53Smrg ;; 340950806d53Smrg 341050806d53Smrg *) 341150806d53Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 341250806d53Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 341350806d53Smrg exit $EXIT_FAILURE 341450806d53Smrg ;; 341550806d53Smrg esac 341650806d53Smrg 341750806d53Smrg # Clear the version info if we defaulted, and they specified a release. 341850806d53Smrg if test -z "$vinfo" && test -n "$release"; then 341950806d53Smrg major= 342050806d53Smrg case $version_type in 342150806d53Smrg darwin) 342250806d53Smrg # we can't check for "0.0" in archive_cmds due to quoting 342350806d53Smrg # problems, so we reset it completely 342450806d53Smrg verstring= 342550806d53Smrg ;; 342650806d53Smrg *) 342750806d53Smrg verstring="0.0" 342850806d53Smrg ;; 342950806d53Smrg esac 343050806d53Smrg if test "$need_version" = no; then 343150806d53Smrg versuffix= 343250806d53Smrg else 343350806d53Smrg versuffix=".0.0" 343450806d53Smrg fi 343550806d53Smrg fi 343650806d53Smrg 343750806d53Smrg # Remove version info from name if versioning should be avoided 343850806d53Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 343950806d53Smrg major= 344050806d53Smrg versuffix= 344150806d53Smrg verstring="" 344250806d53Smrg fi 344350806d53Smrg 344450806d53Smrg # Check to see if the archive will have undefined symbols. 344550806d53Smrg if test "$allow_undefined" = yes; then 344650806d53Smrg if test "$allow_undefined_flag" = unsupported; then 344750806d53Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 344850806d53Smrg build_libtool_libs=no 344950806d53Smrg build_old_libs=yes 345050806d53Smrg fi 345150806d53Smrg else 345250806d53Smrg # Don't allow undefined symbols. 345350806d53Smrg allow_undefined_flag="$no_undefined_flag" 345450806d53Smrg fi 345550806d53Smrg fi 345650806d53Smrg 345750806d53Smrg if test "$mode" != relink; then 345850806d53Smrg # Remove our outputs, but don't remove object files since they 345950806d53Smrg # may have been created when compiling PIC objects. 346050806d53Smrg removelist= 346150806d53Smrg tempremovelist=`$echo "$output_objdir/*"` 346250806d53Smrg for p in $tempremovelist; do 346350806d53Smrg case $p in 346450806d53Smrg *.$objext) 346550806d53Smrg ;; 346650806d53Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 346750806d53Smrg if test "X$precious_files_regex" != "X"; then 346850806d53Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 346950806d53Smrg then 347050806d53Smrg continue 347150806d53Smrg fi 347250806d53Smrg fi 347350806d53Smrg removelist="$removelist $p" 347450806d53Smrg ;; 347550806d53Smrg *) ;; 347650806d53Smrg esac 347750806d53Smrg done 347850806d53Smrg if test -n "$removelist"; then 347950806d53Smrg $show "${rm}r $removelist" 348050806d53Smrg $run ${rm}r $removelist 348150806d53Smrg fi 348250806d53Smrg fi 348350806d53Smrg 348450806d53Smrg # Now set the variables for building old libraries. 348550806d53Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 348650806d53Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 348750806d53Smrg 348850806d53Smrg # Transform .lo files to .o files. 348950806d53Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 349050806d53Smrg fi 349150806d53Smrg 349250806d53Smrg # Eliminate all temporary directories. 34937965d9acSmrg #for path in $notinst_path; do 34947965d9acSmrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 34957965d9acSmrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 34967965d9acSmrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 34977965d9acSmrg #done 349850806d53Smrg 349950806d53Smrg if test -n "$xrpath"; then 350050806d53Smrg # If the user specified any rpath flags, then add them. 350150806d53Smrg temp_xrpath= 350250806d53Smrg for libdir in $xrpath; do 350350806d53Smrg temp_xrpath="$temp_xrpath -R$libdir" 350450806d53Smrg case "$finalize_rpath " in 350550806d53Smrg *" $libdir "*) ;; 350650806d53Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 350750806d53Smrg esac 350850806d53Smrg done 350950806d53Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 351050806d53Smrg dependency_libs="$temp_xrpath $dependency_libs" 351150806d53Smrg fi 351250806d53Smrg fi 351350806d53Smrg 351450806d53Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 351550806d53Smrg old_dlfiles="$dlfiles" 351650806d53Smrg dlfiles= 351750806d53Smrg for lib in $old_dlfiles; do 351850806d53Smrg case " $dlprefiles $dlfiles " in 351950806d53Smrg *" $lib "*) ;; 352050806d53Smrg *) dlfiles="$dlfiles $lib" ;; 352150806d53Smrg esac 352250806d53Smrg done 352350806d53Smrg 352450806d53Smrg # Make sure dlprefiles contains only unique files 352550806d53Smrg old_dlprefiles="$dlprefiles" 352650806d53Smrg dlprefiles= 352750806d53Smrg for lib in $old_dlprefiles; do 352850806d53Smrg case "$dlprefiles " in 352950806d53Smrg *" $lib "*) ;; 353050806d53Smrg *) dlprefiles="$dlprefiles $lib" ;; 353150806d53Smrg esac 353250806d53Smrg done 353350806d53Smrg 353450806d53Smrg if test "$build_libtool_libs" = yes; then 353550806d53Smrg if test -n "$rpath"; then 353650806d53Smrg case $host in 353750806d53Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 353850806d53Smrg # these systems don't actually have a c library (as such)! 353950806d53Smrg ;; 354050806d53Smrg *-*-rhapsody* | *-*-darwin1.[012]) 354150806d53Smrg # Rhapsody C library is in the System framework 354250806d53Smrg deplibs="$deplibs -framework System" 354350806d53Smrg ;; 354450806d53Smrg *-*-netbsd*) 354550806d53Smrg # Don't link with libc until the a.out ld.so is fixed. 354650806d53Smrg ;; 354750806d53Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 354850806d53Smrg # Do not include libc due to us having libc/libc_r. 354950806d53Smrg ;; 355050806d53Smrg *-*-sco3.2v5* | *-*-sco5v6*) 355150806d53Smrg # Causes problems with __ctype 355250806d53Smrg ;; 355350806d53Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 355450806d53Smrg # Compiler inserts libc in the correct place for threads to work 355550806d53Smrg ;; 355650806d53Smrg *) 355750806d53Smrg # Add libc to deplibs on all other systems if necessary. 355850806d53Smrg if test "$build_libtool_need_lc" = "yes"; then 355950806d53Smrg deplibs="$deplibs -lc" 356050806d53Smrg fi 356150806d53Smrg ;; 356250806d53Smrg esac 356350806d53Smrg fi 356450806d53Smrg 356550806d53Smrg # Transform deplibs into only deplibs that can be linked in shared. 356650806d53Smrg name_save=$name 356750806d53Smrg libname_save=$libname 356850806d53Smrg release_save=$release 356950806d53Smrg versuffix_save=$versuffix 357050806d53Smrg major_save=$major 357150806d53Smrg # I'm not sure if I'm treating the release correctly. I think 357250806d53Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 357350806d53Smrg # add it in twice. Is that correct? 357450806d53Smrg release="" 357550806d53Smrg versuffix="" 357650806d53Smrg major="" 357750806d53Smrg newdeplibs= 357850806d53Smrg droppeddeps=no 357950806d53Smrg case $deplibs_check_method in 358050806d53Smrg pass_all) 358150806d53Smrg # Don't check for shared/static. Everything works. 358250806d53Smrg # This might be a little naive. We might want to check 358350806d53Smrg # whether the library exists or not. But this is on 358450806d53Smrg # osf3 & osf4 and I'm not really sure... Just 358550806d53Smrg # implementing what was already the behavior. 358650806d53Smrg newdeplibs=$deplibs 358750806d53Smrg ;; 358850806d53Smrg test_compile) 358950806d53Smrg # This code stresses the "libraries are programs" paradigm to its 359050806d53Smrg # limits. Maybe even breaks it. We compile a program, linking it 359150806d53Smrg # against the deplibs as a proxy for the library. Then we can check 359250806d53Smrg # whether they linked in statically or dynamically with ldd. 359350806d53Smrg $rm conftest.c 359450806d53Smrg cat > conftest.c <<EOF 359550806d53Smrg int main() { return 0; } 359650806d53SmrgEOF 359750806d53Smrg $rm conftest 35987965d9acSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 359950806d53Smrg ldd_output=`ldd conftest` 360050806d53Smrg for i in $deplibs; do 360150806d53Smrg name=`expr $i : '-l\(.*\)'` 360250806d53Smrg # If $name is empty we are operating on a -L argument. 360350806d53Smrg if test "$name" != "" && test "$name" != "0"; then 360450806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 360550806d53Smrg case " $predeps $postdeps " in 360650806d53Smrg *" $i "*) 360750806d53Smrg newdeplibs="$newdeplibs $i" 360850806d53Smrg i="" 360950806d53Smrg ;; 361050806d53Smrg esac 361150806d53Smrg fi 361250806d53Smrg if test -n "$i" ; then 361350806d53Smrg libname=`eval \\$echo \"$libname_spec\"` 361450806d53Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 361550806d53Smrg set dummy $deplib_matches 361650806d53Smrg deplib_match=$2 361750806d53Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 361850806d53Smrg newdeplibs="$newdeplibs $i" 361950806d53Smrg else 362050806d53Smrg droppeddeps=yes 362150806d53Smrg $echo 362250806d53Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 362350806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 362450806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 362550806d53Smrg $echo "*** shared version of the library, which I believe you do not have" 362650806d53Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 362750806d53Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 362850806d53Smrg fi 362950806d53Smrg fi 363050806d53Smrg else 363150806d53Smrg newdeplibs="$newdeplibs $i" 363250806d53Smrg fi 363350806d53Smrg done 363450806d53Smrg else 363550806d53Smrg # Error occurred in the first compile. Let's try to salvage 363650806d53Smrg # the situation: Compile a separate program for each library. 363750806d53Smrg for i in $deplibs; do 363850806d53Smrg name=`expr $i : '-l\(.*\)'` 363950806d53Smrg # If $name is empty we are operating on a -L argument. 364050806d53Smrg if test "$name" != "" && test "$name" != "0"; then 364150806d53Smrg $rm conftest 364250806d53Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 364350806d53Smrg ldd_output=`ldd conftest` 364450806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 364550806d53Smrg case " $predeps $postdeps " in 364650806d53Smrg *" $i "*) 364750806d53Smrg newdeplibs="$newdeplibs $i" 364850806d53Smrg i="" 364950806d53Smrg ;; 365050806d53Smrg esac 365150806d53Smrg fi 365250806d53Smrg if test -n "$i" ; then 365350806d53Smrg libname=`eval \\$echo \"$libname_spec\"` 365450806d53Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 365550806d53Smrg set dummy $deplib_matches 365650806d53Smrg deplib_match=$2 365750806d53Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 365850806d53Smrg newdeplibs="$newdeplibs $i" 365950806d53Smrg else 366050806d53Smrg droppeddeps=yes 366150806d53Smrg $echo 366250806d53Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 366350806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 366450806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 366550806d53Smrg $echo "*** shared version of the library, which you do not appear to have" 366650806d53Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 366750806d53Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 366850806d53Smrg fi 366950806d53Smrg fi 367050806d53Smrg else 367150806d53Smrg droppeddeps=yes 367250806d53Smrg $echo 367350806d53Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 367450806d53Smrg $echo "*** make it link in! You will probably need to install it or some" 367550806d53Smrg $echo "*** library that it depends on before this library will be fully" 367650806d53Smrg $echo "*** functional. Installing it before continuing would be even better." 367750806d53Smrg fi 367850806d53Smrg else 367950806d53Smrg newdeplibs="$newdeplibs $i" 368050806d53Smrg fi 368150806d53Smrg done 368250806d53Smrg fi 368350806d53Smrg ;; 368450806d53Smrg file_magic*) 368550806d53Smrg set dummy $deplibs_check_method 368650806d53Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 368750806d53Smrg for a_deplib in $deplibs; do 368850806d53Smrg name=`expr $a_deplib : '-l\(.*\)'` 368950806d53Smrg # If $name is empty we are operating on a -L argument. 369050806d53Smrg if test "$name" != "" && test "$name" != "0"; then 369150806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 369250806d53Smrg case " $predeps $postdeps " in 369350806d53Smrg *" $a_deplib "*) 369450806d53Smrg newdeplibs="$newdeplibs $a_deplib" 369550806d53Smrg a_deplib="" 369650806d53Smrg ;; 369750806d53Smrg esac 369850806d53Smrg fi 369950806d53Smrg if test -n "$a_deplib" ; then 370050806d53Smrg libname=`eval \\$echo \"$libname_spec\"` 370150806d53Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 370250806d53Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 370350806d53Smrg for potent_lib in $potential_libs; do 370450806d53Smrg # Follow soft links. 370550806d53Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 370650806d53Smrg | grep " -> " >/dev/null; then 370750806d53Smrg continue 370850806d53Smrg fi 370950806d53Smrg # The statement above tries to avoid entering an 371050806d53Smrg # endless loop below, in case of cyclic links. 371150806d53Smrg # We might still enter an endless loop, since a link 371250806d53Smrg # loop can be closed while we follow links, 371350806d53Smrg # but so what? 371450806d53Smrg potlib="$potent_lib" 371550806d53Smrg while test -h "$potlib" 2>/dev/null; do 371650806d53Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 371750806d53Smrg case $potliblink in 371850806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 371950806d53Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 372050806d53Smrg esac 372150806d53Smrg done 372250806d53Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 372350806d53Smrg | ${SED} 10q \ 372450806d53Smrg | $EGREP "$file_magic_regex" > /dev/null; then 372550806d53Smrg newdeplibs="$newdeplibs $a_deplib" 372650806d53Smrg a_deplib="" 372750806d53Smrg break 2 372850806d53Smrg fi 372950806d53Smrg done 373050806d53Smrg done 373150806d53Smrg fi 373250806d53Smrg if test -n "$a_deplib" ; then 373350806d53Smrg droppeddeps=yes 373450806d53Smrg $echo 373550806d53Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 373650806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 373750806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 373850806d53Smrg $echo "*** shared version of the library, which you do not appear to have" 373950806d53Smrg $echo "*** because I did check the linker path looking for a file starting" 374050806d53Smrg if test -z "$potlib" ; then 374150806d53Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 374250806d53Smrg else 374350806d53Smrg $echo "*** with $libname and none of the candidates passed a file format test" 374450806d53Smrg $echo "*** using a file magic. Last file checked: $potlib" 374550806d53Smrg fi 374650806d53Smrg fi 374750806d53Smrg else 374850806d53Smrg # Add a -L argument. 374950806d53Smrg newdeplibs="$newdeplibs $a_deplib" 375050806d53Smrg fi 375150806d53Smrg done # Gone through all deplibs. 375250806d53Smrg ;; 375350806d53Smrg match_pattern*) 375450806d53Smrg set dummy $deplibs_check_method 375550806d53Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 375650806d53Smrg for a_deplib in $deplibs; do 375750806d53Smrg name=`expr $a_deplib : '-l\(.*\)'` 375850806d53Smrg # If $name is empty we are operating on a -L argument. 375950806d53Smrg if test -n "$name" && test "$name" != "0"; then 376050806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 376150806d53Smrg case " $predeps $postdeps " in 376250806d53Smrg *" $a_deplib "*) 376350806d53Smrg newdeplibs="$newdeplibs $a_deplib" 376450806d53Smrg a_deplib="" 376550806d53Smrg ;; 376650806d53Smrg esac 376750806d53Smrg fi 376850806d53Smrg if test -n "$a_deplib" ; then 376950806d53Smrg libname=`eval \\$echo \"$libname_spec\"` 377050806d53Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 377150806d53Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 377250806d53Smrg for potent_lib in $potential_libs; do 377350806d53Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 377450806d53Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 377550806d53Smrg | ${SED} 10q \ 377650806d53Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 377750806d53Smrg newdeplibs="$newdeplibs $a_deplib" 377850806d53Smrg a_deplib="" 377950806d53Smrg break 2 378050806d53Smrg fi 378150806d53Smrg done 378250806d53Smrg done 378350806d53Smrg fi 378450806d53Smrg if test -n "$a_deplib" ; then 378550806d53Smrg droppeddeps=yes 378650806d53Smrg $echo 378750806d53Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 378850806d53Smrg $echo "*** I have the capability to make that library automatically link in when" 378950806d53Smrg $echo "*** you link to this library. But I can only do this if you have a" 379050806d53Smrg $echo "*** shared version of the library, which you do not appear to have" 379150806d53Smrg $echo "*** because I did check the linker path looking for a file starting" 379250806d53Smrg if test -z "$potlib" ; then 379350806d53Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 379450806d53Smrg else 379550806d53Smrg $echo "*** with $libname and none of the candidates passed a file format test" 379650806d53Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 379750806d53Smrg fi 379850806d53Smrg fi 379950806d53Smrg else 380050806d53Smrg # Add a -L argument. 380150806d53Smrg newdeplibs="$newdeplibs $a_deplib" 380250806d53Smrg fi 380350806d53Smrg done # Gone through all deplibs. 380450806d53Smrg ;; 380550806d53Smrg none | unknown | *) 380650806d53Smrg newdeplibs="" 380750806d53Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 380850806d53Smrg -e 's/ -[LR][^ ]*//g'` 380950806d53Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 381050806d53Smrg for i in $predeps $postdeps ; do 381150806d53Smrg # can't use Xsed below, because $i might contain '/' 381250806d53Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 381350806d53Smrg done 381450806d53Smrg fi 381550806d53Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 381650806d53Smrg | grep . >/dev/null; then 381750806d53Smrg $echo 381850806d53Smrg if test "X$deplibs_check_method" = "Xnone"; then 381950806d53Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 382050806d53Smrg else 382150806d53Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 382250806d53Smrg fi 382350806d53Smrg $echo "*** All declared inter-library dependencies are being dropped." 382450806d53Smrg droppeddeps=yes 382550806d53Smrg fi 382650806d53Smrg ;; 382750806d53Smrg esac 382850806d53Smrg versuffix=$versuffix_save 382950806d53Smrg major=$major_save 383050806d53Smrg release=$release_save 383150806d53Smrg libname=$libname_save 383250806d53Smrg name=$name_save 383350806d53Smrg 383450806d53Smrg case $host in 383550806d53Smrg *-*-rhapsody* | *-*-darwin1.[012]) 383650806d53Smrg # On Rhapsody replace the C library is the System framework 383750806d53Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 383850806d53Smrg ;; 383950806d53Smrg esac 384050806d53Smrg 384150806d53Smrg if test "$droppeddeps" = yes; then 384250806d53Smrg if test "$module" = yes; then 384350806d53Smrg $echo 384450806d53Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 384550806d53Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 384650806d53Smrg $echo "*** a static module, that should work as long as the dlopening" 384750806d53Smrg $echo "*** application is linked with the -dlopen flag." 384850806d53Smrg if test -z "$global_symbol_pipe"; then 384950806d53Smrg $echo 385050806d53Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 385150806d53Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 385250806d53Smrg $echo "*** not find such a program. So, this module is probably useless." 385350806d53Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 385450806d53Smrg fi 385550806d53Smrg if test "$build_old_libs" = no; then 385650806d53Smrg oldlibs="$output_objdir/$libname.$libext" 385750806d53Smrg build_libtool_libs=module 385850806d53Smrg build_old_libs=yes 385950806d53Smrg else 386050806d53Smrg build_libtool_libs=no 386150806d53Smrg fi 386250806d53Smrg else 386350806d53Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 386450806d53Smrg $echo "*** automatically added whenever a program is linked with this library" 386550806d53Smrg $echo "*** or is declared to -dlopen it." 386650806d53Smrg 386750806d53Smrg if test "$allow_undefined" = no; then 386850806d53Smrg $echo 386950806d53Smrg $echo "*** Since this library must not contain undefined symbols," 387050806d53Smrg $echo "*** because either the platform does not support them or" 387150806d53Smrg $echo "*** it was explicitly requested with -no-undefined," 387250806d53Smrg $echo "*** libtool will only create a static version of it." 387350806d53Smrg if test "$build_old_libs" = no; then 387450806d53Smrg oldlibs="$output_objdir/$libname.$libext" 387550806d53Smrg build_libtool_libs=module 387650806d53Smrg build_old_libs=yes 387750806d53Smrg else 387850806d53Smrg build_libtool_libs=no 387950806d53Smrg fi 388050806d53Smrg fi 388150806d53Smrg fi 388250806d53Smrg fi 388350806d53Smrg # Done checking deplibs! 388450806d53Smrg deplibs=$newdeplibs 388550806d53Smrg fi 388650806d53Smrg 388750806d53Smrg 388850806d53Smrg # move library search paths that coincide with paths to not yet 388950806d53Smrg # installed libraries to the beginning of the library search list 389050806d53Smrg new_libs= 389150806d53Smrg for path in $notinst_path; do 389250806d53Smrg case " $new_libs " in 389350806d53Smrg *" -L$path/$objdir "*) ;; 389450806d53Smrg *) 389550806d53Smrg case " $deplibs " in 389650806d53Smrg *" -L$path/$objdir "*) 389750806d53Smrg new_libs="$new_libs -L$path/$objdir" ;; 389850806d53Smrg esac 389950806d53Smrg ;; 390050806d53Smrg esac 390150806d53Smrg done 390250806d53Smrg for deplib in $deplibs; do 390350806d53Smrg case $deplib in 390450806d53Smrg -L*) 390550806d53Smrg case " $new_libs " in 390650806d53Smrg *" $deplib "*) ;; 390750806d53Smrg *) new_libs="$new_libs $deplib" ;; 390850806d53Smrg esac 390950806d53Smrg ;; 391050806d53Smrg *) new_libs="$new_libs $deplib" ;; 391150806d53Smrg esac 391250806d53Smrg done 391350806d53Smrg deplibs="$new_libs" 391450806d53Smrg 391550806d53Smrg 391650806d53Smrg # All the library-specific variables (install_libdir is set above). 391750806d53Smrg library_names= 391850806d53Smrg old_library= 391950806d53Smrg dlname= 392050806d53Smrg 392150806d53Smrg # Test again, we may have decided not to build it any more 392250806d53Smrg if test "$build_libtool_libs" = yes; then 392350806d53Smrg if test "$hardcode_into_libs" = yes; then 392450806d53Smrg # Hardcode the library paths 392550806d53Smrg hardcode_libdirs= 392650806d53Smrg dep_rpath= 392750806d53Smrg rpath="$finalize_rpath" 392850806d53Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 392950806d53Smrg for libdir in $rpath; do 393050806d53Smrg if test -n "$hardcode_libdir_flag_spec"; then 393150806d53Smrg if test -n "$hardcode_libdir_separator"; then 393250806d53Smrg if test -z "$hardcode_libdirs"; then 393350806d53Smrg hardcode_libdirs="$libdir" 393450806d53Smrg else 393550806d53Smrg # Just accumulate the unique libdirs. 393650806d53Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 393750806d53Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 393850806d53Smrg ;; 393950806d53Smrg *) 394050806d53Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 394150806d53Smrg ;; 394250806d53Smrg esac 394350806d53Smrg fi 394450806d53Smrg else 394550806d53Smrg eval flag=\"$hardcode_libdir_flag_spec\" 394650806d53Smrg dep_rpath="$dep_rpath $flag" 394750806d53Smrg fi 394850806d53Smrg elif test -n "$runpath_var"; then 394950806d53Smrg case "$perm_rpath " in 395050806d53Smrg *" $libdir "*) ;; 395150806d53Smrg *) perm_rpath="$perm_rpath $libdir" ;; 395250806d53Smrg esac 395350806d53Smrg fi 395450806d53Smrg done 395550806d53Smrg # Substitute the hardcoded libdirs into the rpath. 395650806d53Smrg if test -n "$hardcode_libdir_separator" && 395750806d53Smrg test -n "$hardcode_libdirs"; then 395850806d53Smrg libdir="$hardcode_libdirs" 395950806d53Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 39607965d9acSmrg case $archive_cmds in 39617965d9acSmrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 39627965d9acSmrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 39637965d9acSmrg esac 396450806d53Smrg else 396550806d53Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 396650806d53Smrg fi 396750806d53Smrg fi 396850806d53Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 396950806d53Smrg # We should set the runpath_var. 397050806d53Smrg rpath= 397150806d53Smrg for dir in $perm_rpath; do 397250806d53Smrg rpath="$rpath$dir:" 397350806d53Smrg done 397450806d53Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 397550806d53Smrg fi 397650806d53Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 397750806d53Smrg fi 397850806d53Smrg 397950806d53Smrg shlibpath="$finalize_shlibpath" 398050806d53Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 398150806d53Smrg if test -n "$shlibpath"; then 398250806d53Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 398350806d53Smrg fi 398450806d53Smrg 398550806d53Smrg # Get the real and link names of the library. 398650806d53Smrg eval shared_ext=\"$shrext_cmds\" 398750806d53Smrg eval library_names=\"$library_names_spec\" 398850806d53Smrg set dummy $library_names 398950806d53Smrg realname="$2" 399050806d53Smrg shift; shift 399150806d53Smrg 399250806d53Smrg if test -n "$soname_spec"; then 399350806d53Smrg eval soname=\"$soname_spec\" 399450806d53Smrg else 399550806d53Smrg soname="$realname" 399650806d53Smrg fi 399750806d53Smrg if test -z "$dlname"; then 399850806d53Smrg dlname=$soname 399950806d53Smrg fi 400050806d53Smrg 400150806d53Smrg lib="$output_objdir/$realname" 400250806d53Smrg linknames= 400350806d53Smrg for link 400450806d53Smrg do 400550806d53Smrg linknames="$linknames $link" 400650806d53Smrg done 400750806d53Smrg 400850806d53Smrg # Use standard objects if they are pic 400950806d53Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 401050806d53Smrg 401150806d53Smrg # Prepare the list of exported symbols 401250806d53Smrg if test -z "$export_symbols"; then 401350806d53Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 401450806d53Smrg $show "generating symbol list for \`$libname.la'" 401550806d53Smrg export_symbols="$output_objdir/$libname.exp" 401650806d53Smrg $run $rm $export_symbols 401750806d53Smrg cmds=$export_symbols_cmds 401850806d53Smrg save_ifs="$IFS"; IFS='~' 401950806d53Smrg for cmd in $cmds; do 402050806d53Smrg IFS="$save_ifs" 402150806d53Smrg eval cmd=\"$cmd\" 402250806d53Smrg if len=`expr "X$cmd" : ".*"` && 402350806d53Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 402450806d53Smrg $show "$cmd" 402550806d53Smrg $run eval "$cmd" || exit $? 402650806d53Smrg skipped_export=false 402750806d53Smrg else 402850806d53Smrg # The command line is too long to execute in one step. 402950806d53Smrg $show "using reloadable object file for export list..." 403050806d53Smrg skipped_export=: 403150806d53Smrg # Break out early, otherwise skipped_export may be 403250806d53Smrg # set to false by a later but shorter cmd. 403350806d53Smrg break 403450806d53Smrg fi 403550806d53Smrg done 403650806d53Smrg IFS="$save_ifs" 403750806d53Smrg if test -n "$export_symbols_regex"; then 403850806d53Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 403950806d53Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 404050806d53Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 404150806d53Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 404250806d53Smrg fi 404350806d53Smrg fi 404450806d53Smrg fi 404550806d53Smrg 404650806d53Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 404750806d53Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 404850806d53Smrg fi 404950806d53Smrg 405050806d53Smrg tmp_deplibs= 405150806d53Smrg for test_deplib in $deplibs; do 405250806d53Smrg case " $convenience " in 405350806d53Smrg *" $test_deplib "*) ;; 405450806d53Smrg *) 405550806d53Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 405650806d53Smrg ;; 405750806d53Smrg esac 405850806d53Smrg done 405950806d53Smrg deplibs="$tmp_deplibs" 406050806d53Smrg 406150806d53Smrg if test -n "$convenience"; then 406250806d53Smrg if test -n "$whole_archive_flag_spec"; then 406350806d53Smrg save_libobjs=$libobjs 406450806d53Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 406550806d53Smrg else 406650806d53Smrg gentop="$output_objdir/${outputname}x" 406750806d53Smrg generated="$generated $gentop" 406850806d53Smrg 406950806d53Smrg func_extract_archives $gentop $convenience 407050806d53Smrg libobjs="$libobjs $func_extract_archives_result" 407150806d53Smrg fi 407250806d53Smrg fi 407350806d53Smrg 407450806d53Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 407550806d53Smrg eval flag=\"$thread_safe_flag_spec\" 407650806d53Smrg linker_flags="$linker_flags $flag" 407750806d53Smrg fi 407850806d53Smrg 407950806d53Smrg # Make a backup of the uninstalled library when relinking 408050806d53Smrg if test "$mode" = relink; then 408150806d53Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 408250806d53Smrg fi 408350806d53Smrg 408450806d53Smrg # Do each of the archive commands. 408550806d53Smrg if test "$module" = yes && test -n "$module_cmds" ; then 408650806d53Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 408750806d53Smrg eval test_cmds=\"$module_expsym_cmds\" 408850806d53Smrg cmds=$module_expsym_cmds 408950806d53Smrg else 409050806d53Smrg eval test_cmds=\"$module_cmds\" 409150806d53Smrg cmds=$module_cmds 409250806d53Smrg fi 409350806d53Smrg else 409450806d53Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 409550806d53Smrg eval test_cmds=\"$archive_expsym_cmds\" 409650806d53Smrg cmds=$archive_expsym_cmds 409750806d53Smrg else 409850806d53Smrg eval test_cmds=\"$archive_cmds\" 409950806d53Smrg cmds=$archive_cmds 410050806d53Smrg fi 410150806d53Smrg fi 410250806d53Smrg 410350806d53Smrg if test "X$skipped_export" != "X:" && 410450806d53Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 410550806d53Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 410650806d53Smrg : 410750806d53Smrg else 410850806d53Smrg # The command line is too long to link in one step, link piecewise. 410950806d53Smrg $echo "creating reloadable object files..." 411050806d53Smrg 411150806d53Smrg # Save the value of $output and $libobjs because we want to 411250806d53Smrg # use them later. If we have whole_archive_flag_spec, we 411350806d53Smrg # want to use save_libobjs as it was before 411450806d53Smrg # whole_archive_flag_spec was expanded, because we can't 411550806d53Smrg # assume the linker understands whole_archive_flag_spec. 411650806d53Smrg # This may have to be revisited, in case too many 411750806d53Smrg # convenience libraries get linked in and end up exceeding 411850806d53Smrg # the spec. 411950806d53Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 412050806d53Smrg save_libobjs=$libobjs 412150806d53Smrg fi 412250806d53Smrg save_output=$output 412350806d53Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 412450806d53Smrg 412550806d53Smrg # Clear the reloadable object creation command queue and 412650806d53Smrg # initialize k to one. 412750806d53Smrg test_cmds= 412850806d53Smrg concat_cmds= 412950806d53Smrg objlist= 413050806d53Smrg delfiles= 413150806d53Smrg last_robj= 413250806d53Smrg k=1 413350806d53Smrg output=$output_objdir/$output_la-${k}.$objext 413450806d53Smrg # Loop over the list of objects to be linked. 413550806d53Smrg for obj in $save_libobjs 413650806d53Smrg do 413750806d53Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 413850806d53Smrg if test "X$objlist" = X || 413950806d53Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 414050806d53Smrg test "$len" -le "$max_cmd_len"; }; then 414150806d53Smrg objlist="$objlist $obj" 414250806d53Smrg else 414350806d53Smrg # The command $test_cmds is almost too long, add a 414450806d53Smrg # command to the queue. 414550806d53Smrg if test "$k" -eq 1 ; then 414650806d53Smrg # The first file doesn't have a previous command to add. 414750806d53Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 414850806d53Smrg else 414950806d53Smrg # All subsequent reloadable object files will link in 415050806d53Smrg # the last one created. 415150806d53Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 415250806d53Smrg fi 415350806d53Smrg last_robj=$output_objdir/$output_la-${k}.$objext 415450806d53Smrg k=`expr $k + 1` 415550806d53Smrg output=$output_objdir/$output_la-${k}.$objext 415650806d53Smrg objlist=$obj 415750806d53Smrg len=1 415850806d53Smrg fi 415950806d53Smrg done 416050806d53Smrg # Handle the remaining objects by creating one last 416150806d53Smrg # reloadable object file. All subsequent reloadable object 416250806d53Smrg # files will link in the last one created. 416350806d53Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 416450806d53Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 416550806d53Smrg 416650806d53Smrg if ${skipped_export-false}; then 416750806d53Smrg $show "generating symbol list for \`$libname.la'" 416850806d53Smrg export_symbols="$output_objdir/$libname.exp" 416950806d53Smrg $run $rm $export_symbols 417050806d53Smrg libobjs=$output 417150806d53Smrg # Append the command to create the export file. 417250806d53Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 417350806d53Smrg fi 417450806d53Smrg 417550806d53Smrg # Set up a command to remove the reloadable object files 417650806d53Smrg # after they are used. 417750806d53Smrg i=0 417850806d53Smrg while test "$i" -lt "$k" 417950806d53Smrg do 418050806d53Smrg i=`expr $i + 1` 418150806d53Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 418250806d53Smrg done 418350806d53Smrg 418450806d53Smrg $echo "creating a temporary reloadable object file: $output" 418550806d53Smrg 418650806d53Smrg # Loop through the commands generated above and execute them. 418750806d53Smrg save_ifs="$IFS"; IFS='~' 418850806d53Smrg for cmd in $concat_cmds; do 418950806d53Smrg IFS="$save_ifs" 419050806d53Smrg $show "$cmd" 419150806d53Smrg $run eval "$cmd" || exit $? 419250806d53Smrg done 419350806d53Smrg IFS="$save_ifs" 419450806d53Smrg 419550806d53Smrg libobjs=$output 419650806d53Smrg # Restore the value of output. 419750806d53Smrg output=$save_output 419850806d53Smrg 419950806d53Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 420050806d53Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 420150806d53Smrg fi 420250806d53Smrg # Expand the library linking commands again to reset the 420350806d53Smrg # value of $libobjs for piecewise linking. 420450806d53Smrg 420550806d53Smrg # Do each of the archive commands. 420650806d53Smrg if test "$module" = yes && test -n "$module_cmds" ; then 420750806d53Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 420850806d53Smrg cmds=$module_expsym_cmds 420950806d53Smrg else 421050806d53Smrg cmds=$module_cmds 421150806d53Smrg fi 421250806d53Smrg else 421350806d53Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 421450806d53Smrg cmds=$archive_expsym_cmds 421550806d53Smrg else 421650806d53Smrg cmds=$archive_cmds 421750806d53Smrg fi 421850806d53Smrg fi 421950806d53Smrg 422050806d53Smrg # Append the command to remove the reloadable object files 422150806d53Smrg # to the just-reset $cmds. 422250806d53Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 422350806d53Smrg fi 422450806d53Smrg save_ifs="$IFS"; IFS='~' 422550806d53Smrg for cmd in $cmds; do 422650806d53Smrg IFS="$save_ifs" 422750806d53Smrg eval cmd=\"$cmd\" 422850806d53Smrg $show "$cmd" 422950806d53Smrg $run eval "$cmd" || { 423050806d53Smrg lt_exit=$? 423150806d53Smrg 423250806d53Smrg # Restore the uninstalled library and exit 423350806d53Smrg if test "$mode" = relink; then 423450806d53Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 423550806d53Smrg fi 423650806d53Smrg 423750806d53Smrg exit $lt_exit 423850806d53Smrg } 423950806d53Smrg done 424050806d53Smrg IFS="$save_ifs" 424150806d53Smrg 424250806d53Smrg # Restore the uninstalled library and exit 424350806d53Smrg if test "$mode" = relink; then 424450806d53Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 424550806d53Smrg 424650806d53Smrg if test -n "$convenience"; then 424750806d53Smrg if test -z "$whole_archive_flag_spec"; then 424850806d53Smrg $show "${rm}r $gentop" 424950806d53Smrg $run ${rm}r "$gentop" 425050806d53Smrg fi 425150806d53Smrg fi 425250806d53Smrg 425350806d53Smrg exit $EXIT_SUCCESS 425450806d53Smrg fi 425550806d53Smrg 425650806d53Smrg # Create links to the real library. 425750806d53Smrg for linkname in $linknames; do 425850806d53Smrg if test "$realname" != "$linkname"; then 425950806d53Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 426050806d53Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 426150806d53Smrg fi 426250806d53Smrg done 426350806d53Smrg 426450806d53Smrg # If -module or -export-dynamic was specified, set the dlname. 426550806d53Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 426650806d53Smrg # On all known operating systems, these are identical. 426750806d53Smrg dlname="$soname" 426850806d53Smrg fi 426950806d53Smrg fi 427050806d53Smrg ;; 427150806d53Smrg 427250806d53Smrg obj) 42737965d9acSmrg case " $deplibs" in 42747965d9acSmrg *\ -l* | *\ -L*) 42757965d9acSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 42767965d9acSmrg esac 427750806d53Smrg 427850806d53Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 427950806d53Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 428050806d53Smrg fi 428150806d53Smrg 428250806d53Smrg if test -n "$rpath"; then 428350806d53Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 428450806d53Smrg fi 428550806d53Smrg 428650806d53Smrg if test -n "$xrpath"; then 428750806d53Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 428850806d53Smrg fi 428950806d53Smrg 429050806d53Smrg if test -n "$vinfo"; then 429150806d53Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 429250806d53Smrg fi 429350806d53Smrg 429450806d53Smrg if test -n "$release"; then 429550806d53Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 429650806d53Smrg fi 429750806d53Smrg 429850806d53Smrg case $output in 429950806d53Smrg *.lo) 430050806d53Smrg if test -n "$objs$old_deplibs"; then 430150806d53Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 430250806d53Smrg exit $EXIT_FAILURE 430350806d53Smrg fi 430450806d53Smrg libobj="$output" 430550806d53Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 430650806d53Smrg ;; 430750806d53Smrg *) 430850806d53Smrg libobj= 430950806d53Smrg obj="$output" 431050806d53Smrg ;; 431150806d53Smrg esac 431250806d53Smrg 431350806d53Smrg # Delete the old objects. 431450806d53Smrg $run $rm $obj $libobj 431550806d53Smrg 431650806d53Smrg # Objects from convenience libraries. This assumes 431750806d53Smrg # single-version convenience libraries. Whenever we create 431850806d53Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 431950806d53Smrg # the extraction. 432050806d53Smrg reload_conv_objs= 432150806d53Smrg gentop= 432250806d53Smrg # reload_cmds runs $LD directly, so let us get rid of 432350806d53Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 432450806d53Smrg # turning comma into space.. 432550806d53Smrg wl= 432650806d53Smrg 432750806d53Smrg if test -n "$convenience"; then 432850806d53Smrg if test -n "$whole_archive_flag_spec"; then 432950806d53Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 43307965d9acSmrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 433150806d53Smrg else 433250806d53Smrg gentop="$output_objdir/${obj}x" 433350806d53Smrg generated="$generated $gentop" 433450806d53Smrg 433550806d53Smrg func_extract_archives $gentop $convenience 433650806d53Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 433750806d53Smrg fi 433850806d53Smrg fi 433950806d53Smrg 434050806d53Smrg # Create the old-style object. 434150806d53Smrg 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 434250806d53Smrg 434350806d53Smrg output="$obj" 434450806d53Smrg cmds=$reload_cmds 434550806d53Smrg save_ifs="$IFS"; IFS='~' 434650806d53Smrg for cmd in $cmds; do 434750806d53Smrg IFS="$save_ifs" 434850806d53Smrg eval cmd=\"$cmd\" 434950806d53Smrg $show "$cmd" 435050806d53Smrg $run eval "$cmd" || exit $? 435150806d53Smrg done 435250806d53Smrg IFS="$save_ifs" 435350806d53Smrg 435450806d53Smrg # Exit if we aren't doing a library object file. 435550806d53Smrg if test -z "$libobj"; then 435650806d53Smrg if test -n "$gentop"; then 435750806d53Smrg $show "${rm}r $gentop" 435850806d53Smrg $run ${rm}r $gentop 435950806d53Smrg fi 436050806d53Smrg 436150806d53Smrg exit $EXIT_SUCCESS 436250806d53Smrg fi 436350806d53Smrg 436450806d53Smrg if test "$build_libtool_libs" != yes; then 436550806d53Smrg if test -n "$gentop"; then 436650806d53Smrg $show "${rm}r $gentop" 436750806d53Smrg $run ${rm}r $gentop 436850806d53Smrg fi 436950806d53Smrg 437050806d53Smrg # Create an invalid libtool object if no PIC, so that we don't 437150806d53Smrg # accidentally link it into a program. 437250806d53Smrg # $show "echo timestamp > $libobj" 437350806d53Smrg # $run eval "echo timestamp > $libobj" || exit $? 437450806d53Smrg exit $EXIT_SUCCESS 437550806d53Smrg fi 437650806d53Smrg 437750806d53Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 437850806d53Smrg # Only do commands if we really have different PIC objects. 437950806d53Smrg reload_objs="$libobjs $reload_conv_objs" 438050806d53Smrg output="$libobj" 438150806d53Smrg cmds=$reload_cmds 438250806d53Smrg save_ifs="$IFS"; IFS='~' 438350806d53Smrg for cmd in $cmds; do 438450806d53Smrg IFS="$save_ifs" 438550806d53Smrg eval cmd=\"$cmd\" 438650806d53Smrg $show "$cmd" 438750806d53Smrg $run eval "$cmd" || exit $? 438850806d53Smrg done 438950806d53Smrg IFS="$save_ifs" 439050806d53Smrg fi 439150806d53Smrg 439250806d53Smrg if test -n "$gentop"; then 439350806d53Smrg $show "${rm}r $gentop" 439450806d53Smrg $run ${rm}r $gentop 439550806d53Smrg fi 439650806d53Smrg 439750806d53Smrg exit $EXIT_SUCCESS 439850806d53Smrg ;; 439950806d53Smrg 440050806d53Smrg prog) 440150806d53Smrg case $host in 440250806d53Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 440350806d53Smrg esac 440450806d53Smrg if test -n "$vinfo"; then 440550806d53Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 440650806d53Smrg fi 440750806d53Smrg 440850806d53Smrg if test -n "$release"; then 440950806d53Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 441050806d53Smrg fi 441150806d53Smrg 441250806d53Smrg if test "$preload" = yes; then 441350806d53Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 441450806d53Smrg test "$dlopen_self_static" = unknown; then 441550806d53Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 441650806d53Smrg fi 441750806d53Smrg fi 441850806d53Smrg 441950806d53Smrg case $host in 442050806d53Smrg *-*-rhapsody* | *-*-darwin1.[012]) 442150806d53Smrg # On Rhapsody replace the C library is the System framework 442250806d53Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 442350806d53Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 442450806d53Smrg ;; 442550806d53Smrg esac 442650806d53Smrg 442750806d53Smrg case $host in 442850806d53Smrg *darwin*) 442950806d53Smrg # Don't allow lazy linking, it breaks C++ global constructors 443050806d53Smrg if test "$tagname" = CXX ; then 443150806d53Smrg compile_command="$compile_command ${wl}-bind_at_load" 443250806d53Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 443350806d53Smrg fi 443450806d53Smrg ;; 443550806d53Smrg esac 443650806d53Smrg 443750806d53Smrg 443850806d53Smrg # move library search paths that coincide with paths to not yet 443950806d53Smrg # installed libraries to the beginning of the library search list 444050806d53Smrg new_libs= 444150806d53Smrg for path in $notinst_path; do 444250806d53Smrg case " $new_libs " in 444350806d53Smrg *" -L$path/$objdir "*) ;; 444450806d53Smrg *) 444550806d53Smrg case " $compile_deplibs " in 444650806d53Smrg *" -L$path/$objdir "*) 444750806d53Smrg new_libs="$new_libs -L$path/$objdir" ;; 444850806d53Smrg esac 444950806d53Smrg ;; 445050806d53Smrg esac 445150806d53Smrg done 445250806d53Smrg for deplib in $compile_deplibs; do 445350806d53Smrg case $deplib in 445450806d53Smrg -L*) 445550806d53Smrg case " $new_libs " in 445650806d53Smrg *" $deplib "*) ;; 445750806d53Smrg *) new_libs="$new_libs $deplib" ;; 445850806d53Smrg esac 445950806d53Smrg ;; 446050806d53Smrg *) new_libs="$new_libs $deplib" ;; 446150806d53Smrg esac 446250806d53Smrg done 446350806d53Smrg compile_deplibs="$new_libs" 446450806d53Smrg 446550806d53Smrg 446650806d53Smrg compile_command="$compile_command $compile_deplibs" 446750806d53Smrg finalize_command="$finalize_command $finalize_deplibs" 446850806d53Smrg 446950806d53Smrg if test -n "$rpath$xrpath"; then 447050806d53Smrg # If the user specified any rpath flags, then add them. 447150806d53Smrg for libdir in $rpath $xrpath; do 447250806d53Smrg # This is the magic to use -rpath. 447350806d53Smrg case "$finalize_rpath " in 447450806d53Smrg *" $libdir "*) ;; 447550806d53Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 447650806d53Smrg esac 447750806d53Smrg done 447850806d53Smrg fi 447950806d53Smrg 448050806d53Smrg # Now hardcode the library paths 448150806d53Smrg rpath= 448250806d53Smrg hardcode_libdirs= 448350806d53Smrg for libdir in $compile_rpath $finalize_rpath; do 448450806d53Smrg if test -n "$hardcode_libdir_flag_spec"; then 448550806d53Smrg if test -n "$hardcode_libdir_separator"; then 448650806d53Smrg if test -z "$hardcode_libdirs"; then 448750806d53Smrg hardcode_libdirs="$libdir" 448850806d53Smrg else 448950806d53Smrg # Just accumulate the unique libdirs. 449050806d53Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 449150806d53Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 449250806d53Smrg ;; 449350806d53Smrg *) 449450806d53Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 449550806d53Smrg ;; 449650806d53Smrg esac 449750806d53Smrg fi 449850806d53Smrg else 449950806d53Smrg eval flag=\"$hardcode_libdir_flag_spec\" 450050806d53Smrg rpath="$rpath $flag" 450150806d53Smrg fi 450250806d53Smrg elif test -n "$runpath_var"; then 450350806d53Smrg case "$perm_rpath " in 450450806d53Smrg *" $libdir "*) ;; 450550806d53Smrg *) perm_rpath="$perm_rpath $libdir" ;; 450650806d53Smrg esac 450750806d53Smrg fi 450850806d53Smrg case $host in 450950806d53Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 451050806d53Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 451150806d53Smrg case :$dllsearchpath: in 451250806d53Smrg *":$libdir:"*) ;; 451350806d53Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 451450806d53Smrg esac 451550806d53Smrg case :$dllsearchpath: in 451650806d53Smrg *":$testbindir:"*) ;; 451750806d53Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 451850806d53Smrg esac 451950806d53Smrg ;; 452050806d53Smrg esac 452150806d53Smrg done 452250806d53Smrg # Substitute the hardcoded libdirs into the rpath. 452350806d53Smrg if test -n "$hardcode_libdir_separator" && 452450806d53Smrg test -n "$hardcode_libdirs"; then 452550806d53Smrg libdir="$hardcode_libdirs" 452650806d53Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 452750806d53Smrg fi 452850806d53Smrg compile_rpath="$rpath" 452950806d53Smrg 453050806d53Smrg rpath= 453150806d53Smrg hardcode_libdirs= 453250806d53Smrg for libdir in $finalize_rpath; do 453350806d53Smrg if test -n "$hardcode_libdir_flag_spec"; then 453450806d53Smrg if test -n "$hardcode_libdir_separator"; then 453550806d53Smrg if test -z "$hardcode_libdirs"; then 453650806d53Smrg hardcode_libdirs="$libdir" 453750806d53Smrg else 453850806d53Smrg # Just accumulate the unique libdirs. 453950806d53Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 454050806d53Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 454150806d53Smrg ;; 454250806d53Smrg *) 454350806d53Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 454450806d53Smrg ;; 454550806d53Smrg esac 454650806d53Smrg fi 454750806d53Smrg else 454850806d53Smrg eval flag=\"$hardcode_libdir_flag_spec\" 454950806d53Smrg rpath="$rpath $flag" 455050806d53Smrg fi 455150806d53Smrg elif test -n "$runpath_var"; then 455250806d53Smrg case "$finalize_perm_rpath " in 455350806d53Smrg *" $libdir "*) ;; 455450806d53Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 455550806d53Smrg esac 455650806d53Smrg fi 455750806d53Smrg done 455850806d53Smrg # Substitute the hardcoded libdirs into the rpath. 455950806d53Smrg if test -n "$hardcode_libdir_separator" && 456050806d53Smrg test -n "$hardcode_libdirs"; then 456150806d53Smrg libdir="$hardcode_libdirs" 456250806d53Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 456350806d53Smrg fi 456450806d53Smrg finalize_rpath="$rpath" 456550806d53Smrg 456650806d53Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 456750806d53Smrg # Transform all the library objects into standard objects. 456850806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 456950806d53Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 457050806d53Smrg fi 457150806d53Smrg 457250806d53Smrg dlsyms= 457350806d53Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 457450806d53Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 457550806d53Smrg dlsyms="${outputname}S.c" 457650806d53Smrg else 457750806d53Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 457850806d53Smrg fi 457950806d53Smrg fi 458050806d53Smrg 458150806d53Smrg if test -n "$dlsyms"; then 458250806d53Smrg case $dlsyms in 458350806d53Smrg "") ;; 458450806d53Smrg *.c) 458550806d53Smrg # Discover the nlist of each of the dlfiles. 458650806d53Smrg nlist="$output_objdir/${outputname}.nm" 458750806d53Smrg 458850806d53Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 458950806d53Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 459050806d53Smrg 459150806d53Smrg # Parse the name list into a source file. 459250806d53Smrg $show "creating $output_objdir/$dlsyms" 459350806d53Smrg 459450806d53Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 459550806d53Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 459650806d53Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 459750806d53Smrg 459850806d53Smrg#ifdef __cplusplus 459950806d53Smrgextern \"C\" { 460050806d53Smrg#endif 460150806d53Smrg 460250806d53Smrg/* Prevent the only kind of declaration conflicts we can make. */ 460350806d53Smrg#define lt_preloaded_symbols some_other_symbol 460450806d53Smrg 460550806d53Smrg/* External symbol declarations for the compiler. */\ 460650806d53Smrg" 460750806d53Smrg 460850806d53Smrg if test "$dlself" = yes; then 460950806d53Smrg $show "generating symbol list for \`$output'" 461050806d53Smrg 461150806d53Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 461250806d53Smrg 461350806d53Smrg # Add our own program objects to the symbol list. 461450806d53Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 461550806d53Smrg for arg in $progfiles; do 461650806d53Smrg $show "extracting global C symbols from \`$arg'" 461750806d53Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 461850806d53Smrg done 461950806d53Smrg 462050806d53Smrg if test -n "$exclude_expsyms"; then 462150806d53Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 462250806d53Smrg $run eval '$mv "$nlist"T "$nlist"' 462350806d53Smrg fi 462450806d53Smrg 462550806d53Smrg if test -n "$export_symbols_regex"; then 462650806d53Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 462750806d53Smrg $run eval '$mv "$nlist"T "$nlist"' 462850806d53Smrg fi 462950806d53Smrg 463050806d53Smrg # Prepare the list of exported symbols 463150806d53Smrg if test -z "$export_symbols"; then 463250806d53Smrg export_symbols="$output_objdir/$outputname.exp" 463350806d53Smrg $run $rm $export_symbols 463450806d53Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 463550806d53Smrg case $host in 463650806d53Smrg *cygwin* | *mingw* ) 463750806d53Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 463850806d53Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 463950806d53Smrg ;; 464050806d53Smrg esac 464150806d53Smrg else 464250806d53Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 464350806d53Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 464450806d53Smrg $run eval 'mv "$nlist"T "$nlist"' 464550806d53Smrg case $host in 464650806d53Smrg *cygwin* | *mingw* ) 464750806d53Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 464850806d53Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 464950806d53Smrg ;; 465050806d53Smrg esac 465150806d53Smrg fi 465250806d53Smrg fi 465350806d53Smrg 465450806d53Smrg for arg in $dlprefiles; do 465550806d53Smrg $show "extracting global C symbols from \`$arg'" 465650806d53Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 465750806d53Smrg $run eval '$echo ": $name " >> "$nlist"' 465850806d53Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 465950806d53Smrg done 466050806d53Smrg 466150806d53Smrg if test -z "$run"; then 466250806d53Smrg # Make sure we have at least an empty file. 466350806d53Smrg test -f "$nlist" || : > "$nlist" 466450806d53Smrg 466550806d53Smrg if test -n "$exclude_expsyms"; then 466650806d53Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 466750806d53Smrg $mv "$nlist"T "$nlist" 466850806d53Smrg fi 466950806d53Smrg 467050806d53Smrg # Try sorting and uniquifying the output. 467150806d53Smrg if grep -v "^: " < "$nlist" | 467250806d53Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 467350806d53Smrg sort -k 3 467450806d53Smrg else 467550806d53Smrg sort +2 467650806d53Smrg fi | 467750806d53Smrg uniq > "$nlist"S; then 467850806d53Smrg : 467950806d53Smrg else 468050806d53Smrg grep -v "^: " < "$nlist" > "$nlist"S 468150806d53Smrg fi 468250806d53Smrg 468350806d53Smrg if test -f "$nlist"S; then 468450806d53Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 468550806d53Smrg else 468650806d53Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 468750806d53Smrg fi 468850806d53Smrg 468950806d53Smrg $echo >> "$output_objdir/$dlsyms" "\ 469050806d53Smrg 469150806d53Smrg#undef lt_preloaded_symbols 469250806d53Smrg 469350806d53Smrg#if defined (__STDC__) && __STDC__ 469450806d53Smrg# define lt_ptr void * 469550806d53Smrg#else 469650806d53Smrg# define lt_ptr char * 469750806d53Smrg# define const 469850806d53Smrg#endif 469950806d53Smrg 470050806d53Smrg/* The mapping between symbol names and symbols. */ 470150806d53Smrg" 470250806d53Smrg 470350806d53Smrg case $host in 470450806d53Smrg *cygwin* | *mingw* ) 470550806d53Smrg $echo >> "$output_objdir/$dlsyms" "\ 470650806d53Smrg/* DATA imports from DLLs on WIN32 can't be const, because 470750806d53Smrg runtime relocations are performed -- see ld's documentation 470850806d53Smrg on pseudo-relocs */ 470950806d53Smrgstruct { 471050806d53Smrg" 471150806d53Smrg ;; 471250806d53Smrg * ) 471350806d53Smrg $echo >> "$output_objdir/$dlsyms" "\ 471450806d53Smrgconst struct { 471550806d53Smrg" 471650806d53Smrg ;; 471750806d53Smrg esac 471850806d53Smrg 471950806d53Smrg 472050806d53Smrg $echo >> "$output_objdir/$dlsyms" "\ 472150806d53Smrg const char *name; 472250806d53Smrg lt_ptr address; 472350806d53Smrg} 472450806d53Smrglt_preloaded_symbols[] = 472550806d53Smrg{\ 472650806d53Smrg" 472750806d53Smrg 472850806d53Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 472950806d53Smrg 473050806d53Smrg $echo >> "$output_objdir/$dlsyms" "\ 473150806d53Smrg {0, (lt_ptr) 0} 473250806d53Smrg}; 473350806d53Smrg 473450806d53Smrg/* This works around a problem in FreeBSD linker */ 473550806d53Smrg#ifdef FREEBSD_WORKAROUND 473650806d53Smrgstatic const void *lt_preloaded_setup() { 473750806d53Smrg return lt_preloaded_symbols; 473850806d53Smrg} 473950806d53Smrg#endif 474050806d53Smrg 474150806d53Smrg#ifdef __cplusplus 474250806d53Smrg} 474350806d53Smrg#endif\ 474450806d53Smrg" 474550806d53Smrg fi 474650806d53Smrg 474750806d53Smrg pic_flag_for_symtable= 474850806d53Smrg case $host in 474950806d53Smrg # compiling the symbol table file with pic_flag works around 475050806d53Smrg # a FreeBSD bug that causes programs to crash when -lm is 475150806d53Smrg # linked before any other PIC object. But we must not use 475250806d53Smrg # pic_flag when linking with -static. The problem exists in 475350806d53Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 475450806d53Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 475550806d53Smrg case "$compile_command " in 475650806d53Smrg *" -static "*) ;; 475750806d53Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 475850806d53Smrg esac;; 475950806d53Smrg *-*-hpux*) 476050806d53Smrg case "$compile_command " in 476150806d53Smrg *" -static "*) ;; 476250806d53Smrg *) pic_flag_for_symtable=" $pic_flag";; 476350806d53Smrg esac 476450806d53Smrg esac 476550806d53Smrg 476650806d53Smrg # Now compile the dynamic symbol file. 476750806d53Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 476850806d53Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 476950806d53Smrg 477050806d53Smrg # Clean up the generated files. 477150806d53Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 477250806d53Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 477350806d53Smrg 477450806d53Smrg # Transform the symbol file into the correct name. 477550806d53Smrg case $host in 477650806d53Smrg *cygwin* | *mingw* ) 477750806d53Smrg if test -f "$output_objdir/${outputname}.def" ; then 477850806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 477950806d53Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 478050806d53Smrg else 478150806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 478250806d53Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 478350806d53Smrg fi 478450806d53Smrg ;; 478550806d53Smrg * ) 478650806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 478750806d53Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 478850806d53Smrg ;; 478950806d53Smrg esac 479050806d53Smrg ;; 479150806d53Smrg *) 479250806d53Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 479350806d53Smrg exit $EXIT_FAILURE 479450806d53Smrg ;; 479550806d53Smrg esac 479650806d53Smrg else 479750806d53Smrg # We keep going just in case the user didn't refer to 479850806d53Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 479950806d53Smrg # really was required. 480050806d53Smrg 480150806d53Smrg # Nullify the symbol file. 480250806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 480350806d53Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 480450806d53Smrg fi 480550806d53Smrg 480650806d53Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 480750806d53Smrg # Replace the output file specification. 480850806d53Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 480950806d53Smrg link_command="$compile_command$compile_rpath" 481050806d53Smrg 481150806d53Smrg # We have no uninstalled library dependencies, so finalize right now. 481250806d53Smrg $show "$link_command" 481350806d53Smrg $run eval "$link_command" 481450806d53Smrg exit_status=$? 481550806d53Smrg 481650806d53Smrg # Delete the generated files. 481750806d53Smrg if test -n "$dlsyms"; then 481850806d53Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 481950806d53Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 482050806d53Smrg fi 482150806d53Smrg 482250806d53Smrg exit $exit_status 482350806d53Smrg fi 482450806d53Smrg 482550806d53Smrg if test -n "$shlibpath_var"; then 482650806d53Smrg # We should set the shlibpath_var 482750806d53Smrg rpath= 482850806d53Smrg for dir in $temp_rpath; do 482950806d53Smrg case $dir in 483050806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) 483150806d53Smrg # Absolute path. 483250806d53Smrg rpath="$rpath$dir:" 483350806d53Smrg ;; 483450806d53Smrg *) 483550806d53Smrg # Relative path: add a thisdir entry. 483650806d53Smrg rpath="$rpath\$thisdir/$dir:" 483750806d53Smrg ;; 483850806d53Smrg esac 483950806d53Smrg done 484050806d53Smrg temp_rpath="$rpath" 484150806d53Smrg fi 484250806d53Smrg 484350806d53Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 484450806d53Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 484550806d53Smrg fi 484650806d53Smrg if test -n "$finalize_shlibpath"; then 484750806d53Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 484850806d53Smrg fi 484950806d53Smrg 485050806d53Smrg compile_var= 485150806d53Smrg finalize_var= 485250806d53Smrg if test -n "$runpath_var"; then 485350806d53Smrg if test -n "$perm_rpath"; then 485450806d53Smrg # We should set the runpath_var. 485550806d53Smrg rpath= 485650806d53Smrg for dir in $perm_rpath; do 485750806d53Smrg rpath="$rpath$dir:" 485850806d53Smrg done 485950806d53Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 486050806d53Smrg fi 486150806d53Smrg if test -n "$finalize_perm_rpath"; then 486250806d53Smrg # We should set the runpath_var. 486350806d53Smrg rpath= 486450806d53Smrg for dir in $finalize_perm_rpath; do 486550806d53Smrg rpath="$rpath$dir:" 486650806d53Smrg done 486750806d53Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 486850806d53Smrg fi 486950806d53Smrg fi 487050806d53Smrg 487150806d53Smrg if test "$no_install" = yes; then 487250806d53Smrg # We don't need to create a wrapper script. 487350806d53Smrg link_command="$compile_var$compile_command$compile_rpath" 487450806d53Smrg # Replace the output file specification. 487550806d53Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 487650806d53Smrg # Delete the old output file. 487750806d53Smrg $run $rm $output 487850806d53Smrg # Link the executable and exit 487950806d53Smrg $show "$link_command" 488050806d53Smrg $run eval "$link_command" || exit $? 488150806d53Smrg exit $EXIT_SUCCESS 488250806d53Smrg fi 488350806d53Smrg 488450806d53Smrg if test "$hardcode_action" = relink; then 488550806d53Smrg # Fast installation is not supported 488650806d53Smrg link_command="$compile_var$compile_command$compile_rpath" 488750806d53Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 488850806d53Smrg 488950806d53Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 489050806d53Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 489150806d53Smrg else 489250806d53Smrg if test "$fast_install" != no; then 489350806d53Smrg link_command="$finalize_var$compile_command$finalize_rpath" 489450806d53Smrg if test "$fast_install" = yes; then 489550806d53Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 489650806d53Smrg else 489750806d53Smrg # fast_install is set to needless 489850806d53Smrg relink_command= 489950806d53Smrg fi 490050806d53Smrg else 490150806d53Smrg link_command="$compile_var$compile_command$compile_rpath" 490250806d53Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 490350806d53Smrg fi 490450806d53Smrg fi 490550806d53Smrg 490650806d53Smrg # Replace the output file specification. 490750806d53Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 490850806d53Smrg 490950806d53Smrg # Delete the old output files. 491050806d53Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 491150806d53Smrg 491250806d53Smrg $show "$link_command" 491350806d53Smrg $run eval "$link_command" || exit $? 491450806d53Smrg 491550806d53Smrg # Now create the wrapper script. 491650806d53Smrg $show "creating $output" 491750806d53Smrg 491850806d53Smrg # Quote the relink command for shipping. 491950806d53Smrg if test -n "$relink_command"; then 492050806d53Smrg # Preserve any variables that may affect compiler behavior 492150806d53Smrg for var in $variables_saved_for_relink; do 492250806d53Smrg if eval test -z \"\${$var+set}\"; then 492350806d53Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 492450806d53Smrg elif eval var_value=\$$var; test -z "$var_value"; then 492550806d53Smrg relink_command="$var=; export $var; $relink_command" 492650806d53Smrg else 492750806d53Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 492850806d53Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 492950806d53Smrg fi 493050806d53Smrg done 493150806d53Smrg relink_command="(cd `pwd`; $relink_command)" 493250806d53Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 493350806d53Smrg fi 493450806d53Smrg 493550806d53Smrg # Quote $echo for shipping. 493650806d53Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 493750806d53Smrg case $progpath in 493850806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 493950806d53Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 494050806d53Smrg esac 494150806d53Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 494250806d53Smrg else 494350806d53Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 494450806d53Smrg fi 494550806d53Smrg 494650806d53Smrg # Only actually do things if our run command is non-null. 494750806d53Smrg if test -z "$run"; then 494850806d53Smrg # win32 will think the script is a binary if it has 494950806d53Smrg # a .exe suffix, so we strip it off here. 495050806d53Smrg case $output in 495150806d53Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 495250806d53Smrg esac 495350806d53Smrg # test for cygwin because mv fails w/o .exe extensions 495450806d53Smrg case $host in 495550806d53Smrg *cygwin*) 495650806d53Smrg exeext=.exe 495750806d53Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 495850806d53Smrg *) exeext= ;; 495950806d53Smrg esac 496050806d53Smrg case $host in 496150806d53Smrg *cygwin* | *mingw* ) 496250806d53Smrg output_name=`basename $output` 496350806d53Smrg output_path=`dirname $output` 496450806d53Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 496550806d53Smrg cwrapper="$output_path/$output_name.exe" 496650806d53Smrg $rm $cwrappersource $cwrapper 496750806d53Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 496850806d53Smrg 496950806d53Smrg cat > $cwrappersource <<EOF 497050806d53Smrg 497150806d53Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 497250806d53Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 497350806d53Smrg 497450806d53Smrg The $output program cannot be directly executed until all the libtool 497550806d53Smrg libraries that it depends on are installed. 497650806d53Smrg 497750806d53Smrg This wrapper executable should never be moved out of the build directory. 497850806d53Smrg If it is, it will not operate correctly. 497950806d53Smrg 498050806d53Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 498150806d53Smrg but could eventually absorb all of the scripts functionality and 498250806d53Smrg exec $objdir/$outputname directly. 498350806d53Smrg*/ 498450806d53SmrgEOF 498550806d53Smrg cat >> $cwrappersource<<"EOF" 498650806d53Smrg#include <stdio.h> 498750806d53Smrg#include <stdlib.h> 498850806d53Smrg#include <unistd.h> 498950806d53Smrg#include <malloc.h> 499050806d53Smrg#include <stdarg.h> 499150806d53Smrg#include <assert.h> 499250806d53Smrg#include <string.h> 499350806d53Smrg#include <ctype.h> 499450806d53Smrg#include <sys/stat.h> 499550806d53Smrg 499650806d53Smrg#if defined(PATH_MAX) 499750806d53Smrg# define LT_PATHMAX PATH_MAX 499850806d53Smrg#elif defined(MAXPATHLEN) 499950806d53Smrg# define LT_PATHMAX MAXPATHLEN 500050806d53Smrg#else 500150806d53Smrg# define LT_PATHMAX 1024 500250806d53Smrg#endif 500350806d53Smrg 500450806d53Smrg#ifndef DIR_SEPARATOR 500550806d53Smrg# define DIR_SEPARATOR '/' 500650806d53Smrg# define PATH_SEPARATOR ':' 500750806d53Smrg#endif 500850806d53Smrg 500950806d53Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 501050806d53Smrg defined (__OS2__) 501150806d53Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 501250806d53Smrg# ifndef DIR_SEPARATOR_2 501350806d53Smrg# define DIR_SEPARATOR_2 '\\' 501450806d53Smrg# endif 501550806d53Smrg# ifndef PATH_SEPARATOR_2 501650806d53Smrg# define PATH_SEPARATOR_2 ';' 501750806d53Smrg# endif 501850806d53Smrg#endif 501950806d53Smrg 502050806d53Smrg#ifndef DIR_SEPARATOR_2 502150806d53Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 502250806d53Smrg#else /* DIR_SEPARATOR_2 */ 502350806d53Smrg# define IS_DIR_SEPARATOR(ch) \ 502450806d53Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 502550806d53Smrg#endif /* DIR_SEPARATOR_2 */ 502650806d53Smrg 502750806d53Smrg#ifndef PATH_SEPARATOR_2 502850806d53Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 502950806d53Smrg#else /* PATH_SEPARATOR_2 */ 503050806d53Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 503150806d53Smrg#endif /* PATH_SEPARATOR_2 */ 503250806d53Smrg 503350806d53Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 503450806d53Smrg#define XFREE(stale) do { \ 503550806d53Smrg if (stale) { free ((void *) stale); stale = 0; } \ 503650806d53Smrg} while (0) 503750806d53Smrg 503850806d53Smrg/* -DDEBUG is fairly common in CFLAGS. */ 503950806d53Smrg#undef DEBUG 504050806d53Smrg#if defined DEBUGWRAPPER 504150806d53Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 504250806d53Smrg#else 504350806d53Smrg# define DEBUG(format, ...) 504450806d53Smrg#endif 504550806d53Smrg 504650806d53Smrgconst char *program_name = NULL; 504750806d53Smrg 504850806d53Smrgvoid * xmalloc (size_t num); 504950806d53Smrgchar * xstrdup (const char *string); 505050806d53Smrgconst char * base_name (const char *name); 505150806d53Smrgchar * find_executable(const char *wrapper); 505250806d53Smrgint check_executable(const char *path); 505350806d53Smrgchar * strendzap(char *str, const char *pat); 505450806d53Smrgvoid lt_fatal (const char *message, ...); 505550806d53Smrg 505650806d53Smrgint 505750806d53Smrgmain (int argc, char *argv[]) 505850806d53Smrg{ 505950806d53Smrg char **newargz; 506050806d53Smrg int i; 506150806d53Smrg 506250806d53Smrg program_name = (char *) xstrdup (base_name (argv[0])); 506350806d53Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 506450806d53Smrg DEBUG("(main) program_name : %s\n",program_name); 506550806d53Smrg newargz = XMALLOC(char *, argc+2); 506650806d53SmrgEOF 506750806d53Smrg 506850806d53Smrg cat >> $cwrappersource <<EOF 506950806d53Smrg newargz[0] = (char *) xstrdup("$SHELL"); 507050806d53SmrgEOF 507150806d53Smrg 507250806d53Smrg cat >> $cwrappersource <<"EOF" 507350806d53Smrg newargz[1] = find_executable(argv[0]); 507450806d53Smrg if (newargz[1] == NULL) 507550806d53Smrg lt_fatal("Couldn't find %s", argv[0]); 507650806d53Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 507750806d53Smrg /* we know the script has the same name, without the .exe */ 507850806d53Smrg /* so make sure newargz[1] doesn't end in .exe */ 507950806d53Smrg strendzap(newargz[1],".exe"); 508050806d53Smrg for (i = 1; i < argc; i++) 508150806d53Smrg newargz[i+1] = xstrdup(argv[i]); 508250806d53Smrg newargz[argc+1] = NULL; 508350806d53Smrg 508450806d53Smrg for (i=0; i<argc+1; i++) 508550806d53Smrg { 508650806d53Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 508750806d53Smrg ; 508850806d53Smrg } 508950806d53Smrg 509050806d53SmrgEOF 509150806d53Smrg 509250806d53Smrg case $host_os in 509350806d53Smrg mingw*) 509450806d53Smrg cat >> $cwrappersource <<EOF 509550806d53Smrg execv("$SHELL",(char const **)newargz); 509650806d53SmrgEOF 509750806d53Smrg ;; 509850806d53Smrg *) 509950806d53Smrg cat >> $cwrappersource <<EOF 510050806d53Smrg execv("$SHELL",newargz); 510150806d53SmrgEOF 510250806d53Smrg ;; 510350806d53Smrg esac 510450806d53Smrg 510550806d53Smrg cat >> $cwrappersource <<"EOF" 510650806d53Smrg return 127; 510750806d53Smrg} 510850806d53Smrg 510950806d53Smrgvoid * 511050806d53Smrgxmalloc (size_t num) 511150806d53Smrg{ 511250806d53Smrg void * p = (void *) malloc (num); 511350806d53Smrg if (!p) 511450806d53Smrg lt_fatal ("Memory exhausted"); 511550806d53Smrg 511650806d53Smrg return p; 511750806d53Smrg} 511850806d53Smrg 511950806d53Smrgchar * 512050806d53Smrgxstrdup (const char *string) 512150806d53Smrg{ 512250806d53Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 512350806d53Smrg; 512450806d53Smrg} 512550806d53Smrg 512650806d53Smrgconst char * 512750806d53Smrgbase_name (const char *name) 512850806d53Smrg{ 512950806d53Smrg const char *base; 513050806d53Smrg 513150806d53Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 513250806d53Smrg /* Skip over the disk name in MSDOS pathnames. */ 513350806d53Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 513450806d53Smrg name += 2; 513550806d53Smrg#endif 513650806d53Smrg 513750806d53Smrg for (base = name; *name; name++) 513850806d53Smrg if (IS_DIR_SEPARATOR (*name)) 513950806d53Smrg base = name + 1; 514050806d53Smrg return base; 514150806d53Smrg} 514250806d53Smrg 514350806d53Smrgint 514450806d53Smrgcheck_executable(const char * path) 514550806d53Smrg{ 514650806d53Smrg struct stat st; 514750806d53Smrg 514850806d53Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 514950806d53Smrg if ((!path) || (!*path)) 515050806d53Smrg return 0; 515150806d53Smrg 515250806d53Smrg if ((stat (path, &st) >= 0) && 515350806d53Smrg ( 515450806d53Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 515550806d53Smrg#if defined (S_IXOTH) 515650806d53Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 515750806d53Smrg#endif 515850806d53Smrg#if defined (S_IXGRP) 515950806d53Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 516050806d53Smrg#endif 516150806d53Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 516250806d53Smrg ) 516350806d53Smrg return 1; 516450806d53Smrg else 516550806d53Smrg return 0; 516650806d53Smrg} 516750806d53Smrg 516850806d53Smrg/* Searches for the full path of the wrapper. Returns 516950806d53Smrg newly allocated full path name if found, NULL otherwise */ 517050806d53Smrgchar * 517150806d53Smrgfind_executable (const char* wrapper) 517250806d53Smrg{ 517350806d53Smrg int has_slash = 0; 517450806d53Smrg const char* p; 517550806d53Smrg const char* p_next; 517650806d53Smrg /* static buffer for getcwd */ 517750806d53Smrg char tmp[LT_PATHMAX + 1]; 517850806d53Smrg int tmp_len; 517950806d53Smrg char* concat_name; 518050806d53Smrg 518150806d53Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 518250806d53Smrg 518350806d53Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 518450806d53Smrg return NULL; 518550806d53Smrg 518650806d53Smrg /* Absolute path? */ 518750806d53Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 518850806d53Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 518950806d53Smrg { 519050806d53Smrg concat_name = xstrdup (wrapper); 519150806d53Smrg if (check_executable(concat_name)) 519250806d53Smrg return concat_name; 519350806d53Smrg XFREE(concat_name); 519450806d53Smrg } 519550806d53Smrg else 519650806d53Smrg { 519750806d53Smrg#endif 519850806d53Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 519950806d53Smrg { 520050806d53Smrg concat_name = xstrdup (wrapper); 520150806d53Smrg if (check_executable(concat_name)) 520250806d53Smrg return concat_name; 520350806d53Smrg XFREE(concat_name); 520450806d53Smrg } 520550806d53Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 520650806d53Smrg } 520750806d53Smrg#endif 520850806d53Smrg 520950806d53Smrg for (p = wrapper; *p; p++) 521050806d53Smrg if (*p == '/') 521150806d53Smrg { 521250806d53Smrg has_slash = 1; 521350806d53Smrg break; 521450806d53Smrg } 521550806d53Smrg if (!has_slash) 521650806d53Smrg { 521750806d53Smrg /* no slashes; search PATH */ 521850806d53Smrg const char* path = getenv ("PATH"); 521950806d53Smrg if (path != NULL) 522050806d53Smrg { 522150806d53Smrg for (p = path; *p; p = p_next) 522250806d53Smrg { 522350806d53Smrg const char* q; 522450806d53Smrg size_t p_len; 522550806d53Smrg for (q = p; *q; q++) 522650806d53Smrg if (IS_PATH_SEPARATOR(*q)) 522750806d53Smrg break; 522850806d53Smrg p_len = q - p; 522950806d53Smrg p_next = (*q == '\0' ? q : q + 1); 523050806d53Smrg if (p_len == 0) 523150806d53Smrg { 523250806d53Smrg /* empty path: current directory */ 523350806d53Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 523450806d53Smrg lt_fatal ("getcwd failed"); 523550806d53Smrg tmp_len = strlen(tmp); 523650806d53Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 523750806d53Smrg memcpy (concat_name, tmp, tmp_len); 523850806d53Smrg concat_name[tmp_len] = '/'; 523950806d53Smrg strcpy (concat_name + tmp_len + 1, wrapper); 524050806d53Smrg } 524150806d53Smrg else 524250806d53Smrg { 524350806d53Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 524450806d53Smrg memcpy (concat_name, p, p_len); 524550806d53Smrg concat_name[p_len] = '/'; 524650806d53Smrg strcpy (concat_name + p_len + 1, wrapper); 524750806d53Smrg } 524850806d53Smrg if (check_executable(concat_name)) 524950806d53Smrg return concat_name; 525050806d53Smrg XFREE(concat_name); 525150806d53Smrg } 525250806d53Smrg } 525350806d53Smrg /* not found in PATH; assume curdir */ 525450806d53Smrg } 525550806d53Smrg /* Relative path | not found in path: prepend cwd */ 525650806d53Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 525750806d53Smrg lt_fatal ("getcwd failed"); 525850806d53Smrg tmp_len = strlen(tmp); 525950806d53Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 526050806d53Smrg memcpy (concat_name, tmp, tmp_len); 526150806d53Smrg concat_name[tmp_len] = '/'; 526250806d53Smrg strcpy (concat_name + tmp_len + 1, wrapper); 526350806d53Smrg 526450806d53Smrg if (check_executable(concat_name)) 526550806d53Smrg return concat_name; 526650806d53Smrg XFREE(concat_name); 526750806d53Smrg return NULL; 526850806d53Smrg} 526950806d53Smrg 527050806d53Smrgchar * 527150806d53Smrgstrendzap(char *str, const char *pat) 527250806d53Smrg{ 527350806d53Smrg size_t len, patlen; 527450806d53Smrg 527550806d53Smrg assert(str != NULL); 527650806d53Smrg assert(pat != NULL); 527750806d53Smrg 527850806d53Smrg len = strlen(str); 527950806d53Smrg patlen = strlen(pat); 528050806d53Smrg 528150806d53Smrg if (patlen <= len) 528250806d53Smrg { 528350806d53Smrg str += len - patlen; 528450806d53Smrg if (strcmp(str, pat) == 0) 528550806d53Smrg *str = '\0'; 528650806d53Smrg } 528750806d53Smrg return str; 528850806d53Smrg} 528950806d53Smrg 529050806d53Smrgstatic void 529150806d53Smrglt_error_core (int exit_status, const char * mode, 529250806d53Smrg const char * message, va_list ap) 529350806d53Smrg{ 529450806d53Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 529550806d53Smrg vfprintf (stderr, message, ap); 529650806d53Smrg fprintf (stderr, ".\n"); 529750806d53Smrg 529850806d53Smrg if (exit_status >= 0) 529950806d53Smrg exit (exit_status); 530050806d53Smrg} 530150806d53Smrg 530250806d53Smrgvoid 530350806d53Smrglt_fatal (const char *message, ...) 530450806d53Smrg{ 530550806d53Smrg va_list ap; 530650806d53Smrg va_start (ap, message); 530750806d53Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 530850806d53Smrg va_end (ap); 530950806d53Smrg} 531050806d53SmrgEOF 531150806d53Smrg # we should really use a build-platform specific compiler 531250806d53Smrg # here, but OTOH, the wrappers (shell script and this C one) 531350806d53Smrg # are only useful if you want to execute the "real" binary. 531450806d53Smrg # Since the "real" binary is built for $host, then this 531550806d53Smrg # wrapper might as well be built for $host, too. 531650806d53Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 531750806d53Smrg ;; 531850806d53Smrg esac 531950806d53Smrg $rm $output 532050806d53Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 532150806d53Smrg 532250806d53Smrg $echo > $output "\ 532350806d53Smrg#! $SHELL 532450806d53Smrg 532550806d53Smrg# $output - temporary wrapper script for $objdir/$outputname 532650806d53Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 532750806d53Smrg# 532850806d53Smrg# The $output program cannot be directly executed until all the libtool 532950806d53Smrg# libraries that it depends on are installed. 533050806d53Smrg# 533150806d53Smrg# This wrapper script should never be moved out of the build directory. 533250806d53Smrg# If it is, it will not operate correctly. 533350806d53Smrg 533450806d53Smrg# Sed substitution that helps us do robust quoting. It backslashifies 533550806d53Smrg# metacharacters that are still active within double-quoted strings. 533650806d53SmrgXsed='${SED} -e 1s/^X//' 533750806d53Smrgsed_quote_subst='$sed_quote_subst' 533850806d53Smrg 533950806d53Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 534050806d53Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 534150806d53Smrg emulate sh 534250806d53Smrg NULLCMD=: 534350806d53Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 534450806d53Smrg # is contrary to our usage. Disable this feature. 534550806d53Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 534650806d53Smrg setopt NO_GLOB_SUBST 534750806d53Smrgelse 534850806d53Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 534950806d53Smrgfi 53507965d9acSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 53517965d9acSmrgDUALCASE=1; export DUALCASE # for MKS sh 535250806d53Smrg 535350806d53Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 535450806d53Smrg# if CDPATH is set. 535550806d53Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 535650806d53Smrg 535750806d53Smrgrelink_command=\"$relink_command\" 535850806d53Smrg 535950806d53Smrg# This environment variable determines our operation mode. 536050806d53Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 536150806d53Smrg # install mode needs the following variable: 536250806d53Smrg notinst_deplibs='$notinst_deplibs' 536350806d53Smrgelse 536450806d53Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 536550806d53Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 536650806d53Smrg echo=\"$qecho\" 536750806d53Smrg file=\"\$0\" 536850806d53Smrg # Make sure echo works. 536950806d53Smrg if test \"X\$1\" = X--no-reexec; then 537050806d53Smrg # Discard the --no-reexec flag, and continue. 537150806d53Smrg shift 537250806d53Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 537350806d53Smrg # Yippee, \$echo works! 537450806d53Smrg : 537550806d53Smrg else 537650806d53Smrg # Restart under the correct shell, and then maybe \$echo will work. 537750806d53Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 537850806d53Smrg fi 537950806d53Smrg fi\ 538050806d53Smrg" 538150806d53Smrg $echo >> $output "\ 538250806d53Smrg 538350806d53Smrg # Find the directory that this script lives in. 538450806d53Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 538550806d53Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 538650806d53Smrg 538750806d53Smrg # Follow symbolic links until we get to the real thisdir. 538850806d53Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 538950806d53Smrg while test -n \"\$file\"; do 539050806d53Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 539150806d53Smrg 539250806d53Smrg # If there was a directory component, then change thisdir. 539350806d53Smrg if test \"x\$destdir\" != \"x\$file\"; then 539450806d53Smrg case \"\$destdir\" in 539550806d53Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 539650806d53Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 539750806d53Smrg esac 539850806d53Smrg fi 539950806d53Smrg 540050806d53Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 540150806d53Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 540250806d53Smrg done 540350806d53Smrg 540450806d53Smrg # Try to get the absolute directory name. 540550806d53Smrg absdir=\`cd \"\$thisdir\" && pwd\` 540650806d53Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 540750806d53Smrg" 540850806d53Smrg 540950806d53Smrg if test "$fast_install" = yes; then 541050806d53Smrg $echo >> $output "\ 541150806d53Smrg program=lt-'$outputname'$exeext 541250806d53Smrg progdir=\"\$thisdir/$objdir\" 541350806d53Smrg 541450806d53Smrg if test ! -f \"\$progdir/\$program\" || \\ 541550806d53Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 541650806d53Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 541750806d53Smrg 541850806d53Smrg file=\"\$\$-\$program\" 541950806d53Smrg 542050806d53Smrg if test ! -d \"\$progdir\"; then 542150806d53Smrg $mkdir \"\$progdir\" 542250806d53Smrg else 542350806d53Smrg $rm \"\$progdir/\$file\" 542450806d53Smrg fi" 542550806d53Smrg 542650806d53Smrg $echo >> $output "\ 542750806d53Smrg 542850806d53Smrg # relink executable if necessary 542950806d53Smrg if test -n \"\$relink_command\"; then 543050806d53Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 543150806d53Smrg else 543250806d53Smrg $echo \"\$relink_command_output\" >&2 543350806d53Smrg $rm \"\$progdir/\$file\" 543450806d53Smrg exit $EXIT_FAILURE 543550806d53Smrg fi 543650806d53Smrg fi 543750806d53Smrg 543850806d53Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 543950806d53Smrg { $rm \"\$progdir/\$program\"; 544050806d53Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 544150806d53Smrg $rm \"\$progdir/\$file\" 544250806d53Smrg fi" 544350806d53Smrg else 544450806d53Smrg $echo >> $output "\ 544550806d53Smrg program='$outputname' 544650806d53Smrg progdir=\"\$thisdir/$objdir\" 544750806d53Smrg" 544850806d53Smrg fi 544950806d53Smrg 545050806d53Smrg $echo >> $output "\ 545150806d53Smrg 545250806d53Smrg if test -f \"\$progdir/\$program\"; then" 545350806d53Smrg 545450806d53Smrg # Export our shlibpath_var if we have one. 545550806d53Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 545650806d53Smrg $echo >> $output "\ 545750806d53Smrg # Add our own library path to $shlibpath_var 545850806d53Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 545950806d53Smrg 546050806d53Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 546150806d53Smrg # The second colon is a workaround for a bug in BeOS R4 sed 546250806d53Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 546350806d53Smrg 546450806d53Smrg export $shlibpath_var 546550806d53Smrg" 546650806d53Smrg fi 546750806d53Smrg 546850806d53Smrg # fixup the dll searchpath if we need to. 546950806d53Smrg if test -n "$dllsearchpath"; then 547050806d53Smrg $echo >> $output "\ 547150806d53Smrg # Add the dll search path components to the executable PATH 547250806d53Smrg PATH=$dllsearchpath:\$PATH 547350806d53Smrg" 547450806d53Smrg fi 547550806d53Smrg 547650806d53Smrg $echo >> $output "\ 547750806d53Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 547850806d53Smrg # Run the actual program with our arguments. 547950806d53Smrg" 548050806d53Smrg case $host in 548150806d53Smrg # Backslashes separate directories on plain windows 548250806d53Smrg *-*-mingw | *-*-os2*) 548350806d53Smrg $echo >> $output "\ 548450806d53Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 548550806d53Smrg" 548650806d53Smrg ;; 548750806d53Smrg 548850806d53Smrg *) 548950806d53Smrg $echo >> $output "\ 549050806d53Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 549150806d53Smrg" 549250806d53Smrg ;; 549350806d53Smrg esac 549450806d53Smrg $echo >> $output "\ 549550806d53Smrg \$echo \"\$0: cannot exec \$program \$*\" 549650806d53Smrg exit $EXIT_FAILURE 549750806d53Smrg fi 549850806d53Smrg else 549950806d53Smrg # The program doesn't exist. 550050806d53Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 550150806d53Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 550250806d53Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 550350806d53Smrg exit $EXIT_FAILURE 550450806d53Smrg fi 550550806d53Smrgfi\ 550650806d53Smrg" 550750806d53Smrg chmod +x $output 550850806d53Smrg fi 550950806d53Smrg exit $EXIT_SUCCESS 551050806d53Smrg ;; 551150806d53Smrg esac 551250806d53Smrg 551350806d53Smrg # See if we need to build an old-fashioned archive. 551450806d53Smrg for oldlib in $oldlibs; do 551550806d53Smrg 551650806d53Smrg if test "$build_libtool_libs" = convenience; then 551750806d53Smrg oldobjs="$libobjs_save" 551850806d53Smrg addlibs="$convenience" 551950806d53Smrg build_libtool_libs=no 552050806d53Smrg else 552150806d53Smrg if test "$build_libtool_libs" = module; then 552250806d53Smrg oldobjs="$libobjs_save" 552350806d53Smrg build_libtool_libs=no 552450806d53Smrg else 552550806d53Smrg oldobjs="$old_deplibs $non_pic_objects" 552650806d53Smrg fi 552750806d53Smrg addlibs="$old_convenience" 552850806d53Smrg fi 552950806d53Smrg 553050806d53Smrg if test -n "$addlibs"; then 553150806d53Smrg gentop="$output_objdir/${outputname}x" 553250806d53Smrg generated="$generated $gentop" 553350806d53Smrg 553450806d53Smrg func_extract_archives $gentop $addlibs 553550806d53Smrg oldobjs="$oldobjs $func_extract_archives_result" 553650806d53Smrg fi 553750806d53Smrg 553850806d53Smrg # Do each command in the archive commands. 553950806d53Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 554050806d53Smrg cmds=$old_archive_from_new_cmds 554150806d53Smrg else 554250806d53Smrg # POSIX demands no paths to be encoded in archives. We have 554350806d53Smrg # to avoid creating archives with duplicate basenames if we 554450806d53Smrg # might have to extract them afterwards, e.g., when creating a 554550806d53Smrg # static archive out of a convenience library, or when linking 554650806d53Smrg # the entirety of a libtool archive into another (currently 554750806d53Smrg # not supported by libtool). 554850806d53Smrg if (for obj in $oldobjs 554950806d53Smrg do 555050806d53Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 555150806d53Smrg done | sort | sort -uc >/dev/null 2>&1); then 555250806d53Smrg : 555350806d53Smrg else 555450806d53Smrg $echo "copying selected object files to avoid basename conflicts..." 555550806d53Smrg 555650806d53Smrg if test -z "$gentop"; then 555750806d53Smrg gentop="$output_objdir/${outputname}x" 555850806d53Smrg generated="$generated $gentop" 555950806d53Smrg 556050806d53Smrg $show "${rm}r $gentop" 556150806d53Smrg $run ${rm}r "$gentop" 556250806d53Smrg $show "$mkdir $gentop" 556350806d53Smrg $run $mkdir "$gentop" 556450806d53Smrg exit_status=$? 556550806d53Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 556650806d53Smrg exit $exit_status 556750806d53Smrg fi 556850806d53Smrg fi 556950806d53Smrg 557050806d53Smrg save_oldobjs=$oldobjs 557150806d53Smrg oldobjs= 557250806d53Smrg counter=1 557350806d53Smrg for obj in $save_oldobjs 557450806d53Smrg do 557550806d53Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 557650806d53Smrg case " $oldobjs " in 557750806d53Smrg " ") oldobjs=$obj ;; 557850806d53Smrg *[\ /]"$objbase "*) 557950806d53Smrg while :; do 558050806d53Smrg # Make sure we don't pick an alternate name that also 558150806d53Smrg # overlaps. 558250806d53Smrg newobj=lt$counter-$objbase 558350806d53Smrg counter=`expr $counter + 1` 558450806d53Smrg case " $oldobjs " in 558550806d53Smrg *[\ /]"$newobj "*) ;; 558650806d53Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 558750806d53Smrg esac 558850806d53Smrg done 558950806d53Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 559050806d53Smrg $run ln "$obj" "$gentop/$newobj" || 559150806d53Smrg $run cp "$obj" "$gentop/$newobj" 559250806d53Smrg oldobjs="$oldobjs $gentop/$newobj" 559350806d53Smrg ;; 559450806d53Smrg *) oldobjs="$oldobjs $obj" ;; 559550806d53Smrg esac 559650806d53Smrg done 559750806d53Smrg fi 559850806d53Smrg 559950806d53Smrg eval cmds=\"$old_archive_cmds\" 560050806d53Smrg 560150806d53Smrg if len=`expr "X$cmds" : ".*"` && 560250806d53Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 560350806d53Smrg cmds=$old_archive_cmds 560450806d53Smrg else 560550806d53Smrg # the command line is too long to link in one step, link in parts 560650806d53Smrg $echo "using piecewise archive linking..." 560750806d53Smrg save_RANLIB=$RANLIB 560850806d53Smrg RANLIB=: 560950806d53Smrg objlist= 561050806d53Smrg concat_cmds= 561150806d53Smrg save_oldobjs=$oldobjs 561250806d53Smrg 561350806d53Smrg # Is there a better way of finding the last object in the list? 561450806d53Smrg for obj in $save_oldobjs 561550806d53Smrg do 561650806d53Smrg last_oldobj=$obj 561750806d53Smrg done 561850806d53Smrg for obj in $save_oldobjs 561950806d53Smrg do 562050806d53Smrg oldobjs="$objlist $obj" 562150806d53Smrg objlist="$objlist $obj" 562250806d53Smrg eval test_cmds=\"$old_archive_cmds\" 562350806d53Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 562450806d53Smrg test "$len" -le "$max_cmd_len"; then 562550806d53Smrg : 562650806d53Smrg else 562750806d53Smrg # the above command should be used before it gets too long 562850806d53Smrg oldobjs=$objlist 562950806d53Smrg if test "$obj" = "$last_oldobj" ; then 563050806d53Smrg RANLIB=$save_RANLIB 563150806d53Smrg fi 563250806d53Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 563350806d53Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 563450806d53Smrg objlist= 563550806d53Smrg fi 563650806d53Smrg done 563750806d53Smrg RANLIB=$save_RANLIB 563850806d53Smrg oldobjs=$objlist 563950806d53Smrg if test "X$oldobjs" = "X" ; then 564050806d53Smrg eval cmds=\"\$concat_cmds\" 564150806d53Smrg else 564250806d53Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 564350806d53Smrg fi 564450806d53Smrg fi 564550806d53Smrg fi 564650806d53Smrg save_ifs="$IFS"; IFS='~' 564750806d53Smrg for cmd in $cmds; do 564850806d53Smrg eval cmd=\"$cmd\" 564950806d53Smrg IFS="$save_ifs" 565050806d53Smrg $show "$cmd" 565150806d53Smrg $run eval "$cmd" || exit $? 565250806d53Smrg done 565350806d53Smrg IFS="$save_ifs" 565450806d53Smrg done 565550806d53Smrg 565650806d53Smrg if test -n "$generated"; then 565750806d53Smrg $show "${rm}r$generated" 565850806d53Smrg $run ${rm}r$generated 565950806d53Smrg fi 566050806d53Smrg 566150806d53Smrg # Now create the libtool archive. 566250806d53Smrg case $output in 566350806d53Smrg *.la) 566450806d53Smrg old_library= 566550806d53Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 566650806d53Smrg $show "creating $output" 566750806d53Smrg 566850806d53Smrg # Preserve any variables that may affect compiler behavior 566950806d53Smrg for var in $variables_saved_for_relink; do 567050806d53Smrg if eval test -z \"\${$var+set}\"; then 567150806d53Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 567250806d53Smrg elif eval var_value=\$$var; test -z "$var_value"; then 567350806d53Smrg relink_command="$var=; export $var; $relink_command" 567450806d53Smrg else 567550806d53Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 567650806d53Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 567750806d53Smrg fi 567850806d53Smrg done 567950806d53Smrg # Quote the link command for shipping. 568050806d53Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 568150806d53Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 568250806d53Smrg if test "$hardcode_automatic" = yes ; then 568350806d53Smrg relink_command= 568450806d53Smrg fi 568550806d53Smrg 568650806d53Smrg 568750806d53Smrg # Only create the output if not a dry run. 568850806d53Smrg if test -z "$run"; then 568950806d53Smrg for installed in no yes; do 569050806d53Smrg if test "$installed" = yes; then 569150806d53Smrg if test -z "$install_libdir"; then 569250806d53Smrg break 569350806d53Smrg fi 569450806d53Smrg output="$output_objdir/$outputname"i 569550806d53Smrg # Replace all uninstalled libtool libraries with the installed ones 569650806d53Smrg newdependency_libs= 569750806d53Smrg for deplib in $dependency_libs; do 569850806d53Smrg case $deplib in 569950806d53Smrg *.la) 570050806d53Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 570150806d53Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 570250806d53Smrg if test -z "$libdir"; then 570350806d53Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 570450806d53Smrg exit $EXIT_FAILURE 570550806d53Smrg fi 570650806d53Smrg newdependency_libs="$newdependency_libs $libdir/$name" 570750806d53Smrg ;; 570850806d53Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 570950806d53Smrg esac 571050806d53Smrg done 571150806d53Smrg dependency_libs="$newdependency_libs" 571250806d53Smrg newdlfiles= 571350806d53Smrg for lib in $dlfiles; do 571450806d53Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 571550806d53Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 571650806d53Smrg if test -z "$libdir"; then 571750806d53Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 571850806d53Smrg exit $EXIT_FAILURE 571950806d53Smrg fi 572050806d53Smrg newdlfiles="$newdlfiles $libdir/$name" 572150806d53Smrg done 572250806d53Smrg dlfiles="$newdlfiles" 572350806d53Smrg newdlprefiles= 572450806d53Smrg for lib in $dlprefiles; do 572550806d53Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 572650806d53Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 572750806d53Smrg if test -z "$libdir"; then 572850806d53Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 572950806d53Smrg exit $EXIT_FAILURE 573050806d53Smrg fi 573150806d53Smrg newdlprefiles="$newdlprefiles $libdir/$name" 573250806d53Smrg done 573350806d53Smrg dlprefiles="$newdlprefiles" 573450806d53Smrg else 573550806d53Smrg newdlfiles= 573650806d53Smrg for lib in $dlfiles; do 573750806d53Smrg case $lib in 573850806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 573950806d53Smrg *) abs=`pwd`"/$lib" ;; 574050806d53Smrg esac 574150806d53Smrg newdlfiles="$newdlfiles $abs" 574250806d53Smrg done 574350806d53Smrg dlfiles="$newdlfiles" 574450806d53Smrg newdlprefiles= 574550806d53Smrg for lib in $dlprefiles; do 574650806d53Smrg case $lib in 574750806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 574850806d53Smrg *) abs=`pwd`"/$lib" ;; 574950806d53Smrg esac 575050806d53Smrg newdlprefiles="$newdlprefiles $abs" 575150806d53Smrg done 575250806d53Smrg dlprefiles="$newdlprefiles" 575350806d53Smrg fi 575450806d53Smrg $rm $output 575550806d53Smrg # place dlname in correct position for cygwin 575650806d53Smrg tdlname=$dlname 575750806d53Smrg case $host,$output,$installed,$module,$dlname in 575850806d53Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 575950806d53Smrg esac 576050806d53Smrg $echo > $output "\ 576150806d53Smrg# $outputname - a libtool library file 576250806d53Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 576350806d53Smrg# 576450806d53Smrg# Please DO NOT delete this file! 576550806d53Smrg# It is necessary for linking the library. 576650806d53Smrg 576750806d53Smrg# The name that we can dlopen(3). 576850806d53Smrgdlname='$tdlname' 576950806d53Smrg 577050806d53Smrg# Names of this library. 577150806d53Smrglibrary_names='$library_names' 577250806d53Smrg 577350806d53Smrg# The name of the static archive. 577450806d53Smrgold_library='$old_library' 577550806d53Smrg 577650806d53Smrg# Libraries that this one depends upon. 577750806d53Smrgdependency_libs='$dependency_libs' 577850806d53Smrg 577950806d53Smrg# Version information for $libname. 578050806d53Smrgcurrent=$current 578150806d53Smrgage=$age 578250806d53Smrgrevision=$revision 578350806d53Smrg 578450806d53Smrg# Is this an already installed library? 578550806d53Smrginstalled=$installed 578650806d53Smrg 578750806d53Smrg# Should we warn about portability when linking against -modules? 578850806d53Smrgshouldnotlink=$module 578950806d53Smrg 579050806d53Smrg# Files to dlopen/dlpreopen 579150806d53Smrgdlopen='$dlfiles' 579250806d53Smrgdlpreopen='$dlprefiles' 579350806d53Smrg 579450806d53Smrg# Directory that this library needs to be installed in: 579550806d53Smrglibdir='$install_libdir'" 579650806d53Smrg if test "$installed" = no && test "$need_relink" = yes; then 579750806d53Smrg $echo >> $output "\ 579850806d53Smrgrelink_command=\"$relink_command\"" 579950806d53Smrg fi 580050806d53Smrg done 580150806d53Smrg fi 580250806d53Smrg 580350806d53Smrg # Do a symbolic link so that the libtool archive can be found in 580450806d53Smrg # LD_LIBRARY_PATH before the program is installed. 580550806d53Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 580650806d53Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 580750806d53Smrg ;; 580850806d53Smrg esac 580950806d53Smrg exit $EXIT_SUCCESS 581050806d53Smrg ;; 581150806d53Smrg 581250806d53Smrg # libtool install mode 581350806d53Smrg install) 581450806d53Smrg modename="$modename: install" 581550806d53Smrg 581650806d53Smrg # There may be an optional sh(1) argument at the beginning of 581750806d53Smrg # install_prog (especially on Windows NT). 581850806d53Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 581950806d53Smrg # Allow the use of GNU shtool's install command. 582050806d53Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 582150806d53Smrg # Aesthetically quote it. 582250806d53Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 582350806d53Smrg case $arg in 582450806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 582550806d53Smrg arg="\"$arg\"" 582650806d53Smrg ;; 582750806d53Smrg esac 582850806d53Smrg install_prog="$arg " 582950806d53Smrg arg="$1" 583050806d53Smrg shift 583150806d53Smrg else 583250806d53Smrg install_prog= 583350806d53Smrg arg=$nonopt 583450806d53Smrg fi 583550806d53Smrg 583650806d53Smrg # The real first argument should be the name of the installation program. 583750806d53Smrg # Aesthetically quote it. 583850806d53Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 583950806d53Smrg case $arg in 584050806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 584150806d53Smrg arg="\"$arg\"" 584250806d53Smrg ;; 584350806d53Smrg esac 584450806d53Smrg install_prog="$install_prog$arg" 584550806d53Smrg 584650806d53Smrg # We need to accept at least all the BSD install flags. 584750806d53Smrg dest= 584850806d53Smrg files= 584950806d53Smrg opts= 585050806d53Smrg prev= 585150806d53Smrg install_type= 585250806d53Smrg isdir=no 585350806d53Smrg stripme= 585450806d53Smrg for arg 585550806d53Smrg do 585650806d53Smrg if test -n "$dest"; then 585750806d53Smrg files="$files $dest" 585850806d53Smrg dest=$arg 585950806d53Smrg continue 586050806d53Smrg fi 586150806d53Smrg 586250806d53Smrg case $arg in 586350806d53Smrg -d) isdir=yes ;; 586450806d53Smrg -f) 586550806d53Smrg case " $install_prog " in 586650806d53Smrg *[\\\ /]cp\ *) ;; 586750806d53Smrg *) prev=$arg ;; 586850806d53Smrg esac 586950806d53Smrg ;; 587050806d53Smrg -g | -m | -o) prev=$arg ;; 587150806d53Smrg -s) 587250806d53Smrg stripme=" -s" 587350806d53Smrg continue 587450806d53Smrg ;; 587550806d53Smrg -*) 587650806d53Smrg ;; 587750806d53Smrg *) 587850806d53Smrg # If the previous option needed an argument, then skip it. 587950806d53Smrg if test -n "$prev"; then 588050806d53Smrg prev= 588150806d53Smrg else 588250806d53Smrg dest=$arg 588350806d53Smrg continue 588450806d53Smrg fi 588550806d53Smrg ;; 588650806d53Smrg esac 588750806d53Smrg 588850806d53Smrg # Aesthetically quote the argument. 588950806d53Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 589050806d53Smrg case $arg in 589150806d53Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 589250806d53Smrg arg="\"$arg\"" 589350806d53Smrg ;; 589450806d53Smrg esac 589550806d53Smrg install_prog="$install_prog $arg" 589650806d53Smrg done 589750806d53Smrg 589850806d53Smrg if test -z "$install_prog"; then 589950806d53Smrg $echo "$modename: you must specify an install program" 1>&2 590050806d53Smrg $echo "$help" 1>&2 590150806d53Smrg exit $EXIT_FAILURE 590250806d53Smrg fi 590350806d53Smrg 590450806d53Smrg if test -n "$prev"; then 590550806d53Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 590650806d53Smrg $echo "$help" 1>&2 590750806d53Smrg exit $EXIT_FAILURE 590850806d53Smrg fi 590950806d53Smrg 591050806d53Smrg if test -z "$files"; then 591150806d53Smrg if test -z "$dest"; then 591250806d53Smrg $echo "$modename: no file or destination specified" 1>&2 591350806d53Smrg else 591450806d53Smrg $echo "$modename: you must specify a destination" 1>&2 591550806d53Smrg fi 591650806d53Smrg $echo "$help" 1>&2 591750806d53Smrg exit $EXIT_FAILURE 591850806d53Smrg fi 591950806d53Smrg 592050806d53Smrg # Strip any trailing slash from the destination. 592150806d53Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 592250806d53Smrg 592350806d53Smrg # Check to see that the destination is a directory. 592450806d53Smrg test -d "$dest" && isdir=yes 592550806d53Smrg if test "$isdir" = yes; then 592650806d53Smrg destdir="$dest" 592750806d53Smrg destname= 592850806d53Smrg else 592950806d53Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 593050806d53Smrg test "X$destdir" = "X$dest" && destdir=. 593150806d53Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 593250806d53Smrg 593350806d53Smrg # Not a directory, so check to see that there is only one file specified. 593450806d53Smrg set dummy $files 593550806d53Smrg if test "$#" -gt 2; then 593650806d53Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 593750806d53Smrg $echo "$help" 1>&2 593850806d53Smrg exit $EXIT_FAILURE 593950806d53Smrg fi 594050806d53Smrg fi 594150806d53Smrg case $destdir in 594250806d53Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 594350806d53Smrg *) 594450806d53Smrg for file in $files; do 594550806d53Smrg case $file in 594650806d53Smrg *.lo) ;; 594750806d53Smrg *) 594850806d53Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 594950806d53Smrg $echo "$help" 1>&2 595050806d53Smrg exit $EXIT_FAILURE 595150806d53Smrg ;; 595250806d53Smrg esac 595350806d53Smrg done 595450806d53Smrg ;; 595550806d53Smrg esac 595650806d53Smrg 595750806d53Smrg # This variable tells wrapper scripts just to set variables rather 595850806d53Smrg # than running their programs. 595950806d53Smrg libtool_install_magic="$magic" 596050806d53Smrg 596150806d53Smrg staticlibs= 596250806d53Smrg future_libdirs= 596350806d53Smrg current_libdirs= 596450806d53Smrg for file in $files; do 596550806d53Smrg 596650806d53Smrg # Do each installation. 596750806d53Smrg case $file in 596850806d53Smrg *.$libext) 596950806d53Smrg # Do the static libraries later. 597050806d53Smrg staticlibs="$staticlibs $file" 597150806d53Smrg ;; 597250806d53Smrg 597350806d53Smrg *.la) 597450806d53Smrg # Check to see that this really is a libtool archive. 597550806d53Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 597650806d53Smrg else 597750806d53Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 597850806d53Smrg $echo "$help" 1>&2 597950806d53Smrg exit $EXIT_FAILURE 598050806d53Smrg fi 598150806d53Smrg 598250806d53Smrg library_names= 598350806d53Smrg old_library= 598450806d53Smrg relink_command= 598550806d53Smrg # If there is no directory component, then add one. 598650806d53Smrg case $file in 598750806d53Smrg */* | *\\*) . $file ;; 598850806d53Smrg *) . ./$file ;; 598950806d53Smrg esac 599050806d53Smrg 599150806d53Smrg # Add the libdir to current_libdirs if it is the destination. 599250806d53Smrg if test "X$destdir" = "X$libdir"; then 599350806d53Smrg case "$current_libdirs " in 599450806d53Smrg *" $libdir "*) ;; 599550806d53Smrg *) current_libdirs="$current_libdirs $libdir" ;; 599650806d53Smrg esac 599750806d53Smrg else 599850806d53Smrg # Note the libdir as a future libdir. 599950806d53Smrg case "$future_libdirs " in 600050806d53Smrg *" $libdir "*) ;; 600150806d53Smrg *) future_libdirs="$future_libdirs $libdir" ;; 600250806d53Smrg esac 600350806d53Smrg fi 600450806d53Smrg 600550806d53Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 600650806d53Smrg test "X$dir" = "X$file/" && dir= 600750806d53Smrg dir="$dir$objdir" 600850806d53Smrg 600950806d53Smrg if test -n "$relink_command"; then 601050806d53Smrg # Determine the prefix the user has applied to our future dir. 601150806d53Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 601250806d53Smrg 601350806d53Smrg # Don't allow the user to place us outside of our expected 601450806d53Smrg # location b/c this prevents finding dependent libraries that 601550806d53Smrg # are installed to the same prefix. 601650806d53Smrg # At present, this check doesn't affect windows .dll's that 601750806d53Smrg # are installed into $libdir/../bin (currently, that works fine) 601850806d53Smrg # but it's something to keep an eye on. 601950806d53Smrg if test "$inst_prefix_dir" = "$destdir"; then 602050806d53Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 602150806d53Smrg exit $EXIT_FAILURE 602250806d53Smrg fi 602350806d53Smrg 602450806d53Smrg if test -n "$inst_prefix_dir"; then 602550806d53Smrg # Stick the inst_prefix_dir data into the link command. 602650806d53Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 602750806d53Smrg else 602850806d53Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 602950806d53Smrg fi 603050806d53Smrg 603150806d53Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 603250806d53Smrg $show "$relink_command" 603350806d53Smrg if $run eval "$relink_command"; then : 603450806d53Smrg else 603550806d53Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 603650806d53Smrg exit $EXIT_FAILURE 603750806d53Smrg fi 603850806d53Smrg fi 603950806d53Smrg 604050806d53Smrg # See the names of the shared library. 604150806d53Smrg set dummy $library_names 604250806d53Smrg if test -n "$2"; then 604350806d53Smrg realname="$2" 604450806d53Smrg shift 604550806d53Smrg shift 604650806d53Smrg 604750806d53Smrg srcname="$realname" 604850806d53Smrg test -n "$relink_command" && srcname="$realname"T 604950806d53Smrg 605050806d53Smrg # Install the shared library and build the symlinks. 605150806d53Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 605250806d53Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 605350806d53Smrg if test -n "$stripme" && test -n "$striplib"; then 605450806d53Smrg $show "$striplib $destdir/$realname" 605550806d53Smrg $run eval "$striplib $destdir/$realname" || exit $? 605650806d53Smrg fi 605750806d53Smrg 605850806d53Smrg if test "$#" -gt 0; then 605950806d53Smrg # Delete the old symlinks, and create new ones. 606050806d53Smrg # Try `ln -sf' first, because the `ln' binary might depend on 606150806d53Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 606250806d53Smrg # so we also need to try rm && ln -s. 606350806d53Smrg for linkname 606450806d53Smrg do 606550806d53Smrg if test "$linkname" != "$realname"; then 606650806d53Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 606750806d53Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 606850806d53Smrg fi 606950806d53Smrg done 607050806d53Smrg fi 607150806d53Smrg 607250806d53Smrg # Do each command in the postinstall commands. 607350806d53Smrg lib="$destdir/$realname" 607450806d53Smrg cmds=$postinstall_cmds 607550806d53Smrg save_ifs="$IFS"; IFS='~' 607650806d53Smrg for cmd in $cmds; do 607750806d53Smrg IFS="$save_ifs" 607850806d53Smrg eval cmd=\"$cmd\" 607950806d53Smrg $show "$cmd" 608050806d53Smrg $run eval "$cmd" || { 608150806d53Smrg lt_exit=$? 608250806d53Smrg 608350806d53Smrg # Restore the uninstalled library and exit 608450806d53Smrg if test "$mode" = relink; then 608550806d53Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 608650806d53Smrg fi 608750806d53Smrg 608850806d53Smrg exit $lt_exit 608950806d53Smrg } 609050806d53Smrg done 609150806d53Smrg IFS="$save_ifs" 609250806d53Smrg fi 609350806d53Smrg 609450806d53Smrg # Install the pseudo-library for information purposes. 609550806d53Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 609650806d53Smrg instname="$dir/$name"i 609750806d53Smrg $show "$install_prog $instname $destdir/$name" 609850806d53Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 609950806d53Smrg 610050806d53Smrg # Maybe install the static library, too. 610150806d53Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 610250806d53Smrg ;; 610350806d53Smrg 610450806d53Smrg *.lo) 610550806d53Smrg # Install (i.e. copy) a libtool object. 610650806d53Smrg 610750806d53Smrg # Figure out destination file name, if it wasn't already specified. 610850806d53Smrg if test -n "$destname"; then 610950806d53Smrg destfile="$destdir/$destname" 611050806d53Smrg else 611150806d53Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 611250806d53Smrg destfile="$destdir/$destfile" 611350806d53Smrg fi 611450806d53Smrg 611550806d53Smrg # Deduce the name of the destination old-style object file. 611650806d53Smrg case $destfile in 611750806d53Smrg *.lo) 611850806d53Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 611950806d53Smrg ;; 612050806d53Smrg *.$objext) 612150806d53Smrg staticdest="$destfile" 612250806d53Smrg destfile= 612350806d53Smrg ;; 612450806d53Smrg *) 612550806d53Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 612650806d53Smrg $echo "$help" 1>&2 612750806d53Smrg exit $EXIT_FAILURE 612850806d53Smrg ;; 612950806d53Smrg esac 613050806d53Smrg 613150806d53Smrg # Install the libtool object if requested. 613250806d53Smrg if test -n "$destfile"; then 613350806d53Smrg $show "$install_prog $file $destfile" 613450806d53Smrg $run eval "$install_prog $file $destfile" || exit $? 613550806d53Smrg fi 613650806d53Smrg 613750806d53Smrg # Install the old object if enabled. 613850806d53Smrg if test "$build_old_libs" = yes; then 613950806d53Smrg # Deduce the name of the old-style object file. 614050806d53Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 614150806d53Smrg 614250806d53Smrg $show "$install_prog $staticobj $staticdest" 614350806d53Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 614450806d53Smrg fi 614550806d53Smrg exit $EXIT_SUCCESS 614650806d53Smrg ;; 614750806d53Smrg 614850806d53Smrg *) 614950806d53Smrg # Figure out destination file name, if it wasn't already specified. 615050806d53Smrg if test -n "$destname"; then 615150806d53Smrg destfile="$destdir/$destname" 615250806d53Smrg else 615350806d53Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 615450806d53Smrg destfile="$destdir/$destfile" 615550806d53Smrg fi 615650806d53Smrg 615750806d53Smrg # If the file is missing, and there is a .exe on the end, strip it 615850806d53Smrg # because it is most likely a libtool script we actually want to 615950806d53Smrg # install 616050806d53Smrg stripped_ext="" 616150806d53Smrg case $file in 616250806d53Smrg *.exe) 616350806d53Smrg if test ! -f "$file"; then 616450806d53Smrg file=`$echo $file|${SED} 's,.exe$,,'` 616550806d53Smrg stripped_ext=".exe" 616650806d53Smrg fi 616750806d53Smrg ;; 616850806d53Smrg esac 616950806d53Smrg 617050806d53Smrg # Do a test to see if this is really a libtool program. 617150806d53Smrg case $host in 617250806d53Smrg *cygwin*|*mingw*) 617350806d53Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 617450806d53Smrg ;; 617550806d53Smrg *) 617650806d53Smrg wrapper=$file 617750806d53Smrg ;; 617850806d53Smrg esac 617950806d53Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 618050806d53Smrg notinst_deplibs= 618150806d53Smrg relink_command= 618250806d53Smrg 618350806d53Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 618450806d53Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 618550806d53Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 618650806d53Smrg # `FILE.' does not work on cygwin managed mounts. 618750806d53Smrg # 618850806d53Smrg # If there is no directory component, then add one. 618950806d53Smrg case $wrapper in 619050806d53Smrg */* | *\\*) . ${wrapper} ;; 619150806d53Smrg *) . ./${wrapper} ;; 619250806d53Smrg esac 619350806d53Smrg 619450806d53Smrg # Check the variables that should have been set. 619550806d53Smrg if test -z "$notinst_deplibs"; then 619650806d53Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 619750806d53Smrg exit $EXIT_FAILURE 619850806d53Smrg fi 619950806d53Smrg 620050806d53Smrg finalize=yes 620150806d53Smrg for lib in $notinst_deplibs; do 620250806d53Smrg # Check to see that each library is installed. 620350806d53Smrg libdir= 620450806d53Smrg if test -f "$lib"; then 620550806d53Smrg # If there is no directory component, then add one. 620650806d53Smrg case $lib in 620750806d53Smrg */* | *\\*) . $lib ;; 620850806d53Smrg *) . ./$lib ;; 620950806d53Smrg esac 621050806d53Smrg fi 621150806d53Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 621250806d53Smrg if test -n "$libdir" && test ! -f "$libfile"; then 621350806d53Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 621450806d53Smrg finalize=no 621550806d53Smrg fi 621650806d53Smrg done 621750806d53Smrg 621850806d53Smrg relink_command= 621950806d53Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 622050806d53Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 622150806d53Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 622250806d53Smrg # `FILE.' does not work on cygwin managed mounts. 622350806d53Smrg # 622450806d53Smrg # If there is no directory component, then add one. 622550806d53Smrg case $wrapper in 622650806d53Smrg */* | *\\*) . ${wrapper} ;; 622750806d53Smrg *) . ./${wrapper} ;; 622850806d53Smrg esac 622950806d53Smrg 623050806d53Smrg outputname= 623150806d53Smrg if test "$fast_install" = no && test -n "$relink_command"; then 623250806d53Smrg if test "$finalize" = yes && test -z "$run"; then 623350806d53Smrg tmpdir=`func_mktempdir` 623450806d53Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 623550806d53Smrg outputname="$tmpdir/$file" 623650806d53Smrg # Replace the output file specification. 623750806d53Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 623850806d53Smrg 623950806d53Smrg $show "$relink_command" 624050806d53Smrg if $run eval "$relink_command"; then : 624150806d53Smrg else 624250806d53Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 624350806d53Smrg ${rm}r "$tmpdir" 624450806d53Smrg continue 624550806d53Smrg fi 624650806d53Smrg file="$outputname" 624750806d53Smrg else 624850806d53Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 624950806d53Smrg fi 625050806d53Smrg else 625150806d53Smrg # Install the binary that we compiled earlier. 625250806d53Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 625350806d53Smrg fi 625450806d53Smrg fi 625550806d53Smrg 625650806d53Smrg # remove .exe since cygwin /usr/bin/install will append another 625750806d53Smrg # one anyway 625850806d53Smrg case $install_prog,$host in 625950806d53Smrg */usr/bin/install*,*cygwin*) 626050806d53Smrg case $file:$destfile in 626150806d53Smrg *.exe:*.exe) 626250806d53Smrg # this is ok 626350806d53Smrg ;; 626450806d53Smrg *.exe:*) 626550806d53Smrg destfile=$destfile.exe 626650806d53Smrg ;; 626750806d53Smrg *:*.exe) 626850806d53Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 626950806d53Smrg ;; 627050806d53Smrg esac 627150806d53Smrg ;; 627250806d53Smrg esac 627350806d53Smrg $show "$install_prog$stripme $file $destfile" 627450806d53Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 627550806d53Smrg test -n "$outputname" && ${rm}r "$tmpdir" 627650806d53Smrg ;; 627750806d53Smrg esac 627850806d53Smrg done 627950806d53Smrg 628050806d53Smrg for file in $staticlibs; do 628150806d53Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 628250806d53Smrg 628350806d53Smrg # Set up the ranlib parameters. 628450806d53Smrg oldlib="$destdir/$name" 628550806d53Smrg 628650806d53Smrg $show "$install_prog $file $oldlib" 628750806d53Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 628850806d53Smrg 628950806d53Smrg if test -n "$stripme" && test -n "$old_striplib"; then 629050806d53Smrg $show "$old_striplib $oldlib" 629150806d53Smrg $run eval "$old_striplib $oldlib" || exit $? 629250806d53Smrg fi 629350806d53Smrg 629450806d53Smrg # Do each command in the postinstall commands. 629550806d53Smrg cmds=$old_postinstall_cmds 629650806d53Smrg save_ifs="$IFS"; IFS='~' 629750806d53Smrg for cmd in $cmds; do 629850806d53Smrg IFS="$save_ifs" 629950806d53Smrg eval cmd=\"$cmd\" 630050806d53Smrg $show "$cmd" 630150806d53Smrg $run eval "$cmd" || exit $? 630250806d53Smrg done 630350806d53Smrg IFS="$save_ifs" 630450806d53Smrg done 630550806d53Smrg 630650806d53Smrg if test -n "$future_libdirs"; then 630750806d53Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 630850806d53Smrg fi 630950806d53Smrg 631050806d53Smrg if test -n "$current_libdirs"; then 631150806d53Smrg # Maybe just do a dry run. 631250806d53Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 631350806d53Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 631450806d53Smrg else 631550806d53Smrg exit $EXIT_SUCCESS 631650806d53Smrg fi 631750806d53Smrg ;; 631850806d53Smrg 631950806d53Smrg # libtool finish mode 632050806d53Smrg finish) 632150806d53Smrg modename="$modename: finish" 632250806d53Smrg libdirs="$nonopt" 632350806d53Smrg admincmds= 632450806d53Smrg 632550806d53Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 632650806d53Smrg for dir 632750806d53Smrg do 632850806d53Smrg libdirs="$libdirs $dir" 632950806d53Smrg done 633050806d53Smrg 633150806d53Smrg for libdir in $libdirs; do 633250806d53Smrg if test -n "$finish_cmds"; then 633350806d53Smrg # Do each command in the finish commands. 633450806d53Smrg cmds=$finish_cmds 633550806d53Smrg save_ifs="$IFS"; IFS='~' 633650806d53Smrg for cmd in $cmds; do 633750806d53Smrg IFS="$save_ifs" 633850806d53Smrg eval cmd=\"$cmd\" 633950806d53Smrg $show "$cmd" 634050806d53Smrg $run eval "$cmd" || admincmds="$admincmds 634150806d53Smrg $cmd" 634250806d53Smrg done 634350806d53Smrg IFS="$save_ifs" 634450806d53Smrg fi 634550806d53Smrg if test -n "$finish_eval"; then 634650806d53Smrg # Do the single finish_eval. 634750806d53Smrg eval cmds=\"$finish_eval\" 634850806d53Smrg $run eval "$cmds" || admincmds="$admincmds 634950806d53Smrg $cmds" 635050806d53Smrg fi 635150806d53Smrg done 635250806d53Smrg fi 635350806d53Smrg 635450806d53Smrg # Exit here if they wanted silent mode. 635550806d53Smrg test "$show" = : && exit $EXIT_SUCCESS 635650806d53Smrg 635750806d53Smrg $echo "X----------------------------------------------------------------------" | $Xsed 635850806d53Smrg $echo "Libraries have been installed in:" 635950806d53Smrg for libdir in $libdirs; do 636050806d53Smrg $echo " $libdir" 636150806d53Smrg done 636250806d53Smrg $echo 636350806d53Smrg $echo "If you ever happen to want to link against installed libraries" 636450806d53Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 636550806d53Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 636650806d53Smrg $echo "flag during linking and do at least one of the following:" 636750806d53Smrg if test -n "$shlibpath_var"; then 636850806d53Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 636950806d53Smrg $echo " during execution" 637050806d53Smrg fi 637150806d53Smrg if test -n "$runpath_var"; then 637250806d53Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 637350806d53Smrg $echo " during linking" 637450806d53Smrg fi 637550806d53Smrg if test -n "$hardcode_libdir_flag_spec"; then 637650806d53Smrg libdir=LIBDIR 637750806d53Smrg eval flag=\"$hardcode_libdir_flag_spec\" 637850806d53Smrg 637950806d53Smrg $echo " - use the \`$flag' linker flag" 638050806d53Smrg fi 638150806d53Smrg if test -n "$admincmds"; then 638250806d53Smrg $echo " - have your system administrator run these commands:$admincmds" 638350806d53Smrg fi 638450806d53Smrg if test -f /etc/ld.so.conf; then 638550806d53Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 638650806d53Smrg fi 638750806d53Smrg $echo 638850806d53Smrg $echo "See any operating system documentation about shared libraries for" 638950806d53Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 639050806d53Smrg $echo "X----------------------------------------------------------------------" | $Xsed 639150806d53Smrg exit $EXIT_SUCCESS 639250806d53Smrg ;; 639350806d53Smrg 639450806d53Smrg # libtool execute mode 639550806d53Smrg execute) 639650806d53Smrg modename="$modename: execute" 639750806d53Smrg 639850806d53Smrg # The first argument is the command name. 639950806d53Smrg cmd="$nonopt" 640050806d53Smrg if test -z "$cmd"; then 640150806d53Smrg $echo "$modename: you must specify a COMMAND" 1>&2 640250806d53Smrg $echo "$help" 640350806d53Smrg exit $EXIT_FAILURE 640450806d53Smrg fi 640550806d53Smrg 640650806d53Smrg # Handle -dlopen flags immediately. 640750806d53Smrg for file in $execute_dlfiles; do 640850806d53Smrg if test ! -f "$file"; then 640950806d53Smrg $echo "$modename: \`$file' is not a file" 1>&2 641050806d53Smrg $echo "$help" 1>&2 641150806d53Smrg exit $EXIT_FAILURE 641250806d53Smrg fi 641350806d53Smrg 641450806d53Smrg dir= 641550806d53Smrg case $file in 641650806d53Smrg *.la) 641750806d53Smrg # Check to see that this really is a libtool archive. 641850806d53Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 641950806d53Smrg else 642050806d53Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 642150806d53Smrg $echo "$help" 1>&2 642250806d53Smrg exit $EXIT_FAILURE 642350806d53Smrg fi 642450806d53Smrg 642550806d53Smrg # Read the libtool library. 642650806d53Smrg dlname= 642750806d53Smrg library_names= 642850806d53Smrg 642950806d53Smrg # If there is no directory component, then add one. 643050806d53Smrg case $file in 643150806d53Smrg */* | *\\*) . $file ;; 643250806d53Smrg *) . ./$file ;; 643350806d53Smrg esac 643450806d53Smrg 643550806d53Smrg # Skip this library if it cannot be dlopened. 643650806d53Smrg if test -z "$dlname"; then 643750806d53Smrg # Warn if it was a shared library. 643850806d53Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 643950806d53Smrg continue 644050806d53Smrg fi 644150806d53Smrg 644250806d53Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 644350806d53Smrg test "X$dir" = "X$file" && dir=. 644450806d53Smrg 644550806d53Smrg if test -f "$dir/$objdir/$dlname"; then 644650806d53Smrg dir="$dir/$objdir" 644750806d53Smrg else 64487965d9acSmrg if test ! -f "$dir/$dlname"; then 64497965d9acSmrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 64507965d9acSmrg exit $EXIT_FAILURE 64517965d9acSmrg fi 645250806d53Smrg fi 645350806d53Smrg ;; 645450806d53Smrg 645550806d53Smrg *.lo) 645650806d53Smrg # Just add the directory containing the .lo file. 645750806d53Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 645850806d53Smrg test "X$dir" = "X$file" && dir=. 645950806d53Smrg ;; 646050806d53Smrg 646150806d53Smrg *) 646250806d53Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 646350806d53Smrg continue 646450806d53Smrg ;; 646550806d53Smrg esac 646650806d53Smrg 646750806d53Smrg # Get the absolute pathname. 646850806d53Smrg absdir=`cd "$dir" && pwd` 646950806d53Smrg test -n "$absdir" && dir="$absdir" 647050806d53Smrg 647150806d53Smrg # Now add the directory to shlibpath_var. 647250806d53Smrg if eval "test -z \"\$$shlibpath_var\""; then 647350806d53Smrg eval "$shlibpath_var=\"\$dir\"" 647450806d53Smrg else 647550806d53Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 647650806d53Smrg fi 647750806d53Smrg done 647850806d53Smrg 647950806d53Smrg # This variable tells wrapper scripts just to set shlibpath_var 648050806d53Smrg # rather than running their programs. 648150806d53Smrg libtool_execute_magic="$magic" 648250806d53Smrg 648350806d53Smrg # Check if any of the arguments is a wrapper script. 648450806d53Smrg args= 648550806d53Smrg for file 648650806d53Smrg do 648750806d53Smrg case $file in 648850806d53Smrg -*) ;; 648950806d53Smrg *) 649050806d53Smrg # Do a test to see if this is really a libtool program. 649150806d53Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 649250806d53Smrg # If there is no directory component, then add one. 649350806d53Smrg case $file in 649450806d53Smrg */* | *\\*) . $file ;; 649550806d53Smrg *) . ./$file ;; 649650806d53Smrg esac 649750806d53Smrg 649850806d53Smrg # Transform arg to wrapped name. 649950806d53Smrg file="$progdir/$program" 650050806d53Smrg fi 650150806d53Smrg ;; 650250806d53Smrg esac 650350806d53Smrg # Quote arguments (to preserve shell metacharacters). 650450806d53Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 650550806d53Smrg args="$args \"$file\"" 650650806d53Smrg done 650750806d53Smrg 650850806d53Smrg if test -z "$run"; then 650950806d53Smrg if test -n "$shlibpath_var"; then 651050806d53Smrg # Export the shlibpath_var. 651150806d53Smrg eval "export $shlibpath_var" 651250806d53Smrg fi 651350806d53Smrg 651450806d53Smrg # Restore saved environment variables 65157965d9acSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 651650806d53Smrg do 65177965d9acSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 65187965d9acSmrg $lt_var=\$save_$lt_var; export $lt_var 65197965d9acSmrg fi" 652050806d53Smrg done 652150806d53Smrg 652250806d53Smrg # Now prepare to actually exec the command. 652350806d53Smrg exec_cmd="\$cmd$args" 652450806d53Smrg else 652550806d53Smrg # Display what would be done. 652650806d53Smrg if test -n "$shlibpath_var"; then 652750806d53Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 652850806d53Smrg $echo "export $shlibpath_var" 652950806d53Smrg fi 653050806d53Smrg $echo "$cmd$args" 653150806d53Smrg exit $EXIT_SUCCESS 653250806d53Smrg fi 653350806d53Smrg ;; 653450806d53Smrg 653550806d53Smrg # libtool clean and uninstall mode 653650806d53Smrg clean | uninstall) 653750806d53Smrg modename="$modename: $mode" 653850806d53Smrg rm="$nonopt" 653950806d53Smrg files= 654050806d53Smrg rmforce= 654150806d53Smrg exit_status=0 654250806d53Smrg 654350806d53Smrg # This variable tells wrapper scripts just to set variables rather 654450806d53Smrg # than running their programs. 654550806d53Smrg libtool_install_magic="$magic" 654650806d53Smrg 654750806d53Smrg for arg 654850806d53Smrg do 654950806d53Smrg case $arg in 655050806d53Smrg -f) rm="$rm $arg"; rmforce=yes ;; 655150806d53Smrg -*) rm="$rm $arg" ;; 655250806d53Smrg *) files="$files $arg" ;; 655350806d53Smrg esac 655450806d53Smrg done 655550806d53Smrg 655650806d53Smrg if test -z "$rm"; then 655750806d53Smrg $echo "$modename: you must specify an RM program" 1>&2 655850806d53Smrg $echo "$help" 1>&2 655950806d53Smrg exit $EXIT_FAILURE 656050806d53Smrg fi 656150806d53Smrg 656250806d53Smrg rmdirs= 656350806d53Smrg 656450806d53Smrg origobjdir="$objdir" 656550806d53Smrg for file in $files; do 656650806d53Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 656750806d53Smrg if test "X$dir" = "X$file"; then 656850806d53Smrg dir=. 656950806d53Smrg objdir="$origobjdir" 657050806d53Smrg else 657150806d53Smrg objdir="$dir/$origobjdir" 657250806d53Smrg fi 657350806d53Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 657450806d53Smrg test "$mode" = uninstall && objdir="$dir" 657550806d53Smrg 657650806d53Smrg # Remember objdir for removal later, being careful to avoid duplicates 657750806d53Smrg if test "$mode" = clean; then 657850806d53Smrg case " $rmdirs " in 657950806d53Smrg *" $objdir "*) ;; 658050806d53Smrg *) rmdirs="$rmdirs $objdir" ;; 658150806d53Smrg esac 658250806d53Smrg fi 658350806d53Smrg 658450806d53Smrg # Don't error if the file doesn't exist and rm -f was used. 658550806d53Smrg if (test -L "$file") >/dev/null 2>&1 \ 658650806d53Smrg || (test -h "$file") >/dev/null 2>&1 \ 658750806d53Smrg || test -f "$file"; then 658850806d53Smrg : 658950806d53Smrg elif test -d "$file"; then 659050806d53Smrg exit_status=1 659150806d53Smrg continue 659250806d53Smrg elif test "$rmforce" = yes; then 659350806d53Smrg continue 659450806d53Smrg fi 659550806d53Smrg 659650806d53Smrg rmfiles="$file" 659750806d53Smrg 659850806d53Smrg case $name in 659950806d53Smrg *.la) 660050806d53Smrg # Possibly a libtool archive, so verify it. 660150806d53Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 660250806d53Smrg . $dir/$name 660350806d53Smrg 660450806d53Smrg # Delete the libtool libraries and symlinks. 660550806d53Smrg for n in $library_names; do 660650806d53Smrg rmfiles="$rmfiles $objdir/$n" 660750806d53Smrg done 660850806d53Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 660950806d53Smrg 661050806d53Smrg case "$mode" in 661150806d53Smrg clean) 661250806d53Smrg case " $library_names " in 661350806d53Smrg # " " in the beginning catches empty $dlname 661450806d53Smrg *" $dlname "*) ;; 661550806d53Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 661650806d53Smrg esac 661750806d53Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 661850806d53Smrg ;; 661950806d53Smrg uninstall) 662050806d53Smrg if test -n "$library_names"; then 662150806d53Smrg # Do each command in the postuninstall commands. 662250806d53Smrg cmds=$postuninstall_cmds 662350806d53Smrg save_ifs="$IFS"; IFS='~' 662450806d53Smrg for cmd in $cmds; do 662550806d53Smrg IFS="$save_ifs" 662650806d53Smrg eval cmd=\"$cmd\" 662750806d53Smrg $show "$cmd" 662850806d53Smrg $run eval "$cmd" 662950806d53Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 663050806d53Smrg exit_status=1 663150806d53Smrg fi 663250806d53Smrg done 663350806d53Smrg IFS="$save_ifs" 663450806d53Smrg fi 663550806d53Smrg 663650806d53Smrg if test -n "$old_library"; then 663750806d53Smrg # Do each command in the old_postuninstall commands. 663850806d53Smrg cmds=$old_postuninstall_cmds 663950806d53Smrg save_ifs="$IFS"; IFS='~' 664050806d53Smrg for cmd in $cmds; do 664150806d53Smrg IFS="$save_ifs" 664250806d53Smrg eval cmd=\"$cmd\" 664350806d53Smrg $show "$cmd" 664450806d53Smrg $run eval "$cmd" 664550806d53Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 664650806d53Smrg exit_status=1 664750806d53Smrg fi 664850806d53Smrg done 664950806d53Smrg IFS="$save_ifs" 665050806d53Smrg fi 665150806d53Smrg # FIXME: should reinstall the best remaining shared library. 665250806d53Smrg ;; 665350806d53Smrg esac 665450806d53Smrg fi 665550806d53Smrg ;; 665650806d53Smrg 665750806d53Smrg *.lo) 665850806d53Smrg # Possibly a libtool object, so verify it. 665950806d53Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 666050806d53Smrg 666150806d53Smrg # Read the .lo file 666250806d53Smrg . $dir/$name 666350806d53Smrg 666450806d53Smrg # Add PIC object to the list of files to remove. 666550806d53Smrg if test -n "$pic_object" \ 666650806d53Smrg && test "$pic_object" != none; then 666750806d53Smrg rmfiles="$rmfiles $dir/$pic_object" 666850806d53Smrg fi 666950806d53Smrg 667050806d53Smrg # Add non-PIC object to the list of files to remove. 667150806d53Smrg if test -n "$non_pic_object" \ 667250806d53Smrg && test "$non_pic_object" != none; then 667350806d53Smrg rmfiles="$rmfiles $dir/$non_pic_object" 667450806d53Smrg fi 667550806d53Smrg fi 667650806d53Smrg ;; 667750806d53Smrg 667850806d53Smrg *) 667950806d53Smrg if test "$mode" = clean ; then 668050806d53Smrg noexename=$name 668150806d53Smrg case $file in 668250806d53Smrg *.exe) 668350806d53Smrg file=`$echo $file|${SED} 's,.exe$,,'` 668450806d53Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 668550806d53Smrg # $file with .exe has already been added to rmfiles, 668650806d53Smrg # add $file without .exe 668750806d53Smrg rmfiles="$rmfiles $file" 668850806d53Smrg ;; 668950806d53Smrg esac 669050806d53Smrg # Do a test to see if this is a libtool program. 669150806d53Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 669250806d53Smrg relink_command= 669350806d53Smrg . $dir/$noexename 669450806d53Smrg 669550806d53Smrg # note $name still contains .exe if it was in $file originally 669650806d53Smrg # as does the version of $file that was added into $rmfiles 669750806d53Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 669850806d53Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 669950806d53Smrg rmfiles="$rmfiles $objdir/lt-$name" 670050806d53Smrg fi 670150806d53Smrg if test "X$noexename" != "X$name" ; then 670250806d53Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 670350806d53Smrg fi 670450806d53Smrg fi 670550806d53Smrg fi 670650806d53Smrg ;; 670750806d53Smrg esac 670850806d53Smrg $show "$rm $rmfiles" 670950806d53Smrg $run $rm $rmfiles || exit_status=1 671050806d53Smrg done 671150806d53Smrg objdir="$origobjdir" 671250806d53Smrg 671350806d53Smrg # Try to remove the ${objdir}s in the directories where we deleted files 671450806d53Smrg for dir in $rmdirs; do 671550806d53Smrg if test -d "$dir"; then 671650806d53Smrg $show "rmdir $dir" 671750806d53Smrg $run rmdir $dir >/dev/null 2>&1 671850806d53Smrg fi 671950806d53Smrg done 672050806d53Smrg 672150806d53Smrg exit $exit_status 672250806d53Smrg ;; 672350806d53Smrg 672450806d53Smrg "") 672550806d53Smrg $echo "$modename: you must specify a MODE" 1>&2 672650806d53Smrg $echo "$generic_help" 1>&2 672750806d53Smrg exit $EXIT_FAILURE 672850806d53Smrg ;; 672950806d53Smrg esac 673050806d53Smrg 673150806d53Smrg if test -z "$exec_cmd"; then 673250806d53Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 673350806d53Smrg $echo "$generic_help" 1>&2 673450806d53Smrg exit $EXIT_FAILURE 673550806d53Smrg fi 673650806d53Smrgfi # test -z "$show_help" 673750806d53Smrg 673850806d53Smrgif test -n "$exec_cmd"; then 673950806d53Smrg eval exec $exec_cmd 674050806d53Smrg exit $EXIT_FAILURE 674150806d53Smrgfi 674250806d53Smrg 674350806d53Smrg# We need to display help for each of the modes. 674450806d53Smrgcase $mode in 674550806d53Smrg"") $echo \ 674650806d53Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 674750806d53Smrg 674850806d53SmrgProvide generalized library-building support services. 674950806d53Smrg 675050806d53Smrg --config show all configuration variables 675150806d53Smrg --debug enable verbose shell tracing 675250806d53Smrg-n, --dry-run display commands without modifying any files 675350806d53Smrg --features display basic configuration information and exit 675450806d53Smrg --finish same as \`--mode=finish' 675550806d53Smrg --help display this help message and exit 675650806d53Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 675750806d53Smrg --quiet same as \`--silent' 675850806d53Smrg --silent don't print informational messages 675950806d53Smrg --tag=TAG use configuration variables from tag TAG 676050806d53Smrg --version print version information 676150806d53Smrg 676250806d53SmrgMODE must be one of the following: 676350806d53Smrg 676450806d53Smrg clean remove files from the build directory 676550806d53Smrg compile compile a source file into a libtool object 676650806d53Smrg execute automatically set library path, then run a program 676750806d53Smrg finish complete the installation of libtool libraries 676850806d53Smrg install install libraries or executables 676950806d53Smrg link create a library or an executable 677050806d53Smrg uninstall remove libraries from an installed directory 677150806d53Smrg 677250806d53SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 677350806d53Smrga more detailed description of MODE. 677450806d53Smrg 677550806d53SmrgReport bugs to <bug-libtool@gnu.org>." 677650806d53Smrg exit $EXIT_SUCCESS 677750806d53Smrg ;; 677850806d53Smrg 677950806d53Smrgclean) 678050806d53Smrg $echo \ 678150806d53Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 678250806d53Smrg 678350806d53SmrgRemove files from the build directory. 678450806d53Smrg 678550806d53SmrgRM is the name of the program to use to delete files associated with each FILE 678650806d53Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 678750806d53Smrgto RM. 678850806d53Smrg 678950806d53SmrgIf FILE is a libtool library, object or program, all the files associated 679050806d53Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 679150806d53Smrg ;; 679250806d53Smrg 679350806d53Smrgcompile) 679450806d53Smrg $echo \ 679550806d53Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 679650806d53Smrg 679750806d53SmrgCompile a source file into a libtool library object. 679850806d53Smrg 679950806d53SmrgThis mode accepts the following additional options: 680050806d53Smrg 680150806d53Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 680250806d53Smrg -prefer-pic try to building PIC objects only 680350806d53Smrg -prefer-non-pic try to building non-PIC objects only 680450806d53Smrg -static always build a \`.o' file suitable for static linking 680550806d53Smrg 680650806d53SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 680750806d53Smrgfrom the given SOURCEFILE. 680850806d53Smrg 680950806d53SmrgThe output file name is determined by removing the directory component from 681050806d53SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 681150806d53Smrglibrary object suffix, \`.lo'." 681250806d53Smrg ;; 681350806d53Smrg 681450806d53Smrgexecute) 681550806d53Smrg $echo \ 681650806d53Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 681750806d53Smrg 681850806d53SmrgAutomatically set library path, then run a program. 681950806d53Smrg 682050806d53SmrgThis mode accepts the following additional options: 682150806d53Smrg 682250806d53Smrg -dlopen FILE add the directory containing FILE to the library path 682350806d53Smrg 682450806d53SmrgThis mode sets the library path environment variable according to \`-dlopen' 682550806d53Smrgflags. 682650806d53Smrg 682750806d53SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 682850806d53Smrginto their corresponding uninstalled binary, and any of their required library 682950806d53Smrgdirectories are added to the library path. 683050806d53Smrg 683150806d53SmrgThen, COMMAND is executed, with ARGS as arguments." 683250806d53Smrg ;; 683350806d53Smrg 683450806d53Smrgfinish) 683550806d53Smrg $echo \ 683650806d53Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 683750806d53Smrg 683850806d53SmrgComplete the installation of libtool libraries. 683950806d53Smrg 684050806d53SmrgEach LIBDIR is a directory that contains libtool libraries. 684150806d53Smrg 684250806d53SmrgThe commands that this mode executes may require superuser privileges. Use 684350806d53Smrgthe \`--dry-run' option if you just want to see what would be executed." 684450806d53Smrg ;; 684550806d53Smrg 684650806d53Smrginstall) 684750806d53Smrg $echo \ 684850806d53Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 684950806d53Smrg 685050806d53SmrgInstall executables or libraries. 685150806d53Smrg 685250806d53SmrgINSTALL-COMMAND is the installation command. The first component should be 685350806d53Smrgeither the \`install' or \`cp' program. 685450806d53Smrg 685550806d53SmrgThe rest of the components are interpreted as arguments to that command (only 685650806d53SmrgBSD-compatible install options are recognized)." 685750806d53Smrg ;; 685850806d53Smrg 685950806d53Smrglink) 686050806d53Smrg $echo \ 686150806d53Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 686250806d53Smrg 686350806d53SmrgLink object files or libraries together to form another library, or to 686450806d53Smrgcreate an executable program. 686550806d53Smrg 686650806d53SmrgLINK-COMMAND is a command using the C compiler that you would use to create 686750806d53Smrga program from several object files. 686850806d53Smrg 686950806d53SmrgThe following components of LINK-COMMAND are treated specially: 687050806d53Smrg 687150806d53Smrg -all-static do not do any dynamic linking at all 687250806d53Smrg -avoid-version do not add a version suffix if possible 687350806d53Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 687450806d53Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 687550806d53Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 687650806d53Smrg -export-symbols SYMFILE 687750806d53Smrg try to export only the symbols listed in SYMFILE 687850806d53Smrg -export-symbols-regex REGEX 687950806d53Smrg try to export only the symbols matching REGEX 688050806d53Smrg -LLIBDIR search LIBDIR for required installed libraries 688150806d53Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 688250806d53Smrg -module build a library that can dlopened 688350806d53Smrg -no-fast-install disable the fast-install mode 688450806d53Smrg -no-install link a not-installable executable 688550806d53Smrg -no-undefined declare that a library does not refer to external symbols 688650806d53Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 688750806d53Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 688850806d53Smrg -precious-files-regex REGEX 688950806d53Smrg don't remove output files matching REGEX 689050806d53Smrg -release RELEASE specify package release information 689150806d53Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 689250806d53Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 689350806d53Smrg -static do not do any dynamic linking of uninstalled libtool libraries 689450806d53Smrg -static-libtool-libs 689550806d53Smrg do not do any dynamic linking of libtool libraries 689650806d53Smrg -version-info CURRENT[:REVISION[:AGE]] 689750806d53Smrg specify library version info [each variable defaults to 0] 689850806d53Smrg 689950806d53SmrgAll other options (arguments beginning with \`-') are ignored. 690050806d53Smrg 690150806d53SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 690250806d53Smrgtreated as uninstalled libtool libraries, other files are standard or library 690350806d53Smrgobject files. 690450806d53Smrg 690550806d53SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 690650806d53Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 690750806d53Smrgrequired, except when creating a convenience library. 690850806d53Smrg 690950806d53SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 691050806d53Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 691150806d53Smrg 691250806d53SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 691350806d53Smrgis created, otherwise an executable program is created." 691450806d53Smrg ;; 691550806d53Smrg 691650806d53Smrguninstall) 691750806d53Smrg $echo \ 691850806d53Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 691950806d53Smrg 692050806d53SmrgRemove libraries from an installation directory. 692150806d53Smrg 692250806d53SmrgRM is the name of the program to use to delete files associated with each FILE 692350806d53Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 692450806d53Smrgto RM. 692550806d53Smrg 692650806d53SmrgIf FILE is a libtool library, all the files associated with it are deleted. 692750806d53SmrgOtherwise, only FILE itself is deleted using RM." 692850806d53Smrg ;; 692950806d53Smrg 693050806d53Smrg*) 693150806d53Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 693250806d53Smrg $echo "$help" 1>&2 693350806d53Smrg exit $EXIT_FAILURE 693450806d53Smrg ;; 693550806d53Smrgesac 693650806d53Smrg 693750806d53Smrg$echo 693850806d53Smrg$echo "Try \`$modename --help' for more information about other modes." 693950806d53Smrg 694050806d53Smrgexit $? 694150806d53Smrg 694250806d53Smrg# The TAGs below are defined such that we never get into a situation 694350806d53Smrg# in which we disable both kinds of libraries. Given conflicting 694450806d53Smrg# choices, we go for a static library, that is the most portable, 694550806d53Smrg# since we can't tell whether shared libraries were disabled because 694650806d53Smrg# the user asked for that or because the platform doesn't support 694750806d53Smrg# them. This is particularly important on AIX, because we don't 694850806d53Smrg# support having both static and shared libraries enabled at the same 694950806d53Smrg# time on that platform, so we default to a shared-only configuration. 695050806d53Smrg# If a disable-shared tag is given, we'll fallback to a static-only 695150806d53Smrg# configuration. But we'll never go from static-only to shared-only. 695250806d53Smrg 695350806d53Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 695450806d53Smrgdisable_libs=shared 695550806d53Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 695650806d53Smrg 695750806d53Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 695850806d53Smrgdisable_libs=static 695950806d53Smrg# ### END LIBTOOL TAG CONFIG: disable-static 696050806d53Smrg 696150806d53Smrg# Local Variables: 696250806d53Smrg# mode:shell-script 696350806d53Smrg# sh-indentation:2 696450806d53Smrg# End: 6965