ltmain.sh revision 5c42550e
15c42550eSmrg# ltmain.sh - Provide generalized library-building support services. 25c42550eSmrg# NOTE: Changing this file will not affect anything until you rerun configure. 35c42550eSmrg# 45c42550eSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 55c42550eSmrg# 2007, 2008 Free Software Foundation, Inc. 65c42550eSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 75c42550eSmrg# 85c42550eSmrg# This program is free software; you can redistribute it and/or modify 9ab47cfaaSmrg# it under the terms of the GNU General Public License as published by 10ab47cfaaSmrg# the Free Software Foundation; either version 2 of the License, or 11ab47cfaaSmrg# (at your option) any later version. 12ab47cfaaSmrg# 135c42550eSmrg# This program is distributed in the hope that it will be useful, but 14ab47cfaaSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15ab47cfaaSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16ab47cfaaSmrg# General Public License for more details. 17ab47cfaaSmrg# 18ab47cfaaSmrg# You should have received a copy of the GNU General Public License 195c42550eSmrg# along with this program; if not, write to the Free Software 205c42550eSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 211473d951Smrg# 225c42550eSmrg# As a special exception to the GNU General Public License, if you 235c42550eSmrg# distribute this file as part of a program that contains a 245c42550eSmrg# configuration script generated by Autoconf, you may include it under 255c42550eSmrg# the same distribution terms that you use for the rest of that program. 265c42550eSmrg 275c42550eSmrgbasename="s,^.*/,,g" 285c42550eSmrg 295c42550eSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 305c42550eSmrg# is ksh but when the shell is invoked as "sh" and the current value of 315c42550eSmrg# the _XPG environment variable is not equal to 1 (one), the special 325c42550eSmrg# positional parameter $0, within a function call, is the name of the 335c42550eSmrg# function. 345c42550eSmrgprogpath="$0" 355c42550eSmrg 365c42550eSmrg# The name of this program: 375c42550eSmrgprogname=`echo "$progpath" | $SED $basename` 385c42550eSmrgmodename="$progname" 395c42550eSmrg 405c42550eSmrg# Global variables: 415c42550eSmrgEXIT_SUCCESS=0 425c42550eSmrgEXIT_FAILURE=1 43ab47cfaaSmrg 44ab47cfaaSmrgPROGRAM=ltmain.sh 45ab47cfaaSmrgPACKAGE=libtool 465c42550eSmrgVERSION=1.5.26 475c42550eSmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" 488697ee19Smrg 495c42550eSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 508697ee19Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 518697ee19Smrg emulate sh 528697ee19Smrg NULLCMD=: 538697ee19Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 548697ee19Smrg # is contrary to our usage. Disable this feature. 558697ee19Smrg alias -g '${1+"$@"}'='"$@"' 56ab47cfaaSmrg setopt NO_GLOB_SUBST 578697ee19Smrgelse 588697ee19Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 59ab47cfaaSmrgfi 608697ee19SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 618697ee19SmrgDUALCASE=1; export DUALCASE # for MKS sh 62ab47cfaaSmrg 635c42550eSmrg# Check that we have a working $echo. 645c42550eSmrgif test "X$1" = X--no-reexec; then 655c42550eSmrg # Discard the --no-reexec flag, and continue. 665c42550eSmrg shift 675c42550eSmrgelif test "X$1" = X--fallback-echo; then 685c42550eSmrg # Avoid inline document here, it may be left over 695c42550eSmrg : 705c42550eSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 715c42550eSmrg # Yippee, $echo works! 725c42550eSmrg : 735c42550eSmrgelse 745c42550eSmrg # Restart under the correct shell, and then maybe $echo will work. 755c42550eSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 765c42550eSmrgfi 775c42550eSmrg 785c42550eSmrgif test "X$1" = X--fallback-echo; then 795c42550eSmrg # used as fallback echo 805c42550eSmrg shift 815c42550eSmrg cat <<EOF 825c42550eSmrg$* 835c42550eSmrgEOF 845c42550eSmrg exit $EXIT_SUCCESS 855c42550eSmrgfi 865c42550eSmrg 875c42550eSmrgdefault_mode= 885c42550eSmrghelp="Try \`$progname --help' for more information." 895c42550eSmrgmagic="%%%MAGIC variable%%%" 905c42550eSmrgmkdir="mkdir" 915c42550eSmrgmv="mv -f" 925c42550eSmrgrm="rm -f" 935c42550eSmrg 945c42550eSmrg# Sed substitution that helps us do robust quoting. It backslashifies 955c42550eSmrg# metacharacters that are still active within double-quoted strings. 965c42550eSmrgXsed="${SED}"' -e 1s/^X//' 975c42550eSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 985c42550eSmrg# test EBCDIC or ASCII 995c42550eSmrgcase `echo X|tr X '\101'` in 1005c42550eSmrg A) # ASCII based system 1015c42550eSmrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 1025c42550eSmrg SP2NL='tr \040 \012' 1035c42550eSmrg NL2SP='tr \015\012 \040\040' 1045c42550eSmrg ;; 1055c42550eSmrg *) # EBCDIC based system 1065c42550eSmrg SP2NL='tr \100 \n' 1075c42550eSmrg NL2SP='tr \r\n \100\100' 1085c42550eSmrg ;; 1095c42550eSmrgesac 1105c42550eSmrg 1115c42550eSmrg# NLS nuisances. 112ab47cfaaSmrg# Only set LANG and LC_ALL to C if already set. 113ab47cfaaSmrg# These must not be set unconditionally because not all systems understand 114ab47cfaaSmrg# e.g. LANG=C (notably SCO). 1155c42550eSmrg# We save the old values to restore during execute mode. 1165c42550eSmrglt_env= 1171473d951Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1188697ee19Smrgdo 1198697ee19Smrg eval "if test \"\${$lt_var+set}\" = set; then 1205c42550eSmrg save_$lt_var=\$$lt_var 1215c42550eSmrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 1225c42550eSmrg $lt_var=C 1238697ee19Smrg export $lt_var 1248697ee19Smrg fi" 1258697ee19Smrgdone 126ab47cfaaSmrg 1275c42550eSmrgif test -n "$lt_env"; then 1285c42550eSmrg lt_env="env $lt_env" 1295c42550eSmrgfi 1301473d951Smrg 131ab47cfaaSmrg# Make sure IFS has a sensible default 132ab47cfaaSmrglt_nl=' 133ab47cfaaSmrg' 134ab47cfaaSmrgIFS=" $lt_nl" 135ab47cfaaSmrg 1365c42550eSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1375c42550eSmrg $echo "$modename: not configured to build any kind of library" 1>&2 1385c42550eSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1395c42550eSmrg exit $EXIT_FAILURE 1405c42550eSmrgfi 1411473d951Smrg 1425c42550eSmrg# Global variables. 1435c42550eSmrgmode=$default_mode 1445c42550eSmrgnonopt= 1455c42550eSmrgprev= 1465c42550eSmrgprevopt= 1475c42550eSmrgrun= 1485c42550eSmrgshow="$echo" 1495c42550eSmrgshow_help= 1505c42550eSmrgexecute_dlfiles= 1515c42550eSmrgduplicate_deps=no 1525c42550eSmrgpreserve_args= 1535c42550eSmrglo2o="s/\\.lo\$/.${objext}/" 1545c42550eSmrgo2lo="s/\\.${objext}\$/.lo/" 1555c42550eSmrgextracted_archives= 1565c42550eSmrgextracted_serial=0 157ab47cfaaSmrg 1585c42550eSmrg##################################### 1595c42550eSmrg# Shell function definitions: 1605c42550eSmrg# This seems to be the best place for them 161ab47cfaaSmrg 162ab47cfaaSmrg# func_mktempdir [string] 163ab47cfaaSmrg# Make a temporary directory that won't clash with other running 164ab47cfaaSmrg# libtool processes, and avoids race conditions if possible. If 165ab47cfaaSmrg# given, STRING is the basename for that directory. 166ab47cfaaSmrgfunc_mktempdir () 167ab47cfaaSmrg{ 168ab47cfaaSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 169ab47cfaaSmrg 1705c42550eSmrg if test "$run" = ":"; then 171ab47cfaaSmrg # Return a directory name, but don't create it in dry-run mode 172ab47cfaaSmrg my_tmpdir="${my_template}-$$" 173ab47cfaaSmrg else 174ab47cfaaSmrg 175ab47cfaaSmrg # If mktemp works, use that first and foremost 176ab47cfaaSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 177ab47cfaaSmrg 178ab47cfaaSmrg if test ! -d "$my_tmpdir"; then 1795c42550eSmrg # Failing that, at least try and use $RANDOM to avoid a race 1805c42550eSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 181ab47cfaaSmrg 1825c42550eSmrg save_mktempdir_umask=`umask` 1835c42550eSmrg umask 0077 1845c42550eSmrg $mkdir "$my_tmpdir" 1855c42550eSmrg umask $save_mktempdir_umask 186ab47cfaaSmrg fi 187ab47cfaaSmrg 188ab47cfaaSmrg # If we're not in dry-run mode, bomb out on failure 1895c42550eSmrg test -d "$my_tmpdir" || { 1905c42550eSmrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 1915c42550eSmrg exit $EXIT_FAILURE 1925c42550eSmrg } 193ab47cfaaSmrg fi 194ab47cfaaSmrg 1955c42550eSmrg $echo "X$my_tmpdir" | $Xsed 196ab47cfaaSmrg} 197ab47cfaaSmrg 198ab47cfaaSmrg 1995c42550eSmrg# func_win32_libid arg 2005c42550eSmrg# return the library type of file 'arg' 2015c42550eSmrg# 2025c42550eSmrg# Need a lot of goo to handle *both* DLLs and import libs 2035c42550eSmrg# Has to be a shell function in order to 'eat' the argument 2045c42550eSmrg# that is supplied when $file_magic_command is called. 2055c42550eSmrgfunc_win32_libid () 206ab47cfaaSmrg{ 2075c42550eSmrg win32_libid_type="unknown" 2085c42550eSmrg win32_fileres=`file -L $1 2>/dev/null` 2095c42550eSmrg case $win32_fileres in 2105c42550eSmrg *ar\ archive\ import\ library*) # definitely import 2115c42550eSmrg win32_libid_type="x86 archive import" 2125c42550eSmrg ;; 2135c42550eSmrg *ar\ archive*) # could be an import, or static 2145c42550eSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 2155c42550eSmrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 2165c42550eSmrg win32_nmres=`eval $NM -f posix -A $1 | \ 2175c42550eSmrg $SED -n -e '1,100{ 2185c42550eSmrg / I /{ 2195c42550eSmrg s,.*,import, 2205c42550eSmrg p 2215c42550eSmrg q 2225c42550eSmrg } 2235c42550eSmrg }'` 2245c42550eSmrg case $win32_nmres in 2255c42550eSmrg import*) win32_libid_type="x86 archive import";; 2265c42550eSmrg *) win32_libid_type="x86 archive static";; 2275c42550eSmrg esac 2285c42550eSmrg fi 2295c42550eSmrg ;; 2305c42550eSmrg *DLL*) 2315c42550eSmrg win32_libid_type="x86 DLL" 2325c42550eSmrg ;; 2335c42550eSmrg *executable*) # but shell scripts are "executable" too... 2345c42550eSmrg case $win32_fileres in 2355c42550eSmrg *MS\ Windows\ PE\ Intel*) 2365c42550eSmrg win32_libid_type="x86 DLL" 2375c42550eSmrg ;; 238ab47cfaaSmrg esac 2395c42550eSmrg ;; 2405c42550eSmrg esac 2415c42550eSmrg $echo $win32_libid_type 242ab47cfaaSmrg} 243ab47cfaaSmrg 244ab47cfaaSmrg 2455c42550eSmrg# func_infer_tag arg 2465c42550eSmrg# Infer tagged configuration to use if any are available and 2475c42550eSmrg# if one wasn't chosen via the "--tag" command line option. 2485c42550eSmrg# Only attempt this if the compiler in the base compile 2495c42550eSmrg# command doesn't match the default compiler. 2505c42550eSmrg# arg is usually of the form 'gcc ...' 2515c42550eSmrgfunc_infer_tag () 252ab47cfaaSmrg{ 2535c42550eSmrg if test -n "$available_tags" && test -z "$tagname"; then 2545c42550eSmrg CC_quoted= 2555c42550eSmrg for arg in $CC; do 2565c42550eSmrg case $arg in 2575c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2585c42550eSmrg arg="\"$arg\"" 2595c42550eSmrg ;; 2605c42550eSmrg esac 2615c42550eSmrg CC_quoted="$CC_quoted $arg" 2625c42550eSmrg done 2635c42550eSmrg case $@ in 2645c42550eSmrg # Blanks in the command may have been stripped by the calling shell, 2655c42550eSmrg # but not from the CC environment variable when configure was run. 2665c42550eSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 2675c42550eSmrg # Blanks at the start of $base_compile will cause this to fail 2685c42550eSmrg # if we don't check for them as well. 269ab47cfaaSmrg *) 2705c42550eSmrg for z in $available_tags; do 2715c42550eSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 2725c42550eSmrg # Evaluate the configuration. 2735c42550eSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 2745c42550eSmrg CC_quoted= 2755c42550eSmrg for arg in $CC; do 2765c42550eSmrg # Double-quote args containing other shell metacharacters. 2775c42550eSmrg case $arg in 2785c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2795c42550eSmrg arg="\"$arg\"" 2805c42550eSmrg ;; 2815c42550eSmrg esac 2825c42550eSmrg CC_quoted="$CC_quoted $arg" 2835c42550eSmrg done 2845c42550eSmrg case "$@ " in 2855c42550eSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 2865c42550eSmrg # The compiler in the base compile command matches 2875c42550eSmrg # the one in the tagged configuration. 2885c42550eSmrg # Assume this is the tagged configuration we want. 2895c42550eSmrg tagname=$z 2905c42550eSmrg break 2915c42550eSmrg ;; 2925c42550eSmrg esac 2935c42550eSmrg fi 2945c42550eSmrg done 2955c42550eSmrg # If $tagname still isn't set, then no tagged configuration 2965c42550eSmrg # was found and let the user know that the "--tag" command 2975c42550eSmrg # line option must be used. 2985c42550eSmrg if test -z "$tagname"; then 2995c42550eSmrg $echo "$modename: unable to infer tagged configuration" 3005c42550eSmrg $echo "$modename: specify a tag with \`--tag'" 1>&2 3015c42550eSmrg exit $EXIT_FAILURE 3025c42550eSmrg# else 3035c42550eSmrg# $echo "$modename: using $tagname tagged configuration" 3045c42550eSmrg fi 3055c42550eSmrg ;; 3065c42550eSmrg esac 3075c42550eSmrg fi 308ab47cfaaSmrg} 309ab47cfaaSmrg 310ab47cfaaSmrg 3115c42550eSmrg# func_extract_an_archive dir oldlib 3125c42550eSmrgfunc_extract_an_archive () 313ab47cfaaSmrg{ 3145c42550eSmrg f_ex_an_ar_dir="$1"; shift 3155c42550eSmrg f_ex_an_ar_oldlib="$1" 3161473d951Smrg 3175c42550eSmrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 3185c42550eSmrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 3195c42550eSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3205c42550eSmrg : 3215c42550eSmrg else 3225c42550eSmrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 3235c42550eSmrg exit $EXIT_FAILURE 324ab47cfaaSmrg fi 325ab47cfaaSmrg} 326ab47cfaaSmrg 3275c42550eSmrg# func_extract_archives gentop oldlib ... 3285c42550eSmrgfunc_extract_archives () 329ab47cfaaSmrg{ 3305c42550eSmrg my_gentop="$1"; shift 3315c42550eSmrg my_oldlibs=${1+"$@"} 3325c42550eSmrg my_oldobjs="" 3335c42550eSmrg my_xlib="" 3345c42550eSmrg my_xabs="" 3355c42550eSmrg my_xdir="" 3365c42550eSmrg my_status="" 3375c42550eSmrg 3385c42550eSmrg $show "${rm}r $my_gentop" 3395c42550eSmrg $run ${rm}r "$my_gentop" 3405c42550eSmrg $show "$mkdir $my_gentop" 3415c42550eSmrg $run $mkdir "$my_gentop" 3425c42550eSmrg my_status=$? 3435c42550eSmrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 3445c42550eSmrg exit $my_status 345ab47cfaaSmrg fi 346ab47cfaaSmrg 3475c42550eSmrg for my_xlib in $my_oldlibs; do 3485c42550eSmrg # Extract the objects. 3495c42550eSmrg case $my_xlib in 3505c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3515c42550eSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 3525c42550eSmrg esac 3535c42550eSmrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 3545c42550eSmrg my_xlib_u=$my_xlib 3555c42550eSmrg while :; do 3565c42550eSmrg case " $extracted_archives " in 3575c42550eSmrg *" $my_xlib_u "*) 3585c42550eSmrg extracted_serial=`expr $extracted_serial + 1` 3595c42550eSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 3605c42550eSmrg *) break ;; 3615c42550eSmrg esac 3625c42550eSmrg done 3635c42550eSmrg extracted_archives="$extracted_archives $my_xlib_u" 3645c42550eSmrg my_xdir="$my_gentop/$my_xlib_u" 3651473d951Smrg 3665c42550eSmrg $show "${rm}r $my_xdir" 3675c42550eSmrg $run ${rm}r "$my_xdir" 3685c42550eSmrg $show "$mkdir $my_xdir" 3695c42550eSmrg $run $mkdir "$my_xdir" 3705c42550eSmrg exit_status=$? 3715c42550eSmrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 3725c42550eSmrg exit $exit_status 3735c42550eSmrg fi 3745c42550eSmrg case $host in 3755c42550eSmrg *-darwin*) 3765c42550eSmrg $show "Extracting $my_xabs" 3775c42550eSmrg # Do not bother doing anything if just a dry run 3785c42550eSmrg if test -z "$run"; then 3795c42550eSmrg darwin_orig_dir=`pwd` 3805c42550eSmrg cd $my_xdir || exit $? 3815c42550eSmrg darwin_archive=$my_xabs 3825c42550eSmrg darwin_curdir=`pwd` 3835c42550eSmrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 3845c42550eSmrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 3855c42550eSmrg if test -n "$darwin_arches"; then 3865c42550eSmrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 3875c42550eSmrg darwin_arch= 3885c42550eSmrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 3895c42550eSmrg for darwin_arch in $darwin_arches ; do 3905c42550eSmrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3915c42550eSmrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3925c42550eSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3935c42550eSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3945c42550eSmrg cd "$darwin_curdir" 3955c42550eSmrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3965c42550eSmrg done # $darwin_arches 3975c42550eSmrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 3985c42550eSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 3995c42550eSmrg darwin_file= 4005c42550eSmrg darwin_files= 4015c42550eSmrg for darwin_file in $darwin_filelist; do 4025c42550eSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 4035c42550eSmrg lipo -create -output "$darwin_file" $darwin_files 4045c42550eSmrg done # $darwin_filelist 4055c42550eSmrg ${rm}r unfat-$$ 4065c42550eSmrg cd "$darwin_orig_dir" 4075c42550eSmrg else 4085c42550eSmrg cd "$darwin_orig_dir" 4095c42550eSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 4105c42550eSmrg fi # $darwin_arches 4115c42550eSmrg fi # $run 4125c42550eSmrg ;; 4135c42550eSmrg *) 4145c42550eSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 4155c42550eSmrg ;; 4165c42550eSmrg esac 4175c42550eSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 4185c42550eSmrg done 4195c42550eSmrg func_extract_archives_result="$my_oldobjs" 420ab47cfaaSmrg} 4215c42550eSmrg# End of Shell function definitions 4225c42550eSmrg##################################### 423ab47cfaaSmrg 4245c42550eSmrg# Darwin sucks 4255c42550eSmrgeval std_shrext=\"$shrext_cmds\" 4261473d951Smrg 4275c42550eSmrgdisable_libs=no 4281473d951Smrg 4295c42550eSmrg# Parse our command line options once, thoroughly. 4305c42550eSmrgwhile test "$#" -gt 0 4315c42550eSmrgdo 4325c42550eSmrg arg="$1" 4331473d951Smrg shift 434ab47cfaaSmrg 4355c42550eSmrg case $arg in 4365c42550eSmrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 4375c42550eSmrg *) optarg= ;; 4385c42550eSmrg esac 439ab47cfaaSmrg 4405c42550eSmrg # If the previous option needs an argument, assign it. 4415c42550eSmrg if test -n "$prev"; then 4425c42550eSmrg case $prev in 4435c42550eSmrg execute_dlfiles) 4445c42550eSmrg execute_dlfiles="$execute_dlfiles $arg" 4455c42550eSmrg ;; 4465c42550eSmrg tag) 4475c42550eSmrg tagname="$arg" 4485c42550eSmrg preserve_args="${preserve_args}=$arg" 4495c42550eSmrg 4505c42550eSmrg # Check whether tagname contains only valid characters 4515c42550eSmrg case $tagname in 4525c42550eSmrg *[!-_A-Za-z0-9,/]*) 4535c42550eSmrg $echo "$progname: invalid tag name: $tagname" 1>&2 4545c42550eSmrg exit $EXIT_FAILURE 4555c42550eSmrg ;; 4565c42550eSmrg esac 457ab47cfaaSmrg 4585c42550eSmrg case $tagname in 4595c42550eSmrg CC) 4605c42550eSmrg # Don't test for the "default" C tag, as we know, it's there, but 4615c42550eSmrg # not specially marked. 4625c42550eSmrg ;; 4635c42550eSmrg *) 4645c42550eSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 4655c42550eSmrg taglist="$taglist $tagname" 4665c42550eSmrg # Evaluate the configuration. 4675c42550eSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 4685c42550eSmrg else 4695c42550eSmrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 4705c42550eSmrg fi 4715c42550eSmrg ;; 4725c42550eSmrg esac 4735c42550eSmrg ;; 4745c42550eSmrg *) 4755c42550eSmrg eval "$prev=\$arg" 4765c42550eSmrg ;; 4775c42550eSmrg esac 4781473d951Smrg 4795c42550eSmrg prev= 4805c42550eSmrg prevopt= 4815c42550eSmrg continue 4825c42550eSmrg fi 483ab47cfaaSmrg 4845c42550eSmrg # Have we seen a non-optional argument yet? 4855c42550eSmrg case $arg in 4865c42550eSmrg --help) 4875c42550eSmrg show_help=yes 4885c42550eSmrg ;; 4898697ee19Smrg 4905c42550eSmrg --version) 4915c42550eSmrg echo "\ 4925c42550eSmrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 4931473d951Smrg 4945c42550eSmrgCopyright (C) 2008 Free Software Foundation, Inc. 4955c42550eSmrgThis is free software; see the source for copying conditions. There is NO 4965c42550eSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 4975c42550eSmrg exit $? 4985c42550eSmrg ;; 499ab47cfaaSmrg 5005c42550eSmrg --config) 5015c42550eSmrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 502ab47cfaaSmrg # Now print the configurations for the tags. 503ab47cfaaSmrg for tagname in $taglist; do 5045c42550eSmrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 505ab47cfaaSmrg done 5061473d951Smrg exit $? 5075c42550eSmrg ;; 508ab47cfaaSmrg 5095c42550eSmrg --debug) 5105c42550eSmrg $echo "$progname: enabling shell trace mode" 5115c42550eSmrg set -x 5125c42550eSmrg preserve_args="$preserve_args $arg" 5135c42550eSmrg ;; 5145c42550eSmrg 5155c42550eSmrg --dry-run | -n) 5165c42550eSmrg run=: 5175c42550eSmrg ;; 5185c42550eSmrg 5195c42550eSmrg --features) 5205c42550eSmrg $echo "host: $host" 521ab47cfaaSmrg if test "$build_libtool_libs" = yes; then 5225c42550eSmrg $echo "enable shared libraries" 523ab47cfaaSmrg else 5245c42550eSmrg $echo "disable shared libraries" 525ab47cfaaSmrg fi 526ab47cfaaSmrg if test "$build_old_libs" = yes; then 5275c42550eSmrg $echo "enable static libraries" 528ab47cfaaSmrg else 5295c42550eSmrg $echo "disable static libraries" 530ab47cfaaSmrg fi 531ab47cfaaSmrg exit $? 5325c42550eSmrg ;; 533ab47cfaaSmrg 5345c42550eSmrg --finish) mode="finish" ;; 535ab47cfaaSmrg 5365c42550eSmrg --mode) prevopt="--mode" prev=mode ;; 5375c42550eSmrg --mode=*) mode="$optarg" ;; 5381473d951Smrg 5395c42550eSmrg --preserve-dup-deps) duplicate_deps="yes" ;; 540ab47cfaaSmrg 5415c42550eSmrg --quiet | --silent) 5425c42550eSmrg show=: 5435c42550eSmrg preserve_args="$preserve_args $arg" 544ab47cfaaSmrg ;; 5455c42550eSmrg 5465c42550eSmrg --tag) 5475c42550eSmrg prevopt="--tag" 5485c42550eSmrg prev=tag 5495c42550eSmrg preserve_args="$preserve_args --tag" 550ab47cfaaSmrg ;; 5515c42550eSmrg --tag=*) 5525c42550eSmrg set tag "$optarg" ${1+"$@"} 5535c42550eSmrg shift 5545c42550eSmrg prev=tag 5555c42550eSmrg preserve_args="$preserve_args --tag" 556ab47cfaaSmrg ;; 5575c42550eSmrg 5585c42550eSmrg -dlopen) 5595c42550eSmrg prevopt="-dlopen" 5605c42550eSmrg prev=execute_dlfiles 5611473d951Smrg ;; 5625c42550eSmrg 5635c42550eSmrg -*) 5645c42550eSmrg $echo "$modename: unrecognized option \`$arg'" 1>&2 5655c42550eSmrg $echo "$help" 1>&2 5665c42550eSmrg exit $EXIT_FAILURE 5671473d951Smrg ;; 5685c42550eSmrg 5695c42550eSmrg *) 5705c42550eSmrg nonopt="$arg" 5715c42550eSmrg break 572ab47cfaaSmrg ;; 573ab47cfaaSmrg esac 5745c42550eSmrgdone 575ab47cfaaSmrg 5765c42550eSmrgif test -n "$prevopt"; then 5775c42550eSmrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 5785c42550eSmrg $echo "$help" 1>&2 5795c42550eSmrg exit $EXIT_FAILURE 5805c42550eSmrgfi 5811473d951Smrg 5825c42550eSmrgcase $disable_libs in 5835c42550eSmrgno) 5845c42550eSmrg ;; 5855c42550eSmrgshared) 5865c42550eSmrg build_libtool_libs=no 5875c42550eSmrg build_old_libs=yes 5885c42550eSmrg ;; 5895c42550eSmrgstatic) 5905c42550eSmrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 5915c42550eSmrg ;; 5925c42550eSmrgesac 5931473d951Smrg 5945c42550eSmrg# If this variable is set in any of the actions, the command in it 5955c42550eSmrg# will be execed at the end. This prevents here-documents from being 5965c42550eSmrg# left over by shells. 5975c42550eSmrgexec_cmd= 5981473d951Smrg 5995c42550eSmrgif test -z "$show_help"; then 6001473d951Smrg 6015c42550eSmrg # Infer the operation mode. 6025c42550eSmrg if test -z "$mode"; then 6035c42550eSmrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 6045c42550eSmrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 6055c42550eSmrg case $nonopt in 6065c42550eSmrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 6075c42550eSmrg mode=link 6085c42550eSmrg for arg 6095c42550eSmrg do 6105c42550eSmrg case $arg in 6115c42550eSmrg -c) 6125c42550eSmrg mode=compile 6135c42550eSmrg break 6145c42550eSmrg ;; 6155c42550eSmrg esac 6165c42550eSmrg done 617ab47cfaaSmrg ;; 6185c42550eSmrg *db | *dbx | *strace | *truss) 6195c42550eSmrg mode=execute 6201473d951Smrg ;; 6215c42550eSmrg *install*|cp|mv) 6225c42550eSmrg mode=install 6235c42550eSmrg ;; 6245c42550eSmrg *rm) 6255c42550eSmrg mode=uninstall 6265c42550eSmrg ;; 6275c42550eSmrg *) 6285c42550eSmrg # If we have no mode, but dlfiles were specified, then do execute mode. 6295c42550eSmrg test -n "$execute_dlfiles" && mode=execute 6301473d951Smrg 6315c42550eSmrg # Just use the default operation mode. 6325c42550eSmrg if test -z "$mode"; then 6335c42550eSmrg if test -n "$nonopt"; then 6345c42550eSmrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 6355c42550eSmrg else 6365c42550eSmrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 6375c42550eSmrg fi 638ab47cfaaSmrg fi 6395c42550eSmrg ;; 6405c42550eSmrg esac 641ab47cfaaSmrg fi 642ab47cfaaSmrg 643ab47cfaaSmrg # Only execute mode is allowed to have -dlopen flags. 644ab47cfaaSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 6455c42550eSmrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 6465c42550eSmrg $echo "$help" 1>&2 647ab47cfaaSmrg exit $EXIT_FAILURE 648ab47cfaaSmrg fi 649ab47cfaaSmrg 650ab47cfaaSmrg # Change the help message to a mode-specific one. 651ab47cfaaSmrg generic_help="$help" 6525c42550eSmrg help="Try \`$modename --help --mode=$mode' for more information." 653ab47cfaaSmrg 6545c42550eSmrg # These modes are in order of execution frequency so that they run quickly. 6555c42550eSmrg case $mode in 6565c42550eSmrg # libtool compile mode 6575c42550eSmrg compile) 6585c42550eSmrg modename="$modename: compile" 6595c42550eSmrg # Get the compilation command and the source file. 6605c42550eSmrg base_compile= 6615c42550eSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 6625c42550eSmrg suppress_opt=yes 6635c42550eSmrg suppress_output= 6645c42550eSmrg arg_mode=normal 6655c42550eSmrg libobj= 6665c42550eSmrg later= 667ab47cfaaSmrg 6685c42550eSmrg for arg 6695c42550eSmrg do 6705c42550eSmrg case $arg_mode in 6715c42550eSmrg arg ) 6725c42550eSmrg # do not "continue". Instead, add this to base_compile 6735c42550eSmrg lastarg="$arg" 6745c42550eSmrg arg_mode=normal 6755c42550eSmrg ;; 676ab47cfaaSmrg 6775c42550eSmrg target ) 6785c42550eSmrg libobj="$arg" 6795c42550eSmrg arg_mode=normal 6805c42550eSmrg continue 6815c42550eSmrg ;; 682ab47cfaaSmrg 6835c42550eSmrg normal ) 6845c42550eSmrg # Accept any command-line options. 6855c42550eSmrg case $arg in 6865c42550eSmrg -o) 6875c42550eSmrg if test -n "$libobj" ; then 6885c42550eSmrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 6895c42550eSmrg exit $EXIT_FAILURE 6905c42550eSmrg fi 6915c42550eSmrg arg_mode=target 6925c42550eSmrg continue 6935c42550eSmrg ;; 694ab47cfaaSmrg 6955c42550eSmrg -static | -prefer-pic | -prefer-non-pic) 6965c42550eSmrg later="$later $arg" 6975c42550eSmrg continue 6985c42550eSmrg ;; 6991473d951Smrg 7001473d951Smrg -no-suppress) 701ab47cfaaSmrg suppress_opt=no 702ab47cfaaSmrg continue 703ab47cfaaSmrg ;; 704ab47cfaaSmrg 705ab47cfaaSmrg -Xcompiler) 706ab47cfaaSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 707ab47cfaaSmrg continue # The current "srcfile" will either be retained or 708ab47cfaaSmrg ;; # replaced later. I would guess that would be a bug. 709ab47cfaaSmrg 710ab47cfaaSmrg -Wc,*) 7115c42550eSmrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 712ab47cfaaSmrg lastarg= 713ab47cfaaSmrg save_ifs="$IFS"; IFS=',' 7145c42550eSmrg for arg in $args; do 715ab47cfaaSmrg IFS="$save_ifs" 7165c42550eSmrg 7175c42550eSmrg # Double-quote args containing other shell metacharacters. 7185c42550eSmrg # Many Bourne shells cannot handle close brackets correctly 7195c42550eSmrg # in scan sets, so we specify it separately. 7205c42550eSmrg case $arg in 7215c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7225c42550eSmrg arg="\"$arg\"" 7235c42550eSmrg ;; 7245c42550eSmrg esac 7255c42550eSmrg lastarg="$lastarg $arg" 726ab47cfaaSmrg done 727ab47cfaaSmrg IFS="$save_ifs" 7285c42550eSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 729ab47cfaaSmrg 730ab47cfaaSmrg # Add the arguments to base_compile. 731ab47cfaaSmrg base_compile="$base_compile $lastarg" 732ab47cfaaSmrg continue 733ab47cfaaSmrg ;; 734ab47cfaaSmrg 7355c42550eSmrg * ) 736ab47cfaaSmrg # Accept the current argument as the source file. 737ab47cfaaSmrg # The previous "srcfile" becomes the current argument. 738ab47cfaaSmrg # 739ab47cfaaSmrg lastarg="$srcfile" 740ab47cfaaSmrg srcfile="$arg" 741ab47cfaaSmrg ;; 742ab47cfaaSmrg esac # case $arg 743ab47cfaaSmrg ;; 744ab47cfaaSmrg esac # case $arg_mode 745ab47cfaaSmrg 746ab47cfaaSmrg # Aesthetically quote the previous argument. 7475c42550eSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 7485c42550eSmrg 7495c42550eSmrg case $lastarg in 7505c42550eSmrg # Double-quote args containing other shell metacharacters. 7515c42550eSmrg # Many Bourne shells cannot handle close brackets correctly 7525c42550eSmrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 7535c42550eSmrg # in scan sets (worked around with variable expansion), 7545c42550eSmrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 7555c42550eSmrg # at all, so we specify them separately. 7565c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7575c42550eSmrg lastarg="\"$lastarg\"" 7585c42550eSmrg ;; 7595c42550eSmrg esac 7605c42550eSmrg 7615c42550eSmrg base_compile="$base_compile $lastarg" 762ab47cfaaSmrg done # for arg 763ab47cfaaSmrg 764ab47cfaaSmrg case $arg_mode in 765ab47cfaaSmrg arg) 7665c42550eSmrg $echo "$modename: you must specify an argument for -Xcompile" 7675c42550eSmrg exit $EXIT_FAILURE 768ab47cfaaSmrg ;; 769ab47cfaaSmrg target) 7705c42550eSmrg $echo "$modename: you must specify a target with \`-o'" 1>&2 7715c42550eSmrg exit $EXIT_FAILURE 772ab47cfaaSmrg ;; 773ab47cfaaSmrg *) 774ab47cfaaSmrg # Get the name of the library object. 7755c42550eSmrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 776ab47cfaaSmrg ;; 777ab47cfaaSmrg esac 778ab47cfaaSmrg 779ab47cfaaSmrg # Recognize several different file suffixes. 780ab47cfaaSmrg # If the user specifies -o file.o, it is replaced with file.lo 7815c42550eSmrg xform='[cCFSifmso]' 782ab47cfaaSmrg case $libobj in 7835c42550eSmrg *.ada) xform=ada ;; 7845c42550eSmrg *.adb) xform=adb ;; 7855c42550eSmrg *.ads) xform=ads ;; 7865c42550eSmrg *.asm) xform=asm ;; 7875c42550eSmrg *.c++) xform=c++ ;; 7885c42550eSmrg *.cc) xform=cc ;; 7895c42550eSmrg *.ii) xform=ii ;; 7905c42550eSmrg *.class) xform=class ;; 7915c42550eSmrg *.cpp) xform=cpp ;; 7925c42550eSmrg *.cxx) xform=cxx ;; 7935c42550eSmrg *.[fF][09]?) xform=[fF][09]. ;; 7945c42550eSmrg *.for) xform=for ;; 7955c42550eSmrg *.java) xform=java ;; 7965c42550eSmrg *.obj) xform=obj ;; 7975c42550eSmrg *.sx) xform=sx ;; 798ab47cfaaSmrg esac 799ab47cfaaSmrg 8005c42550eSmrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 8015c42550eSmrg 802ab47cfaaSmrg case $libobj in 8035c42550eSmrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 804ab47cfaaSmrg *) 8055c42550eSmrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 8065c42550eSmrg exit $EXIT_FAILURE 807ab47cfaaSmrg ;; 808ab47cfaaSmrg esac 809ab47cfaaSmrg 810ab47cfaaSmrg func_infer_tag $base_compile 811ab47cfaaSmrg 812ab47cfaaSmrg for arg in $later; do 813ab47cfaaSmrg case $arg in 814ab47cfaaSmrg -static) 815ab47cfaaSmrg build_old_libs=yes 816ab47cfaaSmrg continue 817ab47cfaaSmrg ;; 818ab47cfaaSmrg 819ab47cfaaSmrg -prefer-pic) 820ab47cfaaSmrg pic_mode=yes 821ab47cfaaSmrg continue 822ab47cfaaSmrg ;; 823ab47cfaaSmrg 824ab47cfaaSmrg -prefer-non-pic) 825ab47cfaaSmrg pic_mode=no 826ab47cfaaSmrg continue 827ab47cfaaSmrg ;; 828ab47cfaaSmrg esac 829ab47cfaaSmrg done 830ab47cfaaSmrg 8315c42550eSmrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 8325c42550eSmrg case $qlibobj in 8335c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 8345c42550eSmrg qlibobj="\"$qlibobj\"" ;; 8355c42550eSmrg esac 8365c42550eSmrg test "X$libobj" != "X$qlibobj" \ 8375c42550eSmrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 8385c42550eSmrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 8395c42550eSmrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 8405c42550eSmrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 8415c42550eSmrg if test "X$xdir" = "X$obj"; then 8425c42550eSmrg xdir= 8435c42550eSmrg else 8445c42550eSmrg xdir=$xdir/ 8455c42550eSmrg fi 846ab47cfaaSmrg lobj=${xdir}$objdir/$objname 847ab47cfaaSmrg 8485c42550eSmrg if test -z "$base_compile"; then 8495c42550eSmrg $echo "$modename: you must specify a compilation command" 1>&2 8505c42550eSmrg $echo "$help" 1>&2 8515c42550eSmrg exit $EXIT_FAILURE 8525c42550eSmrg fi 853ab47cfaaSmrg 854ab47cfaaSmrg # Delete any leftover library objects. 855ab47cfaaSmrg if test "$build_old_libs" = yes; then 856ab47cfaaSmrg removelist="$obj $lobj $libobj ${libobj}T" 857ab47cfaaSmrg else 858ab47cfaaSmrg removelist="$lobj $libobj ${libobj}T" 859ab47cfaaSmrg fi 860ab47cfaaSmrg 8615c42550eSmrg $run $rm $removelist 8625c42550eSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8635c42550eSmrg 864ab47cfaaSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 865ab47cfaaSmrg case $host_os in 8665c42550eSmrg cygwin* | mingw* | pw32* | os2*) 867ab47cfaaSmrg pic_mode=default 868ab47cfaaSmrg ;; 869ab47cfaaSmrg esac 870ab47cfaaSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 871ab47cfaaSmrg # non-PIC code in shared libraries is not supported 872ab47cfaaSmrg pic_mode=default 873ab47cfaaSmrg fi 874ab47cfaaSmrg 875ab47cfaaSmrg # Calculate the filename of the output object if compiler does 876ab47cfaaSmrg # not support -o with -c 877ab47cfaaSmrg if test "$compiler_c_o" = no; then 8785c42550eSmrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 879ab47cfaaSmrg lockfile="$output_obj.lock" 8805c42550eSmrg removelist="$removelist $output_obj $lockfile" 8815c42550eSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 882ab47cfaaSmrg else 883ab47cfaaSmrg output_obj= 884ab47cfaaSmrg need_locks=no 885ab47cfaaSmrg lockfile= 886ab47cfaaSmrg fi 887ab47cfaaSmrg 888ab47cfaaSmrg # Lock this critical section if it is needed 889ab47cfaaSmrg # We use this script file to make the link, it avoids creating a new file 890ab47cfaaSmrg if test "$need_locks" = yes; then 8915c42550eSmrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 8925c42550eSmrg $show "Waiting for $lockfile to be removed" 893ab47cfaaSmrg sleep 2 894ab47cfaaSmrg done 895ab47cfaaSmrg elif test "$need_locks" = warn; then 896ab47cfaaSmrg if test -f "$lockfile"; then 8975c42550eSmrg $echo "\ 898ab47cfaaSmrg*** ERROR, $lockfile exists and contains: 899ab47cfaaSmrg`cat $lockfile 2>/dev/null` 900ab47cfaaSmrg 901ab47cfaaSmrgThis indicates that another process is trying to use the same 902ab47cfaaSmrgtemporary object file, and libtool could not work around it because 903ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together. If you 904ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better 905ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better 906ab47cfaaSmrgcompiler." 907ab47cfaaSmrg 9085c42550eSmrg $run $rm $removelist 909ab47cfaaSmrg exit $EXIT_FAILURE 910ab47cfaaSmrg fi 9115c42550eSmrg $echo "$srcfile" > "$lockfile" 912ab47cfaaSmrg fi 913ab47cfaaSmrg 914ab47cfaaSmrg if test -n "$fix_srcfile_path"; then 915ab47cfaaSmrg eval srcfile=\"$fix_srcfile_path\" 916ab47cfaaSmrg fi 9175c42550eSmrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 9185c42550eSmrg case $qsrcfile in 9195c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 9205c42550eSmrg qsrcfile="\"$qsrcfile\"" ;; 9215c42550eSmrg esac 9225c42550eSmrg 9235c42550eSmrg $run $rm "$libobj" "${libobj}T" 9245c42550eSmrg 9255c42550eSmrg # Create a libtool object file (analogous to a ".la" file), 9265c42550eSmrg # but don't create it if we're doing a dry run. 9275c42550eSmrg test -z "$run" && cat > ${libobj}T <<EOF 9285c42550eSmrg# $libobj - a libtool object file 9295c42550eSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 9305c42550eSmrg# 9315c42550eSmrg# Please DO NOT delete this file! 9325c42550eSmrg# It is necessary for linking the library. 9335c42550eSmrg 9345c42550eSmrg# Name of the PIC object. 9355c42550eSmrgEOF 936ab47cfaaSmrg 937ab47cfaaSmrg # Only build a PIC object if we are building libtool libraries. 938ab47cfaaSmrg if test "$build_libtool_libs" = yes; then 939ab47cfaaSmrg # Without this assignment, base_compile gets emptied. 940ab47cfaaSmrg fbsd_hideous_sh_bug=$base_compile 941ab47cfaaSmrg 942ab47cfaaSmrg if test "$pic_mode" != no; then 943ab47cfaaSmrg command="$base_compile $qsrcfile $pic_flag" 944ab47cfaaSmrg else 945ab47cfaaSmrg # Don't build PIC code 946ab47cfaaSmrg command="$base_compile $qsrcfile" 947ab47cfaaSmrg fi 948ab47cfaaSmrg 9495c42550eSmrg if test ! -d "${xdir}$objdir"; then 9505c42550eSmrg $show "$mkdir ${xdir}$objdir" 9515c42550eSmrg $run $mkdir ${xdir}$objdir 9525c42550eSmrg exit_status=$? 9535c42550eSmrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 9545c42550eSmrg exit $exit_status 9555c42550eSmrg fi 9565c42550eSmrg fi 957ab47cfaaSmrg 958ab47cfaaSmrg if test -z "$output_obj"; then 959ab47cfaaSmrg # Place PIC objects in $objdir 960ab47cfaaSmrg command="$command -o $lobj" 961ab47cfaaSmrg fi 962ab47cfaaSmrg 9635c42550eSmrg $run $rm "$lobj" "$output_obj" 9645c42550eSmrg 9655c42550eSmrg $show "$command" 9665c42550eSmrg if $run eval $lt_env "$command"; then : 9675c42550eSmrg else 9685c42550eSmrg test -n "$output_obj" && $run $rm $removelist 9695c42550eSmrg exit $EXIT_FAILURE 9705c42550eSmrg fi 971ab47cfaaSmrg 972ab47cfaaSmrg if test "$need_locks" = warn && 973ab47cfaaSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 9745c42550eSmrg $echo "\ 975ab47cfaaSmrg*** ERROR, $lockfile contains: 976ab47cfaaSmrg`cat $lockfile 2>/dev/null` 977ab47cfaaSmrg 978ab47cfaaSmrgbut it should contain: 979ab47cfaaSmrg$srcfile 980ab47cfaaSmrg 981ab47cfaaSmrgThis indicates that another process is trying to use the same 982ab47cfaaSmrgtemporary object file, and libtool could not work around it because 983ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together. If you 984ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better 985ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better 986ab47cfaaSmrgcompiler." 987ab47cfaaSmrg 9885c42550eSmrg $run $rm $removelist 989ab47cfaaSmrg exit $EXIT_FAILURE 990ab47cfaaSmrg fi 991ab47cfaaSmrg 992ab47cfaaSmrg # Just move the object if needed, then go on to compile the next one 993ab47cfaaSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 9945c42550eSmrg $show "$mv $output_obj $lobj" 9955c42550eSmrg if $run $mv $output_obj $lobj; then : 9965c42550eSmrg else 9975c42550eSmrg error=$? 9985c42550eSmrg $run $rm $removelist 9995c42550eSmrg exit $error 10005c42550eSmrg fi 1001ab47cfaaSmrg fi 1002ab47cfaaSmrg 10035c42550eSmrg # Append the name of the PIC object to the libtool object file. 10045c42550eSmrg test -z "$run" && cat >> ${libobj}T <<EOF 10055c42550eSmrgpic_object='$objdir/$objname' 10065c42550eSmrg 10075c42550eSmrgEOF 10085c42550eSmrg 1009ab47cfaaSmrg # Allow error messages only from the first compilation. 1010ab47cfaaSmrg if test "$suppress_opt" = yes; then 10115c42550eSmrg suppress_output=' >/dev/null 2>&1' 1012ab47cfaaSmrg fi 10135c42550eSmrg else 10145c42550eSmrg # No PIC object so indicate it doesn't exist in the libtool 10155c42550eSmrg # object file. 10165c42550eSmrg test -z "$run" && cat >> ${libobj}T <<EOF 10175c42550eSmrgpic_object=none 10185c42550eSmrg 10195c42550eSmrgEOF 1020ab47cfaaSmrg fi 1021ab47cfaaSmrg 1022ab47cfaaSmrg # Only build a position-dependent object if we build old libraries. 1023ab47cfaaSmrg if test "$build_old_libs" = yes; then 1024ab47cfaaSmrg if test "$pic_mode" != yes; then 1025ab47cfaaSmrg # Don't build PIC code 10265c42550eSmrg command="$base_compile $qsrcfile" 1027ab47cfaaSmrg else 1028ab47cfaaSmrg command="$base_compile $qsrcfile $pic_flag" 1029ab47cfaaSmrg fi 1030ab47cfaaSmrg if test "$compiler_c_o" = yes; then 1031ab47cfaaSmrg command="$command -o $obj" 1032ab47cfaaSmrg fi 1033ab47cfaaSmrg 1034ab47cfaaSmrg # Suppress compiler output if we already did a PIC compilation. 1035ab47cfaaSmrg command="$command$suppress_output" 10365c42550eSmrg $run $rm "$obj" "$output_obj" 10375c42550eSmrg $show "$command" 10385c42550eSmrg if $run eval $lt_env "$command"; then : 10395c42550eSmrg else 10405c42550eSmrg $run $rm $removelist 10415c42550eSmrg exit $EXIT_FAILURE 10425c42550eSmrg fi 1043ab47cfaaSmrg 1044ab47cfaaSmrg if test "$need_locks" = warn && 1045ab47cfaaSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 10465c42550eSmrg $echo "\ 1047ab47cfaaSmrg*** ERROR, $lockfile contains: 1048ab47cfaaSmrg`cat $lockfile 2>/dev/null` 1049ab47cfaaSmrg 1050ab47cfaaSmrgbut it should contain: 1051ab47cfaaSmrg$srcfile 1052ab47cfaaSmrg 1053ab47cfaaSmrgThis indicates that another process is trying to use the same 1054ab47cfaaSmrgtemporary object file, and libtool could not work around it because 1055ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together. If you 1056ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better 1057ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better 1058ab47cfaaSmrgcompiler." 1059ab47cfaaSmrg 10605c42550eSmrg $run $rm $removelist 1061ab47cfaaSmrg exit $EXIT_FAILURE 1062ab47cfaaSmrg fi 1063ab47cfaaSmrg 1064ab47cfaaSmrg # Just move the object if needed 1065ab47cfaaSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 10665c42550eSmrg $show "$mv $output_obj $obj" 10675c42550eSmrg if $run $mv $output_obj $obj; then : 10685c42550eSmrg else 10695c42550eSmrg error=$? 10705c42550eSmrg $run $rm $removelist 10715c42550eSmrg exit $error 10725c42550eSmrg fi 1073ab47cfaaSmrg fi 10745c42550eSmrg 10755c42550eSmrg # Append the name of the non-PIC object the libtool object file. 10765c42550eSmrg # Only append if the libtool object file exists. 10775c42550eSmrg test -z "$run" && cat >> ${libobj}T <<EOF 10785c42550eSmrg# Name of the non-PIC object. 10795c42550eSmrgnon_pic_object='$objname' 10805c42550eSmrg 10815c42550eSmrgEOF 10825c42550eSmrg else 10835c42550eSmrg # Append the name of the non-PIC object the libtool object file. 10845c42550eSmrg # Only append if the libtool object file exists. 10855c42550eSmrg test -z "$run" && cat >> ${libobj}T <<EOF 10865c42550eSmrg# Name of the non-PIC object. 10875c42550eSmrgnon_pic_object=none 10885c42550eSmrg 10895c42550eSmrgEOF 1090ab47cfaaSmrg fi 1091ab47cfaaSmrg 10925c42550eSmrg $run $mv "${libobj}T" "${libobj}" 1093ab47cfaaSmrg 10945c42550eSmrg # Unlock the critical section if it was locked 10955c42550eSmrg if test "$need_locks" != no; then 10965c42550eSmrg $run $rm "$lockfile" 10975c42550eSmrg fi 1098ab47cfaaSmrg 1099ab47cfaaSmrg exit $EXIT_SUCCESS 11005c42550eSmrg ;; 1101ab47cfaaSmrg 11025c42550eSmrg # libtool link mode 11035c42550eSmrg link | relink) 11045c42550eSmrg modename="$modename: link" 11055c42550eSmrg case $host in 11065c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 11075c42550eSmrg # It is impossible to link a dll without this setting, and 11085c42550eSmrg # we shouldn't force the makefile maintainer to figure out 11095c42550eSmrg # which system we are compiling for in order to pass an extra 11105c42550eSmrg # flag for every libtool invocation. 11115c42550eSmrg # allow_undefined=no 1112ab47cfaaSmrg 11135c42550eSmrg # FIXME: Unfortunately, there are problems with the above when trying 11145c42550eSmrg # to make a dll which has undefined symbols, in which case not 11155c42550eSmrg # even a static library is built. For now, we need to specify 11165c42550eSmrg # -no-undefined on the libtool link line when we can be certain 11175c42550eSmrg # that all symbols are satisfied, otherwise we get a static library. 11185c42550eSmrg allow_undefined=yes 11195c42550eSmrg ;; 11205c42550eSmrg *) 11215c42550eSmrg allow_undefined=yes 11225c42550eSmrg ;; 11235c42550eSmrg esac 11245c42550eSmrg libtool_args="$nonopt" 11255c42550eSmrg base_compile="$nonopt $@" 11265c42550eSmrg compile_command="$nonopt" 11275c42550eSmrg finalize_command="$nonopt" 1128ab47cfaaSmrg 11295c42550eSmrg compile_rpath= 11305c42550eSmrg finalize_rpath= 11315c42550eSmrg compile_shlibpath= 11325c42550eSmrg finalize_shlibpath= 11335c42550eSmrg convenience= 11345c42550eSmrg old_convenience= 11355c42550eSmrg deplibs= 11365c42550eSmrg old_deplibs= 11375c42550eSmrg compiler_flags= 11385c42550eSmrg linker_flags= 11395c42550eSmrg dllsearchpath= 11405c42550eSmrg lib_search_path=`pwd` 11415c42550eSmrg inst_prefix_dir= 1142ab47cfaaSmrg 11435c42550eSmrg avoid_version=no 11445c42550eSmrg dlfiles= 11455c42550eSmrg dlprefiles= 11465c42550eSmrg dlself=no 11475c42550eSmrg export_dynamic=no 11485c42550eSmrg export_symbols= 11495c42550eSmrg export_symbols_regex= 11505c42550eSmrg generated= 11515c42550eSmrg libobjs= 11525c42550eSmrg ltlibs= 11535c42550eSmrg module=no 11545c42550eSmrg no_install=no 11555c42550eSmrg objs= 11565c42550eSmrg non_pic_objects= 11575c42550eSmrg notinst_path= # paths that contain not-installed libtool libraries 11585c42550eSmrg precious_files_regex= 11595c42550eSmrg prefer_static_libs=no 11605c42550eSmrg preload=no 11615c42550eSmrg prev= 11625c42550eSmrg prevarg= 11635c42550eSmrg release= 11645c42550eSmrg rpath= 11655c42550eSmrg xrpath= 11665c42550eSmrg perm_rpath= 11675c42550eSmrg temp_rpath= 11685c42550eSmrg thread_safe=no 11695c42550eSmrg vinfo= 11705c42550eSmrg vinfo_number=no 11715c42550eSmrg single_module="${wl}-single_module" 1172ab47cfaaSmrg 11735c42550eSmrg func_infer_tag $base_compile 1174ab47cfaaSmrg 11755c42550eSmrg # We need to know -static, to get the right output filenames. 11765c42550eSmrg for arg 11775c42550eSmrg do 11785c42550eSmrg case $arg in 11795c42550eSmrg -all-static | -static | -static-libtool-libs) 11805c42550eSmrg case $arg in 11815c42550eSmrg -all-static) 11825c42550eSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 11835c42550eSmrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 11845c42550eSmrg fi 11855c42550eSmrg if test -n "$link_static_flag"; then 11865c42550eSmrg dlopen_self=$dlopen_self_static 11875c42550eSmrg fi 11885c42550eSmrg prefer_static_libs=yes 11895c42550eSmrg ;; 11905c42550eSmrg -static) 11915c42550eSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11925c42550eSmrg dlopen_self=$dlopen_self_static 11935c42550eSmrg fi 11945c42550eSmrg prefer_static_libs=built 11955c42550eSmrg ;; 11965c42550eSmrg -static-libtool-libs) 11975c42550eSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11985c42550eSmrg dlopen_self=$dlopen_self_static 11995c42550eSmrg fi 12005c42550eSmrg prefer_static_libs=yes 12015c42550eSmrg ;; 12025c42550eSmrg esac 12035c42550eSmrg build_libtool_libs=no 12045c42550eSmrg build_old_libs=yes 12055c42550eSmrg break 12065c42550eSmrg ;; 12075c42550eSmrg esac 12085c42550eSmrg done 1209ab47cfaaSmrg 12105c42550eSmrg # See if our shared archives depend on static archives. 12115c42550eSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1212ab47cfaaSmrg 12135c42550eSmrg # Go through the arguments, transforming them on the way. 12145c42550eSmrg while test "$#" -gt 0; do 12155c42550eSmrg arg="$1" 12165c42550eSmrg shift 12175c42550eSmrg case $arg in 12185c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 12195c42550eSmrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 12205c42550eSmrg ;; 12215c42550eSmrg *) qarg=$arg ;; 12225c42550eSmrg esac 12235c42550eSmrg libtool_args="$libtool_args $qarg" 1224ab47cfaaSmrg 12255c42550eSmrg # If the previous option needs an argument, assign it. 12265c42550eSmrg if test -n "$prev"; then 12275c42550eSmrg case $prev in 12285c42550eSmrg output) 12295c42550eSmrg compile_command="$compile_command @OUTPUT@" 12305c42550eSmrg finalize_command="$finalize_command @OUTPUT@" 12315c42550eSmrg ;; 12325c42550eSmrg esac 1233ab47cfaaSmrg 12345c42550eSmrg case $prev in 12355c42550eSmrg dlfiles|dlprefiles) 12365c42550eSmrg if test "$preload" = no; then 12375c42550eSmrg # Add the symbol object into the linking commands. 12385c42550eSmrg compile_command="$compile_command @SYMFILE@" 12395c42550eSmrg finalize_command="$finalize_command @SYMFILE@" 12405c42550eSmrg preload=yes 12415c42550eSmrg fi 12425c42550eSmrg case $arg in 12435c42550eSmrg *.la | *.lo) ;; # We handle these cases below. 12445c42550eSmrg force) 12455c42550eSmrg if test "$dlself" = no; then 12465c42550eSmrg dlself=needless 12475c42550eSmrg export_dynamic=yes 12485c42550eSmrg fi 12495c42550eSmrg prev= 12505c42550eSmrg continue 12515c42550eSmrg ;; 12525c42550eSmrg self) 12535c42550eSmrg if test "$prev" = dlprefiles; then 12545c42550eSmrg dlself=yes 12555c42550eSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 12565c42550eSmrg dlself=yes 12575c42550eSmrg else 12585c42550eSmrg dlself=needless 12595c42550eSmrg export_dynamic=yes 12605c42550eSmrg fi 12615c42550eSmrg prev= 12625c42550eSmrg continue 12635c42550eSmrg ;; 12645c42550eSmrg *) 12655c42550eSmrg if test "$prev" = dlfiles; then 12665c42550eSmrg dlfiles="$dlfiles $arg" 12675c42550eSmrg else 12685c42550eSmrg dlprefiles="$dlprefiles $arg" 12695c42550eSmrg fi 12705c42550eSmrg prev= 12715c42550eSmrg continue 12725c42550eSmrg ;; 12735c42550eSmrg esac 12745c42550eSmrg ;; 12755c42550eSmrg expsyms) 12765c42550eSmrg export_symbols="$arg" 12775c42550eSmrg if test ! -f "$arg"; then 12785c42550eSmrg $echo "$modename: symbol file \`$arg' does not exist" 12795c42550eSmrg exit $EXIT_FAILURE 12805c42550eSmrg fi 12815c42550eSmrg prev= 12825c42550eSmrg continue 12835c42550eSmrg ;; 12845c42550eSmrg expsyms_regex) 12855c42550eSmrg export_symbols_regex="$arg" 12865c42550eSmrg prev= 12875c42550eSmrg continue 12885c42550eSmrg ;; 12895c42550eSmrg inst_prefix) 12905c42550eSmrg inst_prefix_dir="$arg" 12915c42550eSmrg prev= 12925c42550eSmrg continue 12935c42550eSmrg ;; 12945c42550eSmrg precious_regex) 12955c42550eSmrg precious_files_regex="$arg" 12965c42550eSmrg prev= 12975c42550eSmrg continue 12985c42550eSmrg ;; 12995c42550eSmrg release) 13005c42550eSmrg release="-$arg" 13015c42550eSmrg prev= 13025c42550eSmrg continue 13035c42550eSmrg ;; 13045c42550eSmrg objectlist) 13055c42550eSmrg if test -f "$arg"; then 13065c42550eSmrg save_arg=$arg 13075c42550eSmrg moreargs= 13085c42550eSmrg for fil in `cat $save_arg` 13095c42550eSmrg do 13105c42550eSmrg# moreargs="$moreargs $fil" 13115c42550eSmrg arg=$fil 13125c42550eSmrg # A libtool-controlled object. 1313ab47cfaaSmrg 13145c42550eSmrg # Check to see that this really is a libtool object. 13155c42550eSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 13165c42550eSmrg pic_object= 13175c42550eSmrg non_pic_object= 1318ab47cfaaSmrg 13195c42550eSmrg # Read the .lo file 13205c42550eSmrg # If there is no directory component, then add one. 13215c42550eSmrg case $arg in 13225c42550eSmrg */* | *\\*) . $arg ;; 13235c42550eSmrg *) . ./$arg ;; 13245c42550eSmrg esac 1325ab47cfaaSmrg 13265c42550eSmrg if test -z "$pic_object" || \ 13275c42550eSmrg test -z "$non_pic_object" || 13285c42550eSmrg test "$pic_object" = none && \ 13295c42550eSmrg test "$non_pic_object" = none; then 13305c42550eSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 13315c42550eSmrg exit $EXIT_FAILURE 13325c42550eSmrg fi 1333ab47cfaaSmrg 13345c42550eSmrg # Extract subdirectory from the argument. 13355c42550eSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 13365c42550eSmrg if test "X$xdir" = "X$arg"; then 13375c42550eSmrg xdir= 13385c42550eSmrg else 13395c42550eSmrg xdir="$xdir/" 13405c42550eSmrg fi 1341ab47cfaaSmrg 13425c42550eSmrg if test "$pic_object" != none; then 13435c42550eSmrg # Prepend the subdirectory the object is found in. 13445c42550eSmrg pic_object="$xdir$pic_object" 1345ab47cfaaSmrg 13465c42550eSmrg if test "$prev" = dlfiles; then 13475c42550eSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 13485c42550eSmrg dlfiles="$dlfiles $pic_object" 13495c42550eSmrg prev= 13505c42550eSmrg continue 13515c42550eSmrg else 13525c42550eSmrg # If libtool objects are unsupported, then we need to preload. 13535c42550eSmrg prev=dlprefiles 13545c42550eSmrg fi 13555c42550eSmrg fi 1356ab47cfaaSmrg 13575c42550eSmrg # CHECK ME: I think I busted this. -Ossama 13585c42550eSmrg if test "$prev" = dlprefiles; then 13595c42550eSmrg # Preload the old-style object. 13605c42550eSmrg dlprefiles="$dlprefiles $pic_object" 13615c42550eSmrg prev= 13625c42550eSmrg fi 1363ab47cfaaSmrg 13645c42550eSmrg # A PIC object. 13655c42550eSmrg libobjs="$libobjs $pic_object" 13665c42550eSmrg arg="$pic_object" 13675c42550eSmrg fi 1368ab47cfaaSmrg 13695c42550eSmrg # Non-PIC object. 13705c42550eSmrg if test "$non_pic_object" != none; then 13715c42550eSmrg # Prepend the subdirectory the object is found in. 13725c42550eSmrg non_pic_object="$xdir$non_pic_object" 1373ab47cfaaSmrg 13745c42550eSmrg # A standard non-PIC object 13755c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 13765c42550eSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 13775c42550eSmrg arg="$non_pic_object" 13785c42550eSmrg fi 13795c42550eSmrg else 13805c42550eSmrg # If the PIC object exists, use it instead. 13815c42550eSmrg # $xdir was prepended to $pic_object above. 13825c42550eSmrg non_pic_object="$pic_object" 13835c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 13845c42550eSmrg fi 13855c42550eSmrg else 13865c42550eSmrg # Only an error if not doing a dry-run. 13875c42550eSmrg if test -z "$run"; then 13885c42550eSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 13895c42550eSmrg exit $EXIT_FAILURE 13905c42550eSmrg else 13915c42550eSmrg # Dry-run case. 1392ab47cfaaSmrg 13935c42550eSmrg # Extract subdirectory from the argument. 13945c42550eSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 13955c42550eSmrg if test "X$xdir" = "X$arg"; then 13965c42550eSmrg xdir= 13975c42550eSmrg else 13985c42550eSmrg xdir="$xdir/" 13995c42550eSmrg fi 1400ab47cfaaSmrg 14015c42550eSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 14025c42550eSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 14035c42550eSmrg libobjs="$libobjs $pic_object" 14045c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 14055c42550eSmrg fi 14065c42550eSmrg fi 14075c42550eSmrg done 14085c42550eSmrg else 14095c42550eSmrg $echo "$modename: link input file \`$save_arg' does not exist" 14105c42550eSmrg exit $EXIT_FAILURE 14115c42550eSmrg fi 14125c42550eSmrg arg=$save_arg 14135c42550eSmrg prev= 14145c42550eSmrg continue 14155c42550eSmrg ;; 14165c42550eSmrg rpath | xrpath) 14175c42550eSmrg # We need an absolute path. 14185c42550eSmrg case $arg in 14195c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 14205c42550eSmrg *) 14215c42550eSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 14225c42550eSmrg exit $EXIT_FAILURE 14235c42550eSmrg ;; 14245c42550eSmrg esac 14255c42550eSmrg if test "$prev" = rpath; then 14265c42550eSmrg case "$rpath " in 14275c42550eSmrg *" $arg "*) ;; 14285c42550eSmrg *) rpath="$rpath $arg" ;; 14295c42550eSmrg esac 14305c42550eSmrg else 14315c42550eSmrg case "$xrpath " in 14325c42550eSmrg *" $arg "*) ;; 14335c42550eSmrg *) xrpath="$xrpath $arg" ;; 14345c42550eSmrg esac 14355c42550eSmrg fi 14365c42550eSmrg prev= 14375c42550eSmrg continue 14385c42550eSmrg ;; 14395c42550eSmrg xcompiler) 14405c42550eSmrg compiler_flags="$compiler_flags $qarg" 14415c42550eSmrg prev= 14425c42550eSmrg compile_command="$compile_command $qarg" 14435c42550eSmrg finalize_command="$finalize_command $qarg" 14445c42550eSmrg continue 14455c42550eSmrg ;; 14465c42550eSmrg xlinker) 14475c42550eSmrg linker_flags="$linker_flags $qarg" 14485c42550eSmrg compiler_flags="$compiler_flags $wl$qarg" 14495c42550eSmrg prev= 14505c42550eSmrg compile_command="$compile_command $wl$qarg" 14515c42550eSmrg finalize_command="$finalize_command $wl$qarg" 14525c42550eSmrg continue 14535c42550eSmrg ;; 14545c42550eSmrg xcclinker) 14555c42550eSmrg linker_flags="$linker_flags $qarg" 14565c42550eSmrg compiler_flags="$compiler_flags $qarg" 14575c42550eSmrg prev= 14585c42550eSmrg compile_command="$compile_command $qarg" 14595c42550eSmrg finalize_command="$finalize_command $qarg" 14605c42550eSmrg continue 14615c42550eSmrg ;; 14625c42550eSmrg shrext) 14635c42550eSmrg shrext_cmds="$arg" 14645c42550eSmrg prev= 14655c42550eSmrg continue 14665c42550eSmrg ;; 14675c42550eSmrg darwin_framework|darwin_framework_skip) 14685c42550eSmrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 14695c42550eSmrg compile_command="$compile_command $arg" 14705c42550eSmrg finalize_command="$finalize_command $arg" 14715c42550eSmrg prev= 14725c42550eSmrg continue 14735c42550eSmrg ;; 14745c42550eSmrg *) 14755c42550eSmrg eval "$prev=\"\$arg\"" 14765c42550eSmrg prev= 14775c42550eSmrg continue 14785c42550eSmrg ;; 14795c42550eSmrg esac 14805c42550eSmrg fi # test -n "$prev" 1481ab47cfaaSmrg 14825c42550eSmrg prevarg="$arg" 1483ab47cfaaSmrg 14845c42550eSmrg case $arg in 14855c42550eSmrg -all-static) 14865c42550eSmrg if test -n "$link_static_flag"; then 14875c42550eSmrg compile_command="$compile_command $link_static_flag" 14885c42550eSmrg finalize_command="$finalize_command $link_static_flag" 14895c42550eSmrg fi 14905c42550eSmrg continue 14915c42550eSmrg ;; 1492ab47cfaaSmrg 14935c42550eSmrg -allow-undefined) 14945c42550eSmrg # FIXME: remove this flag sometime in the future. 14955c42550eSmrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 14965c42550eSmrg continue 14975c42550eSmrg ;; 1498ab47cfaaSmrg 14995c42550eSmrg -avoid-version) 15005c42550eSmrg avoid_version=yes 15015c42550eSmrg continue 15025c42550eSmrg ;; 1503ab47cfaaSmrg 15045c42550eSmrg -dlopen) 15055c42550eSmrg prev=dlfiles 15065c42550eSmrg continue 15075c42550eSmrg ;; 1508ab47cfaaSmrg 15095c42550eSmrg -dlpreopen) 15105c42550eSmrg prev=dlprefiles 15115c42550eSmrg continue 15125c42550eSmrg ;; 1513ab47cfaaSmrg 15145c42550eSmrg -export-dynamic) 15155c42550eSmrg export_dynamic=yes 15165c42550eSmrg continue 15175c42550eSmrg ;; 1518ab47cfaaSmrg 15195c42550eSmrg -export-symbols | -export-symbols-regex) 15205c42550eSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 15215c42550eSmrg $echo "$modename: more than one -exported-symbols argument is not allowed" 15225c42550eSmrg exit $EXIT_FAILURE 15235c42550eSmrg fi 15245c42550eSmrg if test "X$arg" = "X-export-symbols"; then 15255c42550eSmrg prev=expsyms 15265c42550eSmrg else 15275c42550eSmrg prev=expsyms_regex 15285c42550eSmrg fi 15295c42550eSmrg continue 15305c42550eSmrg ;; 1531ab47cfaaSmrg 15325c42550eSmrg -framework|-arch|-isysroot) 15335c42550eSmrg case " $CC " in 15345c42550eSmrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 15355c42550eSmrg prev=darwin_framework_skip ;; 15365c42550eSmrg *) compiler_flags="$compiler_flags $arg" 15375c42550eSmrg prev=darwin_framework ;; 15385c42550eSmrg esac 15395c42550eSmrg compile_command="$compile_command $arg" 15405c42550eSmrg finalize_command="$finalize_command $arg" 15415c42550eSmrg continue 15425c42550eSmrg ;; 1543ab47cfaaSmrg 15445c42550eSmrg -inst-prefix-dir) 15455c42550eSmrg prev=inst_prefix 15465c42550eSmrg continue 15475c42550eSmrg ;; 1548ab47cfaaSmrg 15495c42550eSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 15505c42550eSmrg # so, if we see these flags be careful not to treat them like -L 15515c42550eSmrg -L[A-Z][A-Z]*:*) 15525c42550eSmrg case $with_gcc/$host in 15535c42550eSmrg no/*-*-irix* | /*-*-irix*) 15545c42550eSmrg compile_command="$compile_command $arg" 15555c42550eSmrg finalize_command="$finalize_command $arg" 15565c42550eSmrg ;; 15575c42550eSmrg esac 15585c42550eSmrg continue 15595c42550eSmrg ;; 1560ab47cfaaSmrg 15615c42550eSmrg -L*) 15625c42550eSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 15635c42550eSmrg # We need an absolute path. 15645c42550eSmrg case $dir in 15655c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 15665c42550eSmrg *) 15675c42550eSmrg absdir=`cd "$dir" && pwd` 15685c42550eSmrg if test -z "$absdir"; then 15695c42550eSmrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 15705c42550eSmrg absdir="$dir" 15715c42550eSmrg notinst_path="$notinst_path $dir" 15725c42550eSmrg fi 15735c42550eSmrg dir="$absdir" 15745c42550eSmrg ;; 15755c42550eSmrg esac 15765c42550eSmrg case "$deplibs " in 15775c42550eSmrg *" -L$dir "*) ;; 15785c42550eSmrg *) 15795c42550eSmrg deplibs="$deplibs -L$dir" 15805c42550eSmrg lib_search_path="$lib_search_path $dir" 15815c42550eSmrg ;; 15825c42550eSmrg esac 15835c42550eSmrg case $host in 15845c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 15855c42550eSmrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 15865c42550eSmrg case :$dllsearchpath: in 15875c42550eSmrg *":$dir:"*) ;; 15885c42550eSmrg *) dllsearchpath="$dllsearchpath:$dir";; 15895c42550eSmrg esac 15905c42550eSmrg case :$dllsearchpath: in 15915c42550eSmrg *":$testbindir:"*) ;; 15925c42550eSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 15935c42550eSmrg esac 15945c42550eSmrg ;; 15955c42550eSmrg esac 15965c42550eSmrg continue 15975c42550eSmrg ;; 1598ab47cfaaSmrg 15995c42550eSmrg -l*) 16005c42550eSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 16015c42550eSmrg case $host in 16025c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 16035c42550eSmrg # These systems don't actually have a C or math library (as such) 16045c42550eSmrg continue 16055c42550eSmrg ;; 16065c42550eSmrg *-*-os2*) 16075c42550eSmrg # These systems don't actually have a C library (as such) 16085c42550eSmrg test "X$arg" = "X-lc" && continue 16095c42550eSmrg ;; 16105c42550eSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 16115c42550eSmrg # Do not include libc due to us having libc/libc_r. 16125c42550eSmrg test "X$arg" = "X-lc" && continue 16135c42550eSmrg ;; 16145c42550eSmrg *-*-rhapsody* | *-*-darwin1.[012]) 16155c42550eSmrg # Rhapsody C and math libraries are in the System framework 16165c42550eSmrg deplibs="$deplibs -framework System" 16175c42550eSmrg continue 16185c42550eSmrg ;; 16195c42550eSmrg *-*-sco3.2v5* | *-*-sco5v6*) 16205c42550eSmrg # Causes problems with __ctype 16215c42550eSmrg test "X$arg" = "X-lc" && continue 16225c42550eSmrg ;; 16235c42550eSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 16245c42550eSmrg # Compiler inserts libc in the correct place for threads to work 16255c42550eSmrg test "X$arg" = "X-lc" && continue 16265c42550eSmrg ;; 16275c42550eSmrg esac 16285c42550eSmrg elif test "X$arg" = "X-lc_r"; then 16295c42550eSmrg case $host in 16305c42550eSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 16315c42550eSmrg # Do not include libc_r directly, use -pthread flag. 16325c42550eSmrg continue 16335c42550eSmrg ;; 16345c42550eSmrg esac 16351473d951Smrg fi 16365c42550eSmrg deplibs="$deplibs $arg" 16375c42550eSmrg continue 16385c42550eSmrg ;; 1639ab47cfaaSmrg 16405c42550eSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 16415c42550eSmrg # classes, name mangling, and exception handling. 16425c42550eSmrg -model) 16435c42550eSmrg compile_command="$compile_command $arg" 16445c42550eSmrg compiler_flags="$compiler_flags $arg" 16455c42550eSmrg finalize_command="$finalize_command $arg" 16465c42550eSmrg prev=xcompiler 16475c42550eSmrg continue 1648ab47cfaaSmrg ;; 1649ab47cfaaSmrg 16505c42550eSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 16515c42550eSmrg compiler_flags="$compiler_flags $arg" 16525c42550eSmrg compile_command="$compile_command $arg" 16535c42550eSmrg finalize_command="$finalize_command $arg" 16545c42550eSmrg continue 1655ab47cfaaSmrg ;; 1656ab47cfaaSmrg 16575c42550eSmrg -multi_module) 16585c42550eSmrg single_module="${wl}-multi_module" 1659ab47cfaaSmrg continue 1660ab47cfaaSmrg ;; 1661ab47cfaaSmrg 16625c42550eSmrg -module) 16635c42550eSmrg module=yes 16645c42550eSmrg continue 16655c42550eSmrg ;; 1666ab47cfaaSmrg 16675c42550eSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 16685c42550eSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 16695c42550eSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 16705c42550eSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 16715c42550eSmrg # -q* pass through compiler args for the IBM compiler 16725c42550eSmrg # -m* pass through architecture-specific compiler args for GCC 16735c42550eSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 16745c42550eSmrg # compiler args for GCC 16755c42550eSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 16765c42550eSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 16775c42550eSmrg # @file GCC response files 16785c42550eSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 16795c42550eSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1680ab47cfaaSmrg 16815c42550eSmrg # Unknown arguments in both finalize_command and compile_command need 16825c42550eSmrg # to be aesthetically quoted because they are evaled later. 16835c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 16845c42550eSmrg case $arg in 16855c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 16865c42550eSmrg arg="\"$arg\"" 16875c42550eSmrg ;; 16885c42550eSmrg esac 16895c42550eSmrg compile_command="$compile_command $arg" 16905c42550eSmrg finalize_command="$finalize_command $arg" 16915c42550eSmrg compiler_flags="$compiler_flags $arg" 16925c42550eSmrg continue 16935c42550eSmrg ;; 1694ab47cfaaSmrg 16955c42550eSmrg -shrext) 16965c42550eSmrg prev=shrext 16975c42550eSmrg continue 16981473d951Smrg ;; 1699ab47cfaaSmrg 17005c42550eSmrg -no-fast-install) 17015c42550eSmrg fast_install=no 17025c42550eSmrg continue 17035c42550eSmrg ;; 1704ab47cfaaSmrg 17055c42550eSmrg -no-install) 17065c42550eSmrg case $host in 17075c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 17085c42550eSmrg # The PATH hackery in wrapper scripts is required on Windows 17095c42550eSmrg # and Darwin in order for the loader to find any dlls it needs. 17105c42550eSmrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 17115c42550eSmrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 17125c42550eSmrg fast_install=no 17135c42550eSmrg ;; 17145c42550eSmrg *) no_install=yes ;; 17155c42550eSmrg esac 17165c42550eSmrg continue 17175c42550eSmrg ;; 1718ab47cfaaSmrg 17195c42550eSmrg -no-undefined) 17205c42550eSmrg allow_undefined=no 17215c42550eSmrg continue 17225c42550eSmrg ;; 17231473d951Smrg 17245c42550eSmrg -objectlist) 17255c42550eSmrg prev=objectlist 17265c42550eSmrg continue 17271473d951Smrg ;; 17281473d951Smrg 17295c42550eSmrg -o) prev=output ;; 17301473d951Smrg 17315c42550eSmrg -precious-files-regex) 17325c42550eSmrg prev=precious_regex 17335c42550eSmrg continue 17345c42550eSmrg ;; 17351473d951Smrg 17365c42550eSmrg -release) 17375c42550eSmrg prev=release 17385c42550eSmrg continue 17395c42550eSmrg ;; 17401473d951Smrg 17415c42550eSmrg -rpath) 17425c42550eSmrg prev=rpath 17435c42550eSmrg continue 17445c42550eSmrg ;; 17451473d951Smrg 17465c42550eSmrg -R) 17475c42550eSmrg prev=xrpath 17481473d951Smrg continue 17495c42550eSmrg ;; 17501473d951Smrg 17515c42550eSmrg -R*) 17525c42550eSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 17535c42550eSmrg # We need an absolute path. 17545c42550eSmrg case $dir in 17555c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 17565c42550eSmrg *) 17575c42550eSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 17585c42550eSmrg exit $EXIT_FAILURE 17595c42550eSmrg ;; 17605c42550eSmrg esac 17615c42550eSmrg case "$xrpath " in 17625c42550eSmrg *" $dir "*) ;; 17635c42550eSmrg *) xrpath="$xrpath $dir" ;; 17641473d951Smrg esac 17655c42550eSmrg continue 17661473d951Smrg ;; 17675c42550eSmrg 17685c42550eSmrg -static | -static-libtool-libs) 17695c42550eSmrg # The effects of -static are defined in a previous loop. 17705c42550eSmrg # We used to do the same as -all-static on platforms that 17715c42550eSmrg # didn't have a PIC flag, but the assumption that the effects 17725c42550eSmrg # would be equivalent was wrong. It would break on at least 17735c42550eSmrg # Digital Unix and AIX. 17745c42550eSmrg continue 17751473d951Smrg ;; 17765c42550eSmrg 17775c42550eSmrg -thread-safe) 17785c42550eSmrg thread_safe=yes 17791473d951Smrg continue 17801473d951Smrg ;; 17815c42550eSmrg 17825c42550eSmrg -version-info) 17835c42550eSmrg prev=vinfo 17845c42550eSmrg continue 17851473d951Smrg ;; 17865c42550eSmrg -version-number) 17875c42550eSmrg prev=vinfo 17885c42550eSmrg vinfo_number=yes 17895c42550eSmrg continue 1790ab47cfaaSmrg ;; 1791ab47cfaaSmrg 17925c42550eSmrg -Wc,*) 17935c42550eSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 17945c42550eSmrg arg= 17955c42550eSmrg save_ifs="$IFS"; IFS=',' 17965c42550eSmrg for flag in $args; do 17975c42550eSmrg IFS="$save_ifs" 17985c42550eSmrg case $flag in 17995c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18005c42550eSmrg flag="\"$flag\"" 18015c42550eSmrg ;; 18025c42550eSmrg esac 18035c42550eSmrg arg="$arg $wl$flag" 18045c42550eSmrg compiler_flags="$compiler_flags $flag" 18055c42550eSmrg done 18065c42550eSmrg IFS="$save_ifs" 18075c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 18085c42550eSmrg ;; 1809ab47cfaaSmrg 18105c42550eSmrg -Wl,*) 18115c42550eSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 18125c42550eSmrg arg= 18135c42550eSmrg save_ifs="$IFS"; IFS=',' 18145c42550eSmrg for flag in $args; do 18155c42550eSmrg IFS="$save_ifs" 18165c42550eSmrg case $flag in 18175c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18185c42550eSmrg flag="\"$flag\"" 18195c42550eSmrg ;; 18205c42550eSmrg esac 18215c42550eSmrg arg="$arg $wl$flag" 18225c42550eSmrg compiler_flags="$compiler_flags $wl$flag" 18235c42550eSmrg linker_flags="$linker_flags $flag" 18245c42550eSmrg done 18255c42550eSmrg IFS="$save_ifs" 18265c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 18275c42550eSmrg ;; 1828ab47cfaaSmrg 18295c42550eSmrg -Xcompiler) 18305c42550eSmrg prev=xcompiler 18315c42550eSmrg continue 18325c42550eSmrg ;; 1833ab47cfaaSmrg 18345c42550eSmrg -Xlinker) 18355c42550eSmrg prev=xlinker 18365c42550eSmrg continue 18375c42550eSmrg ;; 1838ab47cfaaSmrg 18395c42550eSmrg -XCClinker) 18405c42550eSmrg prev=xcclinker 18415c42550eSmrg continue 18425c42550eSmrg ;; 1843ab47cfaaSmrg 18445c42550eSmrg # Some other compiler flag. 18455c42550eSmrg -* | +*) 18465c42550eSmrg # Unknown arguments in both finalize_command and compile_command need 18475c42550eSmrg # to be aesthetically quoted because they are evaled later. 18485c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 18495c42550eSmrg case $arg in 18505c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18515c42550eSmrg arg="\"$arg\"" 18521473d951Smrg ;; 18531473d951Smrg esac 18545c42550eSmrg ;; 1855ab47cfaaSmrg 18565c42550eSmrg *.$objext) 18575c42550eSmrg # A standard object. 18585c42550eSmrg objs="$objs $arg" 18591473d951Smrg ;; 18601473d951Smrg 18615c42550eSmrg *.lo) 18625c42550eSmrg # A libtool-controlled object. 18631473d951Smrg 18645c42550eSmrg # Check to see that this really is a libtool object. 18655c42550eSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 18665c42550eSmrg pic_object= 18675c42550eSmrg non_pic_object= 18681473d951Smrg 18695c42550eSmrg # Read the .lo file 18705c42550eSmrg # If there is no directory component, then add one. 18715c42550eSmrg case $arg in 18725c42550eSmrg */* | *\\*) . $arg ;; 18735c42550eSmrg *) . ./$arg ;; 18741473d951Smrg esac 18751473d951Smrg 18765c42550eSmrg if test -z "$pic_object" || \ 18775c42550eSmrg test -z "$non_pic_object" || 18785c42550eSmrg test "$pic_object" = none && \ 18795c42550eSmrg test "$non_pic_object" = none; then 18805c42550eSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 18815c42550eSmrg exit $EXIT_FAILURE 18825c42550eSmrg fi 18831473d951Smrg 18845c42550eSmrg # Extract subdirectory from the argument. 18855c42550eSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 18865c42550eSmrg if test "X$xdir" = "X$arg"; then 18875c42550eSmrg xdir= 18885c42550eSmrg else 18895c42550eSmrg xdir="$xdir/" 18901473d951Smrg fi 18911473d951Smrg 18925c42550eSmrg if test "$pic_object" != none; then 18935c42550eSmrg # Prepend the subdirectory the object is found in. 18945c42550eSmrg pic_object="$xdir$pic_object" 18951473d951Smrg 18965c42550eSmrg if test "$prev" = dlfiles; then 18975c42550eSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 18985c42550eSmrg dlfiles="$dlfiles $pic_object" 18995c42550eSmrg prev= 19005c42550eSmrg continue 19015c42550eSmrg else 19025c42550eSmrg # If libtool objects are unsupported, then we need to preload. 19035c42550eSmrg prev=dlprefiles 19045c42550eSmrg fi 19055c42550eSmrg fi 19061473d951Smrg 19075c42550eSmrg # CHECK ME: I think I busted this. -Ossama 19085c42550eSmrg if test "$prev" = dlprefiles; then 19095c42550eSmrg # Preload the old-style object. 19105c42550eSmrg dlprefiles="$dlprefiles $pic_object" 19115c42550eSmrg prev= 19125c42550eSmrg fi 19131473d951Smrg 19145c42550eSmrg # A PIC object. 19155c42550eSmrg libobjs="$libobjs $pic_object" 19165c42550eSmrg arg="$pic_object" 1917ab47cfaaSmrg fi 19181473d951Smrg 19195c42550eSmrg # Non-PIC object. 19205c42550eSmrg if test "$non_pic_object" != none; then 19215c42550eSmrg # Prepend the subdirectory the object is found in. 19225c42550eSmrg non_pic_object="$xdir$non_pic_object" 19235c42550eSmrg 19245c42550eSmrg # A standard non-PIC object 19255c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 19265c42550eSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 19275c42550eSmrg arg="$non_pic_object" 19285c42550eSmrg fi 19295c42550eSmrg else 19305c42550eSmrg # If the PIC object exists, use it instead. 19315c42550eSmrg # $xdir was prepended to $pic_object above. 19325c42550eSmrg non_pic_object="$pic_object" 19335c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1934ab47cfaaSmrg fi 19355c42550eSmrg else 19365c42550eSmrg # Only an error if not doing a dry-run. 19375c42550eSmrg if test -z "$run"; then 19385c42550eSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 19395c42550eSmrg exit $EXIT_FAILURE 19405c42550eSmrg else 19415c42550eSmrg # Dry-run case. 1942ab47cfaaSmrg 19435c42550eSmrg # Extract subdirectory from the argument. 19445c42550eSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 19455c42550eSmrg if test "X$xdir" = "X$arg"; then 19465c42550eSmrg xdir= 19475c42550eSmrg else 19485c42550eSmrg xdir="$xdir/" 19495c42550eSmrg fi 1950ab47cfaaSmrg 19515c42550eSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 19525c42550eSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 19535c42550eSmrg libobjs="$libobjs $pic_object" 19545c42550eSmrg non_pic_objects="$non_pic_objects $non_pic_object" 19555c42550eSmrg fi 19565c42550eSmrg fi 19575c42550eSmrg ;; 1958ab47cfaaSmrg 19595c42550eSmrg *.$libext) 19605c42550eSmrg # An archive. 19615c42550eSmrg deplibs="$deplibs $arg" 19625c42550eSmrg old_deplibs="$old_deplibs $arg" 19635c42550eSmrg continue 19641473d951Smrg ;; 1965ab47cfaaSmrg 19665c42550eSmrg *.la) 19675c42550eSmrg # A libtool-controlled library. 1968ab47cfaaSmrg 19695c42550eSmrg if test "$prev" = dlfiles; then 19705c42550eSmrg # This library was specified with -dlopen. 19715c42550eSmrg dlfiles="$dlfiles $arg" 19725c42550eSmrg prev= 19735c42550eSmrg elif test "$prev" = dlprefiles; then 19745c42550eSmrg # The library was specified with -dlpreopen. 19755c42550eSmrg dlprefiles="$dlprefiles $arg" 19765c42550eSmrg prev= 19771473d951Smrg else 19785c42550eSmrg deplibs="$deplibs $arg" 1979ab47cfaaSmrg fi 19805c42550eSmrg continue 19815c42550eSmrg ;; 1982ab47cfaaSmrg 19835c42550eSmrg # Some other compiler argument. 19845c42550eSmrg *) 19855c42550eSmrg # Unknown arguments in both finalize_command and compile_command need 19865c42550eSmrg # to be aesthetically quoted because they are evaled later. 19875c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 19885c42550eSmrg case $arg in 19895c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 19905c42550eSmrg arg="\"$arg\"" 19911473d951Smrg ;; 19921473d951Smrg esac 19931473d951Smrg ;; 19945c42550eSmrg esac # arg 1995ab47cfaaSmrg 19965c42550eSmrg # Now actually substitute the argument into the commands. 19975c42550eSmrg if test -n "$arg"; then 19985c42550eSmrg compile_command="$compile_command $arg" 19995c42550eSmrg finalize_command="$finalize_command $arg" 20005c42550eSmrg fi 20015c42550eSmrg done # argument parsing loop 2002ab47cfaaSmrg 20035c42550eSmrg if test -n "$prev"; then 20045c42550eSmrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 20055c42550eSmrg $echo "$help" 1>&2 20065c42550eSmrg exit $EXIT_FAILURE 20075c42550eSmrg fi 20081473d951Smrg 20095c42550eSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 20105c42550eSmrg eval arg=\"$export_dynamic_flag_spec\" 20115c42550eSmrg compile_command="$compile_command $arg" 20125c42550eSmrg finalize_command="$finalize_command $arg" 20135c42550eSmrg fi 20141473d951Smrg 20155c42550eSmrg oldlibs= 20165c42550eSmrg # calculate the name of the file, without its directory 20175c42550eSmrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 20185c42550eSmrg libobjs_save="$libobjs" 20191473d951Smrg 20205c42550eSmrg if test -n "$shlibpath_var"; then 20215c42550eSmrg # get the directories listed in $shlibpath_var 20225c42550eSmrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 20235c42550eSmrg else 20245c42550eSmrg shlib_search_path= 20255c42550eSmrg fi 20265c42550eSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 20275c42550eSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 20281473d951Smrg 20295c42550eSmrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 20305c42550eSmrg if test "X$output_objdir" = "X$output"; then 20315c42550eSmrg output_objdir="$objdir" 20321473d951Smrg else 20335c42550eSmrg output_objdir="$output_objdir/$objdir" 20341473d951Smrg fi 20355c42550eSmrg # Create the object directory. 20365c42550eSmrg if test ! -d "$output_objdir"; then 20375c42550eSmrg $show "$mkdir $output_objdir" 20385c42550eSmrg $run $mkdir $output_objdir 20395c42550eSmrg exit_status=$? 20405c42550eSmrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 20415c42550eSmrg exit $exit_status 20421473d951Smrg fi 20431473d951Smrg fi 20441473d951Smrg 20455c42550eSmrg # Determine the type of output 20465c42550eSmrg case $output in 20475c42550eSmrg "") 20485c42550eSmrg $echo "$modename: you must specify an output file" 1>&2 20495c42550eSmrg $echo "$help" 1>&2 20505c42550eSmrg exit $EXIT_FAILURE 20515c42550eSmrg ;; 20525c42550eSmrg *.$libext) linkmode=oldlib ;; 20535c42550eSmrg *.lo | *.$objext) linkmode=obj ;; 20545c42550eSmrg *.la) linkmode=lib ;; 20555c42550eSmrg *) linkmode=prog ;; # Anything else should be a program. 20565c42550eSmrg esac 2057ab47cfaaSmrg 20585c42550eSmrg case $host in 20595c42550eSmrg *cygwin* | *mingw* | *pw32*) 20605c42550eSmrg # don't eliminate duplications in $postdeps and $predeps 20615c42550eSmrg duplicate_compiler_generated_deps=yes 20625c42550eSmrg ;; 20635c42550eSmrg *) 20645c42550eSmrg duplicate_compiler_generated_deps=$duplicate_deps 20655c42550eSmrg ;; 20665c42550eSmrg esac 20675c42550eSmrg specialdeplibs= 2068ab47cfaaSmrg 20695c42550eSmrg libs= 20705c42550eSmrg # Find all interdependent deplibs by searching for libraries 20715c42550eSmrg # that are linked more than once (e.g. -la -lb -la) 20725c42550eSmrg for deplib in $deplibs; do 20735c42550eSmrg if test "X$duplicate_deps" = "Xyes" ; then 20745c42550eSmrg case "$libs " in 20755c42550eSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 20765c42550eSmrg esac 20775c42550eSmrg fi 20785c42550eSmrg libs="$libs $deplib" 20795c42550eSmrg done 2080ab47cfaaSmrg 20815c42550eSmrg if test "$linkmode" = lib; then 20825c42550eSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 2083ab47cfaaSmrg 20845c42550eSmrg # Compute libraries that are listed more than once in $predeps 20855c42550eSmrg # $postdeps and mark them as special (i.e., whose duplicates are 20865c42550eSmrg # not to be eliminated). 20875c42550eSmrg pre_post_deps= 20885c42550eSmrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 20895c42550eSmrg for pre_post_dep in $predeps $postdeps; do 20905c42550eSmrg case "$pre_post_deps " in 20915c42550eSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 20921473d951Smrg esac 20935c42550eSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 20945c42550eSmrg done 20955c42550eSmrg fi 20965c42550eSmrg pre_post_deps= 20975c42550eSmrg fi 2098ab47cfaaSmrg 20995c42550eSmrg deplibs= 21005c42550eSmrg newdependency_libs= 21015c42550eSmrg newlib_search_path= 21025c42550eSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 21035c42550eSmrg notinst_deplibs= # not-installed libtool libraries 21045c42550eSmrg case $linkmode in 21055c42550eSmrg lib) 21065c42550eSmrg passes="conv link" 21075c42550eSmrg for file in $dlfiles $dlprefiles; do 21085c42550eSmrg case $file in 21095c42550eSmrg *.la) ;; 21101473d951Smrg *) 21115c42550eSmrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 21125c42550eSmrg exit $EXIT_FAILURE 21131473d951Smrg ;; 21141473d951Smrg esac 21151473d951Smrg done 21161473d951Smrg ;; 21175c42550eSmrg prog) 21185c42550eSmrg compile_deplibs= 21195c42550eSmrg finalize_deplibs= 21205c42550eSmrg alldeplibs=no 21215c42550eSmrg newdlfiles= 21225c42550eSmrg newdlprefiles= 21235c42550eSmrg passes="conv scan dlopen dlpreopen link" 21245c42550eSmrg ;; 21255c42550eSmrg *) passes="conv" 21261473d951Smrg ;; 21271473d951Smrg esac 21285c42550eSmrg for pass in $passes; do 21295c42550eSmrg if test "$linkmode,$pass" = "lib,link" || 21305c42550eSmrg test "$linkmode,$pass" = "prog,scan"; then 21315c42550eSmrg libs="$deplibs" 21325c42550eSmrg deplibs= 21335c42550eSmrg fi 21345c42550eSmrg if test "$linkmode" = prog; then 21355c42550eSmrg case $pass in 21365c42550eSmrg dlopen) libs="$dlfiles" ;; 21375c42550eSmrg dlpreopen) libs="$dlprefiles" ;; 21385c42550eSmrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 21395c42550eSmrg esac 21405c42550eSmrg fi 21415c42550eSmrg if test "$pass" = dlopen; then 21425c42550eSmrg # Collect dlpreopened libraries 21435c42550eSmrg save_deplibs="$deplibs" 21445c42550eSmrg deplibs= 21455c42550eSmrg fi 21465c42550eSmrg for deplib in $libs; do 21475c42550eSmrg lib= 21485c42550eSmrg found=no 21495c42550eSmrg case $deplib in 21505c42550eSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 21515c42550eSmrg if test "$linkmode,$pass" = "prog,link"; then 21525c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 21535c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 21545c42550eSmrg else 21555c42550eSmrg compiler_flags="$compiler_flags $deplib" 21565c42550eSmrg fi 21575c42550eSmrg continue 21585c42550eSmrg ;; 21595c42550eSmrg -l*) 21605c42550eSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 21615c42550eSmrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 21625c42550eSmrg continue 21635c42550eSmrg fi 21645c42550eSmrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 21655c42550eSmrg if test "$linkmode" = lib; then 21665c42550eSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 21675c42550eSmrg else 21685c42550eSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 21695c42550eSmrg fi 21705c42550eSmrg for searchdir in $searchdirs; do 21715c42550eSmrg for search_ext in .la $std_shrext .so .a; do 21725c42550eSmrg # Search the libtool library 21735c42550eSmrg lib="$searchdir/lib${name}${search_ext}" 21745c42550eSmrg if test -f "$lib"; then 21755c42550eSmrg if test "$search_ext" = ".la"; then 21765c42550eSmrg found=yes 21775c42550eSmrg else 21785c42550eSmrg found=no 21795c42550eSmrg fi 21805c42550eSmrg break 2 21815c42550eSmrg fi 21825c42550eSmrg done 21835c42550eSmrg done 21845c42550eSmrg if test "$found" != yes; then 21855c42550eSmrg # deplib doesn't seem to be a libtool library 21865c42550eSmrg if test "$linkmode,$pass" = "prog,link"; then 21875c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 21885c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 21895c42550eSmrg else 21905c42550eSmrg deplibs="$deplib $deplibs" 21915c42550eSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 21925c42550eSmrg fi 21935c42550eSmrg continue 21945c42550eSmrg else # deplib is a libtool library 21955c42550eSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 21965c42550eSmrg # We need to do some special things here, and not later. 21975c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 21985c42550eSmrg case " $predeps $postdeps " in 21995c42550eSmrg *" $deplib "*) 22005c42550eSmrg if (${SED} -e '2q' $lib | 22015c42550eSmrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 22025c42550eSmrg library_names= 22035c42550eSmrg old_library= 22045c42550eSmrg case $lib in 22055c42550eSmrg */* | *\\*) . $lib ;; 22065c42550eSmrg *) . ./$lib ;; 22075c42550eSmrg esac 22085c42550eSmrg for l in $old_library $library_names; do 22095c42550eSmrg ll="$l" 22105c42550eSmrg done 22115c42550eSmrg if test "X$ll" = "X$old_library" ; then # only static version available 22125c42550eSmrg found=no 22135c42550eSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 22145c42550eSmrg test "X$ladir" = "X$lib" && ladir="." 22155c42550eSmrg lib=$ladir/$old_library 22165c42550eSmrg if test "$linkmode,$pass" = "prog,link"; then 22175c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 22185c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 22195c42550eSmrg else 22205c42550eSmrg deplibs="$deplib $deplibs" 22215c42550eSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 22225c42550eSmrg fi 22235c42550eSmrg continue 22245c42550eSmrg fi 22255c42550eSmrg fi 22265c42550eSmrg ;; 22275c42550eSmrg *) ;; 22285c42550eSmrg esac 22295c42550eSmrg fi 22305c42550eSmrg fi 22315c42550eSmrg ;; # -l 22325c42550eSmrg -L*) 22335c42550eSmrg case $linkmode in 22345c42550eSmrg lib) 22355c42550eSmrg deplibs="$deplib $deplibs" 22365c42550eSmrg test "$pass" = conv && continue 22375c42550eSmrg newdependency_libs="$deplib $newdependency_libs" 22385c42550eSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 22395c42550eSmrg ;; 22405c42550eSmrg prog) 22415c42550eSmrg if test "$pass" = conv; then 22425c42550eSmrg deplibs="$deplib $deplibs" 22435c42550eSmrg continue 22445c42550eSmrg fi 22455c42550eSmrg if test "$pass" = scan; then 22465c42550eSmrg deplibs="$deplib $deplibs" 22475c42550eSmrg else 22485c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 22495c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 22505c42550eSmrg fi 22515c42550eSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 22525c42550eSmrg ;; 22535c42550eSmrg *) 22545c42550eSmrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 22555c42550eSmrg ;; 22565c42550eSmrg esac # linkmode 22575c42550eSmrg continue 22585c42550eSmrg ;; # -L 22595c42550eSmrg -R*) 22605c42550eSmrg if test "$pass" = link; then 22615c42550eSmrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 22625c42550eSmrg # Make sure the xrpath contains only unique directories. 22635c42550eSmrg case "$xrpath " in 22645c42550eSmrg *" $dir "*) ;; 22655c42550eSmrg *) xrpath="$xrpath $dir" ;; 22665c42550eSmrg esac 22675c42550eSmrg fi 22685c42550eSmrg deplibs="$deplib $deplibs" 22695c42550eSmrg continue 22705c42550eSmrg ;; 22715c42550eSmrg *.la) lib="$deplib" ;; 22725c42550eSmrg *.$libext) 22735c42550eSmrg if test "$pass" = conv; then 22745c42550eSmrg deplibs="$deplib $deplibs" 22755c42550eSmrg continue 22765c42550eSmrg fi 22775c42550eSmrg case $linkmode in 22785c42550eSmrg lib) 22795c42550eSmrg valid_a_lib=no 22805c42550eSmrg case $deplibs_check_method in 22815c42550eSmrg match_pattern*) 22825c42550eSmrg set dummy $deplibs_check_method 22835c42550eSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 22845c42550eSmrg if eval $echo \"$deplib\" 2>/dev/null \ 22855c42550eSmrg | $SED 10q \ 22865c42550eSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 22875c42550eSmrg valid_a_lib=yes 22885c42550eSmrg fi 22895c42550eSmrg ;; 22905c42550eSmrg pass_all) 22915c42550eSmrg valid_a_lib=yes 22925c42550eSmrg ;; 22935c42550eSmrg esac 22945c42550eSmrg if test "$valid_a_lib" != yes; then 22955c42550eSmrg $echo 22965c42550eSmrg $echo "*** Warning: Trying to link with static lib archive $deplib." 22975c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 22985c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 22995c42550eSmrg $echo "*** shared version of the library, which you do not appear to have" 23005c42550eSmrg $echo "*** because the file extensions .$libext of this argument makes me believe" 23015c42550eSmrg $echo "*** that it is just a static archive that I should not used here." 23025c42550eSmrg else 23035c42550eSmrg $echo 23045c42550eSmrg $echo "*** Warning: Linking the shared library $output against the" 23055c42550eSmrg $echo "*** static library $deplib is not portable!" 23065c42550eSmrg deplibs="$deplib $deplibs" 23075c42550eSmrg fi 23085c42550eSmrg continue 23095c42550eSmrg ;; 23105c42550eSmrg prog) 23115c42550eSmrg if test "$pass" != link; then 23125c42550eSmrg deplibs="$deplib $deplibs" 23135c42550eSmrg else 23145c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 23155c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 23165c42550eSmrg fi 23175c42550eSmrg continue 23185c42550eSmrg ;; 23195c42550eSmrg esac # linkmode 23205c42550eSmrg ;; # *.$libext 23215c42550eSmrg *.lo | *.$objext) 23225c42550eSmrg if test "$pass" = conv; then 23235c42550eSmrg deplibs="$deplib $deplibs" 23245c42550eSmrg elif test "$linkmode" = prog; then 23255c42550eSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 23265c42550eSmrg # If there is no dlopen support or we're linking statically, 23275c42550eSmrg # we need to preload. 23285c42550eSmrg newdlprefiles="$newdlprefiles $deplib" 23295c42550eSmrg compile_deplibs="$deplib $compile_deplibs" 23305c42550eSmrg finalize_deplibs="$deplib $finalize_deplibs" 23315c42550eSmrg else 23325c42550eSmrg newdlfiles="$newdlfiles $deplib" 23335c42550eSmrg fi 23345c42550eSmrg fi 23355c42550eSmrg continue 23365c42550eSmrg ;; 23375c42550eSmrg %DEPLIBS%) 23385c42550eSmrg alldeplibs=yes 23395c42550eSmrg continue 23405c42550eSmrg ;; 23415c42550eSmrg esac # case $deplib 23425c42550eSmrg if test "$found" = yes || test -f "$lib"; then : 23435c42550eSmrg else 23445c42550eSmrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 23455c42550eSmrg exit $EXIT_FAILURE 23465c42550eSmrg fi 2347ab47cfaaSmrg 23485c42550eSmrg # Check to see that this really is a libtool archive. 23495c42550eSmrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 23505c42550eSmrg else 23515c42550eSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 23525c42550eSmrg exit $EXIT_FAILURE 23535c42550eSmrg fi 2354ab47cfaaSmrg 23555c42550eSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 23565c42550eSmrg test "X$ladir" = "X$lib" && ladir="." 2357ab47cfaaSmrg 23585c42550eSmrg dlname= 23595c42550eSmrg dlopen= 23605c42550eSmrg dlpreopen= 23615c42550eSmrg libdir= 23625c42550eSmrg library_names= 23635c42550eSmrg old_library= 23645c42550eSmrg # If the library was installed with an old release of libtool, 23655c42550eSmrg # it will not redefine variables installed, or shouldnotlink 23665c42550eSmrg installed=yes 23675c42550eSmrg shouldnotlink=no 23685c42550eSmrg avoidtemprpath= 2369ab47cfaaSmrg 2370ab47cfaaSmrg 23715c42550eSmrg # Read the .la file 23725c42550eSmrg case $lib in 23735c42550eSmrg */* | *\\*) . $lib ;; 23745c42550eSmrg *) . ./$lib ;; 23751473d951Smrg esac 2376ab47cfaaSmrg 23775c42550eSmrg if test "$linkmode,$pass" = "lib,link" || 23785c42550eSmrg test "$linkmode,$pass" = "prog,scan" || 23795c42550eSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 23805c42550eSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 23815c42550eSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 23825c42550eSmrg fi 2383ab47cfaaSmrg 23845c42550eSmrg if test "$pass" = conv; then 23855c42550eSmrg # Only check for convenience libraries 23865c42550eSmrg deplibs="$lib $deplibs" 23875c42550eSmrg if test -z "$libdir"; then 23885c42550eSmrg if test -z "$old_library"; then 23895c42550eSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 23905c42550eSmrg exit $EXIT_FAILURE 23915c42550eSmrg fi 23925c42550eSmrg # It is a libtool convenience library, so add in its objects. 23935c42550eSmrg convenience="$convenience $ladir/$objdir/$old_library" 23945c42550eSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 23955c42550eSmrg tmp_libs= 23965c42550eSmrg for deplib in $dependency_libs; do 23975c42550eSmrg deplibs="$deplib $deplibs" 23985c42550eSmrg if test "X$duplicate_deps" = "Xyes" ; then 23995c42550eSmrg case "$tmp_libs " in 24005c42550eSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 24015c42550eSmrg esac 24025c42550eSmrg fi 24035c42550eSmrg tmp_libs="$tmp_libs $deplib" 24045c42550eSmrg done 24055c42550eSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 24065c42550eSmrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 24075c42550eSmrg exit $EXIT_FAILURE 24085c42550eSmrg fi 24095c42550eSmrg continue 24105c42550eSmrg fi # $pass = conv 2411ab47cfaaSmrg 2412ab47cfaaSmrg 24135c42550eSmrg # Get the name of the library we link against. 24145c42550eSmrg linklib= 24155c42550eSmrg for l in $old_library $library_names; do 24165c42550eSmrg linklib="$l" 24175c42550eSmrg done 24185c42550eSmrg if test -z "$linklib"; then 24195c42550eSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 24205c42550eSmrg exit $EXIT_FAILURE 2421ab47cfaaSmrg fi 2422ab47cfaaSmrg 24235c42550eSmrg # This library was specified with -dlopen. 24245c42550eSmrg if test "$pass" = dlopen; then 24255c42550eSmrg if test -z "$libdir"; then 24265c42550eSmrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 24275c42550eSmrg exit $EXIT_FAILURE 24285c42550eSmrg fi 24295c42550eSmrg if test -z "$dlname" || 24305c42550eSmrg test "$dlopen_support" != yes || 24315c42550eSmrg test "$build_libtool_libs" = no; then 24325c42550eSmrg # If there is no dlname, no dlopen support or we're linking 24335c42550eSmrg # statically, we need to preload. We also need to preload any 24345c42550eSmrg # dependent libraries so libltdl's deplib preloader doesn't 24355c42550eSmrg # bomb out in the load deplibs phase. 24365c42550eSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 24375c42550eSmrg else 24385c42550eSmrg newdlfiles="$newdlfiles $lib" 24395c42550eSmrg fi 24405c42550eSmrg continue 24415c42550eSmrg fi # $pass = dlopen 2442ab47cfaaSmrg 24435c42550eSmrg # We need an absolute path. 24445c42550eSmrg case $ladir in 24455c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 24465c42550eSmrg *) 24475c42550eSmrg abs_ladir=`cd "$ladir" && pwd` 24485c42550eSmrg if test -z "$abs_ladir"; then 24495c42550eSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 24505c42550eSmrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 24515c42550eSmrg abs_ladir="$ladir" 24525c42550eSmrg fi 24535c42550eSmrg ;; 24545c42550eSmrg esac 24555c42550eSmrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2456ab47cfaaSmrg 24575c42550eSmrg # Find the relevant object directory and library name. 24585c42550eSmrg if test "X$installed" = Xyes; then 24595c42550eSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24605c42550eSmrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 24615c42550eSmrg dir="$ladir" 24625c42550eSmrg absdir="$abs_ladir" 24635c42550eSmrg libdir="$abs_ladir" 24645c42550eSmrg else 24655c42550eSmrg dir="$libdir" 24665c42550eSmrg absdir="$libdir" 24675c42550eSmrg fi 24685c42550eSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 24695c42550eSmrg else 24705c42550eSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24715c42550eSmrg dir="$ladir" 24725c42550eSmrg absdir="$abs_ladir" 24735c42550eSmrg # Remove this search path later 24745c42550eSmrg notinst_path="$notinst_path $abs_ladir" 24755c42550eSmrg else 24765c42550eSmrg dir="$ladir/$objdir" 24775c42550eSmrg absdir="$abs_ladir/$objdir" 24785c42550eSmrg # Remove this search path later 24795c42550eSmrg notinst_path="$notinst_path $abs_ladir" 24805c42550eSmrg fi 24815c42550eSmrg fi # $installed = yes 24825c42550eSmrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2483ab47cfaaSmrg 24845c42550eSmrg # This library was specified with -dlpreopen. 24855c42550eSmrg if test "$pass" = dlpreopen; then 24865c42550eSmrg if test -z "$libdir"; then 24875c42550eSmrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 24885c42550eSmrg exit $EXIT_FAILURE 24895c42550eSmrg fi 24905c42550eSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 24915c42550eSmrg # are required to link). 24925c42550eSmrg if test -n "$old_library"; then 24935c42550eSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 24945c42550eSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 24955c42550eSmrg elif test -n "$dlname"; then 24965c42550eSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 24975c42550eSmrg else 24985c42550eSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 24995c42550eSmrg fi 25005c42550eSmrg fi # $pass = dlpreopen 2501ab47cfaaSmrg 25025c42550eSmrg if test -z "$libdir"; then 25035c42550eSmrg # Link the convenience library 25045c42550eSmrg if test "$linkmode" = lib; then 25055c42550eSmrg deplibs="$dir/$old_library $deplibs" 25065c42550eSmrg elif test "$linkmode,$pass" = "prog,link"; then 25075c42550eSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 25085c42550eSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 25095c42550eSmrg else 25105c42550eSmrg deplibs="$lib $deplibs" # used for prog,scan pass 25115c42550eSmrg fi 25125c42550eSmrg continue 25135c42550eSmrg fi 2514ab47cfaaSmrg 2515ab47cfaaSmrg 25165c42550eSmrg if test "$linkmode" = prog && test "$pass" != link; then 25175c42550eSmrg newlib_search_path="$newlib_search_path $ladir" 25185c42550eSmrg deplibs="$lib $deplibs" 2519ab47cfaaSmrg 25205c42550eSmrg linkalldeplibs=no 25215c42550eSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 25225c42550eSmrg test "$build_libtool_libs" = no; then 25235c42550eSmrg linkalldeplibs=yes 25245c42550eSmrg fi 2525ab47cfaaSmrg 25265c42550eSmrg tmp_libs= 25275c42550eSmrg for deplib in $dependency_libs; do 25285c42550eSmrg case $deplib in 25295c42550eSmrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 25305c42550eSmrg esac 25315c42550eSmrg # Need to link against all dependency_libs? 25325c42550eSmrg if test "$linkalldeplibs" = yes; then 25335c42550eSmrg deplibs="$deplib $deplibs" 25345c42550eSmrg else 25355c42550eSmrg # Need to hardcode shared library paths 25365c42550eSmrg # or/and link against static libraries 25375c42550eSmrg newdependency_libs="$deplib $newdependency_libs" 25385c42550eSmrg fi 25395c42550eSmrg if test "X$duplicate_deps" = "Xyes" ; then 25405c42550eSmrg case "$tmp_libs " in 25415c42550eSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 25425c42550eSmrg esac 25435c42550eSmrg fi 25445c42550eSmrg tmp_libs="$tmp_libs $deplib" 25455c42550eSmrg done # for deplib 25465c42550eSmrg continue 25475c42550eSmrg fi # $linkmode = prog... 25481473d951Smrg 25495c42550eSmrg if test "$linkmode,$pass" = "prog,link"; then 25505c42550eSmrg if test -n "$library_names" && 25515c42550eSmrg { { test "$prefer_static_libs" = no || 25525c42550eSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 25535c42550eSmrg test -z "$old_library"; }; then 25545c42550eSmrg # We need to hardcode the library path 25555c42550eSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 25565c42550eSmrg # Make sure the rpath contains only unique directories. 25575c42550eSmrg case "$temp_rpath " in 25585c42550eSmrg *" $dir "*) ;; 25595c42550eSmrg *" $absdir "*) ;; 25605c42550eSmrg *) temp_rpath="$temp_rpath $absdir" ;; 25615c42550eSmrg esac 25625c42550eSmrg fi 2563ab47cfaaSmrg 25645c42550eSmrg # Hardcode the library path. 25655c42550eSmrg # Skip directories that are in the system default run-time 25665c42550eSmrg # search path. 25675c42550eSmrg case " $sys_lib_dlsearch_path " in 25685c42550eSmrg *" $absdir "*) ;; 25695c42550eSmrg *) 25705c42550eSmrg case "$compile_rpath " in 25715c42550eSmrg *" $absdir "*) ;; 25725c42550eSmrg *) compile_rpath="$compile_rpath $absdir" 25735c42550eSmrg esac 25745c42550eSmrg ;; 25755c42550eSmrg esac 25765c42550eSmrg case " $sys_lib_dlsearch_path " in 25775c42550eSmrg *" $libdir "*) ;; 25785c42550eSmrg *) 25795c42550eSmrg case "$finalize_rpath " in 25805c42550eSmrg *" $libdir "*) ;; 25815c42550eSmrg *) finalize_rpath="$finalize_rpath $libdir" 25825c42550eSmrg esac 25835c42550eSmrg ;; 25845c42550eSmrg esac 25855c42550eSmrg fi # $linkmode,$pass = prog,link... 25861473d951Smrg 25875c42550eSmrg if test "$alldeplibs" = yes && 25885c42550eSmrg { test "$deplibs_check_method" = pass_all || 25895c42550eSmrg { test "$build_libtool_libs" = yes && 25905c42550eSmrg test -n "$library_names"; }; }; then 25915c42550eSmrg # We only need to search for static libraries 25925c42550eSmrg continue 25935c42550eSmrg fi 2594ab47cfaaSmrg fi 2595ab47cfaaSmrg 25965c42550eSmrg link_static=no # Whether the deplib will be linked statically 25975c42550eSmrg use_static_libs=$prefer_static_libs 25985c42550eSmrg if test "$use_static_libs" = built && test "$installed" = yes ; then 25995c42550eSmrg use_static_libs=no 26005c42550eSmrg fi 26015c42550eSmrg if test -n "$library_names" && 26025c42550eSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 26035c42550eSmrg if test "$installed" = no; then 26045c42550eSmrg notinst_deplibs="$notinst_deplibs $lib" 26055c42550eSmrg need_relink=yes 26065c42550eSmrg fi 26075c42550eSmrg # This is a shared library 2608ab47cfaaSmrg 26095c42550eSmrg # Warn about portability, can't link against -module's on 26105c42550eSmrg # some systems (darwin) 26115c42550eSmrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 26125c42550eSmrg $echo 26135c42550eSmrg if test "$linkmode" = prog; then 26145c42550eSmrg $echo "*** Warning: Linking the executable $output against the loadable module" 26155c42550eSmrg else 26165c42550eSmrg $echo "*** Warning: Linking the shared library $output against the loadable module" 26175c42550eSmrg fi 26185c42550eSmrg $echo "*** $linklib is not portable!" 26195c42550eSmrg fi 26205c42550eSmrg if test "$linkmode" = lib && 26215c42550eSmrg test "$hardcode_into_libs" = yes; then 26225c42550eSmrg # Hardcode the library path. 26235c42550eSmrg # Skip directories that are in the system default run-time 26245c42550eSmrg # search path. 26255c42550eSmrg case " $sys_lib_dlsearch_path " in 26265c42550eSmrg *" $absdir "*) ;; 26275c42550eSmrg *) 26285c42550eSmrg case "$compile_rpath " in 26295c42550eSmrg *" $absdir "*) ;; 26305c42550eSmrg *) compile_rpath="$compile_rpath $absdir" 26315c42550eSmrg esac 26325c42550eSmrg ;; 26335c42550eSmrg esac 26345c42550eSmrg case " $sys_lib_dlsearch_path " in 26355c42550eSmrg *" $libdir "*) ;; 26365c42550eSmrg *) 26375c42550eSmrg case "$finalize_rpath " in 26385c42550eSmrg *" $libdir "*) ;; 26395c42550eSmrg *) finalize_rpath="$finalize_rpath $libdir" 26405c42550eSmrg esac 26415c42550eSmrg ;; 26425c42550eSmrg esac 26435c42550eSmrg fi 26441473d951Smrg 26455c42550eSmrg if test -n "$old_archive_from_expsyms_cmds"; then 26465c42550eSmrg # figure out the soname 26475c42550eSmrg set dummy $library_names 26485c42550eSmrg realname="$2" 26495c42550eSmrg shift; shift 26505c42550eSmrg libname=`eval \\$echo \"$libname_spec\"` 26515c42550eSmrg # use dlname if we got it. it's perfectly good, no? 26525c42550eSmrg if test -n "$dlname"; then 26535c42550eSmrg soname="$dlname" 26545c42550eSmrg elif test -n "$soname_spec"; then 26555c42550eSmrg # bleh windows 26565c42550eSmrg case $host in 26575c42550eSmrg *cygwin* | mingw*) 26585c42550eSmrg major=`expr $current - $age` 26595c42550eSmrg versuffix="-$major" 26605c42550eSmrg ;; 26615c42550eSmrg esac 26625c42550eSmrg eval soname=\"$soname_spec\" 26635c42550eSmrg else 26645c42550eSmrg soname="$realname" 26655c42550eSmrg fi 26661473d951Smrg 26675c42550eSmrg # Make a new name for the extract_expsyms_cmds to use 26685c42550eSmrg soroot="$soname" 26695c42550eSmrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 26705c42550eSmrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 26711473d951Smrg 26725c42550eSmrg # If the library has no export list, then create one now 26735c42550eSmrg if test -f "$output_objdir/$soname-def"; then : 26745c42550eSmrg else 26755c42550eSmrg $show "extracting exported symbol list from \`$soname'" 26765c42550eSmrg save_ifs="$IFS"; IFS='~' 26775c42550eSmrg cmds=$extract_expsyms_cmds 26785c42550eSmrg for cmd in $cmds; do 26795c42550eSmrg IFS="$save_ifs" 26805c42550eSmrg eval cmd=\"$cmd\" 26815c42550eSmrg $show "$cmd" 26825c42550eSmrg $run eval "$cmd" || exit $? 26835c42550eSmrg done 26845c42550eSmrg IFS="$save_ifs" 26855c42550eSmrg fi 26861473d951Smrg 26875c42550eSmrg # Create $newlib 26885c42550eSmrg if test -f "$output_objdir/$newlib"; then :; else 26895c42550eSmrg $show "generating import library for \`$soname'" 26905c42550eSmrg save_ifs="$IFS"; IFS='~' 26915c42550eSmrg cmds=$old_archive_from_expsyms_cmds 26925c42550eSmrg for cmd in $cmds; do 26935c42550eSmrg IFS="$save_ifs" 26945c42550eSmrg eval cmd=\"$cmd\" 26955c42550eSmrg $show "$cmd" 26965c42550eSmrg $run eval "$cmd" || exit $? 26975c42550eSmrg done 26985c42550eSmrg IFS="$save_ifs" 26995c42550eSmrg fi 27005c42550eSmrg # make sure the library variables are pointing to the new library 27015c42550eSmrg dir=$output_objdir 27025c42550eSmrg linklib=$newlib 27035c42550eSmrg fi # test -n "$old_archive_from_expsyms_cmds" 2704ab47cfaaSmrg 27055c42550eSmrg if test "$linkmode" = prog || test "$mode" != relink; then 27065c42550eSmrg add_shlibpath= 27075c42550eSmrg add_dir= 27085c42550eSmrg add= 27095c42550eSmrg lib_linked=yes 27105c42550eSmrg case $hardcode_action in 27115c42550eSmrg immediate | unsupported) 27125c42550eSmrg if test "$hardcode_direct" = no; then 27135c42550eSmrg add="$dir/$linklib" 27145c42550eSmrg case $host in 27155c42550eSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 27165c42550eSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 27175c42550eSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 27185c42550eSmrg *-*-unixware7*) add_dir="-L$dir" ;; 27195c42550eSmrg *-*-darwin* ) 27205c42550eSmrg # if the lib is a module then we can not link against 27215c42550eSmrg # it, someone is ignoring the new warnings I added 27225c42550eSmrg if /usr/bin/file -L $add 2> /dev/null | 27235c42550eSmrg $EGREP ": [^:]* bundle" >/dev/null ; then 27245c42550eSmrg $echo "** Warning, lib $linklib is a module, not a shared library" 27255c42550eSmrg if test -z "$old_library" ; then 27265c42550eSmrg $echo 27275c42550eSmrg $echo "** And there doesn't seem to be a static archive available" 27285c42550eSmrg $echo "** The link will probably fail, sorry" 27295c42550eSmrg else 27305c42550eSmrg add="$dir/$old_library" 27315c42550eSmrg fi 27325c42550eSmrg fi 27335c42550eSmrg esac 27345c42550eSmrg elif test "$hardcode_minus_L" = no; then 27355c42550eSmrg case $host in 27365c42550eSmrg *-*-sunos*) add_shlibpath="$dir" ;; 27375c42550eSmrg esac 27385c42550eSmrg add_dir="-L$dir" 27395c42550eSmrg add="-l$name" 27405c42550eSmrg elif test "$hardcode_shlibpath_var" = no; then 27415c42550eSmrg add_shlibpath="$dir" 27425c42550eSmrg add="-l$name" 27435c42550eSmrg else 27445c42550eSmrg lib_linked=no 27455c42550eSmrg fi 27465c42550eSmrg ;; 27475c42550eSmrg relink) 27485c42550eSmrg if test "$hardcode_direct" = yes; then 27495c42550eSmrg add="$dir/$linklib" 27505c42550eSmrg elif test "$hardcode_minus_L" = yes; then 27515c42550eSmrg add_dir="-L$dir" 27525c42550eSmrg # Try looking first in the location we're being installed to. 27535c42550eSmrg if test -n "$inst_prefix_dir"; then 27545c42550eSmrg case $libdir in 27555c42550eSmrg [\\/]*) 27565c42550eSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 27575c42550eSmrg ;; 27585c42550eSmrg esac 27595c42550eSmrg fi 27605c42550eSmrg add="-l$name" 27615c42550eSmrg elif test "$hardcode_shlibpath_var" = yes; then 27625c42550eSmrg add_shlibpath="$dir" 27635c42550eSmrg add="-l$name" 27645c42550eSmrg else 27655c42550eSmrg lib_linked=no 27665c42550eSmrg fi 27675c42550eSmrg ;; 27685c42550eSmrg *) lib_linked=no ;; 27695c42550eSmrg esac 2770ab47cfaaSmrg 27715c42550eSmrg if test "$lib_linked" != yes; then 27725c42550eSmrg $echo "$modename: configuration error: unsupported hardcode properties" 27735c42550eSmrg exit $EXIT_FAILURE 27745c42550eSmrg fi 27751473d951Smrg 27765c42550eSmrg if test -n "$add_shlibpath"; then 27775c42550eSmrg case :$compile_shlibpath: in 27785c42550eSmrg *":$add_shlibpath:"*) ;; 27795c42550eSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 27805c42550eSmrg esac 27815c42550eSmrg fi 27825c42550eSmrg if test "$linkmode" = prog; then 27835c42550eSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 27845c42550eSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 27855c42550eSmrg else 27865c42550eSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 27875c42550eSmrg test -n "$add" && deplibs="$add $deplibs" 27885c42550eSmrg if test "$hardcode_direct" != yes && \ 27895c42550eSmrg test "$hardcode_minus_L" != yes && \ 27905c42550eSmrg test "$hardcode_shlibpath_var" = yes; then 27915c42550eSmrg case :$finalize_shlibpath: in 27925c42550eSmrg *":$libdir:"*) ;; 27935c42550eSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 27945c42550eSmrg esac 27955c42550eSmrg fi 27965c42550eSmrg fi 27975c42550eSmrg fi 27981473d951Smrg 27995c42550eSmrg if test "$linkmode" = prog || test "$mode" = relink; then 28005c42550eSmrg add_shlibpath= 28015c42550eSmrg add_dir= 28025c42550eSmrg add= 28035c42550eSmrg # Finalize command for both is simple: just hardcode it. 28045c42550eSmrg if test "$hardcode_direct" = yes; then 28055c42550eSmrg add="$libdir/$linklib" 28065c42550eSmrg elif test "$hardcode_minus_L" = yes; then 28075c42550eSmrg add_dir="-L$libdir" 28085c42550eSmrg add="-l$name" 28095c42550eSmrg elif test "$hardcode_shlibpath_var" = yes; then 28105c42550eSmrg case :$finalize_shlibpath: in 28115c42550eSmrg *":$libdir:"*) ;; 28125c42550eSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 28135c42550eSmrg esac 28145c42550eSmrg add="-l$name" 28155c42550eSmrg elif test "$hardcode_automatic" = yes; then 28165c42550eSmrg if test -n "$inst_prefix_dir" && 28175c42550eSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 28185c42550eSmrg add="$inst_prefix_dir$libdir/$linklib" 28195c42550eSmrg else 28205c42550eSmrg add="$libdir/$linklib" 28215c42550eSmrg fi 28225c42550eSmrg else 28235c42550eSmrg # We cannot seem to hardcode it, guess we'll fake it. 28245c42550eSmrg add_dir="-L$libdir" 28255c42550eSmrg # Try looking first in the location we're being installed to. 28265c42550eSmrg if test -n "$inst_prefix_dir"; then 28275c42550eSmrg case $libdir in 28285c42550eSmrg [\\/]*) 28295c42550eSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 28305c42550eSmrg ;; 28315c42550eSmrg esac 28325c42550eSmrg fi 28335c42550eSmrg add="-l$name" 28345c42550eSmrg fi 28351473d951Smrg 28365c42550eSmrg if test "$linkmode" = prog; then 28375c42550eSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 28385c42550eSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 28395c42550eSmrg else 28405c42550eSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 28415c42550eSmrg test -n "$add" && deplibs="$add $deplibs" 28425c42550eSmrg fi 28435c42550eSmrg fi 28445c42550eSmrg elif test "$linkmode" = prog; then 28455c42550eSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 28465c42550eSmrg # is not unsupported. This is valid on all known static and 28475c42550eSmrg # shared platforms. 28485c42550eSmrg if test "$hardcode_direct" != unsupported; then 28495c42550eSmrg test -n "$old_library" && linklib="$old_library" 28505c42550eSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 28515c42550eSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 28525c42550eSmrg else 28535c42550eSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 28545c42550eSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 28555c42550eSmrg fi 28565c42550eSmrg elif test "$build_libtool_libs" = yes; then 28575c42550eSmrg # Not a shared library 28585c42550eSmrg if test "$deplibs_check_method" != pass_all; then 28595c42550eSmrg # We're trying link a shared library against a static one 28605c42550eSmrg # but the system doesn't support it. 28611473d951Smrg 28625c42550eSmrg # Just print a warning and add the library to dependency_libs so 28635c42550eSmrg # that the program can be linked against the static library. 28645c42550eSmrg $echo 28655c42550eSmrg $echo "*** Warning: This system can not link to static lib archive $lib." 28665c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 28675c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 28685c42550eSmrg $echo "*** shared version of the library, which you do not appear to have." 28695c42550eSmrg if test "$module" = yes; then 28705c42550eSmrg $echo "*** But as you try to build a module library, libtool will still create " 28715c42550eSmrg $echo "*** a static module, that should work as long as the dlopening application" 28725c42550eSmrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 28735c42550eSmrg if test -z "$global_symbol_pipe"; then 28745c42550eSmrg $echo 28755c42550eSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 28765c42550eSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 28775c42550eSmrg $echo "*** not find such a program. So, this module is probably useless." 28785c42550eSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 28795c42550eSmrg fi 28805c42550eSmrg if test "$build_old_libs" = no; then 28815c42550eSmrg build_libtool_libs=module 28825c42550eSmrg build_old_libs=yes 28835c42550eSmrg else 28845c42550eSmrg build_libtool_libs=no 28855c42550eSmrg fi 28865c42550eSmrg fi 28875c42550eSmrg else 28885c42550eSmrg deplibs="$dir/$old_library $deplibs" 28895c42550eSmrg link_static=yes 28905c42550eSmrg fi 28915c42550eSmrg fi # link shared/static library? 2892ab47cfaaSmrg 28935c42550eSmrg if test "$linkmode" = lib; then 28945c42550eSmrg if test -n "$dependency_libs" && 28955c42550eSmrg { test "$hardcode_into_libs" != yes || 28965c42550eSmrg test "$build_old_libs" = yes || 28975c42550eSmrg test "$link_static" = yes; }; then 28985c42550eSmrg # Extract -R from dependency_libs 28995c42550eSmrg temp_deplibs= 29005c42550eSmrg for libdir in $dependency_libs; do 29015c42550eSmrg case $libdir in 29025c42550eSmrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 29035c42550eSmrg case " $xrpath " in 29045c42550eSmrg *" $temp_xrpath "*) ;; 29055c42550eSmrg *) xrpath="$xrpath $temp_xrpath";; 29065c42550eSmrg esac;; 29075c42550eSmrg *) temp_deplibs="$temp_deplibs $libdir";; 29085c42550eSmrg esac 29095c42550eSmrg done 29105c42550eSmrg dependency_libs="$temp_deplibs" 29115c42550eSmrg fi 2912ab47cfaaSmrg 29135c42550eSmrg newlib_search_path="$newlib_search_path $absdir" 29145c42550eSmrg # Link against this library 29155c42550eSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 29165c42550eSmrg # ... and its dependency_libs 29175c42550eSmrg tmp_libs= 29185c42550eSmrg for deplib in $dependency_libs; do 29195c42550eSmrg newdependency_libs="$deplib $newdependency_libs" 29205c42550eSmrg if test "X$duplicate_deps" = "Xyes" ; then 29215c42550eSmrg case "$tmp_libs " in 29225c42550eSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 29235c42550eSmrg esac 29245c42550eSmrg fi 29255c42550eSmrg tmp_libs="$tmp_libs $deplib" 29265c42550eSmrg done 29271473d951Smrg 29285c42550eSmrg if test "$link_all_deplibs" != no; then 29295c42550eSmrg # Add the search paths of all dependency libraries 29305c42550eSmrg for deplib in $dependency_libs; do 29315c42550eSmrg case $deplib in 29325c42550eSmrg -L*) path="$deplib" ;; 29335c42550eSmrg *.la) 29345c42550eSmrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 29355c42550eSmrg test "X$dir" = "X$deplib" && dir="." 29365c42550eSmrg # We need an absolute path. 29375c42550eSmrg case $dir in 29385c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 29395c42550eSmrg *) 29405c42550eSmrg absdir=`cd "$dir" && pwd` 29415c42550eSmrg if test -z "$absdir"; then 29425c42550eSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 29435c42550eSmrg absdir="$dir" 29445c42550eSmrg fi 29455c42550eSmrg ;; 29465c42550eSmrg esac 29475c42550eSmrg if grep "^installed=no" $deplib > /dev/null; then 29485c42550eSmrg path="$absdir/$objdir" 29495c42550eSmrg else 29505c42550eSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 29515c42550eSmrg if test -z "$libdir"; then 29525c42550eSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 29535c42550eSmrg exit $EXIT_FAILURE 29545c42550eSmrg fi 29555c42550eSmrg if test "$absdir" != "$libdir"; then 29565c42550eSmrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 29575c42550eSmrg fi 29585c42550eSmrg path="$absdir" 29595c42550eSmrg fi 29605c42550eSmrg depdepl= 29615c42550eSmrg case $host in 29625c42550eSmrg *-*-darwin*) 29635c42550eSmrg # we do not want to link against static libs, 29645c42550eSmrg # but need to link against shared 29655c42550eSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 29665c42550eSmrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 29675c42550eSmrg if test -n "$deplibrary_names" ; then 29685c42550eSmrg for tmp in $deplibrary_names ; do 29695c42550eSmrg depdepl=$tmp 29705c42550eSmrg done 29715c42550eSmrg if test -f "$deplibdir/$depdepl" ; then 29725c42550eSmrg depdepl="$deplibdir/$depdepl" 29735c42550eSmrg elif test -f "$path/$depdepl" ; then 29745c42550eSmrg depdepl="$path/$depdepl" 29755c42550eSmrg else 29765c42550eSmrg # Can't find it, oh well... 29775c42550eSmrg depdepl= 29785c42550eSmrg fi 29795c42550eSmrg # do not add paths which are already there 29805c42550eSmrg case " $newlib_search_path " in 29815c42550eSmrg *" $path "*) ;; 29825c42550eSmrg *) newlib_search_path="$newlib_search_path $path";; 29835c42550eSmrg esac 29845c42550eSmrg fi 29855c42550eSmrg path="" 29865c42550eSmrg ;; 29875c42550eSmrg *) 29885c42550eSmrg path="-L$path" 29895c42550eSmrg ;; 29905c42550eSmrg esac 29915c42550eSmrg ;; 29925c42550eSmrg -l*) 29935c42550eSmrg case $host in 29945c42550eSmrg *-*-darwin*) 29955c42550eSmrg # Again, we only want to link against shared libraries 29965c42550eSmrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 29975c42550eSmrg for tmp in $newlib_search_path ; do 29985c42550eSmrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 29995c42550eSmrg eval depdepl="$tmp/lib$tmp_libs.dylib" 30005c42550eSmrg break 30015c42550eSmrg fi 30025c42550eSmrg done 30035c42550eSmrg path="" 30045c42550eSmrg ;; 30055c42550eSmrg *) continue ;; 30065c42550eSmrg esac 30075c42550eSmrg ;; 30085c42550eSmrg *) continue ;; 30095c42550eSmrg esac 30105c42550eSmrg case " $deplibs " in 30115c42550eSmrg *" $path "*) ;; 30125c42550eSmrg *) deplibs="$path $deplibs" ;; 30135c42550eSmrg esac 30145c42550eSmrg case " $deplibs " in 30155c42550eSmrg *" $depdepl "*) ;; 30165c42550eSmrg *) deplibs="$depdepl $deplibs" ;; 30175c42550eSmrg esac 30185c42550eSmrg done 30195c42550eSmrg fi # link_all_deplibs != no 30205c42550eSmrg fi # linkmode = lib 30215c42550eSmrg done # for deplib in $libs 30225c42550eSmrg dependency_libs="$newdependency_libs" 30235c42550eSmrg if test "$pass" = dlpreopen; then 30245c42550eSmrg # Link the dlpreopened libraries before other libraries 30255c42550eSmrg for deplib in $save_deplibs; do 30265c42550eSmrg deplibs="$deplib $deplibs" 30275c42550eSmrg done 30285c42550eSmrg fi 30295c42550eSmrg if test "$pass" != dlopen; then 30305c42550eSmrg if test "$pass" != conv; then 30315c42550eSmrg # Make sure lib_search_path contains only unique directories. 30325c42550eSmrg lib_search_path= 30335c42550eSmrg for dir in $newlib_search_path; do 30345c42550eSmrg case "$lib_search_path " in 30355c42550eSmrg *" $dir "*) ;; 30365c42550eSmrg *) lib_search_path="$lib_search_path $dir" ;; 30375c42550eSmrg esac 30385c42550eSmrg done 30395c42550eSmrg newlib_search_path= 30405c42550eSmrg fi 30415c42550eSmrg 30425c42550eSmrg if test "$linkmode,$pass" != "prog,link"; then 30435c42550eSmrg vars="deplibs" 30445c42550eSmrg else 30455c42550eSmrg vars="compile_deplibs finalize_deplibs" 30465c42550eSmrg fi 30475c42550eSmrg for var in $vars dependency_libs; do 30485c42550eSmrg # Add libraries to $var in reverse order 30495c42550eSmrg eval tmp_libs=\"\$$var\" 30505c42550eSmrg new_libs= 30515c42550eSmrg for deplib in $tmp_libs; do 30525c42550eSmrg # FIXME: Pedantically, this is the right thing to do, so 30535c42550eSmrg # that some nasty dependency loop isn't accidentally 30545c42550eSmrg # broken: 30555c42550eSmrg #new_libs="$deplib $new_libs" 30565c42550eSmrg # Pragmatically, this seems to cause very few problems in 30575c42550eSmrg # practice: 30585c42550eSmrg case $deplib in 30595c42550eSmrg -L*) new_libs="$deplib $new_libs" ;; 30605c42550eSmrg -R*) ;; 30615c42550eSmrg *) 30625c42550eSmrg # And here is the reason: when a library appears more 30635c42550eSmrg # than once as an explicit dependence of a library, or 30645c42550eSmrg # is implicitly linked in more than once by the 30655c42550eSmrg # compiler, it is considered special, and multiple 30665c42550eSmrg # occurrences thereof are not removed. Compare this 30675c42550eSmrg # with having the same library being listed as a 30685c42550eSmrg # dependency of multiple other libraries: in this case, 30695c42550eSmrg # we know (pedantically, we assume) the library does not 30705c42550eSmrg # need to be listed more than once, so we keep only the 30715c42550eSmrg # last copy. This is not always right, but it is rare 30725c42550eSmrg # enough that we require users that really mean to play 30735c42550eSmrg # such unportable linking tricks to link the library 30745c42550eSmrg # using -Wl,-lname, so that libtool does not consider it 30755c42550eSmrg # for duplicate removal. 30765c42550eSmrg case " $specialdeplibs " in 30775c42550eSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 30785c42550eSmrg *) 30795c42550eSmrg case " $new_libs " in 30805c42550eSmrg *" $deplib "*) ;; 30815c42550eSmrg *) new_libs="$deplib $new_libs" ;; 30825c42550eSmrg esac 30835c42550eSmrg ;; 30845c42550eSmrg esac 30855c42550eSmrg ;; 30865c42550eSmrg esac 30875c42550eSmrg done 30885c42550eSmrg tmp_libs= 30895c42550eSmrg for deplib in $new_libs; do 30905c42550eSmrg case $deplib in 30915c42550eSmrg -L*) 30925c42550eSmrg case " $tmp_libs " in 30935c42550eSmrg *" $deplib "*) ;; 30945c42550eSmrg *) tmp_libs="$tmp_libs $deplib" ;; 30955c42550eSmrg esac 30965c42550eSmrg ;; 30975c42550eSmrg *) tmp_libs="$tmp_libs $deplib" ;; 30985c42550eSmrg esac 30995c42550eSmrg done 31005c42550eSmrg eval $var=\"$tmp_libs\" 31015c42550eSmrg done # for var 31025c42550eSmrg fi 31035c42550eSmrg # Last step: remove runtime libs from dependency_libs 31045c42550eSmrg # (they stay in deplibs) 31055c42550eSmrg tmp_libs= 31065c42550eSmrg for i in $dependency_libs ; do 31075c42550eSmrg case " $predeps $postdeps $compiler_lib_search_path " in 31085c42550eSmrg *" $i "*) 31095c42550eSmrg i="" 31101473d951Smrg ;; 31111473d951Smrg esac 31125c42550eSmrg if test -n "$i" ; then 31135c42550eSmrg tmp_libs="$tmp_libs $i" 31145c42550eSmrg fi 31155c42550eSmrg done 31165c42550eSmrg dependency_libs=$tmp_libs 31175c42550eSmrg done # for pass 31185c42550eSmrg if test "$linkmode" = prog; then 31195c42550eSmrg dlfiles="$newdlfiles" 31205c42550eSmrg dlprefiles="$newdlprefiles" 31211473d951Smrg fi 31221473d951Smrg 31235c42550eSmrg case $linkmode in 31245c42550eSmrg oldlib) 31255c42550eSmrg case " $deplibs" in 31265c42550eSmrg *\ -l* | *\ -L*) 31275c42550eSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 31285c42550eSmrg esac 3129ab47cfaaSmrg 31305c42550eSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 31315c42550eSmrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 31325c42550eSmrg fi 3133ab47cfaaSmrg 31345c42550eSmrg if test -n "$rpath"; then 31355c42550eSmrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 31365c42550eSmrg fi 3137ab47cfaaSmrg 31385c42550eSmrg if test -n "$xrpath"; then 31395c42550eSmrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 31405c42550eSmrg fi 3141ab47cfaaSmrg 31425c42550eSmrg if test -n "$vinfo"; then 31435c42550eSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 31445c42550eSmrg fi 3145ab47cfaaSmrg 31465c42550eSmrg if test -n "$release"; then 31475c42550eSmrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 31485c42550eSmrg fi 3149ab47cfaaSmrg 31505c42550eSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 31515c42550eSmrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 31525c42550eSmrg fi 3153ab47cfaaSmrg 31545c42550eSmrg # Now set the variables for building old libraries. 31555c42550eSmrg build_libtool_libs=no 31565c42550eSmrg oldlibs="$output" 31575c42550eSmrg objs="$objs$old_deplibs" 31585c42550eSmrg ;; 3159ab47cfaaSmrg 31605c42550eSmrg lib) 31615c42550eSmrg # Make sure we only generate libraries of the form `libNAME.la'. 31625c42550eSmrg case $outputname in 31635c42550eSmrg lib*) 31645c42550eSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 31655c42550eSmrg eval shared_ext=\"$shrext_cmds\" 31665c42550eSmrg eval libname=\"$libname_spec\" 31675c42550eSmrg ;; 31685c42550eSmrg *) 31695c42550eSmrg if test "$module" = no; then 31705c42550eSmrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 31715c42550eSmrg $echo "$help" 1>&2 31725c42550eSmrg exit $EXIT_FAILURE 31735c42550eSmrg fi 31745c42550eSmrg if test "$need_lib_prefix" != no; then 31755c42550eSmrg # Add the "lib" prefix for modules if required 31765c42550eSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31775c42550eSmrg eval shared_ext=\"$shrext_cmds\" 31785c42550eSmrg eval libname=\"$libname_spec\" 31795c42550eSmrg else 31805c42550eSmrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31815c42550eSmrg fi 31825c42550eSmrg ;; 31835c42550eSmrg esac 3184ab47cfaaSmrg 31855c42550eSmrg if test -n "$objs"; then 31865c42550eSmrg if test "$deplibs_check_method" != pass_all; then 31875c42550eSmrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 31885c42550eSmrg exit $EXIT_FAILURE 31895c42550eSmrg else 31905c42550eSmrg $echo 31915c42550eSmrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 31925c42550eSmrg $echo "*** objects $objs is not portable!" 31935c42550eSmrg libobjs="$libobjs $objs" 31945c42550eSmrg fi 31955c42550eSmrg fi 3196ab47cfaaSmrg 31975c42550eSmrg if test "$dlself" != no; then 31985c42550eSmrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 31995c42550eSmrg fi 3200ab47cfaaSmrg 32015c42550eSmrg set dummy $rpath 32025c42550eSmrg if test "$#" -gt 2; then 32035c42550eSmrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 32045c42550eSmrg fi 32055c42550eSmrg install_libdir="$2" 3206ab47cfaaSmrg 32075c42550eSmrg oldlibs= 32085c42550eSmrg if test -z "$rpath"; then 32095c42550eSmrg if test "$build_libtool_libs" = yes; then 32105c42550eSmrg # Building a libtool convenience library. 32115c42550eSmrg # Some compilers have problems with a `.al' extension so 32125c42550eSmrg # convenience libraries should have the same extension an 32135c42550eSmrg # archive normally would. 32145c42550eSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 32155c42550eSmrg build_libtool_libs=convenience 32165c42550eSmrg build_old_libs=yes 32175c42550eSmrg fi 3218ab47cfaaSmrg 32195c42550eSmrg if test -n "$vinfo"; then 32205c42550eSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 32215c42550eSmrg fi 3222ab47cfaaSmrg 32235c42550eSmrg if test -n "$release"; then 32245c42550eSmrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 32255c42550eSmrg fi 32265c42550eSmrg else 3227ab47cfaaSmrg 32285c42550eSmrg # Parse the version information argument. 32295c42550eSmrg save_ifs="$IFS"; IFS=':' 32305c42550eSmrg set dummy $vinfo 0 0 0 32315c42550eSmrg IFS="$save_ifs" 3232ab47cfaaSmrg 32335c42550eSmrg if test -n "$8"; then 32345c42550eSmrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 32355c42550eSmrg $echo "$help" 1>&2 32365c42550eSmrg exit $EXIT_FAILURE 32375c42550eSmrg fi 3238ab47cfaaSmrg 32395c42550eSmrg # convert absolute version numbers to libtool ages 32405c42550eSmrg # this retains compatibility with .la files and attempts 32415c42550eSmrg # to make the code below a bit more comprehensible 3242ab47cfaaSmrg 32435c42550eSmrg case $vinfo_number in 32445c42550eSmrg yes) 32455c42550eSmrg number_major="$2" 32465c42550eSmrg number_minor="$3" 32475c42550eSmrg number_revision="$4" 32485c42550eSmrg # 32495c42550eSmrg # There are really only two kinds -- those that 32505c42550eSmrg # use the current revision as the major version 32515c42550eSmrg # and those that subtract age and use age as 32525c42550eSmrg # a minor version. But, then there is irix 32535c42550eSmrg # which has an extra 1 added just for fun 32545c42550eSmrg # 32555c42550eSmrg case $version_type in 32565c42550eSmrg darwin|linux|osf|windows|none) 32575c42550eSmrg current=`expr $number_major + $number_minor` 32585c42550eSmrg age="$number_minor" 32595c42550eSmrg revision="$number_revision" 32605c42550eSmrg ;; 32615c42550eSmrg freebsd-aout|freebsd-elf|sunos) 32625c42550eSmrg current="$number_major" 32635c42550eSmrg revision="$number_minor" 32645c42550eSmrg age="0" 32655c42550eSmrg ;; 32665c42550eSmrg irix|nonstopux) 32675c42550eSmrg current=`expr $number_major + $number_minor` 32685c42550eSmrg age="$number_minor" 32695c42550eSmrg revision="$number_minor" 32705c42550eSmrg lt_irix_increment=no 32715c42550eSmrg ;; 32725c42550eSmrg esac 32735c42550eSmrg ;; 32745c42550eSmrg no) 32755c42550eSmrg current="$2" 32765c42550eSmrg revision="$3" 32775c42550eSmrg age="$4" 32785c42550eSmrg ;; 32795c42550eSmrg esac 3280ab47cfaaSmrg 32815c42550eSmrg # Check that each of the things are valid numbers. 32825c42550eSmrg case $current in 32835c42550eSmrg 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]) ;; 32845c42550eSmrg *) 32855c42550eSmrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 32865c42550eSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32875c42550eSmrg exit $EXIT_FAILURE 32885c42550eSmrg ;; 32895c42550eSmrg esac 3290ab47cfaaSmrg 32915c42550eSmrg case $revision in 32925c42550eSmrg 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]) ;; 32935c42550eSmrg *) 32945c42550eSmrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 32955c42550eSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32965c42550eSmrg exit $EXIT_FAILURE 32975c42550eSmrg ;; 32985c42550eSmrg esac 3299ab47cfaaSmrg 33005c42550eSmrg case $age in 33015c42550eSmrg 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]) ;; 33025c42550eSmrg *) 33035c42550eSmrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 33045c42550eSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 33055c42550eSmrg exit $EXIT_FAILURE 33065c42550eSmrg ;; 33075c42550eSmrg esac 3308ab47cfaaSmrg 33095c42550eSmrg if test "$age" -gt "$current"; then 33105c42550eSmrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 33115c42550eSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 33125c42550eSmrg exit $EXIT_FAILURE 33135c42550eSmrg fi 3314ab47cfaaSmrg 33155c42550eSmrg # Calculate the version variables. 33165c42550eSmrg major= 33175c42550eSmrg versuffix= 33185c42550eSmrg verstring= 33195c42550eSmrg case $version_type in 33205c42550eSmrg none) ;; 3321ab47cfaaSmrg 33225c42550eSmrg darwin) 33235c42550eSmrg # Like Linux, but with the current version available in 33245c42550eSmrg # verstring for coding it into the library header 33255c42550eSmrg major=.`expr $current - $age` 33265c42550eSmrg versuffix="$major.$age.$revision" 33275c42550eSmrg # Darwin ld doesn't like 0 for these options... 33285c42550eSmrg minor_current=`expr $current + 1` 33295c42550eSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 33305c42550eSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 33315c42550eSmrg ;; 3332ab47cfaaSmrg 33335c42550eSmrg freebsd-aout) 33345c42550eSmrg major=".$current" 33355c42550eSmrg versuffix=".$current.$revision"; 33365c42550eSmrg ;; 3337ab47cfaaSmrg 33385c42550eSmrg freebsd-elf) 33395c42550eSmrg major=".$current" 33405c42550eSmrg versuffix=".$current"; 33415c42550eSmrg ;; 3342ab47cfaaSmrg 33435c42550eSmrg irix | nonstopux) 33445c42550eSmrg if test "X$lt_irix_increment" = "Xno"; then 33455c42550eSmrg major=`expr $current - $age` 33465c42550eSmrg else 33475c42550eSmrg major=`expr $current - $age + 1` 33485c42550eSmrg fi 33495c42550eSmrg case $version_type in 33505c42550eSmrg nonstopux) verstring_prefix=nonstopux ;; 33515c42550eSmrg *) verstring_prefix=sgi ;; 33525c42550eSmrg esac 33535c42550eSmrg verstring="$verstring_prefix$major.$revision" 3354ab47cfaaSmrg 33555c42550eSmrg # Add in all the interfaces that we are compatible with. 33565c42550eSmrg loop=$revision 33575c42550eSmrg while test "$loop" -ne 0; do 33585c42550eSmrg iface=`expr $revision - $loop` 33595c42550eSmrg loop=`expr $loop - 1` 33605c42550eSmrg verstring="$verstring_prefix$major.$iface:$verstring" 33615c42550eSmrg done 3362ab47cfaaSmrg 33635c42550eSmrg # Before this point, $major must not contain `.'. 33645c42550eSmrg major=.$major 33655c42550eSmrg versuffix="$major.$revision" 33665c42550eSmrg ;; 3367ab47cfaaSmrg 33685c42550eSmrg linux) 33695c42550eSmrg major=.`expr $current - $age` 33705c42550eSmrg versuffix="$major.$age.$revision" 33715c42550eSmrg ;; 3372ab47cfaaSmrg 33735c42550eSmrg osf) 33745c42550eSmrg major=.`expr $current - $age` 33755c42550eSmrg versuffix=".$current.$age.$revision" 33765c42550eSmrg verstring="$current.$age.$revision" 33771473d951Smrg 33785c42550eSmrg # Add in all the interfaces that we are compatible with. 33795c42550eSmrg loop=$age 33805c42550eSmrg while test "$loop" -ne 0; do 33815c42550eSmrg iface=`expr $current - $loop` 33825c42550eSmrg loop=`expr $loop - 1` 33835c42550eSmrg verstring="$verstring:${iface}.0" 33845c42550eSmrg done 33851473d951Smrg 33865c42550eSmrg # Make executables depend on our current version. 33875c42550eSmrg verstring="$verstring:${current}.0" 33885c42550eSmrg ;; 33891473d951Smrg 33905c42550eSmrg sunos) 33915c42550eSmrg major=".$current" 33925c42550eSmrg versuffix=".$current.$revision" 33935c42550eSmrg ;; 33941473d951Smrg 33955c42550eSmrg windows) 33965c42550eSmrg # Use '-' rather than '.', since we only want one 33975c42550eSmrg # extension on DOS 8.3 filesystems. 33985c42550eSmrg major=`expr $current - $age` 33995c42550eSmrg versuffix="-$major" 34005c42550eSmrg ;; 34011473d951Smrg 34025c42550eSmrg *) 34035c42550eSmrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 34045c42550eSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 34055c42550eSmrg exit $EXIT_FAILURE 34065c42550eSmrg ;; 34075c42550eSmrg esac 34081473d951Smrg 34095c42550eSmrg # Clear the version info if we defaulted, and they specified a release. 34105c42550eSmrg if test -z "$vinfo" && test -n "$release"; then 34115c42550eSmrg major= 34125c42550eSmrg case $version_type in 34135c42550eSmrg darwin) 34145c42550eSmrg # we can't check for "0.0" in archive_cmds due to quoting 34155c42550eSmrg # problems, so we reset it completely 34165c42550eSmrg verstring= 3417ab47cfaaSmrg ;; 34185c42550eSmrg *) 34195c42550eSmrg verstring="0.0" 34205c42550eSmrg ;; 34215c42550eSmrg esac 34225c42550eSmrg if test "$need_version" = no; then 34235c42550eSmrg versuffix= 34245c42550eSmrg else 34255c42550eSmrg versuffix=".0.0" 34265c42550eSmrg fi 34275c42550eSmrg fi 3428ab47cfaaSmrg 34295c42550eSmrg # Remove version info from name if versioning should be avoided 34305c42550eSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 34315c42550eSmrg major= 34325c42550eSmrg versuffix= 34335c42550eSmrg verstring="" 34345c42550eSmrg fi 3435ab47cfaaSmrg 34365c42550eSmrg # Check to see if the archive will have undefined symbols. 34375c42550eSmrg if test "$allow_undefined" = yes; then 34385c42550eSmrg if test "$allow_undefined_flag" = unsupported; then 34395c42550eSmrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 34405c42550eSmrg build_libtool_libs=no 34415c42550eSmrg build_old_libs=yes 34425c42550eSmrg fi 34435c42550eSmrg else 34445c42550eSmrg # Don't allow undefined symbols. 34455c42550eSmrg allow_undefined_flag="$no_undefined_flag" 34465c42550eSmrg fi 34475c42550eSmrg fi 3448ab47cfaaSmrg 34495c42550eSmrg if test "$mode" != relink; then 34505c42550eSmrg # Remove our outputs, but don't remove object files since they 34515c42550eSmrg # may have been created when compiling PIC objects. 34525c42550eSmrg removelist= 34535c42550eSmrg tempremovelist=`$echo "$output_objdir/*"` 34545c42550eSmrg for p in $tempremovelist; do 34555c42550eSmrg case $p in 34565c42550eSmrg *.$objext) 34575c42550eSmrg ;; 34585c42550eSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 34595c42550eSmrg if test "X$precious_files_regex" != "X"; then 34605c42550eSmrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 34615c42550eSmrg then 34625c42550eSmrg continue 34635c42550eSmrg fi 34645c42550eSmrg fi 34655c42550eSmrg removelist="$removelist $p" 34665c42550eSmrg ;; 34675c42550eSmrg *) ;; 34685c42550eSmrg esac 34695c42550eSmrg done 34705c42550eSmrg if test -n "$removelist"; then 34715c42550eSmrg $show "${rm}r $removelist" 34725c42550eSmrg $run ${rm}r $removelist 34735c42550eSmrg fi 34745c42550eSmrg fi 3475ab47cfaaSmrg 34765c42550eSmrg # Now set the variables for building old libraries. 34775c42550eSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 34785c42550eSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3479ab47cfaaSmrg 34805c42550eSmrg # Transform .lo files to .o files. 34815c42550eSmrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 34825c42550eSmrg fi 3483ab47cfaaSmrg 34845c42550eSmrg # Eliminate all temporary directories. 34855c42550eSmrg #for path in $notinst_path; do 34865c42550eSmrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 34875c42550eSmrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 34885c42550eSmrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 34895c42550eSmrg #done 3490ab47cfaaSmrg 34915c42550eSmrg if test -n "$xrpath"; then 34925c42550eSmrg # If the user specified any rpath flags, then add them. 34935c42550eSmrg temp_xrpath= 34945c42550eSmrg for libdir in $xrpath; do 34955c42550eSmrg temp_xrpath="$temp_xrpath -R$libdir" 34965c42550eSmrg case "$finalize_rpath " in 34975c42550eSmrg *" $libdir "*) ;; 34985c42550eSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 34995c42550eSmrg esac 35005c42550eSmrg done 35015c42550eSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 35025c42550eSmrg dependency_libs="$temp_xrpath $dependency_libs" 35035c42550eSmrg fi 35045c42550eSmrg fi 3505ab47cfaaSmrg 35065c42550eSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 35075c42550eSmrg old_dlfiles="$dlfiles" 35085c42550eSmrg dlfiles= 35095c42550eSmrg for lib in $old_dlfiles; do 35105c42550eSmrg case " $dlprefiles $dlfiles " in 35115c42550eSmrg *" $lib "*) ;; 35125c42550eSmrg *) dlfiles="$dlfiles $lib" ;; 35135c42550eSmrg esac 35145c42550eSmrg done 3515ab47cfaaSmrg 35165c42550eSmrg # Make sure dlprefiles contains only unique files 35175c42550eSmrg old_dlprefiles="$dlprefiles" 35185c42550eSmrg dlprefiles= 35195c42550eSmrg for lib in $old_dlprefiles; do 35205c42550eSmrg case "$dlprefiles " in 35215c42550eSmrg *" $lib "*) ;; 35225c42550eSmrg *) dlprefiles="$dlprefiles $lib" ;; 35235c42550eSmrg esac 35245c42550eSmrg done 3525ab47cfaaSmrg 35265c42550eSmrg if test "$build_libtool_libs" = yes; then 35275c42550eSmrg if test -n "$rpath"; then 35285c42550eSmrg case $host in 35295c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 35305c42550eSmrg # these systems don't actually have a c library (as such)! 35315c42550eSmrg ;; 35325c42550eSmrg *-*-rhapsody* | *-*-darwin1.[012]) 35335c42550eSmrg # Rhapsody C library is in the System framework 35345c42550eSmrg deplibs="$deplibs -framework System" 35355c42550eSmrg ;; 35365c42550eSmrg *-*-netbsd*) 35375c42550eSmrg # Don't link with libc until the a.out ld.so is fixed. 35385c42550eSmrg ;; 35395c42550eSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 35405c42550eSmrg # Do not include libc due to us having libc/libc_r. 35415c42550eSmrg ;; 35425c42550eSmrg *-*-sco3.2v5* | *-*-sco5v6*) 35435c42550eSmrg # Causes problems with __ctype 35445c42550eSmrg ;; 35455c42550eSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 35465c42550eSmrg # Compiler inserts libc in the correct place for threads to work 35475c42550eSmrg ;; 35485c42550eSmrg *) 35495c42550eSmrg # Add libc to deplibs on all other systems if necessary. 35505c42550eSmrg if test "$build_libtool_need_lc" = "yes"; then 35515c42550eSmrg deplibs="$deplibs -lc" 35525c42550eSmrg fi 35535c42550eSmrg ;; 35545c42550eSmrg esac 35555c42550eSmrg fi 3556ab47cfaaSmrg 35575c42550eSmrg # Transform deplibs into only deplibs that can be linked in shared. 35585c42550eSmrg name_save=$name 35595c42550eSmrg libname_save=$libname 35605c42550eSmrg release_save=$release 35615c42550eSmrg versuffix_save=$versuffix 35625c42550eSmrg major_save=$major 35635c42550eSmrg # I'm not sure if I'm treating the release correctly. I think 35645c42550eSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 35655c42550eSmrg # add it in twice. Is that correct? 35665c42550eSmrg release="" 35675c42550eSmrg versuffix="" 35685c42550eSmrg major="" 35695c42550eSmrg newdeplibs= 35705c42550eSmrg droppeddeps=no 35715c42550eSmrg case $deplibs_check_method in 35725c42550eSmrg pass_all) 35735c42550eSmrg # Don't check for shared/static. Everything works. 35745c42550eSmrg # This might be a little naive. We might want to check 35755c42550eSmrg # whether the library exists or not. But this is on 35765c42550eSmrg # osf3 & osf4 and I'm not really sure... Just 35775c42550eSmrg # implementing what was already the behavior. 35785c42550eSmrg newdeplibs=$deplibs 35795c42550eSmrg ;; 35805c42550eSmrg test_compile) 35815c42550eSmrg # This code stresses the "libraries are programs" paradigm to its 35825c42550eSmrg # limits. Maybe even breaks it. We compile a program, linking it 35835c42550eSmrg # against the deplibs as a proxy for the library. Then we can check 35845c42550eSmrg # whether they linked in statically or dynamically with ldd. 35855c42550eSmrg $rm conftest.c 35865c42550eSmrg cat > conftest.c <<EOF 35875c42550eSmrg int main() { return 0; } 35885c42550eSmrgEOF 35895c42550eSmrg $rm conftest 35905c42550eSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 35915c42550eSmrg ldd_output=`ldd conftest` 35925c42550eSmrg for i in $deplibs; do 35935c42550eSmrg name=`expr $i : '-l\(.*\)'` 35945c42550eSmrg # If $name is empty we are operating on a -L argument. 35955c42550eSmrg if test "$name" != "" && test "$name" != "0"; then 35965c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 35975c42550eSmrg case " $predeps $postdeps " in 35985c42550eSmrg *" $i "*) 35995c42550eSmrg newdeplibs="$newdeplibs $i" 36005c42550eSmrg i="" 36015c42550eSmrg ;; 36025c42550eSmrg esac 36035c42550eSmrg fi 36045c42550eSmrg if test -n "$i" ; then 36055c42550eSmrg libname=`eval \\$echo \"$libname_spec\"` 36065c42550eSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 36075c42550eSmrg set dummy $deplib_matches 36085c42550eSmrg deplib_match=$2 36095c42550eSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 36105c42550eSmrg newdeplibs="$newdeplibs $i" 36115c42550eSmrg else 36125c42550eSmrg droppeddeps=yes 36135c42550eSmrg $echo 36145c42550eSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 36155c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 36165c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 36175c42550eSmrg $echo "*** shared version of the library, which I believe you do not have" 36185c42550eSmrg $echo "*** because a test_compile did reveal that the linker did not use it for" 36195c42550eSmrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 36205c42550eSmrg fi 36215c42550eSmrg fi 36225c42550eSmrg else 36235c42550eSmrg newdeplibs="$newdeplibs $i" 36245c42550eSmrg fi 36255c42550eSmrg done 36265c42550eSmrg else 36275c42550eSmrg # Error occurred in the first compile. Let's try to salvage 36285c42550eSmrg # the situation: Compile a separate program for each library. 36295c42550eSmrg for i in $deplibs; do 36305c42550eSmrg name=`expr $i : '-l\(.*\)'` 36315c42550eSmrg # If $name is empty we are operating on a -L argument. 36325c42550eSmrg if test "$name" != "" && test "$name" != "0"; then 36335c42550eSmrg $rm conftest 36345c42550eSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 36355c42550eSmrg ldd_output=`ldd conftest` 36365c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36375c42550eSmrg case " $predeps $postdeps " in 36385c42550eSmrg *" $i "*) 36395c42550eSmrg newdeplibs="$newdeplibs $i" 36405c42550eSmrg i="" 36415c42550eSmrg ;; 36425c42550eSmrg esac 36435c42550eSmrg fi 36445c42550eSmrg if test -n "$i" ; then 36455c42550eSmrg libname=`eval \\$echo \"$libname_spec\"` 36465c42550eSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 36475c42550eSmrg set dummy $deplib_matches 36485c42550eSmrg deplib_match=$2 36495c42550eSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 36505c42550eSmrg newdeplibs="$newdeplibs $i" 36515c42550eSmrg else 36525c42550eSmrg droppeddeps=yes 36535c42550eSmrg $echo 36545c42550eSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 36555c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 36565c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 36575c42550eSmrg $echo "*** shared version of the library, which you do not appear to have" 36585c42550eSmrg $echo "*** because a test_compile did reveal that the linker did not use this one" 36595c42550eSmrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 36605c42550eSmrg fi 36615c42550eSmrg fi 36625c42550eSmrg else 36635c42550eSmrg droppeddeps=yes 36645c42550eSmrg $echo 36655c42550eSmrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 36665c42550eSmrg $echo "*** make it link in! You will probably need to install it or some" 36675c42550eSmrg $echo "*** library that it depends on before this library will be fully" 36685c42550eSmrg $echo "*** functional. Installing it before continuing would be even better." 36695c42550eSmrg fi 36705c42550eSmrg else 36715c42550eSmrg newdeplibs="$newdeplibs $i" 36725c42550eSmrg fi 36735c42550eSmrg done 36745c42550eSmrg fi 36755c42550eSmrg ;; 36765c42550eSmrg file_magic*) 36775c42550eSmrg set dummy $deplibs_check_method 36785c42550eSmrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 36795c42550eSmrg for a_deplib in $deplibs; do 36805c42550eSmrg name=`expr $a_deplib : '-l\(.*\)'` 36815c42550eSmrg # If $name is empty we are operating on a -L argument. 36825c42550eSmrg if test "$name" != "" && test "$name" != "0"; then 36835c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36845c42550eSmrg case " $predeps $postdeps " in 36855c42550eSmrg *" $a_deplib "*) 36865c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 36875c42550eSmrg a_deplib="" 36885c42550eSmrg ;; 36895c42550eSmrg esac 36905c42550eSmrg fi 36915c42550eSmrg if test -n "$a_deplib" ; then 36925c42550eSmrg libname=`eval \\$echo \"$libname_spec\"` 36935c42550eSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 36945c42550eSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 36955c42550eSmrg for potent_lib in $potential_libs; do 36965c42550eSmrg # Follow soft links. 36975c42550eSmrg if ls -lLd "$potent_lib" 2>/dev/null \ 36985c42550eSmrg | grep " -> " >/dev/null; then 36995c42550eSmrg continue 37005c42550eSmrg fi 37015c42550eSmrg # The statement above tries to avoid entering an 37025c42550eSmrg # endless loop below, in case of cyclic links. 37035c42550eSmrg # We might still enter an endless loop, since a link 37045c42550eSmrg # loop can be closed while we follow links, 37055c42550eSmrg # but so what? 37065c42550eSmrg potlib="$potent_lib" 37075c42550eSmrg while test -h "$potlib" 2>/dev/null; do 37085c42550eSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 37095c42550eSmrg case $potliblink in 37105c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 37115c42550eSmrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 37125c42550eSmrg esac 37135c42550eSmrg done 37145c42550eSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 37155c42550eSmrg | ${SED} 10q \ 37165c42550eSmrg | $EGREP "$file_magic_regex" > /dev/null; then 37175c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 37185c42550eSmrg a_deplib="" 37195c42550eSmrg break 2 37205c42550eSmrg fi 37215c42550eSmrg done 37225c42550eSmrg done 37235c42550eSmrg fi 37245c42550eSmrg if test -n "$a_deplib" ; then 37255c42550eSmrg droppeddeps=yes 37265c42550eSmrg $echo 37275c42550eSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 37285c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 37295c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 37305c42550eSmrg $echo "*** shared version of the library, which you do not appear to have" 37315c42550eSmrg $echo "*** because I did check the linker path looking for a file starting" 37325c42550eSmrg if test -z "$potlib" ; then 37335c42550eSmrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 37345c42550eSmrg else 37355c42550eSmrg $echo "*** with $libname and none of the candidates passed a file format test" 37365c42550eSmrg $echo "*** using a file magic. Last file checked: $potlib" 37375c42550eSmrg fi 37385c42550eSmrg fi 37395c42550eSmrg else 37405c42550eSmrg # Add a -L argument. 37415c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 37425c42550eSmrg fi 37435c42550eSmrg done # Gone through all deplibs. 37445c42550eSmrg ;; 37455c42550eSmrg match_pattern*) 37465c42550eSmrg set dummy $deplibs_check_method 37475c42550eSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 37485c42550eSmrg for a_deplib in $deplibs; do 37495c42550eSmrg name=`expr $a_deplib : '-l\(.*\)'` 37505c42550eSmrg # If $name is empty we are operating on a -L argument. 37515c42550eSmrg if test -n "$name" && test "$name" != "0"; then 37525c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 37535c42550eSmrg case " $predeps $postdeps " in 37545c42550eSmrg *" $a_deplib "*) 37555c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 37565c42550eSmrg a_deplib="" 37575c42550eSmrg ;; 37585c42550eSmrg esac 37595c42550eSmrg fi 37605c42550eSmrg if test -n "$a_deplib" ; then 37615c42550eSmrg libname=`eval \\$echo \"$libname_spec\"` 37625c42550eSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 37635c42550eSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 37645c42550eSmrg for potent_lib in $potential_libs; do 37655c42550eSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 37665c42550eSmrg if eval $echo \"$potent_lib\" 2>/dev/null \ 37675c42550eSmrg | ${SED} 10q \ 37685c42550eSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 37695c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 37705c42550eSmrg a_deplib="" 37715c42550eSmrg break 2 37725c42550eSmrg fi 37735c42550eSmrg done 37745c42550eSmrg done 37755c42550eSmrg fi 37765c42550eSmrg if test -n "$a_deplib" ; then 37775c42550eSmrg droppeddeps=yes 37785c42550eSmrg $echo 37795c42550eSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 37805c42550eSmrg $echo "*** I have the capability to make that library automatically link in when" 37815c42550eSmrg $echo "*** you link to this library. But I can only do this if you have a" 37825c42550eSmrg $echo "*** shared version of the library, which you do not appear to have" 37835c42550eSmrg $echo "*** because I did check the linker path looking for a file starting" 37845c42550eSmrg if test -z "$potlib" ; then 37855c42550eSmrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 37865c42550eSmrg else 37875c42550eSmrg $echo "*** with $libname and none of the candidates passed a file format test" 37885c42550eSmrg $echo "*** using a regex pattern. Last file checked: $potlib" 37895c42550eSmrg fi 37905c42550eSmrg fi 37915c42550eSmrg else 37925c42550eSmrg # Add a -L argument. 37935c42550eSmrg newdeplibs="$newdeplibs $a_deplib" 37945c42550eSmrg fi 37955c42550eSmrg done # Gone through all deplibs. 37965c42550eSmrg ;; 37975c42550eSmrg none | unknown | *) 37985c42550eSmrg newdeplibs="" 37995c42550eSmrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 38005c42550eSmrg -e 's/ -[LR][^ ]*//g'` 38015c42550eSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 38025c42550eSmrg for i in $predeps $postdeps ; do 38035c42550eSmrg # can't use Xsed below, because $i might contain '/' 38045c42550eSmrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 38055c42550eSmrg done 38065c42550eSmrg fi 38075c42550eSmrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 38085c42550eSmrg | grep . >/dev/null; then 38095c42550eSmrg $echo 38105c42550eSmrg if test "X$deplibs_check_method" = "Xnone"; then 38115c42550eSmrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 38125c42550eSmrg else 38135c42550eSmrg $echo "*** Warning: inter-library dependencies are not known to be supported." 38145c42550eSmrg fi 38155c42550eSmrg $echo "*** All declared inter-library dependencies are being dropped." 38165c42550eSmrg droppeddeps=yes 38175c42550eSmrg fi 38185c42550eSmrg ;; 38195c42550eSmrg esac 38205c42550eSmrg versuffix=$versuffix_save 38215c42550eSmrg major=$major_save 38225c42550eSmrg release=$release_save 38235c42550eSmrg libname=$libname_save 38245c42550eSmrg name=$name_save 3825ab47cfaaSmrg 38265c42550eSmrg case $host in 38275c42550eSmrg *-*-rhapsody* | *-*-darwin1.[012]) 38285c42550eSmrg # On Rhapsody replace the C library is the System framework 38295c42550eSmrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 38305c42550eSmrg ;; 38315c42550eSmrg esac 3832ab47cfaaSmrg 38335c42550eSmrg if test "$droppeddeps" = yes; then 38345c42550eSmrg if test "$module" = yes; then 38355c42550eSmrg $echo 38365c42550eSmrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 38375c42550eSmrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 38385c42550eSmrg $echo "*** a static module, that should work as long as the dlopening" 38395c42550eSmrg $echo "*** application is linked with the -dlopen flag." 38405c42550eSmrg if test -z "$global_symbol_pipe"; then 38415c42550eSmrg $echo 38425c42550eSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 38435c42550eSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 38445c42550eSmrg $echo "*** not find such a program. So, this module is probably useless." 38455c42550eSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 38465c42550eSmrg fi 38475c42550eSmrg if test "$build_old_libs" = no; then 38485c42550eSmrg oldlibs="$output_objdir/$libname.$libext" 38495c42550eSmrg build_libtool_libs=module 38505c42550eSmrg build_old_libs=yes 38515c42550eSmrg else 38525c42550eSmrg build_libtool_libs=no 38535c42550eSmrg fi 38545c42550eSmrg else 38555c42550eSmrg $echo "*** The inter-library dependencies that have been dropped here will be" 38565c42550eSmrg $echo "*** automatically added whenever a program is linked with this library" 38575c42550eSmrg $echo "*** or is declared to -dlopen it." 3858ab47cfaaSmrg 38595c42550eSmrg if test "$allow_undefined" = no; then 38605c42550eSmrg $echo 38615c42550eSmrg $echo "*** Since this library must not contain undefined symbols," 38625c42550eSmrg $echo "*** because either the platform does not support them or" 38635c42550eSmrg $echo "*** it was explicitly requested with -no-undefined," 38645c42550eSmrg $echo "*** libtool will only create a static version of it." 38655c42550eSmrg if test "$build_old_libs" = no; then 38665c42550eSmrg oldlibs="$output_objdir/$libname.$libext" 38675c42550eSmrg build_libtool_libs=module 38685c42550eSmrg build_old_libs=yes 38695c42550eSmrg else 38705c42550eSmrg build_libtool_libs=no 38715c42550eSmrg fi 38725c42550eSmrg fi 38735c42550eSmrg fi 38745c42550eSmrg fi 38755c42550eSmrg # Done checking deplibs! 38765c42550eSmrg deplibs=$newdeplibs 38775c42550eSmrg fi 3878ab47cfaaSmrg 3879ab47cfaaSmrg 38805c42550eSmrg # move library search paths that coincide with paths to not yet 38815c42550eSmrg # installed libraries to the beginning of the library search list 38825c42550eSmrg new_libs= 38835c42550eSmrg for path in $notinst_path; do 38845c42550eSmrg case " $new_libs " in 38855c42550eSmrg *" -L$path/$objdir "*) ;; 38865c42550eSmrg *) 38875c42550eSmrg case " $deplibs " in 38885c42550eSmrg *" -L$path/$objdir "*) 38895c42550eSmrg new_libs="$new_libs -L$path/$objdir" ;; 38905c42550eSmrg esac 38915c42550eSmrg ;; 38925c42550eSmrg esac 38935c42550eSmrg done 38945c42550eSmrg for deplib in $deplibs; do 38955c42550eSmrg case $deplib in 38965c42550eSmrg -L*) 38975c42550eSmrg case " $new_libs " in 38985c42550eSmrg *" $deplib "*) ;; 38995c42550eSmrg *) new_libs="$new_libs $deplib" ;; 39005c42550eSmrg esac 39015c42550eSmrg ;; 39025c42550eSmrg *) new_libs="$new_libs $deplib" ;; 39035c42550eSmrg esac 39045c42550eSmrg done 39055c42550eSmrg deplibs="$new_libs" 3906ab47cfaaSmrg 3907ab47cfaaSmrg 39085c42550eSmrg # All the library-specific variables (install_libdir is set above). 39095c42550eSmrg library_names= 39105c42550eSmrg old_library= 39115c42550eSmrg dlname= 3912ab47cfaaSmrg 39135c42550eSmrg # Test again, we may have decided not to build it any more 39145c42550eSmrg if test "$build_libtool_libs" = yes; then 39155c42550eSmrg if test "$hardcode_into_libs" = yes; then 39165c42550eSmrg # Hardcode the library paths 39175c42550eSmrg hardcode_libdirs= 39185c42550eSmrg dep_rpath= 39195c42550eSmrg rpath="$finalize_rpath" 39205c42550eSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 39215c42550eSmrg for libdir in $rpath; do 39225c42550eSmrg if test -n "$hardcode_libdir_flag_spec"; then 39235c42550eSmrg if test -n "$hardcode_libdir_separator"; then 39245c42550eSmrg if test -z "$hardcode_libdirs"; then 39255c42550eSmrg hardcode_libdirs="$libdir" 39265c42550eSmrg else 39275c42550eSmrg # Just accumulate the unique libdirs. 39285c42550eSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 39295c42550eSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 39305c42550eSmrg ;; 39315c42550eSmrg *) 39325c42550eSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 39335c42550eSmrg ;; 39345c42550eSmrg esac 39355c42550eSmrg fi 39365c42550eSmrg else 39375c42550eSmrg eval flag=\"$hardcode_libdir_flag_spec\" 39385c42550eSmrg dep_rpath="$dep_rpath $flag" 39395c42550eSmrg fi 39405c42550eSmrg elif test -n "$runpath_var"; then 39415c42550eSmrg case "$perm_rpath " in 39425c42550eSmrg *" $libdir "*) ;; 39435c42550eSmrg *) perm_rpath="$perm_rpath $libdir" ;; 39445c42550eSmrg esac 39455c42550eSmrg fi 39465c42550eSmrg done 39475c42550eSmrg # Substitute the hardcoded libdirs into the rpath. 39485c42550eSmrg if test -n "$hardcode_libdir_separator" && 39495c42550eSmrg test -n "$hardcode_libdirs"; then 39505c42550eSmrg libdir="$hardcode_libdirs" 39515c42550eSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 39525c42550eSmrg case $archive_cmds in 39535c42550eSmrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 39545c42550eSmrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 39555c42550eSmrg esac 39565c42550eSmrg else 39575c42550eSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 39585c42550eSmrg fi 39595c42550eSmrg fi 39605c42550eSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 39615c42550eSmrg # We should set the runpath_var. 39625c42550eSmrg rpath= 39635c42550eSmrg for dir in $perm_rpath; do 39645c42550eSmrg rpath="$rpath$dir:" 39655c42550eSmrg done 39665c42550eSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 39675c42550eSmrg fi 39685c42550eSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 39695c42550eSmrg fi 3970ab47cfaaSmrg 39715c42550eSmrg shlibpath="$finalize_shlibpath" 39725c42550eSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 39735c42550eSmrg if test -n "$shlibpath"; then 39745c42550eSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 39755c42550eSmrg fi 3976ab47cfaaSmrg 39775c42550eSmrg # Get the real and link names of the library. 39785c42550eSmrg eval shared_ext=\"$shrext_cmds\" 39795c42550eSmrg eval library_names=\"$library_names_spec\" 39805c42550eSmrg set dummy $library_names 39815c42550eSmrg realname="$2" 39825c42550eSmrg shift; shift 3983ab47cfaaSmrg 39845c42550eSmrg if test -n "$soname_spec"; then 39855c42550eSmrg eval soname=\"$soname_spec\" 39865c42550eSmrg else 39875c42550eSmrg soname="$realname" 39885c42550eSmrg fi 39895c42550eSmrg if test -z "$dlname"; then 39905c42550eSmrg dlname=$soname 39915c42550eSmrg fi 3992ab47cfaaSmrg 39935c42550eSmrg lib="$output_objdir/$realname" 39945c42550eSmrg linknames= 39955c42550eSmrg for link 39965c42550eSmrg do 39975c42550eSmrg linknames="$linknames $link" 39985c42550eSmrg done 3999ab47cfaaSmrg 40005c42550eSmrg # Use standard objects if they are pic 40015c42550eSmrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4002ab47cfaaSmrg 40035c42550eSmrg # Prepare the list of exported symbols 40045c42550eSmrg if test -z "$export_symbols"; then 40055c42550eSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 40065c42550eSmrg $show "generating symbol list for \`$libname.la'" 40075c42550eSmrg export_symbols="$output_objdir/$libname.exp" 40085c42550eSmrg $run $rm $export_symbols 40095c42550eSmrg cmds=$export_symbols_cmds 40105c42550eSmrg save_ifs="$IFS"; IFS='~' 40115c42550eSmrg for cmd in $cmds; do 40125c42550eSmrg IFS="$save_ifs" 40135c42550eSmrg eval cmd=\"$cmd\" 40145c42550eSmrg if len=`expr "X$cmd" : ".*"` && 40155c42550eSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 40165c42550eSmrg $show "$cmd" 40175c42550eSmrg $run eval "$cmd" || exit $? 40185c42550eSmrg skipped_export=false 40195c42550eSmrg else 40205c42550eSmrg # The command line is too long to execute in one step. 40215c42550eSmrg $show "using reloadable object file for export list..." 40225c42550eSmrg skipped_export=: 40235c42550eSmrg # Break out early, otherwise skipped_export may be 40245c42550eSmrg # set to false by a later but shorter cmd. 40255c42550eSmrg break 40265c42550eSmrg fi 40275c42550eSmrg done 40285c42550eSmrg IFS="$save_ifs" 40295c42550eSmrg if test -n "$export_symbols_regex"; then 40305c42550eSmrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 40315c42550eSmrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 40325c42550eSmrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 40335c42550eSmrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 40345c42550eSmrg fi 40355c42550eSmrg fi 40365c42550eSmrg fi 4037ab47cfaaSmrg 40385c42550eSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 40395c42550eSmrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 40405c42550eSmrg fi 4041ab47cfaaSmrg 40425c42550eSmrg tmp_deplibs= 40435c42550eSmrg for test_deplib in $deplibs; do 40445c42550eSmrg case " $convenience " in 40455c42550eSmrg *" $test_deplib "*) ;; 40465c42550eSmrg *) 40475c42550eSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 40485c42550eSmrg ;; 40495c42550eSmrg esac 40505c42550eSmrg done 40515c42550eSmrg deplibs="$tmp_deplibs" 4052ab47cfaaSmrg 40535c42550eSmrg if test -n "$convenience"; then 40545c42550eSmrg if test -n "$whole_archive_flag_spec"; then 40555c42550eSmrg save_libobjs=$libobjs 40565c42550eSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 40575c42550eSmrg else 40585c42550eSmrg gentop="$output_objdir/${outputname}x" 40595c42550eSmrg generated="$generated $gentop" 4060ab47cfaaSmrg 40615c42550eSmrg func_extract_archives $gentop $convenience 40625c42550eSmrg libobjs="$libobjs $func_extract_archives_result" 40635c42550eSmrg fi 40645c42550eSmrg fi 40655c42550eSmrg 40665c42550eSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 40675c42550eSmrg eval flag=\"$thread_safe_flag_spec\" 40685c42550eSmrg linker_flags="$linker_flags $flag" 40695c42550eSmrg fi 4070ab47cfaaSmrg 40715c42550eSmrg # Make a backup of the uninstalled library when relinking 40725c42550eSmrg if test "$mode" = relink; then 40735c42550eSmrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 40745c42550eSmrg fi 4075ab47cfaaSmrg 40765c42550eSmrg # Do each of the archive commands. 40775c42550eSmrg if test "$module" = yes && test -n "$module_cmds" ; then 40785c42550eSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 40795c42550eSmrg eval test_cmds=\"$module_expsym_cmds\" 40805c42550eSmrg cmds=$module_expsym_cmds 40815c42550eSmrg else 40825c42550eSmrg eval test_cmds=\"$module_cmds\" 40835c42550eSmrg cmds=$module_cmds 40845c42550eSmrg fi 40855c42550eSmrg else 40865c42550eSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 40875c42550eSmrg eval test_cmds=\"$archive_expsym_cmds\" 40885c42550eSmrg cmds=$archive_expsym_cmds 40895c42550eSmrg else 40905c42550eSmrg eval test_cmds=\"$archive_cmds\" 40915c42550eSmrg cmds=$archive_cmds 40925c42550eSmrg fi 40935c42550eSmrg fi 4094ab47cfaaSmrg 40955c42550eSmrg if test "X$skipped_export" != "X:" && 40965c42550eSmrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 40975c42550eSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 40985c42550eSmrg : 40995c42550eSmrg else 41005c42550eSmrg # The command line is too long to link in one step, link piecewise. 41015c42550eSmrg $echo "creating reloadable object files..." 4102ab47cfaaSmrg 41035c42550eSmrg # Save the value of $output and $libobjs because we want to 41045c42550eSmrg # use them later. If we have whole_archive_flag_spec, we 41055c42550eSmrg # want to use save_libobjs as it was before 41065c42550eSmrg # whole_archive_flag_spec was expanded, because we can't 41075c42550eSmrg # assume the linker understands whole_archive_flag_spec. 41085c42550eSmrg # This may have to be revisited, in case too many 41095c42550eSmrg # convenience libraries get linked in and end up exceeding 41105c42550eSmrg # the spec. 41115c42550eSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 41125c42550eSmrg save_libobjs=$libobjs 41135c42550eSmrg fi 41145c42550eSmrg save_output=$output 41155c42550eSmrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4116ab47cfaaSmrg 41175c42550eSmrg # Clear the reloadable object creation command queue and 41185c42550eSmrg # initialize k to one. 41195c42550eSmrg test_cmds= 41205c42550eSmrg concat_cmds= 41215c42550eSmrg objlist= 41225c42550eSmrg delfiles= 41235c42550eSmrg last_robj= 41245c42550eSmrg k=1 41255c42550eSmrg output=$output_objdir/$output_la-${k}.$objext 41265c42550eSmrg # Loop over the list of objects to be linked. 41275c42550eSmrg for obj in $save_libobjs 41285c42550eSmrg do 41295c42550eSmrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 41305c42550eSmrg if test "X$objlist" = X || 41315c42550eSmrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 41325c42550eSmrg test "$len" -le "$max_cmd_len"; }; then 41335c42550eSmrg objlist="$objlist $obj" 41345c42550eSmrg else 41355c42550eSmrg # The command $test_cmds is almost too long, add a 41365c42550eSmrg # command to the queue. 41375c42550eSmrg if test "$k" -eq 1 ; then 41385c42550eSmrg # The first file doesn't have a previous command to add. 41395c42550eSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 41405c42550eSmrg else 41415c42550eSmrg # All subsequent reloadable object files will link in 41425c42550eSmrg # the last one created. 41435c42550eSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 41445c42550eSmrg fi 41455c42550eSmrg last_robj=$output_objdir/$output_la-${k}.$objext 41465c42550eSmrg k=`expr $k + 1` 41475c42550eSmrg output=$output_objdir/$output_la-${k}.$objext 41485c42550eSmrg objlist=$obj 41495c42550eSmrg len=1 41505c42550eSmrg fi 41515c42550eSmrg done 41525c42550eSmrg # Handle the remaining objects by creating one last 41535c42550eSmrg # reloadable object file. All subsequent reloadable object 41545c42550eSmrg # files will link in the last one created. 41555c42550eSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 41565c42550eSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 41575c42550eSmrg 41585c42550eSmrg if ${skipped_export-false}; then 41595c42550eSmrg $show "generating symbol list for \`$libname.la'" 41605c42550eSmrg export_symbols="$output_objdir/$libname.exp" 41615c42550eSmrg $run $rm $export_symbols 41625c42550eSmrg libobjs=$output 41635c42550eSmrg # Append the command to create the export file. 41645c42550eSmrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 41655c42550eSmrg fi 41665c42550eSmrg 41675c42550eSmrg # Set up a command to remove the reloadable object files 41685c42550eSmrg # after they are used. 41695c42550eSmrg i=0 41705c42550eSmrg while test "$i" -lt "$k" 41715c42550eSmrg do 41725c42550eSmrg i=`expr $i + 1` 41735c42550eSmrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 41745c42550eSmrg done 4175ab47cfaaSmrg 41765c42550eSmrg $echo "creating a temporary reloadable object file: $output" 4177ab47cfaaSmrg 41785c42550eSmrg # Loop through the commands generated above and execute them. 41795c42550eSmrg save_ifs="$IFS"; IFS='~' 41805c42550eSmrg for cmd in $concat_cmds; do 41815c42550eSmrg IFS="$save_ifs" 41825c42550eSmrg $show "$cmd" 41835c42550eSmrg $run eval "$cmd" || exit $? 41845c42550eSmrg done 41855c42550eSmrg IFS="$save_ifs" 4186ab47cfaaSmrg 41875c42550eSmrg libobjs=$output 41885c42550eSmrg # Restore the value of output. 41895c42550eSmrg output=$save_output 4190ab47cfaaSmrg 41915c42550eSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 41925c42550eSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 41935c42550eSmrg fi 41945c42550eSmrg # Expand the library linking commands again to reset the 41955c42550eSmrg # value of $libobjs for piecewise linking. 4196ab47cfaaSmrg 41975c42550eSmrg # Do each of the archive commands. 41985c42550eSmrg if test "$module" = yes && test -n "$module_cmds" ; then 41995c42550eSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 42005c42550eSmrg cmds=$module_expsym_cmds 42015c42550eSmrg else 42025c42550eSmrg cmds=$module_cmds 42035c42550eSmrg fi 42045c42550eSmrg else 42055c42550eSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 42065c42550eSmrg cmds=$archive_expsym_cmds 42075c42550eSmrg else 42085c42550eSmrg cmds=$archive_cmds 42095c42550eSmrg fi 42105c42550eSmrg fi 4211ab47cfaaSmrg 42125c42550eSmrg # Append the command to remove the reloadable object files 42135c42550eSmrg # to the just-reset $cmds. 42145c42550eSmrg eval cmds=\"\$cmds~\$rm $delfiles\" 42155c42550eSmrg fi 42165c42550eSmrg save_ifs="$IFS"; IFS='~' 42175c42550eSmrg for cmd in $cmds; do 42185c42550eSmrg IFS="$save_ifs" 42195c42550eSmrg eval cmd=\"$cmd\" 42205c42550eSmrg $show "$cmd" 42215c42550eSmrg $run eval "$cmd" || { 42225c42550eSmrg lt_exit=$? 4223ab47cfaaSmrg 42245c42550eSmrg # Restore the uninstalled library and exit 42255c42550eSmrg if test "$mode" = relink; then 42265c42550eSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 42275c42550eSmrg fi 4228ab47cfaaSmrg 42295c42550eSmrg exit $lt_exit 42305c42550eSmrg } 42315c42550eSmrg done 42325c42550eSmrg IFS="$save_ifs" 42335c42550eSmrg 42345c42550eSmrg # Restore the uninstalled library and exit 42355c42550eSmrg if test "$mode" = relink; then 42365c42550eSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 42375c42550eSmrg 42385c42550eSmrg if test -n "$convenience"; then 42395c42550eSmrg if test -z "$whole_archive_flag_spec"; then 42405c42550eSmrg $show "${rm}r $gentop" 42415c42550eSmrg $run ${rm}r "$gentop" 42425c42550eSmrg fi 42435c42550eSmrg fi 42445c42550eSmrg 42455c42550eSmrg exit $EXIT_SUCCESS 42465c42550eSmrg fi 42475c42550eSmrg 42485c42550eSmrg # Create links to the real library. 42495c42550eSmrg for linkname in $linknames; do 42505c42550eSmrg if test "$realname" != "$linkname"; then 42515c42550eSmrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 42525c42550eSmrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 42535c42550eSmrg fi 42545c42550eSmrg done 42555c42550eSmrg 42565c42550eSmrg # If -module or -export-dynamic was specified, set the dlname. 42575c42550eSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 42585c42550eSmrg # On all known operating systems, these are identical. 42595c42550eSmrg dlname="$soname" 42605c42550eSmrg fi 42615c42550eSmrg fi 42621473d951Smrg ;; 4263ab47cfaaSmrg 42645c42550eSmrg obj) 42655c42550eSmrg case " $deplibs" in 42665c42550eSmrg *\ -l* | *\ -L*) 42675c42550eSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 42685c42550eSmrg esac 4269ab47cfaaSmrg 42705c42550eSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 42715c42550eSmrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 42725c42550eSmrg fi 4273ab47cfaaSmrg 42745c42550eSmrg if test -n "$rpath"; then 42755c42550eSmrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 42765c42550eSmrg fi 42775c42550eSmrg 42785c42550eSmrg if test -n "$xrpath"; then 42795c42550eSmrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 42805c42550eSmrg fi 42815c42550eSmrg 42825c42550eSmrg if test -n "$vinfo"; then 42835c42550eSmrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 42845c42550eSmrg fi 42855c42550eSmrg 42865c42550eSmrg if test -n "$release"; then 42875c42550eSmrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 42885c42550eSmrg fi 42895c42550eSmrg 42905c42550eSmrg case $output in 42915c42550eSmrg *.lo) 42925c42550eSmrg if test -n "$objs$old_deplibs"; then 42935c42550eSmrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 42945c42550eSmrg exit $EXIT_FAILURE 42955c42550eSmrg fi 42965c42550eSmrg libobj="$output" 42975c42550eSmrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 42981473d951Smrg ;; 42995c42550eSmrg *) 43005c42550eSmrg libobj= 43015c42550eSmrg obj="$output" 4302ab47cfaaSmrg ;; 4303ab47cfaaSmrg esac 4304ab47cfaaSmrg 43055c42550eSmrg # Delete the old objects. 43065c42550eSmrg $run $rm $obj $libobj 4307ab47cfaaSmrg 43085c42550eSmrg # Objects from convenience libraries. This assumes 43095c42550eSmrg # single-version convenience libraries. Whenever we create 43105c42550eSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 43115c42550eSmrg # the extraction. 43125c42550eSmrg reload_conv_objs= 43135c42550eSmrg gentop= 43145c42550eSmrg # reload_cmds runs $LD directly, so let us get rid of 43155c42550eSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 43165c42550eSmrg # turning comma into space.. 43175c42550eSmrg wl= 4318ab47cfaaSmrg 43195c42550eSmrg if test -n "$convenience"; then 43205c42550eSmrg if test -n "$whole_archive_flag_spec"; then 43215c42550eSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 43225c42550eSmrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 43235c42550eSmrg else 43245c42550eSmrg gentop="$output_objdir/${obj}x" 43255c42550eSmrg generated="$generated $gentop" 4326ab47cfaaSmrg 43275c42550eSmrg func_extract_archives $gentop $convenience 43285c42550eSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 43295c42550eSmrg fi 43305c42550eSmrg fi 4331ab47cfaaSmrg 43325c42550eSmrg # Create the old-style object. 43335c42550eSmrg 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 4334ab47cfaaSmrg 43355c42550eSmrg output="$obj" 43365c42550eSmrg cmds=$reload_cmds 43375c42550eSmrg save_ifs="$IFS"; IFS='~' 43385c42550eSmrg for cmd in $cmds; do 43395c42550eSmrg IFS="$save_ifs" 43405c42550eSmrg eval cmd=\"$cmd\" 43415c42550eSmrg $show "$cmd" 43425c42550eSmrg $run eval "$cmd" || exit $? 43435c42550eSmrg done 43445c42550eSmrg IFS="$save_ifs" 4345ab47cfaaSmrg 43465c42550eSmrg # Exit if we aren't doing a library object file. 43475c42550eSmrg if test -z "$libobj"; then 43485c42550eSmrg if test -n "$gentop"; then 43495c42550eSmrg $show "${rm}r $gentop" 43505c42550eSmrg $run ${rm}r $gentop 43515c42550eSmrg fi 4352ab47cfaaSmrg 43535c42550eSmrg exit $EXIT_SUCCESS 43545c42550eSmrg fi 4355ab47cfaaSmrg 43565c42550eSmrg if test "$build_libtool_libs" != yes; then 43575c42550eSmrg if test -n "$gentop"; then 43585c42550eSmrg $show "${rm}r $gentop" 43595c42550eSmrg $run ${rm}r $gentop 43605c42550eSmrg fi 4361ab47cfaaSmrg 43625c42550eSmrg # Create an invalid libtool object if no PIC, so that we don't 43635c42550eSmrg # accidentally link it into a program. 43645c42550eSmrg # $show "echo timestamp > $libobj" 43655c42550eSmrg # $run eval "echo timestamp > $libobj" || exit $? 43665c42550eSmrg exit $EXIT_SUCCESS 43675c42550eSmrg fi 4368ab47cfaaSmrg 43695c42550eSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 43705c42550eSmrg # Only do commands if we really have different PIC objects. 43715c42550eSmrg reload_objs="$libobjs $reload_conv_objs" 43725c42550eSmrg output="$libobj" 43735c42550eSmrg cmds=$reload_cmds 43745c42550eSmrg save_ifs="$IFS"; IFS='~' 43755c42550eSmrg for cmd in $cmds; do 43765c42550eSmrg IFS="$save_ifs" 43775c42550eSmrg eval cmd=\"$cmd\" 43785c42550eSmrg $show "$cmd" 43795c42550eSmrg $run eval "$cmd" || exit $? 43805c42550eSmrg done 43815c42550eSmrg IFS="$save_ifs" 43825c42550eSmrg fi 4383ab47cfaaSmrg 43845c42550eSmrg if test -n "$gentop"; then 43855c42550eSmrg $show "${rm}r $gentop" 43865c42550eSmrg $run ${rm}r $gentop 43875c42550eSmrg fi 4388ab47cfaaSmrg 43895c42550eSmrg exit $EXIT_SUCCESS 43905c42550eSmrg ;; 4391ab47cfaaSmrg 43925c42550eSmrg prog) 43935c42550eSmrg case $host in 43945c42550eSmrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 43955c42550eSmrg esac 43965c42550eSmrg if test -n "$vinfo"; then 43975c42550eSmrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 43985c42550eSmrg fi 4399ab47cfaaSmrg 44005c42550eSmrg if test -n "$release"; then 44015c42550eSmrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 44025c42550eSmrg fi 4403ab47cfaaSmrg 44045c42550eSmrg if test "$preload" = yes; then 44055c42550eSmrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 44065c42550eSmrg test "$dlopen_self_static" = unknown; then 44075c42550eSmrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4408ab47cfaaSmrg fi 44095c42550eSmrg fi 4410ab47cfaaSmrg 44115c42550eSmrg case $host in 44125c42550eSmrg *-*-rhapsody* | *-*-darwin1.[012]) 44135c42550eSmrg # On Rhapsody replace the C library is the System framework 44145c42550eSmrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44155c42550eSmrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44161473d951Smrg ;; 44175c42550eSmrg esac 4418ab47cfaaSmrg 44195c42550eSmrg case $host in 44205c42550eSmrg *darwin*) 44215c42550eSmrg # Don't allow lazy linking, it breaks C++ global constructors 44225c42550eSmrg if test "$tagname" = CXX ; then 44235c42550eSmrg compile_command="$compile_command ${wl}-bind_at_load" 44245c42550eSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 44255c42550eSmrg fi 44265c42550eSmrg ;; 44275c42550eSmrg esac 4428ab47cfaaSmrg 4429ab47cfaaSmrg 44305c42550eSmrg # move library search paths that coincide with paths to not yet 44315c42550eSmrg # installed libraries to the beginning of the library search list 44325c42550eSmrg new_libs= 44335c42550eSmrg for path in $notinst_path; do 44345c42550eSmrg case " $new_libs " in 44355c42550eSmrg *" -L$path/$objdir "*) ;; 44365c42550eSmrg *) 44375c42550eSmrg case " $compile_deplibs " in 44385c42550eSmrg *" -L$path/$objdir "*) 44395c42550eSmrg new_libs="$new_libs -L$path/$objdir" ;; 44405c42550eSmrg esac 44415c42550eSmrg ;; 44425c42550eSmrg esac 44435c42550eSmrg done 44445c42550eSmrg for deplib in $compile_deplibs; do 44455c42550eSmrg case $deplib in 44465c42550eSmrg -L*) 44475c42550eSmrg case " $new_libs " in 44485c42550eSmrg *" $deplib "*) ;; 44495c42550eSmrg *) new_libs="$new_libs $deplib" ;; 44505c42550eSmrg esac 44515c42550eSmrg ;; 44525c42550eSmrg *) new_libs="$new_libs $deplib" ;; 44535c42550eSmrg esac 44545c42550eSmrg done 44555c42550eSmrg compile_deplibs="$new_libs" 4456ab47cfaaSmrg 4457ab47cfaaSmrg 44585c42550eSmrg compile_command="$compile_command $compile_deplibs" 44595c42550eSmrg finalize_command="$finalize_command $finalize_deplibs" 4460ab47cfaaSmrg 44615c42550eSmrg if test -n "$rpath$xrpath"; then 44625c42550eSmrg # If the user specified any rpath flags, then add them. 44635c42550eSmrg for libdir in $rpath $xrpath; do 44645c42550eSmrg # This is the magic to use -rpath. 44655c42550eSmrg case "$finalize_rpath " in 44665c42550eSmrg *" $libdir "*) ;; 44675c42550eSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 44685c42550eSmrg esac 44695c42550eSmrg done 44705c42550eSmrg fi 4471ab47cfaaSmrg 44725c42550eSmrg # Now hardcode the library paths 44735c42550eSmrg rpath= 44745c42550eSmrg hardcode_libdirs= 44755c42550eSmrg for libdir in $compile_rpath $finalize_rpath; do 44765c42550eSmrg if test -n "$hardcode_libdir_flag_spec"; then 44775c42550eSmrg if test -n "$hardcode_libdir_separator"; then 44785c42550eSmrg if test -z "$hardcode_libdirs"; then 44795c42550eSmrg hardcode_libdirs="$libdir" 44805c42550eSmrg else 44815c42550eSmrg # Just accumulate the unique libdirs. 44825c42550eSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 44835c42550eSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 44845c42550eSmrg ;; 44855c42550eSmrg *) 44865c42550eSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 44875c42550eSmrg ;; 44885c42550eSmrg esac 44895c42550eSmrg fi 4490ab47cfaaSmrg else 44915c42550eSmrg eval flag=\"$hardcode_libdir_flag_spec\" 44925c42550eSmrg rpath="$rpath $flag" 4493ab47cfaaSmrg fi 44945c42550eSmrg elif test -n "$runpath_var"; then 44955c42550eSmrg case "$perm_rpath " in 44965c42550eSmrg *" $libdir "*) ;; 44975c42550eSmrg *) perm_rpath="$perm_rpath $libdir" ;; 44985c42550eSmrg esac 44991473d951Smrg fi 4500ab47cfaaSmrg case $host in 45015c42550eSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 45025c42550eSmrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 45031473d951Smrg case :$dllsearchpath: in 45045c42550eSmrg *":$libdir:"*) ;; 45055c42550eSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 45061473d951Smrg esac 45071473d951Smrg case :$dllsearchpath: in 45081473d951Smrg *":$testbindir:"*) ;; 45091473d951Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45101473d951Smrg esac 45111473d951Smrg ;; 4512ab47cfaaSmrg esac 45135c42550eSmrg done 45145c42550eSmrg # Substitute the hardcoded libdirs into the rpath. 45155c42550eSmrg if test -n "$hardcode_libdir_separator" && 45165c42550eSmrg test -n "$hardcode_libdirs"; then 45175c42550eSmrg libdir="$hardcode_libdirs" 45185c42550eSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 45195c42550eSmrg fi 45205c42550eSmrg compile_rpath="$rpath" 4521ab47cfaaSmrg 45225c42550eSmrg rpath= 45235c42550eSmrg hardcode_libdirs= 45245c42550eSmrg for libdir in $finalize_rpath; do 45255c42550eSmrg if test -n "$hardcode_libdir_flag_spec"; then 45265c42550eSmrg if test -n "$hardcode_libdir_separator"; then 45275c42550eSmrg if test -z "$hardcode_libdirs"; then 45285c42550eSmrg hardcode_libdirs="$libdir" 45295c42550eSmrg else 45305c42550eSmrg # Just accumulate the unique libdirs. 45315c42550eSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 45325c42550eSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 45335c42550eSmrg ;; 45345c42550eSmrg *) 45355c42550eSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 45365c42550eSmrg ;; 45375c42550eSmrg esac 45385c42550eSmrg fi 45395c42550eSmrg else 45405c42550eSmrg eval flag=\"$hardcode_libdir_flag_spec\" 45415c42550eSmrg rpath="$rpath $flag" 45425c42550eSmrg fi 45435c42550eSmrg elif test -n "$runpath_var"; then 45445c42550eSmrg case "$finalize_perm_rpath " in 45455c42550eSmrg *" $libdir "*) ;; 45465c42550eSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 45471473d951Smrg esac 45481473d951Smrg fi 45495c42550eSmrg done 45505c42550eSmrg # Substitute the hardcoded libdirs into the rpath. 45515c42550eSmrg if test -n "$hardcode_libdir_separator" && 45525c42550eSmrg test -n "$hardcode_libdirs"; then 45535c42550eSmrg libdir="$hardcode_libdirs" 45545c42550eSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 45555c42550eSmrg fi 45565c42550eSmrg finalize_rpath="$rpath" 4557ab47cfaaSmrg 45585c42550eSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 45595c42550eSmrg # Transform all the library objects into standard objects. 45605c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 45615c42550eSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 45625c42550eSmrg fi 4563ab47cfaaSmrg 45645c42550eSmrg dlsyms= 45655c42550eSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 45665c42550eSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 45675c42550eSmrg dlsyms="${outputname}S.c" 45685c42550eSmrg else 45695c42550eSmrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 45705c42550eSmrg fi 45715c42550eSmrg fi 4572ab47cfaaSmrg 45735c42550eSmrg if test -n "$dlsyms"; then 45745c42550eSmrg case $dlsyms in 45755c42550eSmrg "") ;; 45765c42550eSmrg *.c) 45775c42550eSmrg # Discover the nlist of each of the dlfiles. 45785c42550eSmrg nlist="$output_objdir/${outputname}.nm" 4579ab47cfaaSmrg 45805c42550eSmrg $show "$rm $nlist ${nlist}S ${nlist}T" 45815c42550eSmrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4582ab47cfaaSmrg 45835c42550eSmrg # Parse the name list into a source file. 45845c42550eSmrg $show "creating $output_objdir/$dlsyms" 4585ab47cfaaSmrg 45865c42550eSmrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 45875c42550eSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 45885c42550eSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4589ab47cfaaSmrg 45905c42550eSmrg#ifdef __cplusplus 45915c42550eSmrgextern \"C\" { 45925c42550eSmrg#endif 4593ab47cfaaSmrg 45945c42550eSmrg/* Prevent the only kind of declaration conflicts we can make. */ 45955c42550eSmrg#define lt_preloaded_symbols some_other_symbol 4596ab47cfaaSmrg 45975c42550eSmrg/* External symbol declarations for the compiler. */\ 45985c42550eSmrg" 4599ab47cfaaSmrg 46005c42550eSmrg if test "$dlself" = yes; then 46015c42550eSmrg $show "generating symbol list for \`$output'" 4602ab47cfaaSmrg 46035c42550eSmrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4604ab47cfaaSmrg 46055c42550eSmrg # Add our own program objects to the symbol list. 46065c42550eSmrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 46075c42550eSmrg for arg in $progfiles; do 46085c42550eSmrg $show "extracting global C symbols from \`$arg'" 46095c42550eSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 46105c42550eSmrg done 4611ab47cfaaSmrg 46125c42550eSmrg if test -n "$exclude_expsyms"; then 46135c42550eSmrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 46145c42550eSmrg $run eval '$mv "$nlist"T "$nlist"' 46155c42550eSmrg fi 4616ab47cfaaSmrg 46175c42550eSmrg if test -n "$export_symbols_regex"; then 46185c42550eSmrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 46195c42550eSmrg $run eval '$mv "$nlist"T "$nlist"' 46205c42550eSmrg fi 4621ab47cfaaSmrg 46225c42550eSmrg # Prepare the list of exported symbols 46235c42550eSmrg if test -z "$export_symbols"; then 46245c42550eSmrg export_symbols="$output_objdir/$outputname.exp" 46255c42550eSmrg $run $rm $export_symbols 46265c42550eSmrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 46275c42550eSmrg case $host in 46285c42550eSmrg *cygwin* | *mingw* ) 46295c42550eSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 46305c42550eSmrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 46315c42550eSmrg ;; 46325c42550eSmrg esac 46335c42550eSmrg else 46345c42550eSmrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 46355c42550eSmrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 46365c42550eSmrg $run eval 'mv "$nlist"T "$nlist"' 46375c42550eSmrg case $host in 46385c42550eSmrg *cygwin* | *mingw* ) 46395c42550eSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 46405c42550eSmrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 46415c42550eSmrg ;; 46425c42550eSmrg esac 46435c42550eSmrg fi 46445c42550eSmrg fi 4645ab47cfaaSmrg 46465c42550eSmrg for arg in $dlprefiles; do 46475c42550eSmrg $show "extracting global C symbols from \`$arg'" 46485c42550eSmrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 46495c42550eSmrg $run eval '$echo ": $name " >> "$nlist"' 46505c42550eSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 46515c42550eSmrg done 4652ab47cfaaSmrg 46535c42550eSmrg if test -z "$run"; then 46545c42550eSmrg # Make sure we have at least an empty file. 46555c42550eSmrg test -f "$nlist" || : > "$nlist" 4656ab47cfaaSmrg 46575c42550eSmrg if test -n "$exclude_expsyms"; then 46585c42550eSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 46595c42550eSmrg $mv "$nlist"T "$nlist" 46605c42550eSmrg fi 4661ab47cfaaSmrg 46625c42550eSmrg # Try sorting and uniquifying the output. 46635c42550eSmrg if grep -v "^: " < "$nlist" | 46645c42550eSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 46655c42550eSmrg sort -k 3 46665c42550eSmrg else 46675c42550eSmrg sort +2 46685c42550eSmrg fi | 46695c42550eSmrg uniq > "$nlist"S; then 46705c42550eSmrg : 46715c42550eSmrg else 46725c42550eSmrg grep -v "^: " < "$nlist" > "$nlist"S 46735c42550eSmrg fi 4674ab47cfaaSmrg 46755c42550eSmrg if test -f "$nlist"S; then 46765c42550eSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 46775c42550eSmrg else 46785c42550eSmrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 46795c42550eSmrg fi 4680ab47cfaaSmrg 46815c42550eSmrg $echo >> "$output_objdir/$dlsyms" "\ 4682ab47cfaaSmrg 46835c42550eSmrg#undef lt_preloaded_symbols 4684ab47cfaaSmrg 46855c42550eSmrg#if defined (__STDC__) && __STDC__ 46865c42550eSmrg# define lt_ptr void * 46875c42550eSmrg#else 46885c42550eSmrg# define lt_ptr char * 46895c42550eSmrg# define const 46905c42550eSmrg#endif 4691ab47cfaaSmrg 46925c42550eSmrg/* The mapping between symbol names and symbols. */ 46935c42550eSmrg" 4694ab47cfaaSmrg 46955c42550eSmrg case $host in 46965c42550eSmrg *cygwin* | *mingw* ) 46975c42550eSmrg $echo >> "$output_objdir/$dlsyms" "\ 46985c42550eSmrg/* DATA imports from DLLs on WIN32 can't be const, because 46995c42550eSmrg runtime relocations are performed -- see ld's documentation 47005c42550eSmrg on pseudo-relocs */ 47015c42550eSmrgstruct { 47025c42550eSmrg" 47035c42550eSmrg ;; 47045c42550eSmrg * ) 47055c42550eSmrg $echo >> "$output_objdir/$dlsyms" "\ 47065c42550eSmrgconst struct { 47075c42550eSmrg" 47085c42550eSmrg ;; 47095c42550eSmrg esac 4710ab47cfaaSmrg 4711ab47cfaaSmrg 47125c42550eSmrg $echo >> "$output_objdir/$dlsyms" "\ 47135c42550eSmrg const char *name; 47145c42550eSmrg lt_ptr address; 47155c42550eSmrg} 47165c42550eSmrglt_preloaded_symbols[] = 47175c42550eSmrg{\ 47185c42550eSmrg" 4719ab47cfaaSmrg 47205c42550eSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4721ab47cfaaSmrg 47225c42550eSmrg $echo >> "$output_objdir/$dlsyms" "\ 47235c42550eSmrg {0, (lt_ptr) 0} 47245c42550eSmrg}; 4725ab47cfaaSmrg 47265c42550eSmrg/* This works around a problem in FreeBSD linker */ 47275c42550eSmrg#ifdef FREEBSD_WORKAROUND 47285c42550eSmrgstatic const void *lt_preloaded_setup() { 47295c42550eSmrg return lt_preloaded_symbols; 47305c42550eSmrg} 47315c42550eSmrg#endif 4732ab47cfaaSmrg 47335c42550eSmrg#ifdef __cplusplus 47345c42550eSmrg} 47355c42550eSmrg#endif\ 47365c42550eSmrg" 47371473d951Smrg fi 4738ab47cfaaSmrg 47395c42550eSmrg pic_flag_for_symtable= 47405c42550eSmrg case $host in 47415c42550eSmrg # compiling the symbol table file with pic_flag works around 47425c42550eSmrg # a FreeBSD bug that causes programs to crash when -lm is 47435c42550eSmrg # linked before any other PIC object. But we must not use 47445c42550eSmrg # pic_flag when linking with -static. The problem exists in 47455c42550eSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 47465c42550eSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 47475c42550eSmrg case "$compile_command " in 47485c42550eSmrg *" -static "*) ;; 47495c42550eSmrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 47505c42550eSmrg esac;; 47515c42550eSmrg *-*-hpux*) 47525c42550eSmrg case "$compile_command " in 47535c42550eSmrg *" -static "*) ;; 47545c42550eSmrg *) pic_flag_for_symtable=" $pic_flag";; 47555c42550eSmrg esac 47565c42550eSmrg esac 4757ab47cfaaSmrg 47585c42550eSmrg # Now compile the dynamic symbol file. 47595c42550eSmrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 47605c42550eSmrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4761ab47cfaaSmrg 47625c42550eSmrg # Clean up the generated files. 47635c42550eSmrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 47645c42550eSmrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4765ab47cfaaSmrg 47665c42550eSmrg # Transform the symbol file into the correct name. 47675c42550eSmrg case $host in 47685c42550eSmrg *cygwin* | *mingw* ) 47695c42550eSmrg if test -f "$output_objdir/${outputname}.def" ; then 47705c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 47715c42550eSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 47725c42550eSmrg else 47735c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47745c42550eSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47755c42550eSmrg fi 47765c42550eSmrg ;; 47775c42550eSmrg * ) 47785c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47795c42550eSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47805c42550eSmrg ;; 47815c42550eSmrg esac 47825c42550eSmrg ;; 47835c42550eSmrg *) 47845c42550eSmrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 47855c42550eSmrg exit $EXIT_FAILURE 47865c42550eSmrg ;; 47875c42550eSmrg esac 47885c42550eSmrg else 47895c42550eSmrg # We keep going just in case the user didn't refer to 47905c42550eSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 47915c42550eSmrg # really was required. 4792ab47cfaaSmrg 47935c42550eSmrg # Nullify the symbol file. 47945c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 47955c42550eSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 47965c42550eSmrg fi 4797ab47cfaaSmrg 47985c42550eSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 47995c42550eSmrg # Replace the output file specification. 48005c42550eSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 48015c42550eSmrg link_command="$compile_command$compile_rpath" 4802ab47cfaaSmrg 48035c42550eSmrg # We have no uninstalled library dependencies, so finalize right now. 48045c42550eSmrg $show "$link_command" 48055c42550eSmrg $run eval "$link_command" 48065c42550eSmrg exit_status=$? 4807ab47cfaaSmrg 48085c42550eSmrg # Delete the generated files. 48095c42550eSmrg if test -n "$dlsyms"; then 48105c42550eSmrg $show "$rm $output_objdir/${outputname}S.${objext}" 48115c42550eSmrg $run $rm "$output_objdir/${outputname}S.${objext}" 48121473d951Smrg fi 4813ab47cfaaSmrg 48145c42550eSmrg exit $exit_status 48155c42550eSmrg fi 4816ab47cfaaSmrg 48175c42550eSmrg if test -n "$shlibpath_var"; then 48185c42550eSmrg # We should set the shlibpath_var 48195c42550eSmrg rpath= 48205c42550eSmrg for dir in $temp_rpath; do 48215c42550eSmrg case $dir in 48225c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) 48235c42550eSmrg # Absolute path. 48245c42550eSmrg rpath="$rpath$dir:" 48255c42550eSmrg ;; 48265c42550eSmrg *) 48275c42550eSmrg # Relative path: add a thisdir entry. 48285c42550eSmrg rpath="$rpath\$thisdir/$dir:" 48295c42550eSmrg ;; 48305c42550eSmrg esac 48315c42550eSmrg done 48325c42550eSmrg temp_rpath="$rpath" 48331473d951Smrg fi 48348697ee19Smrg 48355c42550eSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 48365c42550eSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 48375c42550eSmrg fi 48385c42550eSmrg if test -n "$finalize_shlibpath"; then 48395c42550eSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 48405c42550eSmrg fi 4841ab47cfaaSmrg 48425c42550eSmrg compile_var= 48435c42550eSmrg finalize_var= 48445c42550eSmrg if test -n "$runpath_var"; then 48455c42550eSmrg if test -n "$perm_rpath"; then 48465c42550eSmrg # We should set the runpath_var. 48475c42550eSmrg rpath= 48485c42550eSmrg for dir in $perm_rpath; do 48495c42550eSmrg rpath="$rpath$dir:" 48505c42550eSmrg done 48515c42550eSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 48525c42550eSmrg fi 48535c42550eSmrg if test -n "$finalize_perm_rpath"; then 48545c42550eSmrg # We should set the runpath_var. 48555c42550eSmrg rpath= 48565c42550eSmrg for dir in $finalize_perm_rpath; do 48575c42550eSmrg rpath="$rpath$dir:" 48585c42550eSmrg done 48595c42550eSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 48605c42550eSmrg fi 48615c42550eSmrg fi 4862ab47cfaaSmrg 48635c42550eSmrg if test "$no_install" = yes; then 48645c42550eSmrg # We don't need to create a wrapper script. 48655c42550eSmrg link_command="$compile_var$compile_command$compile_rpath" 48665c42550eSmrg # Replace the output file specification. 48675c42550eSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 48685c42550eSmrg # Delete the old output file. 48695c42550eSmrg $run $rm $output 48705c42550eSmrg # Link the executable and exit 48715c42550eSmrg $show "$link_command" 48725c42550eSmrg $run eval "$link_command" || exit $? 48735c42550eSmrg exit $EXIT_SUCCESS 48745c42550eSmrg fi 48751473d951Smrg 48765c42550eSmrg if test "$hardcode_action" = relink; then 48775c42550eSmrg # Fast installation is not supported 48785c42550eSmrg link_command="$compile_var$compile_command$compile_rpath" 48795c42550eSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48801473d951Smrg 48815c42550eSmrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 48825c42550eSmrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 48835c42550eSmrg else 48845c42550eSmrg if test "$fast_install" != no; then 48855c42550eSmrg link_command="$finalize_var$compile_command$finalize_rpath" 48865c42550eSmrg if test "$fast_install" = yes; then 48875c42550eSmrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 48885c42550eSmrg else 48895c42550eSmrg # fast_install is set to needless 48905c42550eSmrg relink_command= 48915c42550eSmrg fi 48925c42550eSmrg else 48935c42550eSmrg link_command="$compile_var$compile_command$compile_rpath" 48945c42550eSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48955c42550eSmrg fi 48961473d951Smrg fi 48971473d951Smrg 48985c42550eSmrg # Replace the output file specification. 48995c42550eSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 49001473d951Smrg 49015c42550eSmrg # Delete the old output files. 49025c42550eSmrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 49031473d951Smrg 49045c42550eSmrg $show "$link_command" 49055c42550eSmrg $run eval "$link_command" || exit $? 49061473d951Smrg 49075c42550eSmrg # Now create the wrapper script. 49085c42550eSmrg $show "creating $output" 49091473d951Smrg 49105c42550eSmrg # Quote the relink command for shipping. 49115c42550eSmrg if test -n "$relink_command"; then 49125c42550eSmrg # Preserve any variables that may affect compiler behavior 49135c42550eSmrg for var in $variables_saved_for_relink; do 49145c42550eSmrg if eval test -z \"\${$var+set}\"; then 49155c42550eSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 49165c42550eSmrg elif eval var_value=\$$var; test -z "$var_value"; then 49175c42550eSmrg relink_command="$var=; export $var; $relink_command" 49185c42550eSmrg else 49195c42550eSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 49205c42550eSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 49215c42550eSmrg fi 49221473d951Smrg done 49235c42550eSmrg relink_command="(cd `pwd`; $relink_command)" 49245c42550eSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 49251473d951Smrg fi 49261473d951Smrg 49275c42550eSmrg # Quote $echo for shipping. 49285c42550eSmrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 49295c42550eSmrg case $progpath in 49305c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 49315c42550eSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 49321473d951Smrg esac 49335c42550eSmrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 49345c42550eSmrg else 49355c42550eSmrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 49361473d951Smrg fi 49371473d951Smrg 49385c42550eSmrg # Only actually do things if our run command is non-null. 49395c42550eSmrg if test -z "$run"; then 49405c42550eSmrg # win32 will think the script is a binary if it has 49415c42550eSmrg # a .exe suffix, so we strip it off here. 49425c42550eSmrg case $output in 49435c42550eSmrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 49445c42550eSmrg esac 49455c42550eSmrg # test for cygwin because mv fails w/o .exe extensions 49465c42550eSmrg case $host in 49475c42550eSmrg *cygwin*) 49485c42550eSmrg exeext=.exe 49495c42550eSmrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 49505c42550eSmrg *) exeext= ;; 49515c42550eSmrg esac 49525c42550eSmrg case $host in 49535c42550eSmrg *cygwin* | *mingw* ) 49545c42550eSmrg output_name=`basename $output` 49555c42550eSmrg output_path=`dirname $output` 49565c42550eSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 49575c42550eSmrg cwrapper="$output_path/$output_name.exe" 49585c42550eSmrg $rm $cwrappersource $cwrapper 49595c42550eSmrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 49601473d951Smrg 49615c42550eSmrg cat > $cwrappersource <<EOF 49621473d951Smrg 49635c42550eSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 49645c42550eSmrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 49651473d951Smrg 49665c42550eSmrg The $output program cannot be directly executed until all the libtool 49675c42550eSmrg libraries that it depends on are installed. 49681473d951Smrg 49695c42550eSmrg This wrapper executable should never be moved out of the build directory. 49705c42550eSmrg If it is, it will not operate correctly. 49711473d951Smrg 49725c42550eSmrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 49735c42550eSmrg but could eventually absorb all of the scripts functionality and 49745c42550eSmrg exec $objdir/$outputname directly. 49755c42550eSmrg*/ 49765c42550eSmrgEOF 49775c42550eSmrg cat >> $cwrappersource<<"EOF" 49785c42550eSmrg#include <stdio.h> 49795c42550eSmrg#include <stdlib.h> 49805c42550eSmrg#include <unistd.h> 49815c42550eSmrg#include <malloc.h> 49825c42550eSmrg#include <stdarg.h> 49835c42550eSmrg#include <assert.h> 49845c42550eSmrg#include <string.h> 49855c42550eSmrg#include <ctype.h> 49865c42550eSmrg#include <sys/stat.h> 49871473d951Smrg 49885c42550eSmrg#if defined(PATH_MAX) 49895c42550eSmrg# define LT_PATHMAX PATH_MAX 49905c42550eSmrg#elif defined(MAXPATHLEN) 49915c42550eSmrg# define LT_PATHMAX MAXPATHLEN 49925c42550eSmrg#else 49935c42550eSmrg# define LT_PATHMAX 1024 49945c42550eSmrg#endif 49951473d951Smrg 49965c42550eSmrg#ifndef DIR_SEPARATOR 49975c42550eSmrg# define DIR_SEPARATOR '/' 49985c42550eSmrg# define PATH_SEPARATOR ':' 49995c42550eSmrg#endif 50001473d951Smrg 50015c42550eSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 50025c42550eSmrg defined (__OS2__) 50035c42550eSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 50045c42550eSmrg# ifndef DIR_SEPARATOR_2 50055c42550eSmrg# define DIR_SEPARATOR_2 '\\' 50065c42550eSmrg# endif 50075c42550eSmrg# ifndef PATH_SEPARATOR_2 50085c42550eSmrg# define PATH_SEPARATOR_2 ';' 50095c42550eSmrg# endif 50105c42550eSmrg#endif 50111473d951Smrg 50125c42550eSmrg#ifndef DIR_SEPARATOR_2 50135c42550eSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 50145c42550eSmrg#else /* DIR_SEPARATOR_2 */ 50155c42550eSmrg# define IS_DIR_SEPARATOR(ch) \ 50165c42550eSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 50175c42550eSmrg#endif /* DIR_SEPARATOR_2 */ 50181473d951Smrg 50195c42550eSmrg#ifndef PATH_SEPARATOR_2 50205c42550eSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 50215c42550eSmrg#else /* PATH_SEPARATOR_2 */ 50225c42550eSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 50235c42550eSmrg#endif /* PATH_SEPARATOR_2 */ 50241473d951Smrg 50255c42550eSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 50265c42550eSmrg#define XFREE(stale) do { \ 50275c42550eSmrg if (stale) { free ((void *) stale); stale = 0; } \ 50285c42550eSmrg} while (0) 50291473d951Smrg 50305c42550eSmrg/* -DDEBUG is fairly common in CFLAGS. */ 50315c42550eSmrg#undef DEBUG 50325c42550eSmrg#if defined DEBUGWRAPPER 50335c42550eSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 50345c42550eSmrg#else 50355c42550eSmrg# define DEBUG(format, ...) 50365c42550eSmrg#endif 50371473d951Smrg 50385c42550eSmrgconst char *program_name = NULL; 50391473d951Smrg 50405c42550eSmrgvoid * xmalloc (size_t num); 50415c42550eSmrgchar * xstrdup (const char *string); 50425c42550eSmrgconst char * base_name (const char *name); 50435c42550eSmrgchar * find_executable(const char *wrapper); 50445c42550eSmrgint check_executable(const char *path); 50455c42550eSmrgchar * strendzap(char *str, const char *pat); 50465c42550eSmrgvoid lt_fatal (const char *message, ...); 50471473d951Smrg 50485c42550eSmrgint 50495c42550eSmrgmain (int argc, char *argv[]) 50505c42550eSmrg{ 50515c42550eSmrg char **newargz; 50525c42550eSmrg int i; 50531473d951Smrg 50545c42550eSmrg program_name = (char *) xstrdup (base_name (argv[0])); 50555c42550eSmrg DEBUG("(main) argv[0] : %s\n",argv[0]); 50565c42550eSmrg DEBUG("(main) program_name : %s\n",program_name); 50575c42550eSmrg newargz = XMALLOC(char *, argc+2); 50585c42550eSmrgEOF 50591473d951Smrg 50605c42550eSmrg cat >> $cwrappersource <<EOF 50615c42550eSmrg newargz[0] = (char *) xstrdup("$SHELL"); 50625c42550eSmrgEOF 50631473d951Smrg 50645c42550eSmrg cat >> $cwrappersource <<"EOF" 50655c42550eSmrg newargz[1] = find_executable(argv[0]); 50665c42550eSmrg if (newargz[1] == NULL) 50675c42550eSmrg lt_fatal("Couldn't find %s", argv[0]); 50685c42550eSmrg DEBUG("(main) found exe at : %s\n",newargz[1]); 50695c42550eSmrg /* we know the script has the same name, without the .exe */ 50705c42550eSmrg /* so make sure newargz[1] doesn't end in .exe */ 50715c42550eSmrg strendzap(newargz[1],".exe"); 50725c42550eSmrg for (i = 1; i < argc; i++) 50735c42550eSmrg newargz[i+1] = xstrdup(argv[i]); 50745c42550eSmrg newargz[argc+1] = NULL; 50751473d951Smrg 50765c42550eSmrg for (i=0; i<argc+1; i++) 50775c42550eSmrg { 50785c42550eSmrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 50795c42550eSmrg ; 50805c42550eSmrg } 50811473d951Smrg 50825c42550eSmrgEOF 50831473d951Smrg 50845c42550eSmrg case $host_os in 50855c42550eSmrg mingw*) 50865c42550eSmrg cat >> $cwrappersource <<EOF 50875c42550eSmrg execv("$SHELL",(char const **)newargz); 50885c42550eSmrgEOF 50895c42550eSmrg ;; 50905c42550eSmrg *) 50915c42550eSmrg cat >> $cwrappersource <<EOF 50925c42550eSmrg execv("$SHELL",newargz); 50935c42550eSmrgEOF 50945c42550eSmrg ;; 50955c42550eSmrg esac 50961473d951Smrg 50975c42550eSmrg cat >> $cwrappersource <<"EOF" 50985c42550eSmrg return 127; 50995c42550eSmrg} 51001473d951Smrg 51015c42550eSmrgvoid * 51025c42550eSmrgxmalloc (size_t num) 51035c42550eSmrg{ 51045c42550eSmrg void * p = (void *) malloc (num); 51055c42550eSmrg if (!p) 51065c42550eSmrg lt_fatal ("Memory exhausted"); 51071473d951Smrg 51085c42550eSmrg return p; 51095c42550eSmrg} 51101473d951Smrg 51115c42550eSmrgchar * 51125c42550eSmrgxstrdup (const char *string) 51135c42550eSmrg{ 51145c42550eSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 51155c42550eSmrg; 51165c42550eSmrg} 51171473d951Smrg 51185c42550eSmrgconst char * 51195c42550eSmrgbase_name (const char *name) 51205c42550eSmrg{ 51215c42550eSmrg const char *base; 51221473d951Smrg 51235c42550eSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51245c42550eSmrg /* Skip over the disk name in MSDOS pathnames. */ 51255c42550eSmrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 51265c42550eSmrg name += 2; 51275c42550eSmrg#endif 51281473d951Smrg 51295c42550eSmrg for (base = name; *name; name++) 51305c42550eSmrg if (IS_DIR_SEPARATOR (*name)) 51315c42550eSmrg base = name + 1; 51325c42550eSmrg return base; 51335c42550eSmrg} 51341473d951Smrg 51355c42550eSmrgint 51365c42550eSmrgcheck_executable(const char * path) 51375c42550eSmrg{ 51385c42550eSmrg struct stat st; 51391473d951Smrg 51405c42550eSmrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 51415c42550eSmrg if ((!path) || (!*path)) 51425c42550eSmrg return 0; 51431473d951Smrg 51445c42550eSmrg if ((stat (path, &st) >= 0) && 51455c42550eSmrg ( 51465c42550eSmrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 51475c42550eSmrg#if defined (S_IXOTH) 51485c42550eSmrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 51495c42550eSmrg#endif 51505c42550eSmrg#if defined (S_IXGRP) 51515c42550eSmrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 51525c42550eSmrg#endif 51535c42550eSmrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 51545c42550eSmrg ) 51555c42550eSmrg return 1; 51565c42550eSmrg else 51575c42550eSmrg return 0; 51585c42550eSmrg} 51591473d951Smrg 51605c42550eSmrg/* Searches for the full path of the wrapper. Returns 51615c42550eSmrg newly allocated full path name if found, NULL otherwise */ 51625c42550eSmrgchar * 51635c42550eSmrgfind_executable (const char* wrapper) 51645c42550eSmrg{ 51655c42550eSmrg int has_slash = 0; 51665c42550eSmrg const char* p; 51675c42550eSmrg const char* p_next; 51685c42550eSmrg /* static buffer for getcwd */ 51695c42550eSmrg char tmp[LT_PATHMAX + 1]; 51705c42550eSmrg int tmp_len; 51715c42550eSmrg char* concat_name; 51721473d951Smrg 51735c42550eSmrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 51741473d951Smrg 51755c42550eSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 51765c42550eSmrg return NULL; 5177ab47cfaaSmrg 51785c42550eSmrg /* Absolute path? */ 51795c42550eSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51805c42550eSmrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 51815c42550eSmrg { 51825c42550eSmrg concat_name = xstrdup (wrapper); 51835c42550eSmrg if (check_executable(concat_name)) 51845c42550eSmrg return concat_name; 51855c42550eSmrg XFREE(concat_name); 51865c42550eSmrg } 51875c42550eSmrg else 51885c42550eSmrg { 51895c42550eSmrg#endif 51905c42550eSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 51915c42550eSmrg { 51925c42550eSmrg concat_name = xstrdup (wrapper); 51935c42550eSmrg if (check_executable(concat_name)) 51945c42550eSmrg return concat_name; 51955c42550eSmrg XFREE(concat_name); 51965c42550eSmrg } 51975c42550eSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51985c42550eSmrg } 51995c42550eSmrg#endif 52005c42550eSmrg 52015c42550eSmrg for (p = wrapper; *p; p++) 52025c42550eSmrg if (*p == '/') 52035c42550eSmrg { 52045c42550eSmrg has_slash = 1; 52055c42550eSmrg break; 52065c42550eSmrg } 52075c42550eSmrg if (!has_slash) 52085c42550eSmrg { 52095c42550eSmrg /* no slashes; search PATH */ 52105c42550eSmrg const char* path = getenv ("PATH"); 52115c42550eSmrg if (path != NULL) 52125c42550eSmrg { 52135c42550eSmrg for (p = path; *p; p = p_next) 52145c42550eSmrg { 52155c42550eSmrg const char* q; 52165c42550eSmrg size_t p_len; 52175c42550eSmrg for (q = p; *q; q++) 52185c42550eSmrg if (IS_PATH_SEPARATOR(*q)) 52195c42550eSmrg break; 52205c42550eSmrg p_len = q - p; 52215c42550eSmrg p_next = (*q == '\0' ? q : q + 1); 52225c42550eSmrg if (p_len == 0) 52235c42550eSmrg { 52245c42550eSmrg /* empty path: current directory */ 52255c42550eSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 52265c42550eSmrg lt_fatal ("getcwd failed"); 52275c42550eSmrg tmp_len = strlen(tmp); 52285c42550eSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 52295c42550eSmrg memcpy (concat_name, tmp, tmp_len); 52305c42550eSmrg concat_name[tmp_len] = '/'; 52315c42550eSmrg strcpy (concat_name + tmp_len + 1, wrapper); 52325c42550eSmrg } 52335c42550eSmrg else 52345c42550eSmrg { 52355c42550eSmrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 52365c42550eSmrg memcpy (concat_name, p, p_len); 52375c42550eSmrg concat_name[p_len] = '/'; 52385c42550eSmrg strcpy (concat_name + p_len + 1, wrapper); 52395c42550eSmrg } 52405c42550eSmrg if (check_executable(concat_name)) 52415c42550eSmrg return concat_name; 52425c42550eSmrg XFREE(concat_name); 52435c42550eSmrg } 52445c42550eSmrg } 52455c42550eSmrg /* not found in PATH; assume curdir */ 52465c42550eSmrg } 52475c42550eSmrg /* Relative path | not found in path: prepend cwd */ 52485c42550eSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 52495c42550eSmrg lt_fatal ("getcwd failed"); 52505c42550eSmrg tmp_len = strlen(tmp); 52515c42550eSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 52525c42550eSmrg memcpy (concat_name, tmp, tmp_len); 52535c42550eSmrg concat_name[tmp_len] = '/'; 52545c42550eSmrg strcpy (concat_name + tmp_len + 1, wrapper); 52555c42550eSmrg 52565c42550eSmrg if (check_executable(concat_name)) 52575c42550eSmrg return concat_name; 52585c42550eSmrg XFREE(concat_name); 52595c42550eSmrg return NULL; 52605c42550eSmrg} 52615c42550eSmrg 52625c42550eSmrgchar * 52635c42550eSmrgstrendzap(char *str, const char *pat) 52645c42550eSmrg{ 52655c42550eSmrg size_t len, patlen; 52665c42550eSmrg 52675c42550eSmrg assert(str != NULL); 52685c42550eSmrg assert(pat != NULL); 52695c42550eSmrg 52705c42550eSmrg len = strlen(str); 52715c42550eSmrg patlen = strlen(pat); 52725c42550eSmrg 52735c42550eSmrg if (patlen <= len) 52745c42550eSmrg { 52755c42550eSmrg str += len - patlen; 52765c42550eSmrg if (strcmp(str, pat) == 0) 52775c42550eSmrg *str = '\0'; 52785c42550eSmrg } 52795c42550eSmrg return str; 52805c42550eSmrg} 52815c42550eSmrg 52825c42550eSmrgstatic void 52835c42550eSmrglt_error_core (int exit_status, const char * mode, 52845c42550eSmrg const char * message, va_list ap) 52855c42550eSmrg{ 52865c42550eSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 52875c42550eSmrg vfprintf (stderr, message, ap); 52885c42550eSmrg fprintf (stderr, ".\n"); 52895c42550eSmrg 52905c42550eSmrg if (exit_status >= 0) 52915c42550eSmrg exit (exit_status); 52925c42550eSmrg} 52935c42550eSmrg 52945c42550eSmrgvoid 52955c42550eSmrglt_fatal (const char *message, ...) 52965c42550eSmrg{ 52975c42550eSmrg va_list ap; 52985c42550eSmrg va_start (ap, message); 52995c42550eSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 53005c42550eSmrg va_end (ap); 53015c42550eSmrg} 53025c42550eSmrgEOF 53035c42550eSmrg # we should really use a build-platform specific compiler 53045c42550eSmrg # here, but OTOH, the wrappers (shell script and this C one) 53055c42550eSmrg # are only useful if you want to execute the "real" binary. 53065c42550eSmrg # Since the "real" binary is built for $host, then this 53075c42550eSmrg # wrapper might as well be built for $host, too. 53085c42550eSmrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 53095c42550eSmrg ;; 53105c42550eSmrg esac 53115c42550eSmrg $rm $output 53125c42550eSmrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 53135c42550eSmrg 53145c42550eSmrg $echo > $output "\ 53155c42550eSmrg#! $SHELL 53165c42550eSmrg 53175c42550eSmrg# $output - temporary wrapper script for $objdir/$outputname 53185c42550eSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 53195c42550eSmrg# 53205c42550eSmrg# The $output program cannot be directly executed until all the libtool 53215c42550eSmrg# libraries that it depends on are installed. 53225c42550eSmrg# 53235c42550eSmrg# This wrapper script should never be moved out of the build directory. 53245c42550eSmrg# If it is, it will not operate correctly. 53255c42550eSmrg 53265c42550eSmrg# Sed substitution that helps us do robust quoting. It backslashifies 53275c42550eSmrg# metacharacters that are still active within double-quoted strings. 53285c42550eSmrgXsed='${SED} -e 1s/^X//' 53295c42550eSmrgsed_quote_subst='$sed_quote_subst' 53305c42550eSmrg 53315c42550eSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 53325c42550eSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 53335c42550eSmrg emulate sh 53345c42550eSmrg NULLCMD=: 53355c42550eSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 53365c42550eSmrg # is contrary to our usage. Disable this feature. 53375c42550eSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 53385c42550eSmrg setopt NO_GLOB_SUBST 53395c42550eSmrgelse 53405c42550eSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 53415c42550eSmrgfi 53425c42550eSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 53435c42550eSmrgDUALCASE=1; export DUALCASE # for MKS sh 53445c42550eSmrg 53455c42550eSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 53465c42550eSmrg# if CDPATH is set. 53475c42550eSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 53485c42550eSmrg 53495c42550eSmrgrelink_command=\"$relink_command\" 53505c42550eSmrg 53515c42550eSmrg# This environment variable determines our operation mode. 53525c42550eSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 53535c42550eSmrg # install mode needs the following variable: 53545c42550eSmrg notinst_deplibs='$notinst_deplibs' 53555c42550eSmrgelse 53565c42550eSmrg # When we are sourced in execute mode, \$file and \$echo are already set. 53575c42550eSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 53585c42550eSmrg echo=\"$qecho\" 53595c42550eSmrg file=\"\$0\" 53605c42550eSmrg # Make sure echo works. 53615c42550eSmrg if test \"X\$1\" = X--no-reexec; then 53625c42550eSmrg # Discard the --no-reexec flag, and continue. 53635c42550eSmrg shift 53645c42550eSmrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 53655c42550eSmrg # Yippee, \$echo works! 53665c42550eSmrg : 53675c42550eSmrg else 53685c42550eSmrg # Restart under the correct shell, and then maybe \$echo will work. 53695c42550eSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 53705c42550eSmrg fi 53715c42550eSmrg fi\ 53725c42550eSmrg" 53735c42550eSmrg $echo >> $output "\ 5374ab47cfaaSmrg 53755c42550eSmrg # Find the directory that this script lives in. 53765c42550eSmrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 53775c42550eSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5378ab47cfaaSmrg 53795c42550eSmrg # Follow symbolic links until we get to the real thisdir. 53805c42550eSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 53815c42550eSmrg while test -n \"\$file\"; do 53825c42550eSmrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5383ab47cfaaSmrg 53845c42550eSmrg # If there was a directory component, then change thisdir. 53855c42550eSmrg if test \"x\$destdir\" != \"x\$file\"; then 53865c42550eSmrg case \"\$destdir\" in 53875c42550eSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 53885c42550eSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 53895c42550eSmrg esac 53905c42550eSmrg fi 5391ab47cfaaSmrg 53925c42550eSmrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 53935c42550eSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 53945c42550eSmrg done 5395ab47cfaaSmrg 53965c42550eSmrg # Try to get the absolute directory name. 53975c42550eSmrg absdir=\`cd \"\$thisdir\" && pwd\` 53985c42550eSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 53995c42550eSmrg" 5400ab47cfaaSmrg 54015c42550eSmrg if test "$fast_install" = yes; then 54025c42550eSmrg $echo >> $output "\ 54035c42550eSmrg program=lt-'$outputname'$exeext 54045c42550eSmrg progdir=\"\$thisdir/$objdir\" 5405ab47cfaaSmrg 54065c42550eSmrg if test ! -f \"\$progdir/\$program\" || \\ 54075c42550eSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 54085c42550eSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5409ab47cfaaSmrg 54105c42550eSmrg file=\"\$\$-\$program\" 5411ab47cfaaSmrg 54125c42550eSmrg if test ! -d \"\$progdir\"; then 54135c42550eSmrg $mkdir \"\$progdir\" 54145c42550eSmrg else 54155c42550eSmrg $rm \"\$progdir/\$file\" 54165c42550eSmrg fi" 5417ab47cfaaSmrg 54185c42550eSmrg $echo >> $output "\ 5419ab47cfaaSmrg 54205c42550eSmrg # relink executable if necessary 54215c42550eSmrg if test -n \"\$relink_command\"; then 54225c42550eSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 54235c42550eSmrg else 54245c42550eSmrg $echo \"\$relink_command_output\" >&2 54255c42550eSmrg $rm \"\$progdir/\$file\" 54265c42550eSmrg exit $EXIT_FAILURE 54275c42550eSmrg fi 54285c42550eSmrg fi 5429ab47cfaaSmrg 54305c42550eSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 54315c42550eSmrg { $rm \"\$progdir/\$program\"; 54325c42550eSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 54335c42550eSmrg $rm \"\$progdir/\$file\" 54345c42550eSmrg fi" 54355c42550eSmrg else 54365c42550eSmrg $echo >> $output "\ 54375c42550eSmrg program='$outputname' 54385c42550eSmrg progdir=\"\$thisdir/$objdir\" 54395c42550eSmrg" 54401473d951Smrg fi 5441ab47cfaaSmrg 54425c42550eSmrg $echo >> $output "\ 5443ab47cfaaSmrg 54445c42550eSmrg if test -f \"\$progdir/\$program\"; then" 5445ab47cfaaSmrg 54465c42550eSmrg # Export our shlibpath_var if we have one. 54475c42550eSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 54485c42550eSmrg $echo >> $output "\ 54495c42550eSmrg # Add our own library path to $shlibpath_var 54505c42550eSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5451ab47cfaaSmrg 54525c42550eSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 54535c42550eSmrg # The second colon is a workaround for a bug in BeOS R4 sed 54545c42550eSmrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5455ab47cfaaSmrg 54565c42550eSmrg export $shlibpath_var 54575c42550eSmrg" 54585c42550eSmrg fi 5459ab47cfaaSmrg 54605c42550eSmrg # fixup the dll searchpath if we need to. 54615c42550eSmrg if test -n "$dllsearchpath"; then 54625c42550eSmrg $echo >> $output "\ 54635c42550eSmrg # Add the dll search path components to the executable PATH 54645c42550eSmrg PATH=$dllsearchpath:\$PATH 54655c42550eSmrg" 54665c42550eSmrg fi 5467ab47cfaaSmrg 54685c42550eSmrg $echo >> $output "\ 54695c42550eSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 54705c42550eSmrg # Run the actual program with our arguments. 54715c42550eSmrg" 54725c42550eSmrg case $host in 54735c42550eSmrg # Backslashes separate directories on plain windows 54745c42550eSmrg *-*-mingw | *-*-os2*) 54755c42550eSmrg $echo >> $output "\ 54765c42550eSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 54775c42550eSmrg" 54785c42550eSmrg ;; 5479ab47cfaaSmrg 54805c42550eSmrg *) 54815c42550eSmrg $echo >> $output "\ 54825c42550eSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 54835c42550eSmrg" 54845c42550eSmrg ;; 54855c42550eSmrg esac 54865c42550eSmrg $echo >> $output "\ 54875c42550eSmrg \$echo \"\$0: cannot exec \$program \$*\" 54885c42550eSmrg exit $EXIT_FAILURE 54895c42550eSmrg fi 54905c42550eSmrg else 54915c42550eSmrg # The program doesn't exist. 54925c42550eSmrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 54935c42550eSmrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 54945c42550eSmrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 54955c42550eSmrg exit $EXIT_FAILURE 54965c42550eSmrg fi 54975c42550eSmrgfi\ 54985c42550eSmrg" 54995c42550eSmrg chmod +x $output 55005c42550eSmrg fi 55015c42550eSmrg exit $EXIT_SUCCESS 55025c42550eSmrg ;; 55035c42550eSmrg esac 55041473d951Smrg 55055c42550eSmrg # See if we need to build an old-fashioned archive. 55065c42550eSmrg for oldlib in $oldlibs; do 5507ab47cfaaSmrg 55085c42550eSmrg if test "$build_libtool_libs" = convenience; then 55095c42550eSmrg oldobjs="$libobjs_save" 55105c42550eSmrg addlibs="$convenience" 55115c42550eSmrg build_libtool_libs=no 55125c42550eSmrg else 55135c42550eSmrg if test "$build_libtool_libs" = module; then 55145c42550eSmrg oldobjs="$libobjs_save" 55155c42550eSmrg build_libtool_libs=no 55165c42550eSmrg else 55175c42550eSmrg oldobjs="$old_deplibs $non_pic_objects" 55185c42550eSmrg fi 55195c42550eSmrg addlibs="$old_convenience" 55205c42550eSmrg fi 5521ab47cfaaSmrg 55225c42550eSmrg if test -n "$addlibs"; then 55235c42550eSmrg gentop="$output_objdir/${outputname}x" 55245c42550eSmrg generated="$generated $gentop" 5525ab47cfaaSmrg 55265c42550eSmrg func_extract_archives $gentop $addlibs 55275c42550eSmrg oldobjs="$oldobjs $func_extract_archives_result" 55285c42550eSmrg fi 5529ab47cfaaSmrg 55305c42550eSmrg # Do each command in the archive commands. 55315c42550eSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 55325c42550eSmrg cmds=$old_archive_from_new_cmds 55335c42550eSmrg else 55345c42550eSmrg # POSIX demands no paths to be encoded in archives. We have 55355c42550eSmrg # to avoid creating archives with duplicate basenames if we 55365c42550eSmrg # might have to extract them afterwards, e.g., when creating a 55375c42550eSmrg # static archive out of a convenience library, or when linking 55385c42550eSmrg # the entirety of a libtool archive into another (currently 55395c42550eSmrg # not supported by libtool). 55405c42550eSmrg if (for obj in $oldobjs 55415c42550eSmrg do 55425c42550eSmrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 55435c42550eSmrg done | sort | sort -uc >/dev/null 2>&1); then 55445c42550eSmrg : 55455c42550eSmrg else 55465c42550eSmrg $echo "copying selected object files to avoid basename conflicts..." 5547ab47cfaaSmrg 55485c42550eSmrg if test -z "$gentop"; then 55495c42550eSmrg gentop="$output_objdir/${outputname}x" 55505c42550eSmrg generated="$generated $gentop" 5551ab47cfaaSmrg 55525c42550eSmrg $show "${rm}r $gentop" 55535c42550eSmrg $run ${rm}r "$gentop" 55545c42550eSmrg $show "$mkdir $gentop" 55555c42550eSmrg $run $mkdir "$gentop" 55565c42550eSmrg exit_status=$? 55575c42550eSmrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 55585c42550eSmrg exit $exit_status 55591473d951Smrg fi 55601473d951Smrg fi 5561ab47cfaaSmrg 55625c42550eSmrg save_oldobjs=$oldobjs 55635c42550eSmrg oldobjs= 55645c42550eSmrg counter=1 55655c42550eSmrg for obj in $save_oldobjs 55665c42550eSmrg do 55675c42550eSmrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 55685c42550eSmrg case " $oldobjs " in 55695c42550eSmrg " ") oldobjs=$obj ;; 55705c42550eSmrg *[\ /]"$objbase "*) 55715c42550eSmrg while :; do 55725c42550eSmrg # Make sure we don't pick an alternate name that also 55735c42550eSmrg # overlaps. 55745c42550eSmrg newobj=lt$counter-$objbase 55755c42550eSmrg counter=`expr $counter + 1` 55765c42550eSmrg case " $oldobjs " in 55775c42550eSmrg *[\ /]"$newobj "*) ;; 55785c42550eSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 55795c42550eSmrg esac 55805c42550eSmrg done 55815c42550eSmrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 55825c42550eSmrg $run ln "$obj" "$gentop/$newobj" || 55835c42550eSmrg $run cp "$obj" "$gentop/$newobj" 55845c42550eSmrg oldobjs="$oldobjs $gentop/$newobj" 55855c42550eSmrg ;; 55865c42550eSmrg *) oldobjs="$oldobjs $obj" ;; 55875c42550eSmrg esac 55885c42550eSmrg done 55895c42550eSmrg fi 5590ab47cfaaSmrg 55915c42550eSmrg eval cmds=\"$old_archive_cmds\" 55921473d951Smrg 55935c42550eSmrg if len=`expr "X$cmds" : ".*"` && 55945c42550eSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 55955c42550eSmrg cmds=$old_archive_cmds 55965c42550eSmrg else 55975c42550eSmrg # the command line is too long to link in one step, link in parts 55985c42550eSmrg $echo "using piecewise archive linking..." 55995c42550eSmrg save_RANLIB=$RANLIB 56005c42550eSmrg RANLIB=: 56015c42550eSmrg objlist= 56025c42550eSmrg concat_cmds= 56035c42550eSmrg save_oldobjs=$oldobjs 56045c42550eSmrg 56055c42550eSmrg # Is there a better way of finding the last object in the list? 56065c42550eSmrg for obj in $save_oldobjs 56075c42550eSmrg do 56085c42550eSmrg last_oldobj=$obj 56095c42550eSmrg done 56105c42550eSmrg for obj in $save_oldobjs 56115c42550eSmrg do 56125c42550eSmrg oldobjs="$objlist $obj" 56135c42550eSmrg objlist="$objlist $obj" 56145c42550eSmrg eval test_cmds=\"$old_archive_cmds\" 56155c42550eSmrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 56165c42550eSmrg test "$len" -le "$max_cmd_len"; then 56175c42550eSmrg : 5618ab47cfaaSmrg else 56195c42550eSmrg # the above command should be used before it gets too long 56205c42550eSmrg oldobjs=$objlist 56215c42550eSmrg if test "$obj" = "$last_oldobj" ; then 56225c42550eSmrg RANLIB=$save_RANLIB 56235c42550eSmrg fi 56245c42550eSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 56255c42550eSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 56265c42550eSmrg objlist= 5627ab47cfaaSmrg fi 56285c42550eSmrg done 56295c42550eSmrg RANLIB=$save_RANLIB 56305c42550eSmrg oldobjs=$objlist 56315c42550eSmrg if test "X$oldobjs" = "X" ; then 56325c42550eSmrg eval cmds=\"\$concat_cmds\" 5633ab47cfaaSmrg else 56345c42550eSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5635ab47cfaaSmrg fi 5636ab47cfaaSmrg fi 56375c42550eSmrg fi 56385c42550eSmrg save_ifs="$IFS"; IFS='~' 56395c42550eSmrg for cmd in $cmds; do 56405c42550eSmrg eval cmd=\"$cmd\" 56411473d951Smrg IFS="$save_ifs" 56425c42550eSmrg $show "$cmd" 56435c42550eSmrg $run eval "$cmd" || exit $? 56445c42550eSmrg done 56455c42550eSmrg IFS="$save_ifs" 56465c42550eSmrg done 5647ab47cfaaSmrg 56485c42550eSmrg if test -n "$generated"; then 56495c42550eSmrg $show "${rm}r$generated" 56505c42550eSmrg $run ${rm}r$generated 56515c42550eSmrg fi 5652ab47cfaaSmrg 56535c42550eSmrg # Now create the libtool archive. 56545c42550eSmrg case $output in 56555c42550eSmrg *.la) 56565c42550eSmrg old_library= 56575c42550eSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 56585c42550eSmrg $show "creating $output" 5659ab47cfaaSmrg 56605c42550eSmrg # Preserve any variables that may affect compiler behavior 56615c42550eSmrg for var in $variables_saved_for_relink; do 56625c42550eSmrg if eval test -z \"\${$var+set}\"; then 56635c42550eSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 56645c42550eSmrg elif eval var_value=\$$var; test -z "$var_value"; then 56655c42550eSmrg relink_command="$var=; export $var; $relink_command" 56665c42550eSmrg else 56675c42550eSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 56685c42550eSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 56691473d951Smrg fi 56705c42550eSmrg done 56715c42550eSmrg # Quote the link command for shipping. 56725c42550eSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 56735c42550eSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 56745c42550eSmrg if test "$hardcode_automatic" = yes ; then 56755c42550eSmrg relink_command= 56761473d951Smrg fi 5677ab47cfaaSmrg 5678ab47cfaaSmrg 56795c42550eSmrg # Only create the output if not a dry run. 56805c42550eSmrg if test -z "$run"; then 56815c42550eSmrg for installed in no yes; do 56825c42550eSmrg if test "$installed" = yes; then 56835c42550eSmrg if test -z "$install_libdir"; then 56845c42550eSmrg break 56855c42550eSmrg fi 56865c42550eSmrg output="$output_objdir/$outputname"i 56875c42550eSmrg # Replace all uninstalled libtool libraries with the installed ones 56885c42550eSmrg newdependency_libs= 56895c42550eSmrg for deplib in $dependency_libs; do 56905c42550eSmrg case $deplib in 56915c42550eSmrg *.la) 56925c42550eSmrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 56935c42550eSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 56945c42550eSmrg if test -z "$libdir"; then 56955c42550eSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 56965c42550eSmrg exit $EXIT_FAILURE 56975c42550eSmrg fi 56985c42550eSmrg newdependency_libs="$newdependency_libs $libdir/$name" 56995c42550eSmrg ;; 57005c42550eSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 57015c42550eSmrg esac 57025c42550eSmrg done 57035c42550eSmrg dependency_libs="$newdependency_libs" 57045c42550eSmrg newdlfiles= 57055c42550eSmrg for lib in $dlfiles; do 57065c42550eSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 57075c42550eSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 57085c42550eSmrg if test -z "$libdir"; then 57095c42550eSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 57105c42550eSmrg exit $EXIT_FAILURE 57115c42550eSmrg fi 57125c42550eSmrg newdlfiles="$newdlfiles $libdir/$name" 57135c42550eSmrg done 57145c42550eSmrg dlfiles="$newdlfiles" 57155c42550eSmrg newdlprefiles= 57165c42550eSmrg for lib in $dlprefiles; do 57175c42550eSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 57185c42550eSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 57195c42550eSmrg if test -z "$libdir"; then 57205c42550eSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 57215c42550eSmrg exit $EXIT_FAILURE 57225c42550eSmrg fi 57235c42550eSmrg newdlprefiles="$newdlprefiles $libdir/$name" 57245c42550eSmrg done 57255c42550eSmrg dlprefiles="$newdlprefiles" 57265c42550eSmrg else 57275c42550eSmrg newdlfiles= 57285c42550eSmrg for lib in $dlfiles; do 57295c42550eSmrg case $lib in 57305c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 57315c42550eSmrg *) abs=`pwd`"/$lib" ;; 57325c42550eSmrg esac 57335c42550eSmrg newdlfiles="$newdlfiles $abs" 57345c42550eSmrg done 57355c42550eSmrg dlfiles="$newdlfiles" 57365c42550eSmrg newdlprefiles= 57375c42550eSmrg for lib in $dlprefiles; do 57385c42550eSmrg case $lib in 57395c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 57405c42550eSmrg *) abs=`pwd`"/$lib" ;; 57415c42550eSmrg esac 57425c42550eSmrg newdlprefiles="$newdlprefiles $abs" 57435c42550eSmrg done 57445c42550eSmrg dlprefiles="$newdlprefiles" 57455c42550eSmrg fi 57465c42550eSmrg $rm $output 57475c42550eSmrg # place dlname in correct position for cygwin 57485c42550eSmrg tdlname=$dlname 57495c42550eSmrg case $host,$output,$installed,$module,$dlname in 57505c42550eSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 57515c42550eSmrg esac 57525c42550eSmrg $echo > $output "\ 57535c42550eSmrg# $outputname - a libtool library file 57545c42550eSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 57555c42550eSmrg# 57565c42550eSmrg# Please DO NOT delete this file! 57575c42550eSmrg# It is necessary for linking the library. 5758ab47cfaaSmrg 57595c42550eSmrg# The name that we can dlopen(3). 57605c42550eSmrgdlname='$tdlname' 5761ab47cfaaSmrg 57625c42550eSmrg# Names of this library. 57635c42550eSmrglibrary_names='$library_names' 5764ab47cfaaSmrg 57655c42550eSmrg# The name of the static archive. 57665c42550eSmrgold_library='$old_library' 5767ab47cfaaSmrg 57685c42550eSmrg# Libraries that this one depends upon. 57695c42550eSmrgdependency_libs='$dependency_libs' 57701473d951Smrg 57715c42550eSmrg# Version information for $libname. 57725c42550eSmrgcurrent=$current 57735c42550eSmrgage=$age 57745c42550eSmrgrevision=$revision 57751473d951Smrg 57765c42550eSmrg# Is this an already installed library? 57775c42550eSmrginstalled=$installed 57781473d951Smrg 57795c42550eSmrg# Should we warn about portability when linking against -modules? 57805c42550eSmrgshouldnotlink=$module 57811473d951Smrg 57825c42550eSmrg# Files to dlopen/dlpreopen 57835c42550eSmrgdlopen='$dlfiles' 57845c42550eSmrgdlpreopen='$dlprefiles' 57851473d951Smrg 57865c42550eSmrg# Directory that this library needs to be installed in: 57875c42550eSmrglibdir='$install_libdir'" 57885c42550eSmrg if test "$installed" = no && test "$need_relink" = yes; then 57895c42550eSmrg $echo >> $output "\ 57905c42550eSmrgrelink_command=\"$relink_command\"" 57915c42550eSmrg fi 57925c42550eSmrg done 57931473d951Smrg fi 57941473d951Smrg 57955c42550eSmrg # Do a symbolic link so that the libtool archive can be found in 57965c42550eSmrg # LD_LIBRARY_PATH before the program is installed. 57975c42550eSmrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 57985c42550eSmrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5799ab47cfaaSmrg ;; 58005c42550eSmrg esac 58015c42550eSmrg exit $EXIT_SUCCESS 58025c42550eSmrg ;; 5803ab47cfaaSmrg 58045c42550eSmrg # libtool install mode 58055c42550eSmrg install) 58065c42550eSmrg modename="$modename: install" 58075c42550eSmrg 58085c42550eSmrg # There may be an optional sh(1) argument at the beginning of 58095c42550eSmrg # install_prog (especially on Windows NT). 58105c42550eSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 58115c42550eSmrg # Allow the use of GNU shtool's install command. 58125c42550eSmrg $echo "X$nonopt" | grep shtool > /dev/null; then 58135c42550eSmrg # Aesthetically quote it. 58145c42550eSmrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 58155c42550eSmrg case $arg in 58165c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58175c42550eSmrg arg="\"$arg\"" 58185c42550eSmrg ;; 58191473d951Smrg esac 58205c42550eSmrg install_prog="$arg " 58215c42550eSmrg arg="$1" 58225c42550eSmrg shift 58235c42550eSmrg else 58245c42550eSmrg install_prog= 58255c42550eSmrg arg=$nonopt 58265c42550eSmrg fi 5827ab47cfaaSmrg 58285c42550eSmrg # The real first argument should be the name of the installation program. 58295c42550eSmrg # Aesthetically quote it. 58305c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 58315c42550eSmrg case $arg in 58325c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58335c42550eSmrg arg="\"$arg\"" 58345c42550eSmrg ;; 58355c42550eSmrg esac 58365c42550eSmrg install_prog="$install_prog$arg" 5837ab47cfaaSmrg 58385c42550eSmrg # We need to accept at least all the BSD install flags. 58395c42550eSmrg dest= 58405c42550eSmrg files= 58415c42550eSmrg opts= 58425c42550eSmrg prev= 58435c42550eSmrg install_type= 58445c42550eSmrg isdir=no 58455c42550eSmrg stripme= 58465c42550eSmrg for arg 58475c42550eSmrg do 58485c42550eSmrg if test -n "$dest"; then 58495c42550eSmrg files="$files $dest" 58505c42550eSmrg dest=$arg 58515c42550eSmrg continue 58525c42550eSmrg fi 58531473d951Smrg 58545c42550eSmrg case $arg in 58555c42550eSmrg -d) isdir=yes ;; 58565c42550eSmrg -f) 58575c42550eSmrg case " $install_prog " in 58585c42550eSmrg *[\\\ /]cp\ *) ;; 58595c42550eSmrg *) prev=$arg ;; 58605c42550eSmrg esac 58615c42550eSmrg ;; 58625c42550eSmrg -g | -m | -o) prev=$arg ;; 58635c42550eSmrg -s) 58645c42550eSmrg stripme=" -s" 58655c42550eSmrg continue 58665c42550eSmrg ;; 58675c42550eSmrg -*) 58685c42550eSmrg ;; 58695c42550eSmrg *) 58705c42550eSmrg # If the previous option needed an argument, then skip it. 58715c42550eSmrg if test -n "$prev"; then 58725c42550eSmrg prev= 58735c42550eSmrg else 58745c42550eSmrg dest=$arg 58755c42550eSmrg continue 58765c42550eSmrg fi 5877ab47cfaaSmrg ;; 58781473d951Smrg esac 5879ab47cfaaSmrg 58805c42550eSmrg # Aesthetically quote the argument. 58815c42550eSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 58825c42550eSmrg case $arg in 58835c42550eSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58845c42550eSmrg arg="\"$arg\"" 58851473d951Smrg ;; 58861473d951Smrg esac 58875c42550eSmrg install_prog="$install_prog $arg" 58885c42550eSmrg done 5889ab47cfaaSmrg 58905c42550eSmrg if test -z "$install_prog"; then 58915c42550eSmrg $echo "$modename: you must specify an install program" 1>&2 58925c42550eSmrg $echo "$help" 1>&2 58935c42550eSmrg exit $EXIT_FAILURE 58945c42550eSmrg fi 5895ab47cfaaSmrg 58965c42550eSmrg if test -n "$prev"; then 58975c42550eSmrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 58985c42550eSmrg $echo "$help" 1>&2 58995c42550eSmrg exit $EXIT_FAILURE 59005c42550eSmrg fi 59015c42550eSmrg 59025c42550eSmrg if test -z "$files"; then 59035c42550eSmrg if test -z "$dest"; then 59045c42550eSmrg $echo "$modename: no file or destination specified" 1>&2 59055c42550eSmrg else 59065c42550eSmrg $echo "$modename: you must specify a destination" 1>&2 59075c42550eSmrg fi 59085c42550eSmrg $echo "$help" 1>&2 59095c42550eSmrg exit $EXIT_FAILURE 59105c42550eSmrg fi 59115c42550eSmrg 59125c42550eSmrg # Strip any trailing slash from the destination. 59135c42550eSmrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 59145c42550eSmrg 59155c42550eSmrg # Check to see that the destination is a directory. 59165c42550eSmrg test -d "$dest" && isdir=yes 59175c42550eSmrg if test "$isdir" = yes; then 59185c42550eSmrg destdir="$dest" 59195c42550eSmrg destname= 59205c42550eSmrg else 59215c42550eSmrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 59225c42550eSmrg test "X$destdir" = "X$dest" && destdir=. 59235c42550eSmrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 59245c42550eSmrg 59255c42550eSmrg # Not a directory, so check to see that there is only one file specified. 59265c42550eSmrg set dummy $files 59275c42550eSmrg if test "$#" -gt 2; then 59285c42550eSmrg $echo "$modename: \`$dest' is not a directory" 1>&2 59295c42550eSmrg $echo "$help" 1>&2 59305c42550eSmrg exit $EXIT_FAILURE 59315c42550eSmrg fi 59325c42550eSmrg fi 59335c42550eSmrg case $destdir in 59345c42550eSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 59355c42550eSmrg *) 59365c42550eSmrg for file in $files; do 59375c42550eSmrg case $file in 59385c42550eSmrg *.lo) ;; 59391473d951Smrg *) 59405c42550eSmrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 59415c42550eSmrg $echo "$help" 1>&2 59425c42550eSmrg exit $EXIT_FAILURE 59431473d951Smrg ;; 59441473d951Smrg esac 59451473d951Smrg done 59465c42550eSmrg ;; 59475c42550eSmrg esac 5948ab47cfaaSmrg 59495c42550eSmrg # This variable tells wrapper scripts just to set variables rather 59505c42550eSmrg # than running their programs. 59515c42550eSmrg libtool_install_magic="$magic" 5952ab47cfaaSmrg 59535c42550eSmrg staticlibs= 59545c42550eSmrg future_libdirs= 59555c42550eSmrg current_libdirs= 59565c42550eSmrg for file in $files; do 5957ab47cfaaSmrg 59585c42550eSmrg # Do each installation. 59595c42550eSmrg case $file in 59605c42550eSmrg *.$libext) 59615c42550eSmrg # Do the static libraries later. 59625c42550eSmrg staticlibs="$staticlibs $file" 59635c42550eSmrg ;; 59645c42550eSmrg 59655c42550eSmrg *.la) 59665c42550eSmrg # Check to see that this really is a libtool archive. 59675c42550eSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 59685c42550eSmrg else 59695c42550eSmrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 59705c42550eSmrg $echo "$help" 1>&2 59715c42550eSmrg exit $EXIT_FAILURE 59725c42550eSmrg fi 59735c42550eSmrg 59745c42550eSmrg library_names= 59755c42550eSmrg old_library= 59765c42550eSmrg relink_command= 59775c42550eSmrg # If there is no directory component, then add one. 59785c42550eSmrg case $file in 59795c42550eSmrg */* | *\\*) . $file ;; 59805c42550eSmrg *) . ./$file ;; 59815c42550eSmrg esac 59825c42550eSmrg 59835c42550eSmrg # Add the libdir to current_libdirs if it is the destination. 59845c42550eSmrg if test "X$destdir" = "X$libdir"; then 59855c42550eSmrg case "$current_libdirs " in 59861473d951Smrg *" $libdir "*) ;; 59875c42550eSmrg *) current_libdirs="$current_libdirs $libdir" ;; 59881473d951Smrg esac 59895c42550eSmrg else 59905c42550eSmrg # Note the libdir as a future libdir. 59915c42550eSmrg case "$future_libdirs " in 59921473d951Smrg *" $libdir "*) ;; 59935c42550eSmrg *) future_libdirs="$future_libdirs $libdir" ;; 59941473d951Smrg esac 59951473d951Smrg fi 5996ab47cfaaSmrg 59975c42550eSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 59985c42550eSmrg test "X$dir" = "X$file/" && dir= 59995c42550eSmrg dir="$dir$objdir" 60005c42550eSmrg 60015c42550eSmrg if test -n "$relink_command"; then 60025c42550eSmrg # Determine the prefix the user has applied to our future dir. 60035c42550eSmrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 60045c42550eSmrg 60055c42550eSmrg # Don't allow the user to place us outside of our expected 60065c42550eSmrg # location b/c this prevents finding dependent libraries that 60075c42550eSmrg # are installed to the same prefix. 60085c42550eSmrg # At present, this check doesn't affect windows .dll's that 60095c42550eSmrg # are installed into $libdir/../bin (currently, that works fine) 60105c42550eSmrg # but it's something to keep an eye on. 60115c42550eSmrg if test "$inst_prefix_dir" = "$destdir"; then 60125c42550eSmrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 60135c42550eSmrg exit $EXIT_FAILURE 60145c42550eSmrg fi 60155c42550eSmrg 60165c42550eSmrg if test -n "$inst_prefix_dir"; then 60175c42550eSmrg # Stick the inst_prefix_dir data into the link command. 60185c42550eSmrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 60195c42550eSmrg else 60205c42550eSmrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 60215c42550eSmrg fi 60225c42550eSmrg 60235c42550eSmrg $echo "$modename: warning: relinking \`$file'" 1>&2 60245c42550eSmrg $show "$relink_command" 60255c42550eSmrg if $run eval "$relink_command"; then : 6026ab47cfaaSmrg else 60275c42550eSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 60285c42550eSmrg exit $EXIT_FAILURE 6029ab47cfaaSmrg fi 6030ab47cfaaSmrg fi 6031ab47cfaaSmrg 60325c42550eSmrg # See the names of the shared library. 60335c42550eSmrg set dummy $library_names 60345c42550eSmrg if test -n "$2"; then 60355c42550eSmrg realname="$2" 60365c42550eSmrg shift 60375c42550eSmrg shift 6038ab47cfaaSmrg 60395c42550eSmrg srcname="$realname" 60405c42550eSmrg test -n "$relink_command" && srcname="$realname"T 6041ab47cfaaSmrg 60425c42550eSmrg # Install the shared library and build the symlinks. 60435c42550eSmrg $show "$install_prog $dir/$srcname $destdir/$realname" 60445c42550eSmrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 60455c42550eSmrg if test -n "$stripme" && test -n "$striplib"; then 60465c42550eSmrg $show "$striplib $destdir/$realname" 60475c42550eSmrg $run eval "$striplib $destdir/$realname" || exit $? 60485c42550eSmrg fi 6049ab47cfaaSmrg 60505c42550eSmrg if test "$#" -gt 0; then 60515c42550eSmrg # Delete the old symlinks, and create new ones. 60525c42550eSmrg # Try `ln -sf' first, because the `ln' binary might depend on 60535c42550eSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 60545c42550eSmrg # so we also need to try rm && ln -s. 60555c42550eSmrg for linkname 60565c42550eSmrg do 60575c42550eSmrg if test "$linkname" != "$realname"; then 60585c42550eSmrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 60595c42550eSmrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 60605c42550eSmrg fi 60615c42550eSmrg done 60625c42550eSmrg fi 6063ab47cfaaSmrg 60645c42550eSmrg # Do each command in the postinstall commands. 60655c42550eSmrg lib="$destdir/$realname" 60665c42550eSmrg cmds=$postinstall_cmds 60675c42550eSmrg save_ifs="$IFS"; IFS='~' 60685c42550eSmrg for cmd in $cmds; do 60695c42550eSmrg IFS="$save_ifs" 60705c42550eSmrg eval cmd=\"$cmd\" 60715c42550eSmrg $show "$cmd" 60725c42550eSmrg $run eval "$cmd" || { 60735c42550eSmrg lt_exit=$? 60745c42550eSmrg 60755c42550eSmrg # Restore the uninstalled library and exit 60765c42550eSmrg if test "$mode" = relink; then 60775c42550eSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 60785c42550eSmrg fi 6079ab47cfaaSmrg 60805c42550eSmrg exit $lt_exit 60815c42550eSmrg } 60825c42550eSmrg done 60835c42550eSmrg IFS="$save_ifs" 6084ab47cfaaSmrg fi 6085ab47cfaaSmrg 60865c42550eSmrg # Install the pseudo-library for information purposes. 60875c42550eSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 60885c42550eSmrg instname="$dir/$name"i 60895c42550eSmrg $show "$install_prog $instname $destdir/$name" 60905c42550eSmrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6091ab47cfaaSmrg 60925c42550eSmrg # Maybe install the static library, too. 60935c42550eSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 60945c42550eSmrg ;; 6095ab47cfaaSmrg 60965c42550eSmrg *.lo) 60975c42550eSmrg # Install (i.e. copy) a libtool object. 60985c42550eSmrg 60995c42550eSmrg # Figure out destination file name, if it wasn't already specified. 61005c42550eSmrg if test -n "$destname"; then 61015c42550eSmrg destfile="$destdir/$destname" 61025c42550eSmrg else 61035c42550eSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 61045c42550eSmrg destfile="$destdir/$destfile" 6105ab47cfaaSmrg fi 61065c42550eSmrg 61075c42550eSmrg # Deduce the name of the destination old-style object file. 61085c42550eSmrg case $destfile in 61095c42550eSmrg *.lo) 61105c42550eSmrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 61115c42550eSmrg ;; 61125c42550eSmrg *.$objext) 61135c42550eSmrg staticdest="$destfile" 61145c42550eSmrg destfile= 61155c42550eSmrg ;; 61165c42550eSmrg *) 61175c42550eSmrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 61185c42550eSmrg $echo "$help" 1>&2 61195c42550eSmrg exit $EXIT_FAILURE 61205c42550eSmrg ;; 61215c42550eSmrg esac 61225c42550eSmrg 61235c42550eSmrg # Install the libtool object if requested. 61245c42550eSmrg if test -n "$destfile"; then 61255c42550eSmrg $show "$install_prog $file $destfile" 61265c42550eSmrg $run eval "$install_prog $file $destfile" || exit $? 6127ab47cfaaSmrg fi 6128ab47cfaaSmrg 61295c42550eSmrg # Install the old object if enabled. 61305c42550eSmrg if test "$build_old_libs" = yes; then 61315c42550eSmrg # Deduce the name of the old-style object file. 61325c42550eSmrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6133ab47cfaaSmrg 61345c42550eSmrg $show "$install_prog $staticobj $staticdest" 61355c42550eSmrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 61365c42550eSmrg fi 61375c42550eSmrg exit $EXIT_SUCCESS 61385c42550eSmrg ;; 61391473d951Smrg 61405c42550eSmrg *) 61415c42550eSmrg # Figure out destination file name, if it wasn't already specified. 61425c42550eSmrg if test -n "$destname"; then 61435c42550eSmrg destfile="$destdir/$destname" 6144ab47cfaaSmrg else 61455c42550eSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 61465c42550eSmrg destfile="$destdir/$destfile" 6147ab47cfaaSmrg fi 6148ab47cfaaSmrg 61495c42550eSmrg # If the file is missing, and there is a .exe on the end, strip it 61505c42550eSmrg # because it is most likely a libtool script we actually want to 61515c42550eSmrg # install 61525c42550eSmrg stripped_ext="" 61535c42550eSmrg case $file in 61545c42550eSmrg *.exe) 61555c42550eSmrg if test ! -f "$file"; then 61565c42550eSmrg file=`$echo $file|${SED} 's,.exe$,,'` 61575c42550eSmrg stripped_ext=".exe" 61585c42550eSmrg fi 61595c42550eSmrg ;; 61605c42550eSmrg esac 6161ab47cfaaSmrg 61625c42550eSmrg # Do a test to see if this is really a libtool program. 61635c42550eSmrg case $host in 61645c42550eSmrg *cygwin*|*mingw*) 61655c42550eSmrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 61665c42550eSmrg ;; 61675c42550eSmrg *) 61685c42550eSmrg wrapper=$file 61695c42550eSmrg ;; 61705c42550eSmrg esac 61715c42550eSmrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 61725c42550eSmrg notinst_deplibs= 61735c42550eSmrg relink_command= 6174ab47cfaaSmrg 61755c42550eSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 61765c42550eSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 61775c42550eSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 61785c42550eSmrg # `FILE.' does not work on cygwin managed mounts. 61795c42550eSmrg # 61805c42550eSmrg # If there is no directory component, then add one. 61815c42550eSmrg case $wrapper in 61825c42550eSmrg */* | *\\*) . ${wrapper} ;; 61835c42550eSmrg *) . ./${wrapper} ;; 61845c42550eSmrg esac 6185ab47cfaaSmrg 61865c42550eSmrg # Check the variables that should have been set. 61875c42550eSmrg if test -z "$notinst_deplibs"; then 61885c42550eSmrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 61895c42550eSmrg exit $EXIT_FAILURE 61905c42550eSmrg fi 6191ab47cfaaSmrg 61925c42550eSmrg finalize=yes 61935c42550eSmrg for lib in $notinst_deplibs; do 61945c42550eSmrg # Check to see that each library is installed. 61955c42550eSmrg libdir= 61965c42550eSmrg if test -f "$lib"; then 61975c42550eSmrg # If there is no directory component, then add one. 61985c42550eSmrg case $lib in 61995c42550eSmrg */* | *\\*) . $lib ;; 62005c42550eSmrg *) . ./$lib ;; 62015c42550eSmrg esac 62025c42550eSmrg fi 62035c42550eSmrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 62045c42550eSmrg if test -n "$libdir" && test ! -f "$libfile"; then 62055c42550eSmrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 62065c42550eSmrg finalize=no 62075c42550eSmrg fi 62085c42550eSmrg done 62095c42550eSmrg 62105c42550eSmrg relink_command= 62115c42550eSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 62125c42550eSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 62135c42550eSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 62145c42550eSmrg # `FILE.' does not work on cygwin managed mounts. 62155c42550eSmrg # 62165c42550eSmrg # If there is no directory component, then add one. 62175c42550eSmrg case $wrapper in 62185c42550eSmrg */* | *\\*) . ${wrapper} ;; 62195c42550eSmrg *) . ./${wrapper} ;; 62205c42550eSmrg esac 62215c42550eSmrg 62225c42550eSmrg outputname= 62235c42550eSmrg if test "$fast_install" = no && test -n "$relink_command"; then 62245c42550eSmrg if test "$finalize" = yes && test -z "$run"; then 62255c42550eSmrg tmpdir=`func_mktempdir` 62265c42550eSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 62275c42550eSmrg outputname="$tmpdir/$file" 62285c42550eSmrg # Replace the output file specification. 62295c42550eSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 62305c42550eSmrg 62315c42550eSmrg $show "$relink_command" 62325c42550eSmrg if $run eval "$relink_command"; then : 62335c42550eSmrg else 62345c42550eSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 62355c42550eSmrg ${rm}r "$tmpdir" 62365c42550eSmrg continue 62375c42550eSmrg fi 62385c42550eSmrg file="$outputname" 62395c42550eSmrg else 62405c42550eSmrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 62415c42550eSmrg fi 6242ab47cfaaSmrg else 62435c42550eSmrg # Install the binary that we compiled earlier. 62445c42550eSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6245ab47cfaaSmrg fi 62465c42550eSmrg fi 62471473d951Smrg 62485c42550eSmrg # remove .exe since cygwin /usr/bin/install will append another 62495c42550eSmrg # one anyway 62505c42550eSmrg case $install_prog,$host in 62515c42550eSmrg */usr/bin/install*,*cygwin*) 62525c42550eSmrg case $file:$destfile in 62535c42550eSmrg *.exe:*.exe) 62545c42550eSmrg # this is ok 62555c42550eSmrg ;; 62565c42550eSmrg *.exe:*) 62575c42550eSmrg destfile=$destfile.exe 62585c42550eSmrg ;; 62595c42550eSmrg *:*.exe) 62605c42550eSmrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 62615c42550eSmrg ;; 62625c42550eSmrg esac 62635c42550eSmrg ;; 6264ab47cfaaSmrg esac 62655c42550eSmrg $show "$install_prog$stripme $file $destfile" 62665c42550eSmrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 62675c42550eSmrg test -n "$outputname" && ${rm}r "$tmpdir" 62685c42550eSmrg ;; 62695c42550eSmrg esac 62705c42550eSmrg done 6271ab47cfaaSmrg 62725c42550eSmrg for file in $staticlibs; do 62735c42550eSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6274ab47cfaaSmrg 62755c42550eSmrg # Set up the ranlib parameters. 62765c42550eSmrg oldlib="$destdir/$name" 6277ab47cfaaSmrg 62785c42550eSmrg $show "$install_prog $file $oldlib" 62795c42550eSmrg $run eval "$install_prog \$file \$oldlib" || exit $? 6280ab47cfaaSmrg 62815c42550eSmrg if test -n "$stripme" && test -n "$old_striplib"; then 62825c42550eSmrg $show "$old_striplib $oldlib" 62835c42550eSmrg $run eval "$old_striplib $oldlib" || exit $? 6284ab47cfaaSmrg fi 6285ab47cfaaSmrg 62865c42550eSmrg # Do each command in the postinstall commands. 62875c42550eSmrg cmds=$old_postinstall_cmds 62885c42550eSmrg save_ifs="$IFS"; IFS='~' 62895c42550eSmrg for cmd in $cmds; do 62905c42550eSmrg IFS="$save_ifs" 62915c42550eSmrg eval cmd=\"$cmd\" 62925c42550eSmrg $show "$cmd" 62935c42550eSmrg $run eval "$cmd" || exit $? 62945c42550eSmrg done 62955c42550eSmrg IFS="$save_ifs" 62965c42550eSmrg done 6297ab47cfaaSmrg 62985c42550eSmrg if test -n "$future_libdirs"; then 62995c42550eSmrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 63005c42550eSmrg fi 6301ab47cfaaSmrg 63025c42550eSmrg if test -n "$current_libdirs"; then 63035c42550eSmrg # Maybe just do a dry run. 63045c42550eSmrg test -n "$run" && current_libdirs=" -n$current_libdirs" 63055c42550eSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 63065c42550eSmrg else 63075c42550eSmrg exit $EXIT_SUCCESS 63085c42550eSmrg fi 63095c42550eSmrg ;; 6310ab47cfaaSmrg 63115c42550eSmrg # libtool finish mode 63125c42550eSmrg finish) 63135c42550eSmrg modename="$modename: finish" 63145c42550eSmrg libdirs="$nonopt" 63155c42550eSmrg admincmds= 6316ab47cfaaSmrg 63175c42550eSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 63185c42550eSmrg for dir 63195c42550eSmrg do 63205c42550eSmrg libdirs="$libdirs $dir" 63215c42550eSmrg done 6322ab47cfaaSmrg 63235c42550eSmrg for libdir in $libdirs; do 63245c42550eSmrg if test -n "$finish_cmds"; then 63255c42550eSmrg # Do each command in the finish commands. 63265c42550eSmrg cmds=$finish_cmds 63275c42550eSmrg save_ifs="$IFS"; IFS='~' 63285c42550eSmrg for cmd in $cmds; do 63295c42550eSmrg IFS="$save_ifs" 63305c42550eSmrg eval cmd=\"$cmd\" 63315c42550eSmrg $show "$cmd" 63325c42550eSmrg $run eval "$cmd" || admincmds="$admincmds 63335c42550eSmrg $cmd" 6334ab47cfaaSmrg done 63355c42550eSmrg IFS="$save_ifs" 6336ab47cfaaSmrg fi 63375c42550eSmrg if test -n "$finish_eval"; then 63385c42550eSmrg # Do the single finish_eval. 63395c42550eSmrg eval cmds=\"$finish_eval\" 63405c42550eSmrg $run eval "$cmds" || admincmds="$admincmds 63415c42550eSmrg $cmds" 63421473d951Smrg fi 63435c42550eSmrg done 63445c42550eSmrg fi 63455c42550eSmrg 63465c42550eSmrg # Exit here if they wanted silent mode. 63475c42550eSmrg test "$show" = : && exit $EXIT_SUCCESS 63485c42550eSmrg 63495c42550eSmrg $echo "X----------------------------------------------------------------------" | $Xsed 63505c42550eSmrg $echo "Libraries have been installed in:" 63515c42550eSmrg for libdir in $libdirs; do 63525c42550eSmrg $echo " $libdir" 6353ab47cfaaSmrg done 63545c42550eSmrg $echo 63555c42550eSmrg $echo "If you ever happen to want to link against installed libraries" 63565c42550eSmrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 63575c42550eSmrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 63585c42550eSmrg $echo "flag during linking and do at least one of the following:" 63595c42550eSmrg if test -n "$shlibpath_var"; then 63605c42550eSmrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 63615c42550eSmrg $echo " during execution" 63625c42550eSmrg fi 63635c42550eSmrg if test -n "$runpath_var"; then 63645c42550eSmrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 63655c42550eSmrg $echo " during linking" 63665c42550eSmrg fi 63675c42550eSmrg if test -n "$hardcode_libdir_flag_spec"; then 63685c42550eSmrg libdir=LIBDIR 63695c42550eSmrg eval flag=\"$hardcode_libdir_flag_spec\" 6370ab47cfaaSmrg 63715c42550eSmrg $echo " - use the \`$flag' linker flag" 63725c42550eSmrg fi 63735c42550eSmrg if test -n "$admincmds"; then 63745c42550eSmrg $echo " - have your system administrator run these commands:$admincmds" 63755c42550eSmrg fi 63765c42550eSmrg if test -f /etc/ld.so.conf; then 63775c42550eSmrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 63785c42550eSmrg fi 63795c42550eSmrg $echo 63805c42550eSmrg $echo "See any operating system documentation about shared libraries for" 63815c42550eSmrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 63825c42550eSmrg $echo "X----------------------------------------------------------------------" | $Xsed 63835c42550eSmrg exit $EXIT_SUCCESS 63845c42550eSmrg ;; 6385ab47cfaaSmrg 63865c42550eSmrg # libtool execute mode 63875c42550eSmrg execute) 63885c42550eSmrg modename="$modename: execute" 6389ab47cfaaSmrg 63905c42550eSmrg # The first argument is the command name. 63915c42550eSmrg cmd="$nonopt" 63925c42550eSmrg if test -z "$cmd"; then 63935c42550eSmrg $echo "$modename: you must specify a COMMAND" 1>&2 63945c42550eSmrg $echo "$help" 63955c42550eSmrg exit $EXIT_FAILURE 63965c42550eSmrg fi 6397ab47cfaaSmrg 63985c42550eSmrg # Handle -dlopen flags immediately. 63995c42550eSmrg for file in $execute_dlfiles; do 64005c42550eSmrg if test ! -f "$file"; then 64015c42550eSmrg $echo "$modename: \`$file' is not a file" 1>&2 64025c42550eSmrg $echo "$help" 1>&2 64035c42550eSmrg exit $EXIT_FAILURE 64045c42550eSmrg fi 64051473d951Smrg 64065c42550eSmrg dir= 64075c42550eSmrg case $file in 64085c42550eSmrg *.la) 64095c42550eSmrg # Check to see that this really is a libtool archive. 64105c42550eSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 64115c42550eSmrg else 64125c42550eSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 64135c42550eSmrg $echo "$help" 1>&2 64145c42550eSmrg exit $EXIT_FAILURE 64155c42550eSmrg fi 6416ab47cfaaSmrg 64175c42550eSmrg # Read the libtool library. 64185c42550eSmrg dlname= 64195c42550eSmrg library_names= 6420ab47cfaaSmrg 64215c42550eSmrg # If there is no directory component, then add one. 64225c42550eSmrg case $file in 64235c42550eSmrg */* | *\\*) . $file ;; 64245c42550eSmrg *) . ./$file ;; 64255c42550eSmrg esac 6426ab47cfaaSmrg 64275c42550eSmrg # Skip this library if it cannot be dlopened. 64285c42550eSmrg if test -z "$dlname"; then 64295c42550eSmrg # Warn if it was a shared library. 64305c42550eSmrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 64315c42550eSmrg continue 64325c42550eSmrg fi 6433ab47cfaaSmrg 64345c42550eSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 64355c42550eSmrg test "X$dir" = "X$file" && dir=. 6436ab47cfaaSmrg 64375c42550eSmrg if test -f "$dir/$objdir/$dlname"; then 64385c42550eSmrg dir="$dir/$objdir" 64395c42550eSmrg else 64405c42550eSmrg if test ! -f "$dir/$dlname"; then 64415c42550eSmrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 64425c42550eSmrg exit $EXIT_FAILURE 64435c42550eSmrg fi 64445c42550eSmrg fi 64455c42550eSmrg ;; 6446ab47cfaaSmrg 64475c42550eSmrg *.lo) 64485c42550eSmrg # Just add the directory containing the .lo file. 64495c42550eSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 64505c42550eSmrg test "X$dir" = "X$file" && dir=. 64515c42550eSmrg ;; 6452ab47cfaaSmrg 64535c42550eSmrg *) 64545c42550eSmrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 64555c42550eSmrg continue 64565c42550eSmrg ;; 64575c42550eSmrg esac 6458ab47cfaaSmrg 64595c42550eSmrg # Get the absolute pathname. 64605c42550eSmrg absdir=`cd "$dir" && pwd` 64615c42550eSmrg test -n "$absdir" && dir="$absdir" 6462ab47cfaaSmrg 64635c42550eSmrg # Now add the directory to shlibpath_var. 64645c42550eSmrg if eval "test -z \"\$$shlibpath_var\""; then 64655c42550eSmrg eval "$shlibpath_var=\"\$dir\"" 64665c42550eSmrg else 64675c42550eSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 64685c42550eSmrg fi 64695c42550eSmrg done 6470ab47cfaaSmrg 64715c42550eSmrg # This variable tells wrapper scripts just to set shlibpath_var 64725c42550eSmrg # rather than running their programs. 64735c42550eSmrg libtool_execute_magic="$magic" 6474ab47cfaaSmrg 64755c42550eSmrg # Check if any of the arguments is a wrapper script. 64765c42550eSmrg args= 64775c42550eSmrg for file 64785c42550eSmrg do 64795c42550eSmrg case $file in 64805c42550eSmrg -*) ;; 64815c42550eSmrg *) 64825c42550eSmrg # Do a test to see if this is really a libtool program. 64835c42550eSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 64845c42550eSmrg # If there is no directory component, then add one. 64855c42550eSmrg case $file in 64865c42550eSmrg */* | *\\*) . $file ;; 64875c42550eSmrg *) . ./$file ;; 64885c42550eSmrg esac 6489ab47cfaaSmrg 64905c42550eSmrg # Transform arg to wrapped name. 64915c42550eSmrg file="$progdir/$program" 64925c42550eSmrg fi 64935c42550eSmrg ;; 64945c42550eSmrg esac 64955c42550eSmrg # Quote arguments (to preserve shell metacharacters). 64965c42550eSmrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 64975c42550eSmrg args="$args \"$file\"" 64985c42550eSmrg done 6499ab47cfaaSmrg 65005c42550eSmrg if test -z "$run"; then 65015c42550eSmrg if test -n "$shlibpath_var"; then 65025c42550eSmrg # Export the shlibpath_var. 65035c42550eSmrg eval "export $shlibpath_var" 65045c42550eSmrg fi 65055c42550eSmrg 65065c42550eSmrg # Restore saved environment variables 65075c42550eSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 65085c42550eSmrg do 65095c42550eSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 65105c42550eSmrg $lt_var=\$save_$lt_var; export $lt_var 65115c42550eSmrg fi" 65125c42550eSmrg done 6513ab47cfaaSmrg 65145c42550eSmrg # Now prepare to actually exec the command. 65155c42550eSmrg exec_cmd="\$cmd$args" 65165c42550eSmrg else 65175c42550eSmrg # Display what would be done. 65185c42550eSmrg if test -n "$shlibpath_var"; then 65195c42550eSmrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 65205c42550eSmrg $echo "export $shlibpath_var" 65215c42550eSmrg fi 65225c42550eSmrg $echo "$cmd$args" 65235c42550eSmrg exit $EXIT_SUCCESS 65245c42550eSmrg fi 65255c42550eSmrg ;; 6526ab47cfaaSmrg 65275c42550eSmrg # libtool clean and uninstall mode 65285c42550eSmrg clean | uninstall) 65295c42550eSmrg modename="$modename: $mode" 65305c42550eSmrg rm="$nonopt" 6531ab47cfaaSmrg files= 6532ab47cfaaSmrg rmforce= 6533ab47cfaaSmrg exit_status=0 6534ab47cfaaSmrg 6535ab47cfaaSmrg # This variable tells wrapper scripts just to set variables rather 6536ab47cfaaSmrg # than running their programs. 6537ab47cfaaSmrg libtool_install_magic="$magic" 6538ab47cfaaSmrg 6539ab47cfaaSmrg for arg 6540ab47cfaaSmrg do 6541ab47cfaaSmrg case $arg in 65425c42550eSmrg -f) rm="$rm $arg"; rmforce=yes ;; 65435c42550eSmrg -*) rm="$rm $arg" ;; 6544ab47cfaaSmrg *) files="$files $arg" ;; 6545ab47cfaaSmrg esac 6546ab47cfaaSmrg done 6547ab47cfaaSmrg 65485c42550eSmrg if test -z "$rm"; then 65495c42550eSmrg $echo "$modename: you must specify an RM program" 1>&2 65505c42550eSmrg $echo "$help" 1>&2 65515c42550eSmrg exit $EXIT_FAILURE 65525c42550eSmrg fi 6553ab47cfaaSmrg 6554ab47cfaaSmrg rmdirs= 6555ab47cfaaSmrg 6556ab47cfaaSmrg origobjdir="$objdir" 6557ab47cfaaSmrg for file in $files; do 65585c42550eSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 65595c42550eSmrg if test "X$dir" = "X$file"; then 65605c42550eSmrg dir=. 6561ab47cfaaSmrg objdir="$origobjdir" 6562ab47cfaaSmrg else 6563ab47cfaaSmrg objdir="$dir/$origobjdir" 6564ab47cfaaSmrg fi 65655c42550eSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6566ab47cfaaSmrg test "$mode" = uninstall && objdir="$dir" 6567ab47cfaaSmrg 6568ab47cfaaSmrg # Remember objdir for removal later, being careful to avoid duplicates 6569ab47cfaaSmrg if test "$mode" = clean; then 6570ab47cfaaSmrg case " $rmdirs " in 6571ab47cfaaSmrg *" $objdir "*) ;; 6572ab47cfaaSmrg *) rmdirs="$rmdirs $objdir" ;; 6573ab47cfaaSmrg esac 6574ab47cfaaSmrg fi 6575ab47cfaaSmrg 6576ab47cfaaSmrg # Don't error if the file doesn't exist and rm -f was used. 65775c42550eSmrg if (test -L "$file") >/dev/null 2>&1 \ 65785c42550eSmrg || (test -h "$file") >/dev/null 2>&1 \ 65795c42550eSmrg || test -f "$file"; then 6580ab47cfaaSmrg : 6581ab47cfaaSmrg elif test -d "$file"; then 6582ab47cfaaSmrg exit_status=1 6583ab47cfaaSmrg continue 6584ab47cfaaSmrg elif test "$rmforce" = yes; then 6585ab47cfaaSmrg continue 6586ab47cfaaSmrg fi 6587ab47cfaaSmrg 6588ab47cfaaSmrg rmfiles="$file" 6589ab47cfaaSmrg 6590ab47cfaaSmrg case $name in 6591ab47cfaaSmrg *.la) 6592ab47cfaaSmrg # Possibly a libtool archive, so verify it. 65935c42550eSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 65945c42550eSmrg . $dir/$name 6595ab47cfaaSmrg 6596ab47cfaaSmrg # Delete the libtool libraries and symlinks. 6597ab47cfaaSmrg for n in $library_names; do 6598ab47cfaaSmrg rmfiles="$rmfiles $objdir/$n" 6599ab47cfaaSmrg done 6600ab47cfaaSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6601ab47cfaaSmrg 6602ab47cfaaSmrg case "$mode" in 6603ab47cfaaSmrg clean) 6604ab47cfaaSmrg case " $library_names " in 6605ab47cfaaSmrg # " " in the beginning catches empty $dlname 6606ab47cfaaSmrg *" $dlname "*) ;; 6607ab47cfaaSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6608ab47cfaaSmrg esac 66095c42550eSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6610ab47cfaaSmrg ;; 6611ab47cfaaSmrg uninstall) 6612ab47cfaaSmrg if test -n "$library_names"; then 6613ab47cfaaSmrg # Do each command in the postuninstall commands. 66145c42550eSmrg cmds=$postuninstall_cmds 66155c42550eSmrg save_ifs="$IFS"; IFS='~' 66165c42550eSmrg for cmd in $cmds; do 66175c42550eSmrg IFS="$save_ifs" 66185c42550eSmrg eval cmd=\"$cmd\" 66195c42550eSmrg $show "$cmd" 66205c42550eSmrg $run eval "$cmd" 66215c42550eSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 66225c42550eSmrg exit_status=1 66235c42550eSmrg fi 66245c42550eSmrg done 66255c42550eSmrg IFS="$save_ifs" 6626ab47cfaaSmrg fi 6627ab47cfaaSmrg 6628ab47cfaaSmrg if test -n "$old_library"; then 6629ab47cfaaSmrg # Do each command in the old_postuninstall commands. 66305c42550eSmrg cmds=$old_postuninstall_cmds 66315c42550eSmrg save_ifs="$IFS"; IFS='~' 66325c42550eSmrg for cmd in $cmds; do 66335c42550eSmrg IFS="$save_ifs" 66345c42550eSmrg eval cmd=\"$cmd\" 66355c42550eSmrg $show "$cmd" 66365c42550eSmrg $run eval "$cmd" 66375c42550eSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 66385c42550eSmrg exit_status=1 66395c42550eSmrg fi 66405c42550eSmrg done 66415c42550eSmrg IFS="$save_ifs" 6642ab47cfaaSmrg fi 6643ab47cfaaSmrg # FIXME: should reinstall the best remaining shared library. 6644ab47cfaaSmrg ;; 6645ab47cfaaSmrg esac 6646ab47cfaaSmrg fi 6647ab47cfaaSmrg ;; 6648ab47cfaaSmrg 6649ab47cfaaSmrg *.lo) 6650ab47cfaaSmrg # Possibly a libtool object, so verify it. 66515c42550eSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6652ab47cfaaSmrg 6653ab47cfaaSmrg # Read the .lo file 66545c42550eSmrg . $dir/$name 6655ab47cfaaSmrg 6656ab47cfaaSmrg # Add PIC object to the list of files to remove. 66575c42550eSmrg if test -n "$pic_object" \ 66585c42550eSmrg && test "$pic_object" != none; then 6659ab47cfaaSmrg rmfiles="$rmfiles $dir/$pic_object" 6660ab47cfaaSmrg fi 6661ab47cfaaSmrg 6662ab47cfaaSmrg # Add non-PIC object to the list of files to remove. 66635c42550eSmrg if test -n "$non_pic_object" \ 66645c42550eSmrg && test "$non_pic_object" != none; then 6665ab47cfaaSmrg rmfiles="$rmfiles $dir/$non_pic_object" 6666ab47cfaaSmrg fi 6667ab47cfaaSmrg fi 6668ab47cfaaSmrg ;; 6669ab47cfaaSmrg 6670ab47cfaaSmrg *) 6671ab47cfaaSmrg if test "$mode" = clean ; then 6672ab47cfaaSmrg noexename=$name 6673ab47cfaaSmrg case $file in 6674ab47cfaaSmrg *.exe) 66755c42550eSmrg file=`$echo $file|${SED} 's,.exe$,,'` 66765c42550eSmrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6677ab47cfaaSmrg # $file with .exe has already been added to rmfiles, 6678ab47cfaaSmrg # add $file without .exe 6679ab47cfaaSmrg rmfiles="$rmfiles $file" 6680ab47cfaaSmrg ;; 6681ab47cfaaSmrg esac 6682ab47cfaaSmrg # Do a test to see if this is a libtool program. 66835c42550eSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 66845c42550eSmrg relink_command= 66855c42550eSmrg . $dir/$noexename 6686ab47cfaaSmrg 6687ab47cfaaSmrg # note $name still contains .exe if it was in $file originally 6688ab47cfaaSmrg # as does the version of $file that was added into $rmfiles 6689ab47cfaaSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6690ab47cfaaSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 6691ab47cfaaSmrg rmfiles="$rmfiles $objdir/lt-$name" 6692ab47cfaaSmrg fi 6693ab47cfaaSmrg if test "X$noexename" != "X$name" ; then 6694ab47cfaaSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6695ab47cfaaSmrg fi 6696ab47cfaaSmrg fi 6697ab47cfaaSmrg fi 6698ab47cfaaSmrg ;; 6699ab47cfaaSmrg esac 67005c42550eSmrg $show "$rm $rmfiles" 67015c42550eSmrg $run $rm $rmfiles || exit_status=1 6702ab47cfaaSmrg done 6703ab47cfaaSmrg objdir="$origobjdir" 6704ab47cfaaSmrg 6705ab47cfaaSmrg # Try to remove the ${objdir}s in the directories where we deleted files 6706ab47cfaaSmrg for dir in $rmdirs; do 6707ab47cfaaSmrg if test -d "$dir"; then 67085c42550eSmrg $show "rmdir $dir" 67095c42550eSmrg $run rmdir $dir >/dev/null 2>&1 6710ab47cfaaSmrg fi 6711ab47cfaaSmrg done 6712ab47cfaaSmrg 6713ab47cfaaSmrg exit $exit_status 67145c42550eSmrg ;; 6715ab47cfaaSmrg 67165c42550eSmrg "") 67175c42550eSmrg $echo "$modename: you must specify a MODE" 1>&2 67185c42550eSmrg $echo "$generic_help" 1>&2 67195c42550eSmrg exit $EXIT_FAILURE 67205c42550eSmrg ;; 67215c42550eSmrg esac 67221473d951Smrg 67235c42550eSmrg if test -z "$exec_cmd"; then 67245c42550eSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 67255c42550eSmrg $echo "$generic_help" 1>&2 67265c42550eSmrg exit $EXIT_FAILURE 67275c42550eSmrg fi 67285c42550eSmrgfi # test -z "$show_help" 6729ab47cfaaSmrg 6730ab47cfaaSmrgif test -n "$exec_cmd"; then 67315c42550eSmrg eval exec $exec_cmd 6732ab47cfaaSmrg exit $EXIT_FAILURE 6733ab47cfaaSmrgfi 6734ab47cfaaSmrg 67355c42550eSmrg# We need to display help for each of the modes. 67365c42550eSmrgcase $mode in 67375c42550eSmrg"") $echo \ 67385c42550eSmrg"Usage: $modename [OPTION]... [MODE-ARG]... 67395c42550eSmrg 67405c42550eSmrgProvide generalized library-building support services. 67415c42550eSmrg 67425c42550eSmrg --config show all configuration variables 67435c42550eSmrg --debug enable verbose shell tracing 67445c42550eSmrg-n, --dry-run display commands without modifying any files 67455c42550eSmrg --features display basic configuration information and exit 67465c42550eSmrg --finish same as \`--mode=finish' 67475c42550eSmrg --help display this help message and exit 67485c42550eSmrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 67495c42550eSmrg --quiet same as \`--silent' 67505c42550eSmrg --silent don't print informational messages 67515c42550eSmrg --tag=TAG use configuration variables from tag TAG 67525c42550eSmrg --version print version information 67535c42550eSmrg 67545c42550eSmrgMODE must be one of the following: 67555c42550eSmrg 67565c42550eSmrg clean remove files from the build directory 67575c42550eSmrg compile compile a source file into a libtool object 67585c42550eSmrg execute automatically set library path, then run a program 67595c42550eSmrg finish complete the installation of libtool libraries 67605c42550eSmrg install install libraries or executables 67615c42550eSmrg link create a library or an executable 67625c42550eSmrg uninstall remove libraries from an installed directory 67635c42550eSmrg 67645c42550eSmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 67655c42550eSmrga more detailed description of MODE. 67665c42550eSmrg 67675c42550eSmrgReport bugs to <bug-libtool@gnu.org>." 67685c42550eSmrg exit $EXIT_SUCCESS 67695c42550eSmrg ;; 67705c42550eSmrg 67715c42550eSmrgclean) 67725c42550eSmrg $echo \ 67735c42550eSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 67745c42550eSmrg 67755c42550eSmrgRemove files from the build directory. 67765c42550eSmrg 67775c42550eSmrgRM is the name of the program to use to delete files associated with each FILE 67785c42550eSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 67795c42550eSmrgto RM. 67805c42550eSmrg 67815c42550eSmrgIf FILE is a libtool library, object or program, all the files associated 67825c42550eSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 67835c42550eSmrg ;; 67845c42550eSmrg 67855c42550eSmrgcompile) 67865c42550eSmrg $echo \ 67875c42550eSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 67885c42550eSmrg 67895c42550eSmrgCompile a source file into a libtool library object. 67905c42550eSmrg 67915c42550eSmrgThis mode accepts the following additional options: 67925c42550eSmrg 67935c42550eSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 67945c42550eSmrg -prefer-pic try to building PIC objects only 67955c42550eSmrg -prefer-non-pic try to building non-PIC objects only 67965c42550eSmrg -static always build a \`.o' file suitable for static linking 67975c42550eSmrg 67985c42550eSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 67995c42550eSmrgfrom the given SOURCEFILE. 68005c42550eSmrg 68015c42550eSmrgThe output file name is determined by removing the directory component from 68025c42550eSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 68035c42550eSmrglibrary object suffix, \`.lo'." 68045c42550eSmrg ;; 68055c42550eSmrg 68065c42550eSmrgexecute) 68075c42550eSmrg $echo \ 68085c42550eSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 68095c42550eSmrg 68105c42550eSmrgAutomatically set library path, then run a program. 68115c42550eSmrg 68125c42550eSmrgThis mode accepts the following additional options: 68135c42550eSmrg 68145c42550eSmrg -dlopen FILE add the directory containing FILE to the library path 68155c42550eSmrg 68165c42550eSmrgThis mode sets the library path environment variable according to \`-dlopen' 68175c42550eSmrgflags. 68185c42550eSmrg 68195c42550eSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 68205c42550eSmrginto their corresponding uninstalled binary, and any of their required library 68215c42550eSmrgdirectories are added to the library path. 68225c42550eSmrg 68235c42550eSmrgThen, COMMAND is executed, with ARGS as arguments." 68245c42550eSmrg ;; 68255c42550eSmrg 68265c42550eSmrgfinish) 68275c42550eSmrg $echo \ 68285c42550eSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 68295c42550eSmrg 68305c42550eSmrgComplete the installation of libtool libraries. 68315c42550eSmrg 68325c42550eSmrgEach LIBDIR is a directory that contains libtool libraries. 68335c42550eSmrg 68345c42550eSmrgThe commands that this mode executes may require superuser privileges. Use 68355c42550eSmrgthe \`--dry-run' option if you just want to see what would be executed." 68365c42550eSmrg ;; 68375c42550eSmrg 68385c42550eSmrginstall) 68395c42550eSmrg $echo \ 68405c42550eSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 68415c42550eSmrg 68425c42550eSmrgInstall executables or libraries. 68435c42550eSmrg 68445c42550eSmrgINSTALL-COMMAND is the installation command. The first component should be 68455c42550eSmrgeither the \`install' or \`cp' program. 68465c42550eSmrg 68475c42550eSmrgThe rest of the components are interpreted as arguments to that command (only 68485c42550eSmrgBSD-compatible install options are recognized)." 68495c42550eSmrg ;; 68505c42550eSmrg 68515c42550eSmrglink) 68525c42550eSmrg $echo \ 68535c42550eSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 68545c42550eSmrg 68555c42550eSmrgLink object files or libraries together to form another library, or to 68565c42550eSmrgcreate an executable program. 6857ab47cfaaSmrg 68585c42550eSmrgLINK-COMMAND is a command using the C compiler that you would use to create 68595c42550eSmrga program from several object files. 68605c42550eSmrg 68615c42550eSmrgThe following components of LINK-COMMAND are treated specially: 68625c42550eSmrg 68635c42550eSmrg -all-static do not do any dynamic linking at all 68645c42550eSmrg -avoid-version do not add a version suffix if possible 68655c42550eSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 68665c42550eSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 68675c42550eSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 68685c42550eSmrg -export-symbols SYMFILE 68695c42550eSmrg try to export only the symbols listed in SYMFILE 68705c42550eSmrg -export-symbols-regex REGEX 68715c42550eSmrg try to export only the symbols matching REGEX 68725c42550eSmrg -LLIBDIR search LIBDIR for required installed libraries 68735c42550eSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 68745c42550eSmrg -module build a library that can dlopened 68755c42550eSmrg -no-fast-install disable the fast-install mode 68765c42550eSmrg -no-install link a not-installable executable 68775c42550eSmrg -no-undefined declare that a library does not refer to external symbols 68785c42550eSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 68795c42550eSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 68805c42550eSmrg -precious-files-regex REGEX 68815c42550eSmrg don't remove output files matching REGEX 68825c42550eSmrg -release RELEASE specify package release information 68835c42550eSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 68845c42550eSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 68855c42550eSmrg -static do not do any dynamic linking of uninstalled libtool libraries 68865c42550eSmrg -static-libtool-libs 68875c42550eSmrg do not do any dynamic linking of libtool libraries 68885c42550eSmrg -version-info CURRENT[:REVISION[:AGE]] 68895c42550eSmrg specify library version info [each variable defaults to 0] 68905c42550eSmrg 68915c42550eSmrgAll other options (arguments beginning with \`-') are ignored. 68925c42550eSmrg 68935c42550eSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 68945c42550eSmrgtreated as uninstalled libtool libraries, other files are standard or library 68955c42550eSmrgobject files. 68965c42550eSmrg 68975c42550eSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 68985c42550eSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 68995c42550eSmrgrequired, except when creating a convenience library. 69005c42550eSmrg 69015c42550eSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 69025c42550eSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 69035c42550eSmrg 69045c42550eSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 69055c42550eSmrgis created, otherwise an executable program is created." 69065c42550eSmrg ;; 69075c42550eSmrg 69085c42550eSmrguninstall) 69095c42550eSmrg $echo \ 69105c42550eSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 69115c42550eSmrg 69125c42550eSmrgRemove libraries from an installation directory. 69135c42550eSmrg 69145c42550eSmrgRM is the name of the program to use to delete files associated with each FILE 69155c42550eSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 69165c42550eSmrgto RM. 69175c42550eSmrg 69185c42550eSmrgIf FILE is a libtool library, all the files associated with it are deleted. 69195c42550eSmrgOtherwise, only FILE itself is deleted using RM." 69205c42550eSmrg ;; 69215c42550eSmrg 69225c42550eSmrg*) 69235c42550eSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 69245c42550eSmrg $echo "$help" 1>&2 69255c42550eSmrg exit $EXIT_FAILURE 69265c42550eSmrg ;; 69275c42550eSmrgesac 69285c42550eSmrg 69295c42550eSmrg$echo 69305c42550eSmrg$echo "Try \`$modename --help' for more information about other modes." 69315c42550eSmrg 69325c42550eSmrgexit $? 6933ab47cfaaSmrg 6934ab47cfaaSmrg# The TAGs below are defined such that we never get into a situation 6935ab47cfaaSmrg# in which we disable both kinds of libraries. Given conflicting 6936ab47cfaaSmrg# choices, we go for a static library, that is the most portable, 6937ab47cfaaSmrg# since we can't tell whether shared libraries were disabled because 6938ab47cfaaSmrg# the user asked for that or because the platform doesn't support 6939ab47cfaaSmrg# them. This is particularly important on AIX, because we don't 6940ab47cfaaSmrg# support having both static and shared libraries enabled at the same 6941ab47cfaaSmrg# time on that platform, so we default to a shared-only configuration. 6942ab47cfaaSmrg# If a disable-shared tag is given, we'll fallback to a static-only 6943ab47cfaaSmrg# configuration. But we'll never go from static-only to shared-only. 6944ab47cfaaSmrg 6945ab47cfaaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 69465c42550eSmrgdisable_libs=shared 6947ab47cfaaSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 6948ab47cfaaSmrg 6949ab47cfaaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 69505c42550eSmrgdisable_libs=static 6951ab47cfaaSmrg# ### END LIBTOOL TAG CONFIG: disable-static 6952ab47cfaaSmrg 6953ab47cfaaSmrg# Local Variables: 6954ab47cfaaSmrg# mode:shell-script 6955ab47cfaaSmrg# sh-indentation:2 6956ab47cfaaSmrg# End: 6957