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