ltmain.sh revision e5410a46
11f0ac6a5Smrg# ltmain.sh - Provide generalized library-building support services. 21f0ac6a5Smrg# NOTE: Changing this file will not affect anything until you rerun configure. 31f0ac6a5Smrg# 4e5410a46Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5e5410a46Smrg# 2007, 2008 Free Software Foundation, Inc. 61f0ac6a5Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 71f0ac6a5Smrg# 81f0ac6a5Smrg# This program is free software; you can redistribute it and/or modify 91f0ac6a5Smrg# it under the terms of the GNU General Public License as published by 101f0ac6a5Smrg# the Free Software Foundation; either version 2 of the License, or 111f0ac6a5Smrg# (at your option) any later version. 121f0ac6a5Smrg# 131f0ac6a5Smrg# This program is distributed in the hope that it will be useful, but 141f0ac6a5Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 151f0ac6a5Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 161f0ac6a5Smrg# General Public License for more details. 171f0ac6a5Smrg# 181f0ac6a5Smrg# You should have received a copy of the GNU General Public License 191f0ac6a5Smrg# along with this program; if not, write to the Free Software 201f0ac6a5Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 211f0ac6a5Smrg# 221f0ac6a5Smrg# As a special exception to the GNU General Public License, if you 231f0ac6a5Smrg# distribute this file as part of a program that contains a 241f0ac6a5Smrg# configuration script generated by Autoconf, you may include it under 251f0ac6a5Smrg# the same distribution terms that you use for the rest of that program. 261f0ac6a5Smrg 271f0ac6a5Smrgbasename="s,^.*/,,g" 281f0ac6a5Smrg 291f0ac6a5Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 301f0ac6a5Smrg# is ksh but when the shell is invoked as "sh" and the current value of 311f0ac6a5Smrg# the _XPG environment variable is not equal to 1 (one), the special 321f0ac6a5Smrg# positional parameter $0, within a function call, is the name of the 331f0ac6a5Smrg# function. 341f0ac6a5Smrgprogpath="$0" 351f0ac6a5Smrg 361f0ac6a5Smrg# The name of this program: 371f0ac6a5Smrgprogname=`echo "$progpath" | $SED $basename` 381f0ac6a5Smrgmodename="$progname" 391f0ac6a5Smrg 401f0ac6a5Smrg# Global variables: 411f0ac6a5SmrgEXIT_SUCCESS=0 421f0ac6a5SmrgEXIT_FAILURE=1 431f0ac6a5Smrg 441f0ac6a5SmrgPROGRAM=ltmain.sh 451f0ac6a5SmrgPACKAGE=libtool 46e5410a46SmrgVERSION=1.5.26 47e5410a46SmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" 48e5410a46Smrg 49e5410a46Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 50e5410a46Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 51e5410a46Smrg emulate sh 52e5410a46Smrg NULLCMD=: 53e5410a46Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 54e5410a46Smrg # is contrary to our usage. Disable this feature. 55e5410a46Smrg alias -g '${1+"$@"}'='"$@"' 561f0ac6a5Smrg setopt NO_GLOB_SUBST 57e5410a46Smrgelse 58e5410a46Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 591f0ac6a5Smrgfi 60e5410a46SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 61e5410a46SmrgDUALCASE=1; export DUALCASE # for MKS sh 621f0ac6a5Smrg 631f0ac6a5Smrg# Check that we have a working $echo. 641f0ac6a5Smrgif test "X$1" = X--no-reexec; then 651f0ac6a5Smrg # Discard the --no-reexec flag, and continue. 661f0ac6a5Smrg shift 671f0ac6a5Smrgelif test "X$1" = X--fallback-echo; then 681f0ac6a5Smrg # Avoid inline document here, it may be left over 691f0ac6a5Smrg : 701f0ac6a5Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 711f0ac6a5Smrg # Yippee, $echo works! 721f0ac6a5Smrg : 731f0ac6a5Smrgelse 741f0ac6a5Smrg # Restart under the correct shell, and then maybe $echo will work. 751f0ac6a5Smrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 761f0ac6a5Smrgfi 771f0ac6a5Smrg 781f0ac6a5Smrgif test "X$1" = X--fallback-echo; then 791f0ac6a5Smrg # used as fallback echo 801f0ac6a5Smrg shift 811f0ac6a5Smrg cat <<EOF 821f0ac6a5Smrg$* 831f0ac6a5SmrgEOF 841f0ac6a5Smrg exit $EXIT_SUCCESS 851f0ac6a5Smrgfi 861f0ac6a5Smrg 871f0ac6a5Smrgdefault_mode= 881f0ac6a5Smrghelp="Try \`$progname --help' for more information." 891f0ac6a5Smrgmagic="%%%MAGIC variable%%%" 901f0ac6a5Smrgmkdir="mkdir" 911f0ac6a5Smrgmv="mv -f" 921f0ac6a5Smrgrm="rm -f" 931f0ac6a5Smrg 941f0ac6a5Smrg# Sed substitution that helps us do robust quoting. It backslashifies 951f0ac6a5Smrg# metacharacters that are still active within double-quoted strings. 961f0ac6a5SmrgXsed="${SED}"' -e 1s/^X//' 971f0ac6a5Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 981f0ac6a5Smrg# test EBCDIC or ASCII 991f0ac6a5Smrgcase `echo X|tr X '\101'` in 1001f0ac6a5Smrg A) # ASCII based system 1011f0ac6a5Smrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 1021f0ac6a5Smrg SP2NL='tr \040 \012' 1031f0ac6a5Smrg NL2SP='tr \015\012 \040\040' 1041f0ac6a5Smrg ;; 1051f0ac6a5Smrg *) # EBCDIC based system 1061f0ac6a5Smrg SP2NL='tr \100 \n' 1071f0ac6a5Smrg NL2SP='tr \r\n \100\100' 1081f0ac6a5Smrg ;; 1091f0ac6a5Smrgesac 1101f0ac6a5Smrg 1111f0ac6a5Smrg# NLS nuisances. 1121f0ac6a5Smrg# Only set LANG and LC_ALL to C if already set. 1131f0ac6a5Smrg# These must not be set unconditionally because not all systems understand 1141f0ac6a5Smrg# e.g. LANG=C (notably SCO). 1151f0ac6a5Smrg# We save the old values to restore during execute mode. 116e5410a46Smrglt_env= 117e5410a46Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 118e5410a46Smrgdo 119e5410a46Smrg eval "if test \"\${$lt_var+set}\" = set; then 120e5410a46Smrg save_$lt_var=\$$lt_var 121e5410a46Smrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 122e5410a46Smrg $lt_var=C 123e5410a46Smrg export $lt_var 124e5410a46Smrg fi" 125e5410a46Smrgdone 126e5410a46Smrg 127e5410a46Smrgif test -n "$lt_env"; then 128e5410a46Smrg lt_env="env $lt_env" 1291f0ac6a5Smrgfi 1301f0ac6a5Smrg 1311f0ac6a5Smrg# Make sure IFS has a sensible default 1321f0ac6a5Smrglt_nl=' 1331f0ac6a5Smrg' 1341f0ac6a5SmrgIFS=" $lt_nl" 1351f0ac6a5Smrg 1361f0ac6a5Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1371f0ac6a5Smrg $echo "$modename: not configured to build any kind of library" 1>&2 1381f0ac6a5Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1391f0ac6a5Smrg exit $EXIT_FAILURE 1401f0ac6a5Smrgfi 1411f0ac6a5Smrg 1421f0ac6a5Smrg# Global variables. 1431f0ac6a5Smrgmode=$default_mode 1441f0ac6a5Smrgnonopt= 1451f0ac6a5Smrgprev= 1461f0ac6a5Smrgprevopt= 1471f0ac6a5Smrgrun= 1481f0ac6a5Smrgshow="$echo" 1491f0ac6a5Smrgshow_help= 1501f0ac6a5Smrgexecute_dlfiles= 1511f0ac6a5Smrgduplicate_deps=no 1521f0ac6a5Smrgpreserve_args= 1531f0ac6a5Smrglo2o="s/\\.lo\$/.${objext}/" 1541f0ac6a5Smrgo2lo="s/\\.${objext}\$/.lo/" 155e5410a46Smrgextracted_archives= 156e5410a46Smrgextracted_serial=0 1571f0ac6a5Smrg 1581f0ac6a5Smrg##################################### 1591f0ac6a5Smrg# Shell function definitions: 1601f0ac6a5Smrg# This seems to be the best place for them 1611f0ac6a5Smrg 1621f0ac6a5Smrg# func_mktempdir [string] 1631f0ac6a5Smrg# Make a temporary directory that won't clash with other running 1641f0ac6a5Smrg# libtool processes, and avoids race conditions if possible. If 1651f0ac6a5Smrg# given, STRING is the basename for that directory. 1661f0ac6a5Smrgfunc_mktempdir () 1671f0ac6a5Smrg{ 1681f0ac6a5Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 1691f0ac6a5Smrg 1701f0ac6a5Smrg if test "$run" = ":"; then 1711f0ac6a5Smrg # Return a directory name, but don't create it in dry-run mode 1721f0ac6a5Smrg my_tmpdir="${my_template}-$$" 1731f0ac6a5Smrg else 1741f0ac6a5Smrg 1751f0ac6a5Smrg # If mktemp works, use that first and foremost 1761f0ac6a5Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 1771f0ac6a5Smrg 1781f0ac6a5Smrg if test ! -d "$my_tmpdir"; then 1791f0ac6a5Smrg # Failing that, at least try and use $RANDOM to avoid a race 1801f0ac6a5Smrg my_tmpdir="${my_template}-${RANDOM-0}$$" 1811f0ac6a5Smrg 1821f0ac6a5Smrg save_mktempdir_umask=`umask` 1831f0ac6a5Smrg umask 0077 1841f0ac6a5Smrg $mkdir "$my_tmpdir" 1851f0ac6a5Smrg umask $save_mktempdir_umask 1861f0ac6a5Smrg fi 1871f0ac6a5Smrg 1881f0ac6a5Smrg # If we're not in dry-run mode, bomb out on failure 1891f0ac6a5Smrg test -d "$my_tmpdir" || { 1901f0ac6a5Smrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 1911f0ac6a5Smrg exit $EXIT_FAILURE 1921f0ac6a5Smrg } 1931f0ac6a5Smrg fi 1941f0ac6a5Smrg 1951f0ac6a5Smrg $echo "X$my_tmpdir" | $Xsed 1961f0ac6a5Smrg} 1971f0ac6a5Smrg 1981f0ac6a5Smrg 1991f0ac6a5Smrg# func_win32_libid arg 2001f0ac6a5Smrg# return the library type of file 'arg' 2011f0ac6a5Smrg# 2021f0ac6a5Smrg# Need a lot of goo to handle *both* DLLs and import libs 2031f0ac6a5Smrg# Has to be a shell function in order to 'eat' the argument 2041f0ac6a5Smrg# that is supplied when $file_magic_command is called. 2051f0ac6a5Smrgfunc_win32_libid () 2061f0ac6a5Smrg{ 2071f0ac6a5Smrg win32_libid_type="unknown" 2081f0ac6a5Smrg win32_fileres=`file -L $1 2>/dev/null` 2091f0ac6a5Smrg case $win32_fileres in 2101f0ac6a5Smrg *ar\ archive\ import\ library*) # definitely import 2111f0ac6a5Smrg win32_libid_type="x86 archive import" 2121f0ac6a5Smrg ;; 2131f0ac6a5Smrg *ar\ archive*) # could be an import, or static 2141f0ac6a5Smrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 2151f0ac6a5Smrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 2161f0ac6a5Smrg win32_nmres=`eval $NM -f posix -A $1 | \ 217e5410a46Smrg $SED -n -e '1,100{ 218e5410a46Smrg / I /{ 219e5410a46Smrg s,.*,import, 220e5410a46Smrg p 221e5410a46Smrg q 222e5410a46Smrg } 223e5410a46Smrg }'` 2241f0ac6a5Smrg case $win32_nmres in 2251f0ac6a5Smrg import*) win32_libid_type="x86 archive import";; 2261f0ac6a5Smrg *) win32_libid_type="x86 archive static";; 2271f0ac6a5Smrg esac 2281f0ac6a5Smrg fi 2291f0ac6a5Smrg ;; 2301f0ac6a5Smrg *DLL*) 2311f0ac6a5Smrg win32_libid_type="x86 DLL" 2321f0ac6a5Smrg ;; 2331f0ac6a5Smrg *executable*) # but shell scripts are "executable" too... 2341f0ac6a5Smrg case $win32_fileres in 2351f0ac6a5Smrg *MS\ Windows\ PE\ Intel*) 2361f0ac6a5Smrg win32_libid_type="x86 DLL" 2371f0ac6a5Smrg ;; 2381f0ac6a5Smrg esac 2391f0ac6a5Smrg ;; 2401f0ac6a5Smrg esac 2411f0ac6a5Smrg $echo $win32_libid_type 2421f0ac6a5Smrg} 2431f0ac6a5Smrg 2441f0ac6a5Smrg 2451f0ac6a5Smrg# func_infer_tag arg 2461f0ac6a5Smrg# Infer tagged configuration to use if any are available and 2471f0ac6a5Smrg# if one wasn't chosen via the "--tag" command line option. 2481f0ac6a5Smrg# Only attempt this if the compiler in the base compile 2491f0ac6a5Smrg# command doesn't match the default compiler. 2501f0ac6a5Smrg# arg is usually of the form 'gcc ...' 2511f0ac6a5Smrgfunc_infer_tag () 2521f0ac6a5Smrg{ 2531f0ac6a5Smrg if test -n "$available_tags" && test -z "$tagname"; then 2541f0ac6a5Smrg CC_quoted= 2551f0ac6a5Smrg for arg in $CC; do 2561f0ac6a5Smrg case $arg in 2571f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2581f0ac6a5Smrg arg="\"$arg\"" 2591f0ac6a5Smrg ;; 2601f0ac6a5Smrg esac 2611f0ac6a5Smrg CC_quoted="$CC_quoted $arg" 2621f0ac6a5Smrg done 2631f0ac6a5Smrg case $@ in 2641f0ac6a5Smrg # Blanks in the command may have been stripped by the calling shell, 2651f0ac6a5Smrg # but not from the CC environment variable when configure was run. 2661f0ac6a5Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 2671f0ac6a5Smrg # Blanks at the start of $base_compile will cause this to fail 2681f0ac6a5Smrg # if we don't check for them as well. 2691f0ac6a5Smrg *) 2701f0ac6a5Smrg for z in $available_tags; do 2711f0ac6a5Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 2721f0ac6a5Smrg # Evaluate the configuration. 2731f0ac6a5Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 2741f0ac6a5Smrg CC_quoted= 2751f0ac6a5Smrg for arg in $CC; do 2761f0ac6a5Smrg # Double-quote args containing other shell metacharacters. 2771f0ac6a5Smrg case $arg in 2781f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 2791f0ac6a5Smrg arg="\"$arg\"" 2801f0ac6a5Smrg ;; 2811f0ac6a5Smrg esac 2821f0ac6a5Smrg CC_quoted="$CC_quoted $arg" 2831f0ac6a5Smrg done 2841f0ac6a5Smrg case "$@ " in 2851f0ac6a5Smrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 2861f0ac6a5Smrg # The compiler in the base compile command matches 2871f0ac6a5Smrg # the one in the tagged configuration. 2881f0ac6a5Smrg # Assume this is the tagged configuration we want. 2891f0ac6a5Smrg tagname=$z 2901f0ac6a5Smrg break 2911f0ac6a5Smrg ;; 2921f0ac6a5Smrg esac 293e5410a46Smrg fi 2941f0ac6a5Smrg done 2951f0ac6a5Smrg # If $tagname still isn't set, then no tagged configuration 2961f0ac6a5Smrg # was found and let the user know that the "--tag" command 2971f0ac6a5Smrg # line option must be used. 2981f0ac6a5Smrg if test -z "$tagname"; then 2991f0ac6a5Smrg $echo "$modename: unable to infer tagged configuration" 3001f0ac6a5Smrg $echo "$modename: specify a tag with \`--tag'" 1>&2 3011f0ac6a5Smrg exit $EXIT_FAILURE 3021f0ac6a5Smrg# else 3031f0ac6a5Smrg# $echo "$modename: using $tagname tagged configuration" 3041f0ac6a5Smrg fi 3051f0ac6a5Smrg ;; 3061f0ac6a5Smrg esac 3071f0ac6a5Smrg fi 3081f0ac6a5Smrg} 3091f0ac6a5Smrg 3101f0ac6a5Smrg 3111f0ac6a5Smrg# func_extract_an_archive dir oldlib 3121f0ac6a5Smrgfunc_extract_an_archive () 3131f0ac6a5Smrg{ 3141f0ac6a5Smrg f_ex_an_ar_dir="$1"; shift 3151f0ac6a5Smrg f_ex_an_ar_oldlib="$1" 3161f0ac6a5Smrg 3171f0ac6a5Smrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 3181f0ac6a5Smrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 3191f0ac6a5Smrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3201f0ac6a5Smrg : 3211f0ac6a5Smrg else 3221f0ac6a5Smrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 3231f0ac6a5Smrg exit $EXIT_FAILURE 3241f0ac6a5Smrg fi 3251f0ac6a5Smrg} 3261f0ac6a5Smrg 3271f0ac6a5Smrg# func_extract_archives gentop oldlib ... 3281f0ac6a5Smrgfunc_extract_archives () 3291f0ac6a5Smrg{ 3301f0ac6a5Smrg my_gentop="$1"; shift 3311f0ac6a5Smrg my_oldlibs=${1+"$@"} 3321f0ac6a5Smrg my_oldobjs="" 3331f0ac6a5Smrg my_xlib="" 3341f0ac6a5Smrg my_xabs="" 3351f0ac6a5Smrg my_xdir="" 3361f0ac6a5Smrg my_status="" 3371f0ac6a5Smrg 3381f0ac6a5Smrg $show "${rm}r $my_gentop" 3391f0ac6a5Smrg $run ${rm}r "$my_gentop" 3401f0ac6a5Smrg $show "$mkdir $my_gentop" 3411f0ac6a5Smrg $run $mkdir "$my_gentop" 3421f0ac6a5Smrg my_status=$? 3431f0ac6a5Smrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 3441f0ac6a5Smrg exit $my_status 3451f0ac6a5Smrg fi 3461f0ac6a5Smrg 3471f0ac6a5Smrg for my_xlib in $my_oldlibs; do 3481f0ac6a5Smrg # Extract the objects. 3491f0ac6a5Smrg case $my_xlib in 3501f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3511f0ac6a5Smrg *) my_xabs=`pwd`"/$my_xlib" ;; 3521f0ac6a5Smrg esac 3531f0ac6a5Smrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 354e5410a46Smrg my_xlib_u=$my_xlib 355e5410a46Smrg while :; do 356e5410a46Smrg case " $extracted_archives " in 357e5410a46Smrg *" $my_xlib_u "*) 358e5410a46Smrg extracted_serial=`expr $extracted_serial + 1` 359e5410a46Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 360e5410a46Smrg *) break ;; 361e5410a46Smrg esac 362e5410a46Smrg done 363e5410a46Smrg extracted_archives="$extracted_archives $my_xlib_u" 364e5410a46Smrg my_xdir="$my_gentop/$my_xlib_u" 3651f0ac6a5Smrg 3661f0ac6a5Smrg $show "${rm}r $my_xdir" 3671f0ac6a5Smrg $run ${rm}r "$my_xdir" 3681f0ac6a5Smrg $show "$mkdir $my_xdir" 3691f0ac6a5Smrg $run $mkdir "$my_xdir" 3701f0ac6a5Smrg exit_status=$? 3711f0ac6a5Smrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 3721f0ac6a5Smrg exit $exit_status 3731f0ac6a5Smrg fi 3741f0ac6a5Smrg case $host in 3751f0ac6a5Smrg *-darwin*) 3761f0ac6a5Smrg $show "Extracting $my_xabs" 3771f0ac6a5Smrg # Do not bother doing anything if just a dry run 3781f0ac6a5Smrg if test -z "$run"; then 3791f0ac6a5Smrg darwin_orig_dir=`pwd` 3801f0ac6a5Smrg cd $my_xdir || exit $? 3811f0ac6a5Smrg darwin_archive=$my_xabs 3821f0ac6a5Smrg darwin_curdir=`pwd` 3831f0ac6a5Smrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 3841f0ac6a5Smrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 3851f0ac6a5Smrg if test -n "$darwin_arches"; then 3861f0ac6a5Smrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 3871f0ac6a5Smrg darwin_arch= 3881f0ac6a5Smrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 3891f0ac6a5Smrg for darwin_arch in $darwin_arches ; do 3901f0ac6a5Smrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3911f0ac6a5Smrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3921f0ac6a5Smrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3931f0ac6a5Smrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3941f0ac6a5Smrg cd "$darwin_curdir" 3951f0ac6a5Smrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3961f0ac6a5Smrg done # $darwin_arches 3971f0ac6a5Smrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 3981f0ac6a5Smrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 3991f0ac6a5Smrg darwin_file= 4001f0ac6a5Smrg darwin_files= 4011f0ac6a5Smrg for darwin_file in $darwin_filelist; do 4021f0ac6a5Smrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 4031f0ac6a5Smrg lipo -create -output "$darwin_file" $darwin_files 4041f0ac6a5Smrg done # $darwin_filelist 4051f0ac6a5Smrg ${rm}r unfat-$$ 4061f0ac6a5Smrg cd "$darwin_orig_dir" 4071f0ac6a5Smrg else 4081f0ac6a5Smrg cd "$darwin_orig_dir" 4091f0ac6a5Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 4101f0ac6a5Smrg fi # $darwin_arches 4111f0ac6a5Smrg fi # $run 4121f0ac6a5Smrg ;; 4131f0ac6a5Smrg *) 4141f0ac6a5Smrg func_extract_an_archive "$my_xdir" "$my_xabs" 4151f0ac6a5Smrg ;; 4161f0ac6a5Smrg esac 4171f0ac6a5Smrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 4181f0ac6a5Smrg done 4191f0ac6a5Smrg func_extract_archives_result="$my_oldobjs" 4201f0ac6a5Smrg} 4211f0ac6a5Smrg# End of Shell function definitions 4221f0ac6a5Smrg##################################### 4231f0ac6a5Smrg 4241f0ac6a5Smrg# Darwin sucks 4251f0ac6a5Smrgeval std_shrext=\"$shrext_cmds\" 4261f0ac6a5Smrg 4271f0ac6a5Smrgdisable_libs=no 4281f0ac6a5Smrg 4291f0ac6a5Smrg# Parse our command line options once, thoroughly. 4301f0ac6a5Smrgwhile test "$#" -gt 0 4311f0ac6a5Smrgdo 4321f0ac6a5Smrg arg="$1" 4331f0ac6a5Smrg shift 4341f0ac6a5Smrg 4351f0ac6a5Smrg case $arg in 4361f0ac6a5Smrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 4371f0ac6a5Smrg *) optarg= ;; 4381f0ac6a5Smrg esac 4391f0ac6a5Smrg 4401f0ac6a5Smrg # If the previous option needs an argument, assign it. 4411f0ac6a5Smrg if test -n "$prev"; then 4421f0ac6a5Smrg case $prev in 4431f0ac6a5Smrg execute_dlfiles) 4441f0ac6a5Smrg execute_dlfiles="$execute_dlfiles $arg" 4451f0ac6a5Smrg ;; 4461f0ac6a5Smrg tag) 4471f0ac6a5Smrg tagname="$arg" 4481f0ac6a5Smrg preserve_args="${preserve_args}=$arg" 4491f0ac6a5Smrg 4501f0ac6a5Smrg # Check whether tagname contains only valid characters 4511f0ac6a5Smrg case $tagname in 4521f0ac6a5Smrg *[!-_A-Za-z0-9,/]*) 4531f0ac6a5Smrg $echo "$progname: invalid tag name: $tagname" 1>&2 4541f0ac6a5Smrg exit $EXIT_FAILURE 4551f0ac6a5Smrg ;; 4561f0ac6a5Smrg esac 4571f0ac6a5Smrg 4581f0ac6a5Smrg case $tagname in 4591f0ac6a5Smrg CC) 4601f0ac6a5Smrg # Don't test for the "default" C tag, as we know, it's there, but 4611f0ac6a5Smrg # not specially marked. 4621f0ac6a5Smrg ;; 4631f0ac6a5Smrg *) 4641f0ac6a5Smrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 4651f0ac6a5Smrg taglist="$taglist $tagname" 4661f0ac6a5Smrg # Evaluate the configuration. 4671f0ac6a5Smrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 4681f0ac6a5Smrg else 4691f0ac6a5Smrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 4701f0ac6a5Smrg fi 4711f0ac6a5Smrg ;; 4721f0ac6a5Smrg esac 4731f0ac6a5Smrg ;; 4741f0ac6a5Smrg *) 4751f0ac6a5Smrg eval "$prev=\$arg" 4761f0ac6a5Smrg ;; 4771f0ac6a5Smrg esac 4781f0ac6a5Smrg 4791f0ac6a5Smrg prev= 4801f0ac6a5Smrg prevopt= 4811f0ac6a5Smrg continue 4821f0ac6a5Smrg fi 4831f0ac6a5Smrg 4841f0ac6a5Smrg # Have we seen a non-optional argument yet? 4851f0ac6a5Smrg case $arg in 4861f0ac6a5Smrg --help) 4871f0ac6a5Smrg show_help=yes 4881f0ac6a5Smrg ;; 4891f0ac6a5Smrg 4901f0ac6a5Smrg --version) 491e5410a46Smrg echo "\ 492e5410a46Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 493e5410a46Smrg 494e5410a46SmrgCopyright (C) 2008 Free Software Foundation, Inc. 495e5410a46SmrgThis is free software; see the source for copying conditions. There is NO 496e5410a46Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 4971f0ac6a5Smrg exit $? 4981f0ac6a5Smrg ;; 4991f0ac6a5Smrg 5001f0ac6a5Smrg --config) 5011f0ac6a5Smrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 5021f0ac6a5Smrg # Now print the configurations for the tags. 5031f0ac6a5Smrg for tagname in $taglist; do 5041f0ac6a5Smrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 5051f0ac6a5Smrg done 5061f0ac6a5Smrg exit $? 5071f0ac6a5Smrg ;; 5081f0ac6a5Smrg 5091f0ac6a5Smrg --debug) 5101f0ac6a5Smrg $echo "$progname: enabling shell trace mode" 5111f0ac6a5Smrg set -x 5121f0ac6a5Smrg preserve_args="$preserve_args $arg" 5131f0ac6a5Smrg ;; 5141f0ac6a5Smrg 5151f0ac6a5Smrg --dry-run | -n) 5161f0ac6a5Smrg run=: 5171f0ac6a5Smrg ;; 5181f0ac6a5Smrg 5191f0ac6a5Smrg --features) 5201f0ac6a5Smrg $echo "host: $host" 5211f0ac6a5Smrg if test "$build_libtool_libs" = yes; then 5221f0ac6a5Smrg $echo "enable shared libraries" 5231f0ac6a5Smrg else 5241f0ac6a5Smrg $echo "disable shared libraries" 5251f0ac6a5Smrg fi 5261f0ac6a5Smrg if test "$build_old_libs" = yes; then 5271f0ac6a5Smrg $echo "enable static libraries" 5281f0ac6a5Smrg else 5291f0ac6a5Smrg $echo "disable static libraries" 5301f0ac6a5Smrg fi 5311f0ac6a5Smrg exit $? 5321f0ac6a5Smrg ;; 5331f0ac6a5Smrg 5341f0ac6a5Smrg --finish) mode="finish" ;; 5351f0ac6a5Smrg 5361f0ac6a5Smrg --mode) prevopt="--mode" prev=mode ;; 5371f0ac6a5Smrg --mode=*) mode="$optarg" ;; 5381f0ac6a5Smrg 5391f0ac6a5Smrg --preserve-dup-deps) duplicate_deps="yes" ;; 5401f0ac6a5Smrg 5411f0ac6a5Smrg --quiet | --silent) 5421f0ac6a5Smrg show=: 5431f0ac6a5Smrg preserve_args="$preserve_args $arg" 5441f0ac6a5Smrg ;; 5451f0ac6a5Smrg 5461f0ac6a5Smrg --tag) 5471f0ac6a5Smrg prevopt="--tag" 5481f0ac6a5Smrg prev=tag 5491f0ac6a5Smrg preserve_args="$preserve_args --tag" 5501f0ac6a5Smrg ;; 5511f0ac6a5Smrg --tag=*) 5521f0ac6a5Smrg set tag "$optarg" ${1+"$@"} 5531f0ac6a5Smrg shift 5541f0ac6a5Smrg prev=tag 5551f0ac6a5Smrg preserve_args="$preserve_args --tag" 5561f0ac6a5Smrg ;; 5571f0ac6a5Smrg 5581f0ac6a5Smrg -dlopen) 5591f0ac6a5Smrg prevopt="-dlopen" 5601f0ac6a5Smrg prev=execute_dlfiles 5611f0ac6a5Smrg ;; 5621f0ac6a5Smrg 5631f0ac6a5Smrg -*) 5641f0ac6a5Smrg $echo "$modename: unrecognized option \`$arg'" 1>&2 5651f0ac6a5Smrg $echo "$help" 1>&2 5661f0ac6a5Smrg exit $EXIT_FAILURE 5671f0ac6a5Smrg ;; 5681f0ac6a5Smrg 5691f0ac6a5Smrg *) 5701f0ac6a5Smrg nonopt="$arg" 5711f0ac6a5Smrg break 5721f0ac6a5Smrg ;; 5731f0ac6a5Smrg esac 5741f0ac6a5Smrgdone 5751f0ac6a5Smrg 5761f0ac6a5Smrgif test -n "$prevopt"; then 5771f0ac6a5Smrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 5781f0ac6a5Smrg $echo "$help" 1>&2 5791f0ac6a5Smrg exit $EXIT_FAILURE 5801f0ac6a5Smrgfi 5811f0ac6a5Smrg 5821f0ac6a5Smrgcase $disable_libs in 5831f0ac6a5Smrgno) 5841f0ac6a5Smrg ;; 5851f0ac6a5Smrgshared) 5861f0ac6a5Smrg build_libtool_libs=no 5871f0ac6a5Smrg build_old_libs=yes 5881f0ac6a5Smrg ;; 5891f0ac6a5Smrgstatic) 5901f0ac6a5Smrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 5911f0ac6a5Smrg ;; 5921f0ac6a5Smrgesac 5931f0ac6a5Smrg 5941f0ac6a5Smrg# If this variable is set in any of the actions, the command in it 5951f0ac6a5Smrg# will be execed at the end. This prevents here-documents from being 5961f0ac6a5Smrg# left over by shells. 5971f0ac6a5Smrgexec_cmd= 5981f0ac6a5Smrg 5991f0ac6a5Smrgif test -z "$show_help"; then 6001f0ac6a5Smrg 6011f0ac6a5Smrg # Infer the operation mode. 6021f0ac6a5Smrg if test -z "$mode"; then 6031f0ac6a5Smrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 6041f0ac6a5Smrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 6051f0ac6a5Smrg case $nonopt in 6061f0ac6a5Smrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 6071f0ac6a5Smrg mode=link 6081f0ac6a5Smrg for arg 6091f0ac6a5Smrg do 6101f0ac6a5Smrg case $arg in 6111f0ac6a5Smrg -c) 6121f0ac6a5Smrg mode=compile 6131f0ac6a5Smrg break 6141f0ac6a5Smrg ;; 6151f0ac6a5Smrg esac 6161f0ac6a5Smrg done 6171f0ac6a5Smrg ;; 6181f0ac6a5Smrg *db | *dbx | *strace | *truss) 6191f0ac6a5Smrg mode=execute 6201f0ac6a5Smrg ;; 6211f0ac6a5Smrg *install*|cp|mv) 6221f0ac6a5Smrg mode=install 6231f0ac6a5Smrg ;; 6241f0ac6a5Smrg *rm) 6251f0ac6a5Smrg mode=uninstall 6261f0ac6a5Smrg ;; 6271f0ac6a5Smrg *) 6281f0ac6a5Smrg # If we have no mode, but dlfiles were specified, then do execute mode. 6291f0ac6a5Smrg test -n "$execute_dlfiles" && mode=execute 6301f0ac6a5Smrg 6311f0ac6a5Smrg # Just use the default operation mode. 6321f0ac6a5Smrg if test -z "$mode"; then 6331f0ac6a5Smrg if test -n "$nonopt"; then 6341f0ac6a5Smrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 6351f0ac6a5Smrg else 6361f0ac6a5Smrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 6371f0ac6a5Smrg fi 6381f0ac6a5Smrg fi 6391f0ac6a5Smrg ;; 6401f0ac6a5Smrg esac 6411f0ac6a5Smrg fi 6421f0ac6a5Smrg 6431f0ac6a5Smrg # Only execute mode is allowed to have -dlopen flags. 6441f0ac6a5Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 6451f0ac6a5Smrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 6461f0ac6a5Smrg $echo "$help" 1>&2 6471f0ac6a5Smrg exit $EXIT_FAILURE 6481f0ac6a5Smrg fi 6491f0ac6a5Smrg 6501f0ac6a5Smrg # Change the help message to a mode-specific one. 6511f0ac6a5Smrg generic_help="$help" 6521f0ac6a5Smrg help="Try \`$modename --help --mode=$mode' for more information." 6531f0ac6a5Smrg 6541f0ac6a5Smrg # These modes are in order of execution frequency so that they run quickly. 6551f0ac6a5Smrg case $mode in 6561f0ac6a5Smrg # libtool compile mode 6571f0ac6a5Smrg compile) 6581f0ac6a5Smrg modename="$modename: compile" 6591f0ac6a5Smrg # Get the compilation command and the source file. 6601f0ac6a5Smrg base_compile= 6611f0ac6a5Smrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 6621f0ac6a5Smrg suppress_opt=yes 6631f0ac6a5Smrg suppress_output= 6641f0ac6a5Smrg arg_mode=normal 6651f0ac6a5Smrg libobj= 6661f0ac6a5Smrg later= 6671f0ac6a5Smrg 6681f0ac6a5Smrg for arg 6691f0ac6a5Smrg do 6701f0ac6a5Smrg case $arg_mode in 6711f0ac6a5Smrg arg ) 6721f0ac6a5Smrg # do not "continue". Instead, add this to base_compile 6731f0ac6a5Smrg lastarg="$arg" 6741f0ac6a5Smrg arg_mode=normal 6751f0ac6a5Smrg ;; 6761f0ac6a5Smrg 6771f0ac6a5Smrg target ) 6781f0ac6a5Smrg libobj="$arg" 6791f0ac6a5Smrg arg_mode=normal 6801f0ac6a5Smrg continue 6811f0ac6a5Smrg ;; 6821f0ac6a5Smrg 6831f0ac6a5Smrg normal ) 6841f0ac6a5Smrg # Accept any command-line options. 6851f0ac6a5Smrg case $arg in 6861f0ac6a5Smrg -o) 6871f0ac6a5Smrg if test -n "$libobj" ; then 6881f0ac6a5Smrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 6891f0ac6a5Smrg exit $EXIT_FAILURE 6901f0ac6a5Smrg fi 6911f0ac6a5Smrg arg_mode=target 6921f0ac6a5Smrg continue 6931f0ac6a5Smrg ;; 6941f0ac6a5Smrg 6951f0ac6a5Smrg -static | -prefer-pic | -prefer-non-pic) 6961f0ac6a5Smrg later="$later $arg" 6971f0ac6a5Smrg continue 6981f0ac6a5Smrg ;; 6991f0ac6a5Smrg 7001f0ac6a5Smrg -no-suppress) 7011f0ac6a5Smrg suppress_opt=no 7021f0ac6a5Smrg continue 7031f0ac6a5Smrg ;; 7041f0ac6a5Smrg 7051f0ac6a5Smrg -Xcompiler) 7061f0ac6a5Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 7071f0ac6a5Smrg continue # The current "srcfile" will either be retained or 7081f0ac6a5Smrg ;; # replaced later. I would guess that would be a bug. 7091f0ac6a5Smrg 7101f0ac6a5Smrg -Wc,*) 7111f0ac6a5Smrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 7121f0ac6a5Smrg lastarg= 7131f0ac6a5Smrg save_ifs="$IFS"; IFS=',' 7141f0ac6a5Smrg for arg in $args; do 7151f0ac6a5Smrg IFS="$save_ifs" 7161f0ac6a5Smrg 7171f0ac6a5Smrg # Double-quote args containing other shell metacharacters. 7181f0ac6a5Smrg # Many Bourne shells cannot handle close brackets correctly 7191f0ac6a5Smrg # in scan sets, so we specify it separately. 7201f0ac6a5Smrg case $arg in 7211f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7221f0ac6a5Smrg arg="\"$arg\"" 7231f0ac6a5Smrg ;; 7241f0ac6a5Smrg esac 7251f0ac6a5Smrg lastarg="$lastarg $arg" 7261f0ac6a5Smrg done 7271f0ac6a5Smrg IFS="$save_ifs" 7281f0ac6a5Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 7291f0ac6a5Smrg 7301f0ac6a5Smrg # Add the arguments to base_compile. 7311f0ac6a5Smrg base_compile="$base_compile $lastarg" 7321f0ac6a5Smrg continue 7331f0ac6a5Smrg ;; 7341f0ac6a5Smrg 7351f0ac6a5Smrg * ) 7361f0ac6a5Smrg # Accept the current argument as the source file. 7371f0ac6a5Smrg # The previous "srcfile" becomes the current argument. 7381f0ac6a5Smrg # 7391f0ac6a5Smrg lastarg="$srcfile" 7401f0ac6a5Smrg srcfile="$arg" 7411f0ac6a5Smrg ;; 7421f0ac6a5Smrg esac # case $arg 7431f0ac6a5Smrg ;; 7441f0ac6a5Smrg esac # case $arg_mode 7451f0ac6a5Smrg 7461f0ac6a5Smrg # Aesthetically quote the previous argument. 7471f0ac6a5Smrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 7481f0ac6a5Smrg 7491f0ac6a5Smrg case $lastarg in 7501f0ac6a5Smrg # Double-quote args containing other shell metacharacters. 7511f0ac6a5Smrg # Many Bourne shells cannot handle close brackets correctly 7521f0ac6a5Smrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 7531f0ac6a5Smrg # in scan sets (worked around with variable expansion), 7541f0ac6a5Smrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 7551f0ac6a5Smrg # at all, so we specify them separately. 7561f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 7571f0ac6a5Smrg lastarg="\"$lastarg\"" 7581f0ac6a5Smrg ;; 7591f0ac6a5Smrg esac 7601f0ac6a5Smrg 7611f0ac6a5Smrg base_compile="$base_compile $lastarg" 7621f0ac6a5Smrg done # for arg 7631f0ac6a5Smrg 7641f0ac6a5Smrg case $arg_mode in 7651f0ac6a5Smrg arg) 7661f0ac6a5Smrg $echo "$modename: you must specify an argument for -Xcompile" 7671f0ac6a5Smrg exit $EXIT_FAILURE 7681f0ac6a5Smrg ;; 7691f0ac6a5Smrg target) 7701f0ac6a5Smrg $echo "$modename: you must specify a target with \`-o'" 1>&2 7711f0ac6a5Smrg exit $EXIT_FAILURE 7721f0ac6a5Smrg ;; 7731f0ac6a5Smrg *) 7741f0ac6a5Smrg # Get the name of the library object. 7751f0ac6a5Smrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 7761f0ac6a5Smrg ;; 7771f0ac6a5Smrg esac 7781f0ac6a5Smrg 7791f0ac6a5Smrg # Recognize several different file suffixes. 7801f0ac6a5Smrg # If the user specifies -o file.o, it is replaced with file.lo 7811f0ac6a5Smrg xform='[cCFSifmso]' 7821f0ac6a5Smrg case $libobj in 7831f0ac6a5Smrg *.ada) xform=ada ;; 7841f0ac6a5Smrg *.adb) xform=adb ;; 7851f0ac6a5Smrg *.ads) xform=ads ;; 7861f0ac6a5Smrg *.asm) xform=asm ;; 7871f0ac6a5Smrg *.c++) xform=c++ ;; 7881f0ac6a5Smrg *.cc) xform=cc ;; 7891f0ac6a5Smrg *.ii) xform=ii ;; 7901f0ac6a5Smrg *.class) xform=class ;; 7911f0ac6a5Smrg *.cpp) xform=cpp ;; 7921f0ac6a5Smrg *.cxx) xform=cxx ;; 793e5410a46Smrg *.[fF][09]?) xform=[fF][09]. ;; 7941f0ac6a5Smrg *.for) xform=for ;; 7951f0ac6a5Smrg *.java) xform=java ;; 796e5410a46Smrg *.obj) xform=obj ;; 797e5410a46Smrg *.sx) xform=sx ;; 7981f0ac6a5Smrg esac 7991f0ac6a5Smrg 8001f0ac6a5Smrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 8011f0ac6a5Smrg 8021f0ac6a5Smrg case $libobj in 8031f0ac6a5Smrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 8041f0ac6a5Smrg *) 8051f0ac6a5Smrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 8061f0ac6a5Smrg exit $EXIT_FAILURE 8071f0ac6a5Smrg ;; 8081f0ac6a5Smrg esac 8091f0ac6a5Smrg 8101f0ac6a5Smrg func_infer_tag $base_compile 8111f0ac6a5Smrg 8121f0ac6a5Smrg for arg in $later; do 8131f0ac6a5Smrg case $arg in 8141f0ac6a5Smrg -static) 8151f0ac6a5Smrg build_old_libs=yes 8161f0ac6a5Smrg continue 8171f0ac6a5Smrg ;; 8181f0ac6a5Smrg 8191f0ac6a5Smrg -prefer-pic) 8201f0ac6a5Smrg pic_mode=yes 8211f0ac6a5Smrg continue 8221f0ac6a5Smrg ;; 8231f0ac6a5Smrg 8241f0ac6a5Smrg -prefer-non-pic) 8251f0ac6a5Smrg pic_mode=no 8261f0ac6a5Smrg continue 8271f0ac6a5Smrg ;; 8281f0ac6a5Smrg esac 8291f0ac6a5Smrg done 8301f0ac6a5Smrg 8311f0ac6a5Smrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 8321f0ac6a5Smrg case $qlibobj in 8331f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 8341f0ac6a5Smrg qlibobj="\"$qlibobj\"" ;; 8351f0ac6a5Smrg esac 8361f0ac6a5Smrg test "X$libobj" != "X$qlibobj" \ 8371f0ac6a5Smrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 8381f0ac6a5Smrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 8391f0ac6a5Smrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 8401f0ac6a5Smrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 8411f0ac6a5Smrg if test "X$xdir" = "X$obj"; then 8421f0ac6a5Smrg xdir= 8431f0ac6a5Smrg else 8441f0ac6a5Smrg xdir=$xdir/ 8451f0ac6a5Smrg fi 8461f0ac6a5Smrg lobj=${xdir}$objdir/$objname 8471f0ac6a5Smrg 8481f0ac6a5Smrg if test -z "$base_compile"; then 8491f0ac6a5Smrg $echo "$modename: you must specify a compilation command" 1>&2 8501f0ac6a5Smrg $echo "$help" 1>&2 8511f0ac6a5Smrg exit $EXIT_FAILURE 8521f0ac6a5Smrg fi 8531f0ac6a5Smrg 8541f0ac6a5Smrg # Delete any leftover library objects. 8551f0ac6a5Smrg if test "$build_old_libs" = yes; then 8561f0ac6a5Smrg removelist="$obj $lobj $libobj ${libobj}T" 8571f0ac6a5Smrg else 8581f0ac6a5Smrg removelist="$lobj $libobj ${libobj}T" 8591f0ac6a5Smrg fi 8601f0ac6a5Smrg 8611f0ac6a5Smrg $run $rm $removelist 8621f0ac6a5Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8631f0ac6a5Smrg 8641f0ac6a5Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 8651f0ac6a5Smrg case $host_os in 8661f0ac6a5Smrg cygwin* | mingw* | pw32* | os2*) 8671f0ac6a5Smrg pic_mode=default 8681f0ac6a5Smrg ;; 8691f0ac6a5Smrg esac 8701f0ac6a5Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 8711f0ac6a5Smrg # non-PIC code in shared libraries is not supported 8721f0ac6a5Smrg pic_mode=default 8731f0ac6a5Smrg fi 8741f0ac6a5Smrg 8751f0ac6a5Smrg # Calculate the filename of the output object if compiler does 8761f0ac6a5Smrg # not support -o with -c 8771f0ac6a5Smrg if test "$compiler_c_o" = no; then 8781f0ac6a5Smrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 8791f0ac6a5Smrg lockfile="$output_obj.lock" 8801f0ac6a5Smrg removelist="$removelist $output_obj $lockfile" 8811f0ac6a5Smrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8821f0ac6a5Smrg else 8831f0ac6a5Smrg output_obj= 8841f0ac6a5Smrg need_locks=no 8851f0ac6a5Smrg lockfile= 8861f0ac6a5Smrg fi 8871f0ac6a5Smrg 8881f0ac6a5Smrg # Lock this critical section if it is needed 8891f0ac6a5Smrg # We use this script file to make the link, it avoids creating a new file 8901f0ac6a5Smrg if test "$need_locks" = yes; then 8911f0ac6a5Smrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 8921f0ac6a5Smrg $show "Waiting for $lockfile to be removed" 8931f0ac6a5Smrg sleep 2 8941f0ac6a5Smrg done 8951f0ac6a5Smrg elif test "$need_locks" = warn; then 8961f0ac6a5Smrg if test -f "$lockfile"; then 8971f0ac6a5Smrg $echo "\ 8981f0ac6a5Smrg*** ERROR, $lockfile exists and contains: 8991f0ac6a5Smrg`cat $lockfile 2>/dev/null` 9001f0ac6a5Smrg 9011f0ac6a5SmrgThis indicates that another process is trying to use the same 9021f0ac6a5Smrgtemporary object file, and libtool could not work around it because 9031f0ac6a5Smrgyour compiler does not support \`-c' and \`-o' together. If you 9041f0ac6a5Smrgrepeat this compilation, it may succeed, by chance, but you had better 9051f0ac6a5Smrgavoid parallel builds (make -j) in this platform, or get a better 9061f0ac6a5Smrgcompiler." 9071f0ac6a5Smrg 9081f0ac6a5Smrg $run $rm $removelist 9091f0ac6a5Smrg exit $EXIT_FAILURE 9101f0ac6a5Smrg fi 9111f0ac6a5Smrg $echo "$srcfile" > "$lockfile" 9121f0ac6a5Smrg fi 9131f0ac6a5Smrg 9141f0ac6a5Smrg if test -n "$fix_srcfile_path"; then 9151f0ac6a5Smrg eval srcfile=\"$fix_srcfile_path\" 9161f0ac6a5Smrg fi 9171f0ac6a5Smrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 9181f0ac6a5Smrg case $qsrcfile in 9191f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 9201f0ac6a5Smrg qsrcfile="\"$qsrcfile\"" ;; 9211f0ac6a5Smrg esac 9221f0ac6a5Smrg 9231f0ac6a5Smrg $run $rm "$libobj" "${libobj}T" 9241f0ac6a5Smrg 9251f0ac6a5Smrg # Create a libtool object file (analogous to a ".la" file), 9261f0ac6a5Smrg # but don't create it if we're doing a dry run. 9271f0ac6a5Smrg test -z "$run" && cat > ${libobj}T <<EOF 9281f0ac6a5Smrg# $libobj - a libtool object file 9291f0ac6a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 9301f0ac6a5Smrg# 9311f0ac6a5Smrg# Please DO NOT delete this file! 9321f0ac6a5Smrg# It is necessary for linking the library. 9331f0ac6a5Smrg 9341f0ac6a5Smrg# Name of the PIC object. 9351f0ac6a5SmrgEOF 9361f0ac6a5Smrg 9371f0ac6a5Smrg # Only build a PIC object if we are building libtool libraries. 9381f0ac6a5Smrg if test "$build_libtool_libs" = yes; then 9391f0ac6a5Smrg # Without this assignment, base_compile gets emptied. 9401f0ac6a5Smrg fbsd_hideous_sh_bug=$base_compile 9411f0ac6a5Smrg 9421f0ac6a5Smrg if test "$pic_mode" != no; then 9431f0ac6a5Smrg command="$base_compile $qsrcfile $pic_flag" 9441f0ac6a5Smrg else 9451f0ac6a5Smrg # Don't build PIC code 9461f0ac6a5Smrg command="$base_compile $qsrcfile" 9471f0ac6a5Smrg fi 9481f0ac6a5Smrg 9491f0ac6a5Smrg if test ! -d "${xdir}$objdir"; then 9501f0ac6a5Smrg $show "$mkdir ${xdir}$objdir" 9511f0ac6a5Smrg $run $mkdir ${xdir}$objdir 9521f0ac6a5Smrg exit_status=$? 9531f0ac6a5Smrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 9541f0ac6a5Smrg exit $exit_status 9551f0ac6a5Smrg fi 9561f0ac6a5Smrg fi 9571f0ac6a5Smrg 9581f0ac6a5Smrg if test -z "$output_obj"; then 9591f0ac6a5Smrg # Place PIC objects in $objdir 9601f0ac6a5Smrg command="$command -o $lobj" 9611f0ac6a5Smrg fi 9621f0ac6a5Smrg 9631f0ac6a5Smrg $run $rm "$lobj" "$output_obj" 9641f0ac6a5Smrg 9651f0ac6a5Smrg $show "$command" 966e5410a46Smrg if $run eval $lt_env "$command"; then : 9671f0ac6a5Smrg else 9681f0ac6a5Smrg test -n "$output_obj" && $run $rm $removelist 9691f0ac6a5Smrg exit $EXIT_FAILURE 9701f0ac6a5Smrg fi 9711f0ac6a5Smrg 9721f0ac6a5Smrg if test "$need_locks" = warn && 9731f0ac6a5Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 9741f0ac6a5Smrg $echo "\ 9751f0ac6a5Smrg*** ERROR, $lockfile contains: 9761f0ac6a5Smrg`cat $lockfile 2>/dev/null` 9771f0ac6a5Smrg 9781f0ac6a5Smrgbut it should contain: 9791f0ac6a5Smrg$srcfile 9801f0ac6a5Smrg 9811f0ac6a5SmrgThis indicates that another process is trying to use the same 9821f0ac6a5Smrgtemporary object file, and libtool could not work around it because 9831f0ac6a5Smrgyour compiler does not support \`-c' and \`-o' together. If you 9841f0ac6a5Smrgrepeat this compilation, it may succeed, by chance, but you had better 9851f0ac6a5Smrgavoid parallel builds (make -j) in this platform, or get a better 9861f0ac6a5Smrgcompiler." 9871f0ac6a5Smrg 9881f0ac6a5Smrg $run $rm $removelist 9891f0ac6a5Smrg exit $EXIT_FAILURE 9901f0ac6a5Smrg fi 9911f0ac6a5Smrg 9921f0ac6a5Smrg # Just move the object if needed, then go on to compile the next one 9931f0ac6a5Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 9941f0ac6a5Smrg $show "$mv $output_obj $lobj" 9951f0ac6a5Smrg if $run $mv $output_obj $lobj; then : 9961f0ac6a5Smrg else 9971f0ac6a5Smrg error=$? 9981f0ac6a5Smrg $run $rm $removelist 9991f0ac6a5Smrg exit $error 10001f0ac6a5Smrg fi 10011f0ac6a5Smrg fi 10021f0ac6a5Smrg 10031f0ac6a5Smrg # Append the name of the PIC object to the libtool object file. 10041f0ac6a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10051f0ac6a5Smrgpic_object='$objdir/$objname' 10061f0ac6a5Smrg 10071f0ac6a5SmrgEOF 10081f0ac6a5Smrg 10091f0ac6a5Smrg # Allow error messages only from the first compilation. 10101f0ac6a5Smrg if test "$suppress_opt" = yes; then 10111f0ac6a5Smrg suppress_output=' >/dev/null 2>&1' 10121f0ac6a5Smrg fi 10131f0ac6a5Smrg else 10141f0ac6a5Smrg # No PIC object so indicate it doesn't exist in the libtool 10151f0ac6a5Smrg # object file. 10161f0ac6a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10171f0ac6a5Smrgpic_object=none 10181f0ac6a5Smrg 10191f0ac6a5SmrgEOF 10201f0ac6a5Smrg fi 10211f0ac6a5Smrg 10221f0ac6a5Smrg # Only build a position-dependent object if we build old libraries. 10231f0ac6a5Smrg if test "$build_old_libs" = yes; then 10241f0ac6a5Smrg if test "$pic_mode" != yes; then 10251f0ac6a5Smrg # Don't build PIC code 10261f0ac6a5Smrg command="$base_compile $qsrcfile" 10271f0ac6a5Smrg else 10281f0ac6a5Smrg command="$base_compile $qsrcfile $pic_flag" 10291f0ac6a5Smrg fi 10301f0ac6a5Smrg if test "$compiler_c_o" = yes; then 10311f0ac6a5Smrg command="$command -o $obj" 10321f0ac6a5Smrg fi 10331f0ac6a5Smrg 10341f0ac6a5Smrg # Suppress compiler output if we already did a PIC compilation. 10351f0ac6a5Smrg command="$command$suppress_output" 10361f0ac6a5Smrg $run $rm "$obj" "$output_obj" 10371f0ac6a5Smrg $show "$command" 1038e5410a46Smrg if $run eval $lt_env "$command"; then : 10391f0ac6a5Smrg else 10401f0ac6a5Smrg $run $rm $removelist 10411f0ac6a5Smrg exit $EXIT_FAILURE 10421f0ac6a5Smrg fi 10431f0ac6a5Smrg 10441f0ac6a5Smrg if test "$need_locks" = warn && 10451f0ac6a5Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 10461f0ac6a5Smrg $echo "\ 10471f0ac6a5Smrg*** ERROR, $lockfile contains: 10481f0ac6a5Smrg`cat $lockfile 2>/dev/null` 10491f0ac6a5Smrg 10501f0ac6a5Smrgbut it should contain: 10511f0ac6a5Smrg$srcfile 10521f0ac6a5Smrg 10531f0ac6a5SmrgThis indicates that another process is trying to use the same 10541f0ac6a5Smrgtemporary object file, and libtool could not work around it because 10551f0ac6a5Smrgyour compiler does not support \`-c' and \`-o' together. If you 10561f0ac6a5Smrgrepeat this compilation, it may succeed, by chance, but you had better 10571f0ac6a5Smrgavoid parallel builds (make -j) in this platform, or get a better 10581f0ac6a5Smrgcompiler." 10591f0ac6a5Smrg 10601f0ac6a5Smrg $run $rm $removelist 10611f0ac6a5Smrg exit $EXIT_FAILURE 10621f0ac6a5Smrg fi 10631f0ac6a5Smrg 10641f0ac6a5Smrg # Just move the object if needed 10651f0ac6a5Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 10661f0ac6a5Smrg $show "$mv $output_obj $obj" 10671f0ac6a5Smrg if $run $mv $output_obj $obj; then : 10681f0ac6a5Smrg else 10691f0ac6a5Smrg error=$? 10701f0ac6a5Smrg $run $rm $removelist 10711f0ac6a5Smrg exit $error 10721f0ac6a5Smrg fi 10731f0ac6a5Smrg fi 10741f0ac6a5Smrg 10751f0ac6a5Smrg # Append the name of the non-PIC object the libtool object file. 10761f0ac6a5Smrg # Only append if the libtool object file exists. 10771f0ac6a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10781f0ac6a5Smrg# Name of the non-PIC object. 10791f0ac6a5Smrgnon_pic_object='$objname' 10801f0ac6a5Smrg 10811f0ac6a5SmrgEOF 10821f0ac6a5Smrg else 10831f0ac6a5Smrg # Append the name of the non-PIC object the libtool object file. 10841f0ac6a5Smrg # Only append if the libtool object file exists. 10851f0ac6a5Smrg test -z "$run" && cat >> ${libobj}T <<EOF 10861f0ac6a5Smrg# Name of the non-PIC object. 10871f0ac6a5Smrgnon_pic_object=none 10881f0ac6a5Smrg 10891f0ac6a5SmrgEOF 10901f0ac6a5Smrg fi 10911f0ac6a5Smrg 10921f0ac6a5Smrg $run $mv "${libobj}T" "${libobj}" 10931f0ac6a5Smrg 10941f0ac6a5Smrg # Unlock the critical section if it was locked 10951f0ac6a5Smrg if test "$need_locks" != no; then 10961f0ac6a5Smrg $run $rm "$lockfile" 10971f0ac6a5Smrg fi 10981f0ac6a5Smrg 10991f0ac6a5Smrg exit $EXIT_SUCCESS 11001f0ac6a5Smrg ;; 11011f0ac6a5Smrg 11021f0ac6a5Smrg # libtool link mode 11031f0ac6a5Smrg link | relink) 11041f0ac6a5Smrg modename="$modename: link" 11051f0ac6a5Smrg case $host in 11061f0ac6a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 11071f0ac6a5Smrg # It is impossible to link a dll without this setting, and 11081f0ac6a5Smrg # we shouldn't force the makefile maintainer to figure out 11091f0ac6a5Smrg # which system we are compiling for in order to pass an extra 11101f0ac6a5Smrg # flag for every libtool invocation. 11111f0ac6a5Smrg # allow_undefined=no 11121f0ac6a5Smrg 11131f0ac6a5Smrg # FIXME: Unfortunately, there are problems with the above when trying 11141f0ac6a5Smrg # to make a dll which has undefined symbols, in which case not 11151f0ac6a5Smrg # even a static library is built. For now, we need to specify 11161f0ac6a5Smrg # -no-undefined on the libtool link line when we can be certain 11171f0ac6a5Smrg # that all symbols are satisfied, otherwise we get a static library. 11181f0ac6a5Smrg allow_undefined=yes 11191f0ac6a5Smrg ;; 11201f0ac6a5Smrg *) 11211f0ac6a5Smrg allow_undefined=yes 11221f0ac6a5Smrg ;; 11231f0ac6a5Smrg esac 11241f0ac6a5Smrg libtool_args="$nonopt" 11251f0ac6a5Smrg base_compile="$nonopt $@" 11261f0ac6a5Smrg compile_command="$nonopt" 11271f0ac6a5Smrg finalize_command="$nonopt" 11281f0ac6a5Smrg 11291f0ac6a5Smrg compile_rpath= 11301f0ac6a5Smrg finalize_rpath= 11311f0ac6a5Smrg compile_shlibpath= 11321f0ac6a5Smrg finalize_shlibpath= 11331f0ac6a5Smrg convenience= 11341f0ac6a5Smrg old_convenience= 11351f0ac6a5Smrg deplibs= 11361f0ac6a5Smrg old_deplibs= 11371f0ac6a5Smrg compiler_flags= 11381f0ac6a5Smrg linker_flags= 11391f0ac6a5Smrg dllsearchpath= 11401f0ac6a5Smrg lib_search_path=`pwd` 11411f0ac6a5Smrg inst_prefix_dir= 11421f0ac6a5Smrg 11431f0ac6a5Smrg avoid_version=no 11441f0ac6a5Smrg dlfiles= 11451f0ac6a5Smrg dlprefiles= 11461f0ac6a5Smrg dlself=no 11471f0ac6a5Smrg export_dynamic=no 11481f0ac6a5Smrg export_symbols= 11491f0ac6a5Smrg export_symbols_regex= 11501f0ac6a5Smrg generated= 11511f0ac6a5Smrg libobjs= 11521f0ac6a5Smrg ltlibs= 11531f0ac6a5Smrg module=no 11541f0ac6a5Smrg no_install=no 11551f0ac6a5Smrg objs= 11561f0ac6a5Smrg non_pic_objects= 11571f0ac6a5Smrg notinst_path= # paths that contain not-installed libtool libraries 11581f0ac6a5Smrg precious_files_regex= 11591f0ac6a5Smrg prefer_static_libs=no 11601f0ac6a5Smrg preload=no 11611f0ac6a5Smrg prev= 11621f0ac6a5Smrg prevarg= 11631f0ac6a5Smrg release= 11641f0ac6a5Smrg rpath= 11651f0ac6a5Smrg xrpath= 11661f0ac6a5Smrg perm_rpath= 11671f0ac6a5Smrg temp_rpath= 11681f0ac6a5Smrg thread_safe=no 11691f0ac6a5Smrg vinfo= 11701f0ac6a5Smrg vinfo_number=no 1171e5410a46Smrg single_module="${wl}-single_module" 11721f0ac6a5Smrg 11731f0ac6a5Smrg func_infer_tag $base_compile 11741f0ac6a5Smrg 11751f0ac6a5Smrg # We need to know -static, to get the right output filenames. 11761f0ac6a5Smrg for arg 11771f0ac6a5Smrg do 11781f0ac6a5Smrg case $arg in 1179e5410a46Smrg -all-static | -static | -static-libtool-libs) 1180e5410a46Smrg case $arg in 1181e5410a46Smrg -all-static) 11821f0ac6a5Smrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 11831f0ac6a5Smrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 11841f0ac6a5Smrg fi 11851f0ac6a5Smrg if test -n "$link_static_flag"; then 11861f0ac6a5Smrg dlopen_self=$dlopen_self_static 11871f0ac6a5Smrg fi 11881f0ac6a5Smrg prefer_static_libs=yes 1189e5410a46Smrg ;; 1190e5410a46Smrg -static) 11911f0ac6a5Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 11921f0ac6a5Smrg dlopen_self=$dlopen_self_static 11931f0ac6a5Smrg fi 11941f0ac6a5Smrg prefer_static_libs=built 1195e5410a46Smrg ;; 1196e5410a46Smrg -static-libtool-libs) 1197e5410a46Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1198e5410a46Smrg dlopen_self=$dlopen_self_static 1199e5410a46Smrg fi 1200e5410a46Smrg prefer_static_libs=yes 1201e5410a46Smrg ;; 1202e5410a46Smrg esac 12031f0ac6a5Smrg build_libtool_libs=no 12041f0ac6a5Smrg build_old_libs=yes 12051f0ac6a5Smrg break 12061f0ac6a5Smrg ;; 12071f0ac6a5Smrg esac 12081f0ac6a5Smrg done 12091f0ac6a5Smrg 12101f0ac6a5Smrg # See if our shared archives depend on static archives. 12111f0ac6a5Smrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 12121f0ac6a5Smrg 12131f0ac6a5Smrg # Go through the arguments, transforming them on the way. 12141f0ac6a5Smrg while test "$#" -gt 0; do 12151f0ac6a5Smrg arg="$1" 12161f0ac6a5Smrg shift 12171f0ac6a5Smrg case $arg in 12181f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 12191f0ac6a5Smrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 12201f0ac6a5Smrg ;; 12211f0ac6a5Smrg *) qarg=$arg ;; 12221f0ac6a5Smrg esac 12231f0ac6a5Smrg libtool_args="$libtool_args $qarg" 12241f0ac6a5Smrg 12251f0ac6a5Smrg # If the previous option needs an argument, assign it. 12261f0ac6a5Smrg if test -n "$prev"; then 12271f0ac6a5Smrg case $prev in 12281f0ac6a5Smrg output) 12291f0ac6a5Smrg compile_command="$compile_command @OUTPUT@" 12301f0ac6a5Smrg finalize_command="$finalize_command @OUTPUT@" 12311f0ac6a5Smrg ;; 12321f0ac6a5Smrg esac 12331f0ac6a5Smrg 12341f0ac6a5Smrg case $prev in 12351f0ac6a5Smrg dlfiles|dlprefiles) 12361f0ac6a5Smrg if test "$preload" = no; then 12371f0ac6a5Smrg # Add the symbol object into the linking commands. 12381f0ac6a5Smrg compile_command="$compile_command @SYMFILE@" 12391f0ac6a5Smrg finalize_command="$finalize_command @SYMFILE@" 12401f0ac6a5Smrg preload=yes 12411f0ac6a5Smrg fi 12421f0ac6a5Smrg case $arg in 12431f0ac6a5Smrg *.la | *.lo) ;; # We handle these cases below. 12441f0ac6a5Smrg force) 12451f0ac6a5Smrg if test "$dlself" = no; then 12461f0ac6a5Smrg dlself=needless 12471f0ac6a5Smrg export_dynamic=yes 12481f0ac6a5Smrg fi 12491f0ac6a5Smrg prev= 12501f0ac6a5Smrg continue 12511f0ac6a5Smrg ;; 12521f0ac6a5Smrg self) 12531f0ac6a5Smrg if test "$prev" = dlprefiles; then 12541f0ac6a5Smrg dlself=yes 12551f0ac6a5Smrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 12561f0ac6a5Smrg dlself=yes 12571f0ac6a5Smrg else 12581f0ac6a5Smrg dlself=needless 12591f0ac6a5Smrg export_dynamic=yes 12601f0ac6a5Smrg fi 12611f0ac6a5Smrg prev= 12621f0ac6a5Smrg continue 12631f0ac6a5Smrg ;; 12641f0ac6a5Smrg *) 12651f0ac6a5Smrg if test "$prev" = dlfiles; then 12661f0ac6a5Smrg dlfiles="$dlfiles $arg" 12671f0ac6a5Smrg else 12681f0ac6a5Smrg dlprefiles="$dlprefiles $arg" 12691f0ac6a5Smrg fi 12701f0ac6a5Smrg prev= 12711f0ac6a5Smrg continue 12721f0ac6a5Smrg ;; 12731f0ac6a5Smrg esac 12741f0ac6a5Smrg ;; 12751f0ac6a5Smrg expsyms) 12761f0ac6a5Smrg export_symbols="$arg" 12771f0ac6a5Smrg if test ! -f "$arg"; then 12781f0ac6a5Smrg $echo "$modename: symbol file \`$arg' does not exist" 12791f0ac6a5Smrg exit $EXIT_FAILURE 12801f0ac6a5Smrg fi 12811f0ac6a5Smrg prev= 12821f0ac6a5Smrg continue 12831f0ac6a5Smrg ;; 12841f0ac6a5Smrg expsyms_regex) 12851f0ac6a5Smrg export_symbols_regex="$arg" 12861f0ac6a5Smrg prev= 12871f0ac6a5Smrg continue 12881f0ac6a5Smrg ;; 12891f0ac6a5Smrg inst_prefix) 12901f0ac6a5Smrg inst_prefix_dir="$arg" 12911f0ac6a5Smrg prev= 12921f0ac6a5Smrg continue 12931f0ac6a5Smrg ;; 12941f0ac6a5Smrg precious_regex) 12951f0ac6a5Smrg precious_files_regex="$arg" 12961f0ac6a5Smrg prev= 12971f0ac6a5Smrg continue 12981f0ac6a5Smrg ;; 12991f0ac6a5Smrg release) 13001f0ac6a5Smrg release="-$arg" 13011f0ac6a5Smrg prev= 13021f0ac6a5Smrg continue 13031f0ac6a5Smrg ;; 13041f0ac6a5Smrg objectlist) 13051f0ac6a5Smrg if test -f "$arg"; then 13061f0ac6a5Smrg save_arg=$arg 13071f0ac6a5Smrg moreargs= 13081f0ac6a5Smrg for fil in `cat $save_arg` 13091f0ac6a5Smrg do 13101f0ac6a5Smrg# moreargs="$moreargs $fil" 13111f0ac6a5Smrg arg=$fil 13121f0ac6a5Smrg # A libtool-controlled object. 13131f0ac6a5Smrg 13141f0ac6a5Smrg # Check to see that this really is a libtool object. 13151f0ac6a5Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 13161f0ac6a5Smrg pic_object= 13171f0ac6a5Smrg non_pic_object= 13181f0ac6a5Smrg 13191f0ac6a5Smrg # Read the .lo file 13201f0ac6a5Smrg # If there is no directory component, then add one. 13211f0ac6a5Smrg case $arg in 13221f0ac6a5Smrg */* | *\\*) . $arg ;; 13231f0ac6a5Smrg *) . ./$arg ;; 13241f0ac6a5Smrg esac 13251f0ac6a5Smrg 13261f0ac6a5Smrg if test -z "$pic_object" || \ 13271f0ac6a5Smrg test -z "$non_pic_object" || 13281f0ac6a5Smrg test "$pic_object" = none && \ 13291f0ac6a5Smrg test "$non_pic_object" = none; then 13301f0ac6a5Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 13311f0ac6a5Smrg exit $EXIT_FAILURE 13321f0ac6a5Smrg fi 13331f0ac6a5Smrg 13341f0ac6a5Smrg # Extract subdirectory from the argument. 13351f0ac6a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 13361f0ac6a5Smrg if test "X$xdir" = "X$arg"; then 13371f0ac6a5Smrg xdir= 13381f0ac6a5Smrg else 13391f0ac6a5Smrg xdir="$xdir/" 13401f0ac6a5Smrg fi 13411f0ac6a5Smrg 13421f0ac6a5Smrg if test "$pic_object" != none; then 13431f0ac6a5Smrg # Prepend the subdirectory the object is found in. 13441f0ac6a5Smrg pic_object="$xdir$pic_object" 13451f0ac6a5Smrg 13461f0ac6a5Smrg if test "$prev" = dlfiles; then 13471f0ac6a5Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 13481f0ac6a5Smrg dlfiles="$dlfiles $pic_object" 13491f0ac6a5Smrg prev= 13501f0ac6a5Smrg continue 13511f0ac6a5Smrg else 13521f0ac6a5Smrg # If libtool objects are unsupported, then we need to preload. 13531f0ac6a5Smrg prev=dlprefiles 13541f0ac6a5Smrg fi 13551f0ac6a5Smrg fi 13561f0ac6a5Smrg 13571f0ac6a5Smrg # CHECK ME: I think I busted this. -Ossama 13581f0ac6a5Smrg if test "$prev" = dlprefiles; then 13591f0ac6a5Smrg # Preload the old-style object. 13601f0ac6a5Smrg dlprefiles="$dlprefiles $pic_object" 13611f0ac6a5Smrg prev= 13621f0ac6a5Smrg fi 13631f0ac6a5Smrg 13641f0ac6a5Smrg # A PIC object. 13651f0ac6a5Smrg libobjs="$libobjs $pic_object" 13661f0ac6a5Smrg arg="$pic_object" 13671f0ac6a5Smrg fi 13681f0ac6a5Smrg 13691f0ac6a5Smrg # Non-PIC object. 13701f0ac6a5Smrg if test "$non_pic_object" != none; then 13711f0ac6a5Smrg # Prepend the subdirectory the object is found in. 13721f0ac6a5Smrg non_pic_object="$xdir$non_pic_object" 13731f0ac6a5Smrg 13741f0ac6a5Smrg # A standard non-PIC object 13751f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 13761f0ac6a5Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 13771f0ac6a5Smrg arg="$non_pic_object" 13781f0ac6a5Smrg fi 13791f0ac6a5Smrg else 13801f0ac6a5Smrg # If the PIC object exists, use it instead. 13811f0ac6a5Smrg # $xdir was prepended to $pic_object above. 13821f0ac6a5Smrg non_pic_object="$pic_object" 13831f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 13841f0ac6a5Smrg fi 13851f0ac6a5Smrg else 13861f0ac6a5Smrg # Only an error if not doing a dry-run. 13871f0ac6a5Smrg if test -z "$run"; then 13881f0ac6a5Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 13891f0ac6a5Smrg exit $EXIT_FAILURE 13901f0ac6a5Smrg else 13911f0ac6a5Smrg # Dry-run case. 13921f0ac6a5Smrg 13931f0ac6a5Smrg # Extract subdirectory from the argument. 13941f0ac6a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 13951f0ac6a5Smrg if test "X$xdir" = "X$arg"; then 13961f0ac6a5Smrg xdir= 13971f0ac6a5Smrg else 13981f0ac6a5Smrg xdir="$xdir/" 13991f0ac6a5Smrg fi 14001f0ac6a5Smrg 14011f0ac6a5Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 14021f0ac6a5Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 14031f0ac6a5Smrg libobjs="$libobjs $pic_object" 14041f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 14051f0ac6a5Smrg fi 14061f0ac6a5Smrg fi 14071f0ac6a5Smrg done 14081f0ac6a5Smrg else 14091f0ac6a5Smrg $echo "$modename: link input file \`$save_arg' does not exist" 14101f0ac6a5Smrg exit $EXIT_FAILURE 14111f0ac6a5Smrg fi 14121f0ac6a5Smrg arg=$save_arg 14131f0ac6a5Smrg prev= 14141f0ac6a5Smrg continue 14151f0ac6a5Smrg ;; 14161f0ac6a5Smrg rpath | xrpath) 14171f0ac6a5Smrg # We need an absolute path. 14181f0ac6a5Smrg case $arg in 14191f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 14201f0ac6a5Smrg *) 14211f0ac6a5Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 14221f0ac6a5Smrg exit $EXIT_FAILURE 14231f0ac6a5Smrg ;; 14241f0ac6a5Smrg esac 14251f0ac6a5Smrg if test "$prev" = rpath; then 14261f0ac6a5Smrg case "$rpath " in 14271f0ac6a5Smrg *" $arg "*) ;; 14281f0ac6a5Smrg *) rpath="$rpath $arg" ;; 14291f0ac6a5Smrg esac 14301f0ac6a5Smrg else 14311f0ac6a5Smrg case "$xrpath " in 14321f0ac6a5Smrg *" $arg "*) ;; 14331f0ac6a5Smrg *) xrpath="$xrpath $arg" ;; 14341f0ac6a5Smrg esac 14351f0ac6a5Smrg fi 14361f0ac6a5Smrg prev= 14371f0ac6a5Smrg continue 14381f0ac6a5Smrg ;; 14391f0ac6a5Smrg xcompiler) 14401f0ac6a5Smrg compiler_flags="$compiler_flags $qarg" 14411f0ac6a5Smrg prev= 14421f0ac6a5Smrg compile_command="$compile_command $qarg" 14431f0ac6a5Smrg finalize_command="$finalize_command $qarg" 14441f0ac6a5Smrg continue 14451f0ac6a5Smrg ;; 14461f0ac6a5Smrg xlinker) 14471f0ac6a5Smrg linker_flags="$linker_flags $qarg" 14481f0ac6a5Smrg compiler_flags="$compiler_flags $wl$qarg" 14491f0ac6a5Smrg prev= 14501f0ac6a5Smrg compile_command="$compile_command $wl$qarg" 14511f0ac6a5Smrg finalize_command="$finalize_command $wl$qarg" 14521f0ac6a5Smrg continue 14531f0ac6a5Smrg ;; 14541f0ac6a5Smrg xcclinker) 14551f0ac6a5Smrg linker_flags="$linker_flags $qarg" 14561f0ac6a5Smrg compiler_flags="$compiler_flags $qarg" 14571f0ac6a5Smrg prev= 14581f0ac6a5Smrg compile_command="$compile_command $qarg" 14591f0ac6a5Smrg finalize_command="$finalize_command $qarg" 14601f0ac6a5Smrg continue 14611f0ac6a5Smrg ;; 14621f0ac6a5Smrg shrext) 14631f0ac6a5Smrg shrext_cmds="$arg" 14641f0ac6a5Smrg prev= 14651f0ac6a5Smrg continue 14661f0ac6a5Smrg ;; 14671f0ac6a5Smrg darwin_framework|darwin_framework_skip) 14681f0ac6a5Smrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 14691f0ac6a5Smrg compile_command="$compile_command $arg" 14701f0ac6a5Smrg finalize_command="$finalize_command $arg" 14711f0ac6a5Smrg prev= 14721f0ac6a5Smrg continue 14731f0ac6a5Smrg ;; 14741f0ac6a5Smrg *) 14751f0ac6a5Smrg eval "$prev=\"\$arg\"" 14761f0ac6a5Smrg prev= 14771f0ac6a5Smrg continue 14781f0ac6a5Smrg ;; 14791f0ac6a5Smrg esac 14801f0ac6a5Smrg fi # test -n "$prev" 14811f0ac6a5Smrg 14821f0ac6a5Smrg prevarg="$arg" 14831f0ac6a5Smrg 14841f0ac6a5Smrg case $arg in 14851f0ac6a5Smrg -all-static) 14861f0ac6a5Smrg if test -n "$link_static_flag"; then 14871f0ac6a5Smrg compile_command="$compile_command $link_static_flag" 14881f0ac6a5Smrg finalize_command="$finalize_command $link_static_flag" 14891f0ac6a5Smrg fi 14901f0ac6a5Smrg continue 14911f0ac6a5Smrg ;; 14921f0ac6a5Smrg 14931f0ac6a5Smrg -allow-undefined) 14941f0ac6a5Smrg # FIXME: remove this flag sometime in the future. 14951f0ac6a5Smrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 14961f0ac6a5Smrg continue 14971f0ac6a5Smrg ;; 14981f0ac6a5Smrg 14991f0ac6a5Smrg -avoid-version) 15001f0ac6a5Smrg avoid_version=yes 15011f0ac6a5Smrg continue 15021f0ac6a5Smrg ;; 15031f0ac6a5Smrg 15041f0ac6a5Smrg -dlopen) 15051f0ac6a5Smrg prev=dlfiles 15061f0ac6a5Smrg continue 15071f0ac6a5Smrg ;; 15081f0ac6a5Smrg 15091f0ac6a5Smrg -dlpreopen) 15101f0ac6a5Smrg prev=dlprefiles 15111f0ac6a5Smrg continue 15121f0ac6a5Smrg ;; 15131f0ac6a5Smrg 15141f0ac6a5Smrg -export-dynamic) 15151f0ac6a5Smrg export_dynamic=yes 15161f0ac6a5Smrg continue 15171f0ac6a5Smrg ;; 15181f0ac6a5Smrg 15191f0ac6a5Smrg -export-symbols | -export-symbols-regex) 15201f0ac6a5Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 15211f0ac6a5Smrg $echo "$modename: more than one -exported-symbols argument is not allowed" 15221f0ac6a5Smrg exit $EXIT_FAILURE 15231f0ac6a5Smrg fi 15241f0ac6a5Smrg if test "X$arg" = "X-export-symbols"; then 15251f0ac6a5Smrg prev=expsyms 15261f0ac6a5Smrg else 15271f0ac6a5Smrg prev=expsyms_regex 15281f0ac6a5Smrg fi 15291f0ac6a5Smrg continue 15301f0ac6a5Smrg ;; 15311f0ac6a5Smrg 15321f0ac6a5Smrg -framework|-arch|-isysroot) 15331f0ac6a5Smrg case " $CC " in 15341f0ac6a5Smrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 15351f0ac6a5Smrg prev=darwin_framework_skip ;; 15361f0ac6a5Smrg *) compiler_flags="$compiler_flags $arg" 15371f0ac6a5Smrg prev=darwin_framework ;; 15381f0ac6a5Smrg esac 15391f0ac6a5Smrg compile_command="$compile_command $arg" 15401f0ac6a5Smrg finalize_command="$finalize_command $arg" 15411f0ac6a5Smrg continue 15421f0ac6a5Smrg ;; 15431f0ac6a5Smrg 15441f0ac6a5Smrg -inst-prefix-dir) 15451f0ac6a5Smrg prev=inst_prefix 15461f0ac6a5Smrg continue 15471f0ac6a5Smrg ;; 15481f0ac6a5Smrg 15491f0ac6a5Smrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 15501f0ac6a5Smrg # so, if we see these flags be careful not to treat them like -L 15511f0ac6a5Smrg -L[A-Z][A-Z]*:*) 15521f0ac6a5Smrg case $with_gcc/$host in 15531f0ac6a5Smrg no/*-*-irix* | /*-*-irix*) 15541f0ac6a5Smrg compile_command="$compile_command $arg" 15551f0ac6a5Smrg finalize_command="$finalize_command $arg" 15561f0ac6a5Smrg ;; 15571f0ac6a5Smrg esac 15581f0ac6a5Smrg continue 15591f0ac6a5Smrg ;; 15601f0ac6a5Smrg 15611f0ac6a5Smrg -L*) 15621f0ac6a5Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 15631f0ac6a5Smrg # We need an absolute path. 15641f0ac6a5Smrg case $dir in 15651f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 15661f0ac6a5Smrg *) 15671f0ac6a5Smrg absdir=`cd "$dir" && pwd` 15681f0ac6a5Smrg if test -z "$absdir"; then 15691f0ac6a5Smrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 15701f0ac6a5Smrg absdir="$dir" 15711f0ac6a5Smrg notinst_path="$notinst_path $dir" 15721f0ac6a5Smrg fi 15731f0ac6a5Smrg dir="$absdir" 15741f0ac6a5Smrg ;; 15751f0ac6a5Smrg esac 15761f0ac6a5Smrg case "$deplibs " in 15771f0ac6a5Smrg *" -L$dir "*) ;; 15781f0ac6a5Smrg *) 15791f0ac6a5Smrg deplibs="$deplibs -L$dir" 15801f0ac6a5Smrg lib_search_path="$lib_search_path $dir" 15811f0ac6a5Smrg ;; 15821f0ac6a5Smrg esac 15831f0ac6a5Smrg case $host in 15841f0ac6a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 15851f0ac6a5Smrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 15861f0ac6a5Smrg case :$dllsearchpath: in 15871f0ac6a5Smrg *":$dir:"*) ;; 15881f0ac6a5Smrg *) dllsearchpath="$dllsearchpath:$dir";; 15891f0ac6a5Smrg esac 15901f0ac6a5Smrg case :$dllsearchpath: in 15911f0ac6a5Smrg *":$testbindir:"*) ;; 15921f0ac6a5Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 15931f0ac6a5Smrg esac 15941f0ac6a5Smrg ;; 15951f0ac6a5Smrg esac 15961f0ac6a5Smrg continue 15971f0ac6a5Smrg ;; 15981f0ac6a5Smrg 15991f0ac6a5Smrg -l*) 16001f0ac6a5Smrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 16011f0ac6a5Smrg case $host in 16021f0ac6a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 16031f0ac6a5Smrg # These systems don't actually have a C or math library (as such) 16041f0ac6a5Smrg continue 16051f0ac6a5Smrg ;; 16061f0ac6a5Smrg *-*-os2*) 16071f0ac6a5Smrg # These systems don't actually have a C library (as such) 16081f0ac6a5Smrg test "X$arg" = "X-lc" && continue 16091f0ac6a5Smrg ;; 16101f0ac6a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 16111f0ac6a5Smrg # Do not include libc due to us having libc/libc_r. 16121f0ac6a5Smrg test "X$arg" = "X-lc" && continue 16131f0ac6a5Smrg ;; 16141f0ac6a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 16151f0ac6a5Smrg # Rhapsody C and math libraries are in the System framework 16161f0ac6a5Smrg deplibs="$deplibs -framework System" 16171f0ac6a5Smrg continue 16181f0ac6a5Smrg ;; 16191f0ac6a5Smrg *-*-sco3.2v5* | *-*-sco5v6*) 16201f0ac6a5Smrg # Causes problems with __ctype 16211f0ac6a5Smrg test "X$arg" = "X-lc" && continue 16221f0ac6a5Smrg ;; 16231f0ac6a5Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 16241f0ac6a5Smrg # Compiler inserts libc in the correct place for threads to work 16251f0ac6a5Smrg test "X$arg" = "X-lc" && continue 16261f0ac6a5Smrg ;; 16271f0ac6a5Smrg esac 16281f0ac6a5Smrg elif test "X$arg" = "X-lc_r"; then 16291f0ac6a5Smrg case $host in 16301f0ac6a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 16311f0ac6a5Smrg # Do not include libc_r directly, use -pthread flag. 16321f0ac6a5Smrg continue 16331f0ac6a5Smrg ;; 16341f0ac6a5Smrg esac 16351f0ac6a5Smrg fi 16361f0ac6a5Smrg deplibs="$deplibs $arg" 16371f0ac6a5Smrg continue 16381f0ac6a5Smrg ;; 16391f0ac6a5Smrg 16401f0ac6a5Smrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 16411f0ac6a5Smrg # classes, name mangling, and exception handling. 16421f0ac6a5Smrg -model) 16431f0ac6a5Smrg compile_command="$compile_command $arg" 16441f0ac6a5Smrg compiler_flags="$compiler_flags $arg" 16451f0ac6a5Smrg finalize_command="$finalize_command $arg" 16461f0ac6a5Smrg prev=xcompiler 16471f0ac6a5Smrg continue 16481f0ac6a5Smrg ;; 16491f0ac6a5Smrg 1650e5410a46Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 16511f0ac6a5Smrg compiler_flags="$compiler_flags $arg" 16521f0ac6a5Smrg compile_command="$compile_command $arg" 16531f0ac6a5Smrg finalize_command="$finalize_command $arg" 1654e5410a46Smrg continue 1655e5410a46Smrg ;; 1656e5410a46Smrg 1657e5410a46Smrg -multi_module) 1658e5410a46Smrg single_module="${wl}-multi_module" 16591f0ac6a5Smrg continue 16601f0ac6a5Smrg ;; 16611f0ac6a5Smrg 16621f0ac6a5Smrg -module) 16631f0ac6a5Smrg module=yes 16641f0ac6a5Smrg continue 16651f0ac6a5Smrg ;; 16661f0ac6a5Smrg 16671f0ac6a5Smrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 16681f0ac6a5Smrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 16691f0ac6a5Smrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 16701f0ac6a5Smrg # +DA*, +DD* enable 64-bit mode on the HP compiler 16711f0ac6a5Smrg # -q* pass through compiler args for the IBM compiler 16721f0ac6a5Smrg # -m* pass through architecture-specific compiler args for GCC 16731f0ac6a5Smrg # -m*, -t[45]*, -txscale* pass through architecture-specific 16741f0ac6a5Smrg # compiler args for GCC 1675e5410a46Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1676e5410a46Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 16771f0ac6a5Smrg # @file GCC response files 1678e5410a46Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1679e5410a46Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 16801f0ac6a5Smrg 16811f0ac6a5Smrg # Unknown arguments in both finalize_command and compile_command need 16821f0ac6a5Smrg # to be aesthetically quoted because they are evaled later. 16831f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 16841f0ac6a5Smrg case $arg in 16851f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 16861f0ac6a5Smrg arg="\"$arg\"" 16871f0ac6a5Smrg ;; 16881f0ac6a5Smrg esac 16891f0ac6a5Smrg compile_command="$compile_command $arg" 16901f0ac6a5Smrg finalize_command="$finalize_command $arg" 16911f0ac6a5Smrg compiler_flags="$compiler_flags $arg" 16921f0ac6a5Smrg continue 16931f0ac6a5Smrg ;; 16941f0ac6a5Smrg 16951f0ac6a5Smrg -shrext) 16961f0ac6a5Smrg prev=shrext 16971f0ac6a5Smrg continue 16981f0ac6a5Smrg ;; 16991f0ac6a5Smrg 17001f0ac6a5Smrg -no-fast-install) 17011f0ac6a5Smrg fast_install=no 17021f0ac6a5Smrg continue 17031f0ac6a5Smrg ;; 17041f0ac6a5Smrg 17051f0ac6a5Smrg -no-install) 17061f0ac6a5Smrg case $host in 1707e5410a46Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 17081f0ac6a5Smrg # The PATH hackery in wrapper scripts is required on Windows 1709e5410a46Smrg # and Darwin in order for the loader to find any dlls it needs. 17101f0ac6a5Smrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 17111f0ac6a5Smrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 17121f0ac6a5Smrg fast_install=no 17131f0ac6a5Smrg ;; 17141f0ac6a5Smrg *) no_install=yes ;; 17151f0ac6a5Smrg esac 17161f0ac6a5Smrg continue 17171f0ac6a5Smrg ;; 17181f0ac6a5Smrg 17191f0ac6a5Smrg -no-undefined) 17201f0ac6a5Smrg allow_undefined=no 17211f0ac6a5Smrg continue 17221f0ac6a5Smrg ;; 17231f0ac6a5Smrg 17241f0ac6a5Smrg -objectlist) 17251f0ac6a5Smrg prev=objectlist 17261f0ac6a5Smrg continue 17271f0ac6a5Smrg ;; 17281f0ac6a5Smrg 17291f0ac6a5Smrg -o) prev=output ;; 17301f0ac6a5Smrg 17311f0ac6a5Smrg -precious-files-regex) 17321f0ac6a5Smrg prev=precious_regex 17331f0ac6a5Smrg continue 17341f0ac6a5Smrg ;; 17351f0ac6a5Smrg 17361f0ac6a5Smrg -release) 17371f0ac6a5Smrg prev=release 17381f0ac6a5Smrg continue 17391f0ac6a5Smrg ;; 17401f0ac6a5Smrg 17411f0ac6a5Smrg -rpath) 17421f0ac6a5Smrg prev=rpath 17431f0ac6a5Smrg continue 17441f0ac6a5Smrg ;; 17451f0ac6a5Smrg 17461f0ac6a5Smrg -R) 17471f0ac6a5Smrg prev=xrpath 17481f0ac6a5Smrg continue 17491f0ac6a5Smrg ;; 17501f0ac6a5Smrg 17511f0ac6a5Smrg -R*) 17521f0ac6a5Smrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 17531f0ac6a5Smrg # We need an absolute path. 17541f0ac6a5Smrg case $dir in 17551f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 17561f0ac6a5Smrg *) 17571f0ac6a5Smrg $echo "$modename: only absolute run-paths are allowed" 1>&2 17581f0ac6a5Smrg exit $EXIT_FAILURE 17591f0ac6a5Smrg ;; 17601f0ac6a5Smrg esac 17611f0ac6a5Smrg case "$xrpath " in 17621f0ac6a5Smrg *" $dir "*) ;; 17631f0ac6a5Smrg *) xrpath="$xrpath $dir" ;; 17641f0ac6a5Smrg esac 17651f0ac6a5Smrg continue 17661f0ac6a5Smrg ;; 17671f0ac6a5Smrg 1768e5410a46Smrg -static | -static-libtool-libs) 17691f0ac6a5Smrg # The effects of -static are defined in a previous loop. 17701f0ac6a5Smrg # We used to do the same as -all-static on platforms that 17711f0ac6a5Smrg # didn't have a PIC flag, but the assumption that the effects 17721f0ac6a5Smrg # would be equivalent was wrong. It would break on at least 17731f0ac6a5Smrg # Digital Unix and AIX. 17741f0ac6a5Smrg continue 17751f0ac6a5Smrg ;; 17761f0ac6a5Smrg 17771f0ac6a5Smrg -thread-safe) 17781f0ac6a5Smrg thread_safe=yes 17791f0ac6a5Smrg continue 17801f0ac6a5Smrg ;; 17811f0ac6a5Smrg 17821f0ac6a5Smrg -version-info) 17831f0ac6a5Smrg prev=vinfo 17841f0ac6a5Smrg continue 17851f0ac6a5Smrg ;; 17861f0ac6a5Smrg -version-number) 17871f0ac6a5Smrg prev=vinfo 17881f0ac6a5Smrg vinfo_number=yes 17891f0ac6a5Smrg continue 17901f0ac6a5Smrg ;; 17911f0ac6a5Smrg 17921f0ac6a5Smrg -Wc,*) 17931f0ac6a5Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 17941f0ac6a5Smrg arg= 17951f0ac6a5Smrg save_ifs="$IFS"; IFS=',' 17961f0ac6a5Smrg for flag in $args; do 17971f0ac6a5Smrg IFS="$save_ifs" 17981f0ac6a5Smrg case $flag in 17991f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18001f0ac6a5Smrg flag="\"$flag\"" 18011f0ac6a5Smrg ;; 18021f0ac6a5Smrg esac 18031f0ac6a5Smrg arg="$arg $wl$flag" 18041f0ac6a5Smrg compiler_flags="$compiler_flags $flag" 18051f0ac6a5Smrg done 18061f0ac6a5Smrg IFS="$save_ifs" 18071f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 18081f0ac6a5Smrg ;; 18091f0ac6a5Smrg 18101f0ac6a5Smrg -Wl,*) 18111f0ac6a5Smrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 18121f0ac6a5Smrg arg= 18131f0ac6a5Smrg save_ifs="$IFS"; IFS=',' 18141f0ac6a5Smrg for flag in $args; do 18151f0ac6a5Smrg IFS="$save_ifs" 18161f0ac6a5Smrg case $flag in 18171f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18181f0ac6a5Smrg flag="\"$flag\"" 18191f0ac6a5Smrg ;; 18201f0ac6a5Smrg esac 18211f0ac6a5Smrg arg="$arg $wl$flag" 18221f0ac6a5Smrg compiler_flags="$compiler_flags $wl$flag" 18231f0ac6a5Smrg linker_flags="$linker_flags $flag" 18241f0ac6a5Smrg done 18251f0ac6a5Smrg IFS="$save_ifs" 18261f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 18271f0ac6a5Smrg ;; 18281f0ac6a5Smrg 18291f0ac6a5Smrg -Xcompiler) 18301f0ac6a5Smrg prev=xcompiler 18311f0ac6a5Smrg continue 18321f0ac6a5Smrg ;; 18331f0ac6a5Smrg 18341f0ac6a5Smrg -Xlinker) 18351f0ac6a5Smrg prev=xlinker 18361f0ac6a5Smrg continue 18371f0ac6a5Smrg ;; 18381f0ac6a5Smrg 18391f0ac6a5Smrg -XCClinker) 18401f0ac6a5Smrg prev=xcclinker 18411f0ac6a5Smrg continue 18421f0ac6a5Smrg ;; 18431f0ac6a5Smrg 18441f0ac6a5Smrg # Some other compiler flag. 18451f0ac6a5Smrg -* | +*) 18461f0ac6a5Smrg # Unknown arguments in both finalize_command and compile_command need 18471f0ac6a5Smrg # to be aesthetically quoted because they are evaled later. 18481f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 18491f0ac6a5Smrg case $arg in 18501f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 18511f0ac6a5Smrg arg="\"$arg\"" 18521f0ac6a5Smrg ;; 18531f0ac6a5Smrg esac 18541f0ac6a5Smrg ;; 18551f0ac6a5Smrg 18561f0ac6a5Smrg *.$objext) 18571f0ac6a5Smrg # A standard object. 18581f0ac6a5Smrg objs="$objs $arg" 18591f0ac6a5Smrg ;; 18601f0ac6a5Smrg 18611f0ac6a5Smrg *.lo) 18621f0ac6a5Smrg # A libtool-controlled object. 18631f0ac6a5Smrg 18641f0ac6a5Smrg # Check to see that this really is a libtool object. 18651f0ac6a5Smrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 18661f0ac6a5Smrg pic_object= 18671f0ac6a5Smrg non_pic_object= 18681f0ac6a5Smrg 18691f0ac6a5Smrg # Read the .lo file 18701f0ac6a5Smrg # If there is no directory component, then add one. 18711f0ac6a5Smrg case $arg in 18721f0ac6a5Smrg */* | *\\*) . $arg ;; 18731f0ac6a5Smrg *) . ./$arg ;; 18741f0ac6a5Smrg esac 18751f0ac6a5Smrg 18761f0ac6a5Smrg if test -z "$pic_object" || \ 18771f0ac6a5Smrg test -z "$non_pic_object" || 18781f0ac6a5Smrg test "$pic_object" = none && \ 18791f0ac6a5Smrg test "$non_pic_object" = none; then 18801f0ac6a5Smrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 18811f0ac6a5Smrg exit $EXIT_FAILURE 18821f0ac6a5Smrg fi 18831f0ac6a5Smrg 18841f0ac6a5Smrg # Extract subdirectory from the argument. 18851f0ac6a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 18861f0ac6a5Smrg if test "X$xdir" = "X$arg"; then 18871f0ac6a5Smrg xdir= 18881f0ac6a5Smrg else 18891f0ac6a5Smrg xdir="$xdir/" 18901f0ac6a5Smrg fi 18911f0ac6a5Smrg 18921f0ac6a5Smrg if test "$pic_object" != none; then 18931f0ac6a5Smrg # Prepend the subdirectory the object is found in. 18941f0ac6a5Smrg pic_object="$xdir$pic_object" 18951f0ac6a5Smrg 18961f0ac6a5Smrg if test "$prev" = dlfiles; then 18971f0ac6a5Smrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 18981f0ac6a5Smrg dlfiles="$dlfiles $pic_object" 18991f0ac6a5Smrg prev= 19001f0ac6a5Smrg continue 19011f0ac6a5Smrg else 19021f0ac6a5Smrg # If libtool objects are unsupported, then we need to preload. 19031f0ac6a5Smrg prev=dlprefiles 19041f0ac6a5Smrg fi 19051f0ac6a5Smrg fi 19061f0ac6a5Smrg 19071f0ac6a5Smrg # CHECK ME: I think I busted this. -Ossama 19081f0ac6a5Smrg if test "$prev" = dlprefiles; then 19091f0ac6a5Smrg # Preload the old-style object. 19101f0ac6a5Smrg dlprefiles="$dlprefiles $pic_object" 19111f0ac6a5Smrg prev= 19121f0ac6a5Smrg fi 19131f0ac6a5Smrg 19141f0ac6a5Smrg # A PIC object. 19151f0ac6a5Smrg libobjs="$libobjs $pic_object" 19161f0ac6a5Smrg arg="$pic_object" 19171f0ac6a5Smrg fi 19181f0ac6a5Smrg 19191f0ac6a5Smrg # Non-PIC object. 19201f0ac6a5Smrg if test "$non_pic_object" != none; then 19211f0ac6a5Smrg # Prepend the subdirectory the object is found in. 19221f0ac6a5Smrg non_pic_object="$xdir$non_pic_object" 19231f0ac6a5Smrg 19241f0ac6a5Smrg # A standard non-PIC object 19251f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 19261f0ac6a5Smrg if test -z "$pic_object" || test "$pic_object" = none ; then 19271f0ac6a5Smrg arg="$non_pic_object" 19281f0ac6a5Smrg fi 19291f0ac6a5Smrg else 19301f0ac6a5Smrg # If the PIC object exists, use it instead. 19311f0ac6a5Smrg # $xdir was prepended to $pic_object above. 19321f0ac6a5Smrg non_pic_object="$pic_object" 19331f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 19341f0ac6a5Smrg fi 19351f0ac6a5Smrg else 19361f0ac6a5Smrg # Only an error if not doing a dry-run. 19371f0ac6a5Smrg if test -z "$run"; then 19381f0ac6a5Smrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 19391f0ac6a5Smrg exit $EXIT_FAILURE 19401f0ac6a5Smrg else 19411f0ac6a5Smrg # Dry-run case. 19421f0ac6a5Smrg 19431f0ac6a5Smrg # Extract subdirectory from the argument. 19441f0ac6a5Smrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 19451f0ac6a5Smrg if test "X$xdir" = "X$arg"; then 19461f0ac6a5Smrg xdir= 19471f0ac6a5Smrg else 19481f0ac6a5Smrg xdir="$xdir/" 19491f0ac6a5Smrg fi 19501f0ac6a5Smrg 19511f0ac6a5Smrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 19521f0ac6a5Smrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 19531f0ac6a5Smrg libobjs="$libobjs $pic_object" 19541f0ac6a5Smrg non_pic_objects="$non_pic_objects $non_pic_object" 19551f0ac6a5Smrg fi 19561f0ac6a5Smrg fi 19571f0ac6a5Smrg ;; 19581f0ac6a5Smrg 19591f0ac6a5Smrg *.$libext) 19601f0ac6a5Smrg # An archive. 19611f0ac6a5Smrg deplibs="$deplibs $arg" 19621f0ac6a5Smrg old_deplibs="$old_deplibs $arg" 19631f0ac6a5Smrg continue 19641f0ac6a5Smrg ;; 19651f0ac6a5Smrg 19661f0ac6a5Smrg *.la) 19671f0ac6a5Smrg # A libtool-controlled library. 19681f0ac6a5Smrg 19691f0ac6a5Smrg if test "$prev" = dlfiles; then 19701f0ac6a5Smrg # This library was specified with -dlopen. 19711f0ac6a5Smrg dlfiles="$dlfiles $arg" 19721f0ac6a5Smrg prev= 19731f0ac6a5Smrg elif test "$prev" = dlprefiles; then 19741f0ac6a5Smrg # The library was specified with -dlpreopen. 19751f0ac6a5Smrg dlprefiles="$dlprefiles $arg" 19761f0ac6a5Smrg prev= 19771f0ac6a5Smrg else 19781f0ac6a5Smrg deplibs="$deplibs $arg" 19791f0ac6a5Smrg fi 19801f0ac6a5Smrg continue 19811f0ac6a5Smrg ;; 19821f0ac6a5Smrg 19831f0ac6a5Smrg # Some other compiler argument. 19841f0ac6a5Smrg *) 19851f0ac6a5Smrg # Unknown arguments in both finalize_command and compile_command need 19861f0ac6a5Smrg # to be aesthetically quoted because they are evaled later. 19871f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 19881f0ac6a5Smrg case $arg in 19891f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 19901f0ac6a5Smrg arg="\"$arg\"" 19911f0ac6a5Smrg ;; 19921f0ac6a5Smrg esac 19931f0ac6a5Smrg ;; 19941f0ac6a5Smrg esac # arg 19951f0ac6a5Smrg 19961f0ac6a5Smrg # Now actually substitute the argument into the commands. 19971f0ac6a5Smrg if test -n "$arg"; then 19981f0ac6a5Smrg compile_command="$compile_command $arg" 19991f0ac6a5Smrg finalize_command="$finalize_command $arg" 20001f0ac6a5Smrg fi 20011f0ac6a5Smrg done # argument parsing loop 20021f0ac6a5Smrg 20031f0ac6a5Smrg if test -n "$prev"; then 20041f0ac6a5Smrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 20051f0ac6a5Smrg $echo "$help" 1>&2 20061f0ac6a5Smrg exit $EXIT_FAILURE 20071f0ac6a5Smrg fi 20081f0ac6a5Smrg 20091f0ac6a5Smrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 20101f0ac6a5Smrg eval arg=\"$export_dynamic_flag_spec\" 20111f0ac6a5Smrg compile_command="$compile_command $arg" 20121f0ac6a5Smrg finalize_command="$finalize_command $arg" 20131f0ac6a5Smrg fi 20141f0ac6a5Smrg 20151f0ac6a5Smrg oldlibs= 20161f0ac6a5Smrg # calculate the name of the file, without its directory 20171f0ac6a5Smrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 20181f0ac6a5Smrg libobjs_save="$libobjs" 20191f0ac6a5Smrg 20201f0ac6a5Smrg if test -n "$shlibpath_var"; then 20211f0ac6a5Smrg # get the directories listed in $shlibpath_var 20221f0ac6a5Smrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 20231f0ac6a5Smrg else 20241f0ac6a5Smrg shlib_search_path= 20251f0ac6a5Smrg fi 20261f0ac6a5Smrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 20271f0ac6a5Smrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 20281f0ac6a5Smrg 20291f0ac6a5Smrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 20301f0ac6a5Smrg if test "X$output_objdir" = "X$output"; then 20311f0ac6a5Smrg output_objdir="$objdir" 20321f0ac6a5Smrg else 20331f0ac6a5Smrg output_objdir="$output_objdir/$objdir" 20341f0ac6a5Smrg fi 20351f0ac6a5Smrg # Create the object directory. 20361f0ac6a5Smrg if test ! -d "$output_objdir"; then 20371f0ac6a5Smrg $show "$mkdir $output_objdir" 20381f0ac6a5Smrg $run $mkdir $output_objdir 20391f0ac6a5Smrg exit_status=$? 20401f0ac6a5Smrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 20411f0ac6a5Smrg exit $exit_status 20421f0ac6a5Smrg fi 20431f0ac6a5Smrg fi 20441f0ac6a5Smrg 20451f0ac6a5Smrg # Determine the type of output 20461f0ac6a5Smrg case $output in 20471f0ac6a5Smrg "") 20481f0ac6a5Smrg $echo "$modename: you must specify an output file" 1>&2 20491f0ac6a5Smrg $echo "$help" 1>&2 20501f0ac6a5Smrg exit $EXIT_FAILURE 20511f0ac6a5Smrg ;; 20521f0ac6a5Smrg *.$libext) linkmode=oldlib ;; 20531f0ac6a5Smrg *.lo | *.$objext) linkmode=obj ;; 20541f0ac6a5Smrg *.la) linkmode=lib ;; 20551f0ac6a5Smrg *) linkmode=prog ;; # Anything else should be a program. 20561f0ac6a5Smrg esac 20571f0ac6a5Smrg 20581f0ac6a5Smrg case $host in 20591f0ac6a5Smrg *cygwin* | *mingw* | *pw32*) 20601f0ac6a5Smrg # don't eliminate duplications in $postdeps and $predeps 20611f0ac6a5Smrg duplicate_compiler_generated_deps=yes 20621f0ac6a5Smrg ;; 20631f0ac6a5Smrg *) 20641f0ac6a5Smrg duplicate_compiler_generated_deps=$duplicate_deps 20651f0ac6a5Smrg ;; 20661f0ac6a5Smrg esac 20671f0ac6a5Smrg specialdeplibs= 20681f0ac6a5Smrg 20691f0ac6a5Smrg libs= 20701f0ac6a5Smrg # Find all interdependent deplibs by searching for libraries 20711f0ac6a5Smrg # that are linked more than once (e.g. -la -lb -la) 20721f0ac6a5Smrg for deplib in $deplibs; do 20731f0ac6a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 20741f0ac6a5Smrg case "$libs " in 20751f0ac6a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 20761f0ac6a5Smrg esac 20771f0ac6a5Smrg fi 20781f0ac6a5Smrg libs="$libs $deplib" 20791f0ac6a5Smrg done 20801f0ac6a5Smrg 20811f0ac6a5Smrg if test "$linkmode" = lib; then 20821f0ac6a5Smrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 20831f0ac6a5Smrg 20841f0ac6a5Smrg # Compute libraries that are listed more than once in $predeps 20851f0ac6a5Smrg # $postdeps and mark them as special (i.e., whose duplicates are 20861f0ac6a5Smrg # not to be eliminated). 20871f0ac6a5Smrg pre_post_deps= 20881f0ac6a5Smrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 20891f0ac6a5Smrg for pre_post_dep in $predeps $postdeps; do 20901f0ac6a5Smrg case "$pre_post_deps " in 20911f0ac6a5Smrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 20921f0ac6a5Smrg esac 20931f0ac6a5Smrg pre_post_deps="$pre_post_deps $pre_post_dep" 20941f0ac6a5Smrg done 20951f0ac6a5Smrg fi 20961f0ac6a5Smrg pre_post_deps= 20971f0ac6a5Smrg fi 20981f0ac6a5Smrg 20991f0ac6a5Smrg deplibs= 21001f0ac6a5Smrg newdependency_libs= 21011f0ac6a5Smrg newlib_search_path= 21021f0ac6a5Smrg need_relink=no # whether we're linking any uninstalled libtool libraries 21031f0ac6a5Smrg notinst_deplibs= # not-installed libtool libraries 21041f0ac6a5Smrg case $linkmode in 21051f0ac6a5Smrg lib) 21061f0ac6a5Smrg passes="conv link" 21071f0ac6a5Smrg for file in $dlfiles $dlprefiles; do 21081f0ac6a5Smrg case $file in 21091f0ac6a5Smrg *.la) ;; 21101f0ac6a5Smrg *) 21111f0ac6a5Smrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 21121f0ac6a5Smrg exit $EXIT_FAILURE 21131f0ac6a5Smrg ;; 21141f0ac6a5Smrg esac 21151f0ac6a5Smrg done 21161f0ac6a5Smrg ;; 21171f0ac6a5Smrg prog) 21181f0ac6a5Smrg compile_deplibs= 21191f0ac6a5Smrg finalize_deplibs= 21201f0ac6a5Smrg alldeplibs=no 21211f0ac6a5Smrg newdlfiles= 21221f0ac6a5Smrg newdlprefiles= 21231f0ac6a5Smrg passes="conv scan dlopen dlpreopen link" 21241f0ac6a5Smrg ;; 21251f0ac6a5Smrg *) passes="conv" 21261f0ac6a5Smrg ;; 21271f0ac6a5Smrg esac 21281f0ac6a5Smrg for pass in $passes; do 21291f0ac6a5Smrg if test "$linkmode,$pass" = "lib,link" || 21301f0ac6a5Smrg test "$linkmode,$pass" = "prog,scan"; then 21311f0ac6a5Smrg libs="$deplibs" 21321f0ac6a5Smrg deplibs= 21331f0ac6a5Smrg fi 21341f0ac6a5Smrg if test "$linkmode" = prog; then 21351f0ac6a5Smrg case $pass in 21361f0ac6a5Smrg dlopen) libs="$dlfiles" ;; 21371f0ac6a5Smrg dlpreopen) libs="$dlprefiles" ;; 21381f0ac6a5Smrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 21391f0ac6a5Smrg esac 21401f0ac6a5Smrg fi 21411f0ac6a5Smrg if test "$pass" = dlopen; then 21421f0ac6a5Smrg # Collect dlpreopened libraries 21431f0ac6a5Smrg save_deplibs="$deplibs" 21441f0ac6a5Smrg deplibs= 21451f0ac6a5Smrg fi 21461f0ac6a5Smrg for deplib in $libs; do 21471f0ac6a5Smrg lib= 21481f0ac6a5Smrg found=no 21491f0ac6a5Smrg case $deplib in 2150e5410a46Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 21511f0ac6a5Smrg if test "$linkmode,$pass" = "prog,link"; then 21521f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 21531f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 21541f0ac6a5Smrg else 21551f0ac6a5Smrg compiler_flags="$compiler_flags $deplib" 21561f0ac6a5Smrg fi 21571f0ac6a5Smrg continue 21581f0ac6a5Smrg ;; 21591f0ac6a5Smrg -l*) 21601f0ac6a5Smrg if test "$linkmode" != lib && test "$linkmode" != prog; then 21611f0ac6a5Smrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 21621f0ac6a5Smrg continue 21631f0ac6a5Smrg fi 21641f0ac6a5Smrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2165e5410a46Smrg if test "$linkmode" = lib; then 2166e5410a46Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2167e5410a46Smrg else 2168e5410a46Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2169e5410a46Smrg fi 2170e5410a46Smrg for searchdir in $searchdirs; do 21711f0ac6a5Smrg for search_ext in .la $std_shrext .so .a; do 21721f0ac6a5Smrg # Search the libtool library 21731f0ac6a5Smrg lib="$searchdir/lib${name}${search_ext}" 21741f0ac6a5Smrg if test -f "$lib"; then 21751f0ac6a5Smrg if test "$search_ext" = ".la"; then 21761f0ac6a5Smrg found=yes 21771f0ac6a5Smrg else 21781f0ac6a5Smrg found=no 21791f0ac6a5Smrg fi 21801f0ac6a5Smrg break 2 21811f0ac6a5Smrg fi 21821f0ac6a5Smrg done 21831f0ac6a5Smrg done 21841f0ac6a5Smrg if test "$found" != yes; then 21851f0ac6a5Smrg # deplib doesn't seem to be a libtool library 21861f0ac6a5Smrg if test "$linkmode,$pass" = "prog,link"; then 21871f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 21881f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 21891f0ac6a5Smrg else 21901f0ac6a5Smrg deplibs="$deplib $deplibs" 21911f0ac6a5Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 21921f0ac6a5Smrg fi 21931f0ac6a5Smrg continue 21941f0ac6a5Smrg else # deplib is a libtool library 21951f0ac6a5Smrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 21961f0ac6a5Smrg # We need to do some special things here, and not later. 21971f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 21981f0ac6a5Smrg case " $predeps $postdeps " in 21991f0ac6a5Smrg *" $deplib "*) 22001f0ac6a5Smrg if (${SED} -e '2q' $lib | 22011f0ac6a5Smrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 22021f0ac6a5Smrg library_names= 22031f0ac6a5Smrg old_library= 22041f0ac6a5Smrg case $lib in 22051f0ac6a5Smrg */* | *\\*) . $lib ;; 22061f0ac6a5Smrg *) . ./$lib ;; 22071f0ac6a5Smrg esac 22081f0ac6a5Smrg for l in $old_library $library_names; do 22091f0ac6a5Smrg ll="$l" 22101f0ac6a5Smrg done 22111f0ac6a5Smrg if test "X$ll" = "X$old_library" ; then # only static version available 22121f0ac6a5Smrg found=no 22131f0ac6a5Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 22141f0ac6a5Smrg test "X$ladir" = "X$lib" && ladir="." 22151f0ac6a5Smrg lib=$ladir/$old_library 22161f0ac6a5Smrg if test "$linkmode,$pass" = "prog,link"; then 22171f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 22181f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 22191f0ac6a5Smrg else 22201f0ac6a5Smrg deplibs="$deplib $deplibs" 22211f0ac6a5Smrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 22221f0ac6a5Smrg fi 22231f0ac6a5Smrg continue 22241f0ac6a5Smrg fi 22251f0ac6a5Smrg fi 22261f0ac6a5Smrg ;; 22271f0ac6a5Smrg *) ;; 22281f0ac6a5Smrg esac 22291f0ac6a5Smrg fi 22301f0ac6a5Smrg fi 22311f0ac6a5Smrg ;; # -l 22321f0ac6a5Smrg -L*) 22331f0ac6a5Smrg case $linkmode in 22341f0ac6a5Smrg lib) 22351f0ac6a5Smrg deplibs="$deplib $deplibs" 22361f0ac6a5Smrg test "$pass" = conv && continue 22371f0ac6a5Smrg newdependency_libs="$deplib $newdependency_libs" 22381f0ac6a5Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 22391f0ac6a5Smrg ;; 22401f0ac6a5Smrg prog) 22411f0ac6a5Smrg if test "$pass" = conv; then 22421f0ac6a5Smrg deplibs="$deplib $deplibs" 22431f0ac6a5Smrg continue 22441f0ac6a5Smrg fi 22451f0ac6a5Smrg if test "$pass" = scan; then 22461f0ac6a5Smrg deplibs="$deplib $deplibs" 22471f0ac6a5Smrg else 22481f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 22491f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 22501f0ac6a5Smrg fi 22511f0ac6a5Smrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 22521f0ac6a5Smrg ;; 22531f0ac6a5Smrg *) 22541f0ac6a5Smrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 22551f0ac6a5Smrg ;; 22561f0ac6a5Smrg esac # linkmode 22571f0ac6a5Smrg continue 22581f0ac6a5Smrg ;; # -L 22591f0ac6a5Smrg -R*) 22601f0ac6a5Smrg if test "$pass" = link; then 22611f0ac6a5Smrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 22621f0ac6a5Smrg # Make sure the xrpath contains only unique directories. 22631f0ac6a5Smrg case "$xrpath " in 22641f0ac6a5Smrg *" $dir "*) ;; 22651f0ac6a5Smrg *) xrpath="$xrpath $dir" ;; 22661f0ac6a5Smrg esac 22671f0ac6a5Smrg fi 22681f0ac6a5Smrg deplibs="$deplib $deplibs" 22691f0ac6a5Smrg continue 22701f0ac6a5Smrg ;; 22711f0ac6a5Smrg *.la) lib="$deplib" ;; 22721f0ac6a5Smrg *.$libext) 22731f0ac6a5Smrg if test "$pass" = conv; then 22741f0ac6a5Smrg deplibs="$deplib $deplibs" 22751f0ac6a5Smrg continue 22761f0ac6a5Smrg fi 22771f0ac6a5Smrg case $linkmode in 22781f0ac6a5Smrg lib) 22791f0ac6a5Smrg valid_a_lib=no 22801f0ac6a5Smrg case $deplibs_check_method in 22811f0ac6a5Smrg match_pattern*) 22821f0ac6a5Smrg set dummy $deplibs_check_method 22831f0ac6a5Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 22841f0ac6a5Smrg if eval $echo \"$deplib\" 2>/dev/null \ 22851f0ac6a5Smrg | $SED 10q \ 22861f0ac6a5Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 22871f0ac6a5Smrg valid_a_lib=yes 22881f0ac6a5Smrg fi 22891f0ac6a5Smrg ;; 22901f0ac6a5Smrg pass_all) 22911f0ac6a5Smrg valid_a_lib=yes 22921f0ac6a5Smrg ;; 22931f0ac6a5Smrg esac 22941f0ac6a5Smrg if test "$valid_a_lib" != yes; then 22951f0ac6a5Smrg $echo 22961f0ac6a5Smrg $echo "*** Warning: Trying to link with static lib archive $deplib." 22971f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 22981f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 22991f0ac6a5Smrg $echo "*** shared version of the library, which you do not appear to have" 23001f0ac6a5Smrg $echo "*** because the file extensions .$libext of this argument makes me believe" 23011f0ac6a5Smrg $echo "*** that it is just a static archive that I should not used here." 23021f0ac6a5Smrg else 23031f0ac6a5Smrg $echo 23041f0ac6a5Smrg $echo "*** Warning: Linking the shared library $output against the" 23051f0ac6a5Smrg $echo "*** static library $deplib is not portable!" 23061f0ac6a5Smrg deplibs="$deplib $deplibs" 23071f0ac6a5Smrg fi 23081f0ac6a5Smrg continue 23091f0ac6a5Smrg ;; 23101f0ac6a5Smrg prog) 23111f0ac6a5Smrg if test "$pass" != link; then 23121f0ac6a5Smrg deplibs="$deplib $deplibs" 23131f0ac6a5Smrg else 23141f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 23151f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 23161f0ac6a5Smrg fi 23171f0ac6a5Smrg continue 23181f0ac6a5Smrg ;; 23191f0ac6a5Smrg esac # linkmode 23201f0ac6a5Smrg ;; # *.$libext 23211f0ac6a5Smrg *.lo | *.$objext) 23221f0ac6a5Smrg if test "$pass" = conv; then 23231f0ac6a5Smrg deplibs="$deplib $deplibs" 23241f0ac6a5Smrg elif test "$linkmode" = prog; then 23251f0ac6a5Smrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 23261f0ac6a5Smrg # If there is no dlopen support or we're linking statically, 23271f0ac6a5Smrg # we need to preload. 23281f0ac6a5Smrg newdlprefiles="$newdlprefiles $deplib" 23291f0ac6a5Smrg compile_deplibs="$deplib $compile_deplibs" 23301f0ac6a5Smrg finalize_deplibs="$deplib $finalize_deplibs" 23311f0ac6a5Smrg else 23321f0ac6a5Smrg newdlfiles="$newdlfiles $deplib" 23331f0ac6a5Smrg fi 23341f0ac6a5Smrg fi 23351f0ac6a5Smrg continue 23361f0ac6a5Smrg ;; 23371f0ac6a5Smrg %DEPLIBS%) 23381f0ac6a5Smrg alldeplibs=yes 23391f0ac6a5Smrg continue 23401f0ac6a5Smrg ;; 23411f0ac6a5Smrg esac # case $deplib 23421f0ac6a5Smrg if test "$found" = yes || test -f "$lib"; then : 23431f0ac6a5Smrg else 23441f0ac6a5Smrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 23451f0ac6a5Smrg exit $EXIT_FAILURE 23461f0ac6a5Smrg fi 23471f0ac6a5Smrg 23481f0ac6a5Smrg # Check to see that this really is a libtool archive. 23491f0ac6a5Smrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 23501f0ac6a5Smrg else 23511f0ac6a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 23521f0ac6a5Smrg exit $EXIT_FAILURE 23531f0ac6a5Smrg fi 23541f0ac6a5Smrg 23551f0ac6a5Smrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 23561f0ac6a5Smrg test "X$ladir" = "X$lib" && ladir="." 23571f0ac6a5Smrg 23581f0ac6a5Smrg dlname= 23591f0ac6a5Smrg dlopen= 23601f0ac6a5Smrg dlpreopen= 23611f0ac6a5Smrg libdir= 23621f0ac6a5Smrg library_names= 23631f0ac6a5Smrg old_library= 23641f0ac6a5Smrg # If the library was installed with an old release of libtool, 23651f0ac6a5Smrg # it will not redefine variables installed, or shouldnotlink 23661f0ac6a5Smrg installed=yes 23671f0ac6a5Smrg shouldnotlink=no 23681f0ac6a5Smrg avoidtemprpath= 23691f0ac6a5Smrg 23701f0ac6a5Smrg 23711f0ac6a5Smrg # Read the .la file 23721f0ac6a5Smrg case $lib in 23731f0ac6a5Smrg */* | *\\*) . $lib ;; 23741f0ac6a5Smrg *) . ./$lib ;; 23751f0ac6a5Smrg esac 23761f0ac6a5Smrg 23771f0ac6a5Smrg if test "$linkmode,$pass" = "lib,link" || 23781f0ac6a5Smrg test "$linkmode,$pass" = "prog,scan" || 23791f0ac6a5Smrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 23801f0ac6a5Smrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 23811f0ac6a5Smrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 23821f0ac6a5Smrg fi 23831f0ac6a5Smrg 23841f0ac6a5Smrg if test "$pass" = conv; then 23851f0ac6a5Smrg # Only check for convenience libraries 23861f0ac6a5Smrg deplibs="$lib $deplibs" 23871f0ac6a5Smrg if test -z "$libdir"; then 23881f0ac6a5Smrg if test -z "$old_library"; then 23891f0ac6a5Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 23901f0ac6a5Smrg exit $EXIT_FAILURE 23911f0ac6a5Smrg fi 23921f0ac6a5Smrg # It is a libtool convenience library, so add in its objects. 23931f0ac6a5Smrg convenience="$convenience $ladir/$objdir/$old_library" 23941f0ac6a5Smrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 23951f0ac6a5Smrg tmp_libs= 23961f0ac6a5Smrg for deplib in $dependency_libs; do 23971f0ac6a5Smrg deplibs="$deplib $deplibs" 23981f0ac6a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 23991f0ac6a5Smrg case "$tmp_libs " in 24001f0ac6a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 24011f0ac6a5Smrg esac 24021f0ac6a5Smrg fi 24031f0ac6a5Smrg tmp_libs="$tmp_libs $deplib" 24041f0ac6a5Smrg done 24051f0ac6a5Smrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 24061f0ac6a5Smrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 24071f0ac6a5Smrg exit $EXIT_FAILURE 24081f0ac6a5Smrg fi 24091f0ac6a5Smrg continue 24101f0ac6a5Smrg fi # $pass = conv 24111f0ac6a5Smrg 24121f0ac6a5Smrg 24131f0ac6a5Smrg # Get the name of the library we link against. 24141f0ac6a5Smrg linklib= 24151f0ac6a5Smrg for l in $old_library $library_names; do 24161f0ac6a5Smrg linklib="$l" 24171f0ac6a5Smrg done 24181f0ac6a5Smrg if test -z "$linklib"; then 24191f0ac6a5Smrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 24201f0ac6a5Smrg exit $EXIT_FAILURE 24211f0ac6a5Smrg fi 24221f0ac6a5Smrg 24231f0ac6a5Smrg # This library was specified with -dlopen. 24241f0ac6a5Smrg if test "$pass" = dlopen; then 24251f0ac6a5Smrg if test -z "$libdir"; then 24261f0ac6a5Smrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 24271f0ac6a5Smrg exit $EXIT_FAILURE 24281f0ac6a5Smrg fi 24291f0ac6a5Smrg if test -z "$dlname" || 24301f0ac6a5Smrg test "$dlopen_support" != yes || 24311f0ac6a5Smrg test "$build_libtool_libs" = no; then 24321f0ac6a5Smrg # If there is no dlname, no dlopen support or we're linking 24331f0ac6a5Smrg # statically, we need to preload. We also need to preload any 24341f0ac6a5Smrg # dependent libraries so libltdl's deplib preloader doesn't 24351f0ac6a5Smrg # bomb out in the load deplibs phase. 24361f0ac6a5Smrg dlprefiles="$dlprefiles $lib $dependency_libs" 24371f0ac6a5Smrg else 24381f0ac6a5Smrg newdlfiles="$newdlfiles $lib" 24391f0ac6a5Smrg fi 24401f0ac6a5Smrg continue 24411f0ac6a5Smrg fi # $pass = dlopen 24421f0ac6a5Smrg 24431f0ac6a5Smrg # We need an absolute path. 24441f0ac6a5Smrg case $ladir in 24451f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 24461f0ac6a5Smrg *) 24471f0ac6a5Smrg abs_ladir=`cd "$ladir" && pwd` 24481f0ac6a5Smrg if test -z "$abs_ladir"; then 24491f0ac6a5Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 24501f0ac6a5Smrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 24511f0ac6a5Smrg abs_ladir="$ladir" 24521f0ac6a5Smrg fi 24531f0ac6a5Smrg ;; 24541f0ac6a5Smrg esac 24551f0ac6a5Smrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 24561f0ac6a5Smrg 24571f0ac6a5Smrg # Find the relevant object directory and library name. 24581f0ac6a5Smrg if test "X$installed" = Xyes; then 24591f0ac6a5Smrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24601f0ac6a5Smrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 24611f0ac6a5Smrg dir="$ladir" 24621f0ac6a5Smrg absdir="$abs_ladir" 24631f0ac6a5Smrg libdir="$abs_ladir" 24641f0ac6a5Smrg else 24651f0ac6a5Smrg dir="$libdir" 24661f0ac6a5Smrg absdir="$libdir" 24671f0ac6a5Smrg fi 24681f0ac6a5Smrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 24691f0ac6a5Smrg else 24701f0ac6a5Smrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 24711f0ac6a5Smrg dir="$ladir" 24721f0ac6a5Smrg absdir="$abs_ladir" 24731f0ac6a5Smrg # Remove this search path later 24741f0ac6a5Smrg notinst_path="$notinst_path $abs_ladir" 24751f0ac6a5Smrg else 24761f0ac6a5Smrg dir="$ladir/$objdir" 24771f0ac6a5Smrg absdir="$abs_ladir/$objdir" 24781f0ac6a5Smrg # Remove this search path later 24791f0ac6a5Smrg notinst_path="$notinst_path $abs_ladir" 24801f0ac6a5Smrg fi 24811f0ac6a5Smrg fi # $installed = yes 24821f0ac6a5Smrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 24831f0ac6a5Smrg 24841f0ac6a5Smrg # This library was specified with -dlpreopen. 24851f0ac6a5Smrg if test "$pass" = dlpreopen; then 24861f0ac6a5Smrg if test -z "$libdir"; then 24871f0ac6a5Smrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 24881f0ac6a5Smrg exit $EXIT_FAILURE 24891f0ac6a5Smrg fi 24901f0ac6a5Smrg # Prefer using a static library (so that no silly _DYNAMIC symbols 24911f0ac6a5Smrg # are required to link). 24921f0ac6a5Smrg if test -n "$old_library"; then 24931f0ac6a5Smrg newdlprefiles="$newdlprefiles $dir/$old_library" 24941f0ac6a5Smrg # Otherwise, use the dlname, so that lt_dlopen finds it. 24951f0ac6a5Smrg elif test -n "$dlname"; then 24961f0ac6a5Smrg newdlprefiles="$newdlprefiles $dir/$dlname" 24971f0ac6a5Smrg else 24981f0ac6a5Smrg newdlprefiles="$newdlprefiles $dir/$linklib" 24991f0ac6a5Smrg fi 25001f0ac6a5Smrg fi # $pass = dlpreopen 25011f0ac6a5Smrg 25021f0ac6a5Smrg if test -z "$libdir"; then 25031f0ac6a5Smrg # Link the convenience library 25041f0ac6a5Smrg if test "$linkmode" = lib; then 25051f0ac6a5Smrg deplibs="$dir/$old_library $deplibs" 25061f0ac6a5Smrg elif test "$linkmode,$pass" = "prog,link"; then 25071f0ac6a5Smrg compile_deplibs="$dir/$old_library $compile_deplibs" 25081f0ac6a5Smrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 25091f0ac6a5Smrg else 25101f0ac6a5Smrg deplibs="$lib $deplibs" # used for prog,scan pass 25111f0ac6a5Smrg fi 25121f0ac6a5Smrg continue 25131f0ac6a5Smrg fi 25141f0ac6a5Smrg 25151f0ac6a5Smrg 25161f0ac6a5Smrg if test "$linkmode" = prog && test "$pass" != link; then 25171f0ac6a5Smrg newlib_search_path="$newlib_search_path $ladir" 25181f0ac6a5Smrg deplibs="$lib $deplibs" 25191f0ac6a5Smrg 25201f0ac6a5Smrg linkalldeplibs=no 25211f0ac6a5Smrg if test "$link_all_deplibs" != no || test -z "$library_names" || 25221f0ac6a5Smrg test "$build_libtool_libs" = no; then 25231f0ac6a5Smrg linkalldeplibs=yes 25241f0ac6a5Smrg fi 25251f0ac6a5Smrg 25261f0ac6a5Smrg tmp_libs= 25271f0ac6a5Smrg for deplib in $dependency_libs; do 25281f0ac6a5Smrg case $deplib in 25291f0ac6a5Smrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 25301f0ac6a5Smrg esac 25311f0ac6a5Smrg # Need to link against all dependency_libs? 25321f0ac6a5Smrg if test "$linkalldeplibs" = yes; then 25331f0ac6a5Smrg deplibs="$deplib $deplibs" 25341f0ac6a5Smrg else 25351f0ac6a5Smrg # Need to hardcode shared library paths 25361f0ac6a5Smrg # or/and link against static libraries 25371f0ac6a5Smrg newdependency_libs="$deplib $newdependency_libs" 25381f0ac6a5Smrg fi 25391f0ac6a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 25401f0ac6a5Smrg case "$tmp_libs " in 25411f0ac6a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 25421f0ac6a5Smrg esac 25431f0ac6a5Smrg fi 25441f0ac6a5Smrg tmp_libs="$tmp_libs $deplib" 25451f0ac6a5Smrg done # for deplib 25461f0ac6a5Smrg continue 25471f0ac6a5Smrg fi # $linkmode = prog... 25481f0ac6a5Smrg 25491f0ac6a5Smrg if test "$linkmode,$pass" = "prog,link"; then 25501f0ac6a5Smrg if test -n "$library_names" && 2551e5410a46Smrg { { test "$prefer_static_libs" = no || 2552e5410a46Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2553e5410a46Smrg test -z "$old_library"; }; then 25541f0ac6a5Smrg # We need to hardcode the library path 25551f0ac6a5Smrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 25561f0ac6a5Smrg # Make sure the rpath contains only unique directories. 25571f0ac6a5Smrg case "$temp_rpath " in 25581f0ac6a5Smrg *" $dir "*) ;; 25591f0ac6a5Smrg *" $absdir "*) ;; 25601f0ac6a5Smrg *) temp_rpath="$temp_rpath $absdir" ;; 25611f0ac6a5Smrg esac 25621f0ac6a5Smrg fi 25631f0ac6a5Smrg 25641f0ac6a5Smrg # Hardcode the library path. 25651f0ac6a5Smrg # Skip directories that are in the system default run-time 25661f0ac6a5Smrg # search path. 25671f0ac6a5Smrg case " $sys_lib_dlsearch_path " in 25681f0ac6a5Smrg *" $absdir "*) ;; 25691f0ac6a5Smrg *) 25701f0ac6a5Smrg case "$compile_rpath " in 25711f0ac6a5Smrg *" $absdir "*) ;; 25721f0ac6a5Smrg *) compile_rpath="$compile_rpath $absdir" 25731f0ac6a5Smrg esac 25741f0ac6a5Smrg ;; 25751f0ac6a5Smrg esac 25761f0ac6a5Smrg case " $sys_lib_dlsearch_path " in 25771f0ac6a5Smrg *" $libdir "*) ;; 25781f0ac6a5Smrg *) 25791f0ac6a5Smrg case "$finalize_rpath " in 25801f0ac6a5Smrg *" $libdir "*) ;; 25811f0ac6a5Smrg *) finalize_rpath="$finalize_rpath $libdir" 25821f0ac6a5Smrg esac 25831f0ac6a5Smrg ;; 25841f0ac6a5Smrg esac 25851f0ac6a5Smrg fi # $linkmode,$pass = prog,link... 25861f0ac6a5Smrg 25871f0ac6a5Smrg if test "$alldeplibs" = yes && 25881f0ac6a5Smrg { test "$deplibs_check_method" = pass_all || 25891f0ac6a5Smrg { test "$build_libtool_libs" = yes && 25901f0ac6a5Smrg test -n "$library_names"; }; }; then 25911f0ac6a5Smrg # We only need to search for static libraries 25921f0ac6a5Smrg continue 25931f0ac6a5Smrg fi 25941f0ac6a5Smrg fi 25951f0ac6a5Smrg 25961f0ac6a5Smrg link_static=no # Whether the deplib will be linked statically 25971f0ac6a5Smrg use_static_libs=$prefer_static_libs 25981f0ac6a5Smrg if test "$use_static_libs" = built && test "$installed" = yes ; then 25991f0ac6a5Smrg use_static_libs=no 26001f0ac6a5Smrg fi 26011f0ac6a5Smrg if test -n "$library_names" && 26021f0ac6a5Smrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 26031f0ac6a5Smrg if test "$installed" = no; then 26041f0ac6a5Smrg notinst_deplibs="$notinst_deplibs $lib" 26051f0ac6a5Smrg need_relink=yes 26061f0ac6a5Smrg fi 26071f0ac6a5Smrg # This is a shared library 26081f0ac6a5Smrg 26091f0ac6a5Smrg # Warn about portability, can't link against -module's on 26101f0ac6a5Smrg # some systems (darwin) 26111f0ac6a5Smrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 26121f0ac6a5Smrg $echo 26131f0ac6a5Smrg if test "$linkmode" = prog; then 26141f0ac6a5Smrg $echo "*** Warning: Linking the executable $output against the loadable module" 26151f0ac6a5Smrg else 26161f0ac6a5Smrg $echo "*** Warning: Linking the shared library $output against the loadable module" 26171f0ac6a5Smrg fi 26181f0ac6a5Smrg $echo "*** $linklib is not portable!" 26191f0ac6a5Smrg fi 26201f0ac6a5Smrg if test "$linkmode" = lib && 26211f0ac6a5Smrg test "$hardcode_into_libs" = yes; then 26221f0ac6a5Smrg # Hardcode the library path. 26231f0ac6a5Smrg # Skip directories that are in the system default run-time 26241f0ac6a5Smrg # search path. 26251f0ac6a5Smrg case " $sys_lib_dlsearch_path " in 26261f0ac6a5Smrg *" $absdir "*) ;; 26271f0ac6a5Smrg *) 26281f0ac6a5Smrg case "$compile_rpath " in 26291f0ac6a5Smrg *" $absdir "*) ;; 26301f0ac6a5Smrg *) compile_rpath="$compile_rpath $absdir" 26311f0ac6a5Smrg esac 26321f0ac6a5Smrg ;; 26331f0ac6a5Smrg esac 26341f0ac6a5Smrg case " $sys_lib_dlsearch_path " in 26351f0ac6a5Smrg *" $libdir "*) ;; 26361f0ac6a5Smrg *) 26371f0ac6a5Smrg case "$finalize_rpath " in 26381f0ac6a5Smrg *" $libdir "*) ;; 26391f0ac6a5Smrg *) finalize_rpath="$finalize_rpath $libdir" 26401f0ac6a5Smrg esac 26411f0ac6a5Smrg ;; 26421f0ac6a5Smrg esac 26431f0ac6a5Smrg fi 26441f0ac6a5Smrg 26451f0ac6a5Smrg if test -n "$old_archive_from_expsyms_cmds"; then 26461f0ac6a5Smrg # figure out the soname 26471f0ac6a5Smrg set dummy $library_names 26481f0ac6a5Smrg realname="$2" 26491f0ac6a5Smrg shift; shift 26501f0ac6a5Smrg libname=`eval \\$echo \"$libname_spec\"` 26511f0ac6a5Smrg # use dlname if we got it. it's perfectly good, no? 26521f0ac6a5Smrg if test -n "$dlname"; then 26531f0ac6a5Smrg soname="$dlname" 26541f0ac6a5Smrg elif test -n "$soname_spec"; then 26551f0ac6a5Smrg # bleh windows 26561f0ac6a5Smrg case $host in 26571f0ac6a5Smrg *cygwin* | mingw*) 26581f0ac6a5Smrg major=`expr $current - $age` 26591f0ac6a5Smrg versuffix="-$major" 26601f0ac6a5Smrg ;; 26611f0ac6a5Smrg esac 26621f0ac6a5Smrg eval soname=\"$soname_spec\" 26631f0ac6a5Smrg else 26641f0ac6a5Smrg soname="$realname" 26651f0ac6a5Smrg fi 26661f0ac6a5Smrg 26671f0ac6a5Smrg # Make a new name for the extract_expsyms_cmds to use 26681f0ac6a5Smrg soroot="$soname" 26691f0ac6a5Smrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 26701f0ac6a5Smrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 26711f0ac6a5Smrg 26721f0ac6a5Smrg # If the library has no export list, then create one now 26731f0ac6a5Smrg if test -f "$output_objdir/$soname-def"; then : 26741f0ac6a5Smrg else 26751f0ac6a5Smrg $show "extracting exported symbol list from \`$soname'" 26761f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 26771f0ac6a5Smrg cmds=$extract_expsyms_cmds 26781f0ac6a5Smrg for cmd in $cmds; do 26791f0ac6a5Smrg IFS="$save_ifs" 26801f0ac6a5Smrg eval cmd=\"$cmd\" 26811f0ac6a5Smrg $show "$cmd" 26821f0ac6a5Smrg $run eval "$cmd" || exit $? 26831f0ac6a5Smrg done 26841f0ac6a5Smrg IFS="$save_ifs" 26851f0ac6a5Smrg fi 26861f0ac6a5Smrg 26871f0ac6a5Smrg # Create $newlib 26881f0ac6a5Smrg if test -f "$output_objdir/$newlib"; then :; else 26891f0ac6a5Smrg $show "generating import library for \`$soname'" 26901f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 26911f0ac6a5Smrg cmds=$old_archive_from_expsyms_cmds 26921f0ac6a5Smrg for cmd in $cmds; do 26931f0ac6a5Smrg IFS="$save_ifs" 26941f0ac6a5Smrg eval cmd=\"$cmd\" 26951f0ac6a5Smrg $show "$cmd" 26961f0ac6a5Smrg $run eval "$cmd" || exit $? 26971f0ac6a5Smrg done 26981f0ac6a5Smrg IFS="$save_ifs" 26991f0ac6a5Smrg fi 27001f0ac6a5Smrg # make sure the library variables are pointing to the new library 27011f0ac6a5Smrg dir=$output_objdir 27021f0ac6a5Smrg linklib=$newlib 27031f0ac6a5Smrg fi # test -n "$old_archive_from_expsyms_cmds" 27041f0ac6a5Smrg 27051f0ac6a5Smrg if test "$linkmode" = prog || test "$mode" != relink; then 27061f0ac6a5Smrg add_shlibpath= 27071f0ac6a5Smrg add_dir= 27081f0ac6a5Smrg add= 27091f0ac6a5Smrg lib_linked=yes 27101f0ac6a5Smrg case $hardcode_action in 27111f0ac6a5Smrg immediate | unsupported) 27121f0ac6a5Smrg if test "$hardcode_direct" = no; then 27131f0ac6a5Smrg add="$dir/$linklib" 27141f0ac6a5Smrg case $host in 27151f0ac6a5Smrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 27161f0ac6a5Smrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 27171f0ac6a5Smrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 27181f0ac6a5Smrg *-*-unixware7*) add_dir="-L$dir" ;; 27191f0ac6a5Smrg *-*-darwin* ) 27201f0ac6a5Smrg # if the lib is a module then we can not link against 27211f0ac6a5Smrg # it, someone is ignoring the new warnings I added 27221f0ac6a5Smrg if /usr/bin/file -L $add 2> /dev/null | 27231f0ac6a5Smrg $EGREP ": [^:]* bundle" >/dev/null ; then 27241f0ac6a5Smrg $echo "** Warning, lib $linklib is a module, not a shared library" 27251f0ac6a5Smrg if test -z "$old_library" ; then 27261f0ac6a5Smrg $echo 27271f0ac6a5Smrg $echo "** And there doesn't seem to be a static archive available" 27281f0ac6a5Smrg $echo "** The link will probably fail, sorry" 27291f0ac6a5Smrg else 27301f0ac6a5Smrg add="$dir/$old_library" 27311f0ac6a5Smrg fi 27321f0ac6a5Smrg fi 27331f0ac6a5Smrg esac 27341f0ac6a5Smrg elif test "$hardcode_minus_L" = no; then 27351f0ac6a5Smrg case $host in 27361f0ac6a5Smrg *-*-sunos*) add_shlibpath="$dir" ;; 27371f0ac6a5Smrg esac 27381f0ac6a5Smrg add_dir="-L$dir" 27391f0ac6a5Smrg add="-l$name" 27401f0ac6a5Smrg elif test "$hardcode_shlibpath_var" = no; then 27411f0ac6a5Smrg add_shlibpath="$dir" 27421f0ac6a5Smrg add="-l$name" 27431f0ac6a5Smrg else 27441f0ac6a5Smrg lib_linked=no 27451f0ac6a5Smrg fi 27461f0ac6a5Smrg ;; 27471f0ac6a5Smrg relink) 27481f0ac6a5Smrg if test "$hardcode_direct" = yes; then 27491f0ac6a5Smrg add="$dir/$linklib" 27501f0ac6a5Smrg elif test "$hardcode_minus_L" = yes; then 27511f0ac6a5Smrg add_dir="-L$dir" 27521f0ac6a5Smrg # Try looking first in the location we're being installed to. 27531f0ac6a5Smrg if test -n "$inst_prefix_dir"; then 27541f0ac6a5Smrg case $libdir in 27551f0ac6a5Smrg [\\/]*) 27561f0ac6a5Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 27571f0ac6a5Smrg ;; 27581f0ac6a5Smrg esac 27591f0ac6a5Smrg fi 27601f0ac6a5Smrg add="-l$name" 27611f0ac6a5Smrg elif test "$hardcode_shlibpath_var" = yes; then 27621f0ac6a5Smrg add_shlibpath="$dir" 27631f0ac6a5Smrg add="-l$name" 27641f0ac6a5Smrg else 27651f0ac6a5Smrg lib_linked=no 27661f0ac6a5Smrg fi 27671f0ac6a5Smrg ;; 27681f0ac6a5Smrg *) lib_linked=no ;; 27691f0ac6a5Smrg esac 27701f0ac6a5Smrg 27711f0ac6a5Smrg if test "$lib_linked" != yes; then 27721f0ac6a5Smrg $echo "$modename: configuration error: unsupported hardcode properties" 27731f0ac6a5Smrg exit $EXIT_FAILURE 27741f0ac6a5Smrg fi 27751f0ac6a5Smrg 27761f0ac6a5Smrg if test -n "$add_shlibpath"; then 27771f0ac6a5Smrg case :$compile_shlibpath: in 27781f0ac6a5Smrg *":$add_shlibpath:"*) ;; 27791f0ac6a5Smrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 27801f0ac6a5Smrg esac 27811f0ac6a5Smrg fi 27821f0ac6a5Smrg if test "$linkmode" = prog; then 27831f0ac6a5Smrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 27841f0ac6a5Smrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 27851f0ac6a5Smrg else 27861f0ac6a5Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 27871f0ac6a5Smrg test -n "$add" && deplibs="$add $deplibs" 27881f0ac6a5Smrg if test "$hardcode_direct" != yes && \ 27891f0ac6a5Smrg test "$hardcode_minus_L" != yes && \ 27901f0ac6a5Smrg test "$hardcode_shlibpath_var" = yes; then 27911f0ac6a5Smrg case :$finalize_shlibpath: in 27921f0ac6a5Smrg *":$libdir:"*) ;; 27931f0ac6a5Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 27941f0ac6a5Smrg esac 27951f0ac6a5Smrg fi 27961f0ac6a5Smrg fi 27971f0ac6a5Smrg fi 27981f0ac6a5Smrg 27991f0ac6a5Smrg if test "$linkmode" = prog || test "$mode" = relink; then 28001f0ac6a5Smrg add_shlibpath= 28011f0ac6a5Smrg add_dir= 28021f0ac6a5Smrg add= 28031f0ac6a5Smrg # Finalize command for both is simple: just hardcode it. 28041f0ac6a5Smrg if test "$hardcode_direct" = yes; then 28051f0ac6a5Smrg add="$libdir/$linklib" 28061f0ac6a5Smrg elif test "$hardcode_minus_L" = yes; then 28071f0ac6a5Smrg add_dir="-L$libdir" 28081f0ac6a5Smrg add="-l$name" 28091f0ac6a5Smrg elif test "$hardcode_shlibpath_var" = yes; then 28101f0ac6a5Smrg case :$finalize_shlibpath: in 28111f0ac6a5Smrg *":$libdir:"*) ;; 28121f0ac6a5Smrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 28131f0ac6a5Smrg esac 28141f0ac6a5Smrg add="-l$name" 28151f0ac6a5Smrg elif test "$hardcode_automatic" = yes; then 28161f0ac6a5Smrg if test -n "$inst_prefix_dir" && 28171f0ac6a5Smrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 28181f0ac6a5Smrg add="$inst_prefix_dir$libdir/$linklib" 28191f0ac6a5Smrg else 28201f0ac6a5Smrg add="$libdir/$linklib" 28211f0ac6a5Smrg fi 28221f0ac6a5Smrg else 28231f0ac6a5Smrg # We cannot seem to hardcode it, guess we'll fake it. 28241f0ac6a5Smrg add_dir="-L$libdir" 28251f0ac6a5Smrg # Try looking first in the location we're being installed to. 28261f0ac6a5Smrg if test -n "$inst_prefix_dir"; then 28271f0ac6a5Smrg case $libdir in 28281f0ac6a5Smrg [\\/]*) 28291f0ac6a5Smrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 28301f0ac6a5Smrg ;; 28311f0ac6a5Smrg esac 28321f0ac6a5Smrg fi 28331f0ac6a5Smrg add="-l$name" 28341f0ac6a5Smrg fi 28351f0ac6a5Smrg 28361f0ac6a5Smrg if test "$linkmode" = prog; then 28371f0ac6a5Smrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 28381f0ac6a5Smrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 28391f0ac6a5Smrg else 28401f0ac6a5Smrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 28411f0ac6a5Smrg test -n "$add" && deplibs="$add $deplibs" 28421f0ac6a5Smrg fi 28431f0ac6a5Smrg fi 28441f0ac6a5Smrg elif test "$linkmode" = prog; then 28451f0ac6a5Smrg # Here we assume that one of hardcode_direct or hardcode_minus_L 28461f0ac6a5Smrg # is not unsupported. This is valid on all known static and 28471f0ac6a5Smrg # shared platforms. 28481f0ac6a5Smrg if test "$hardcode_direct" != unsupported; then 28491f0ac6a5Smrg test -n "$old_library" && linklib="$old_library" 28501f0ac6a5Smrg compile_deplibs="$dir/$linklib $compile_deplibs" 28511f0ac6a5Smrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 28521f0ac6a5Smrg else 28531f0ac6a5Smrg compile_deplibs="-l$name -L$dir $compile_deplibs" 28541f0ac6a5Smrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 28551f0ac6a5Smrg fi 28561f0ac6a5Smrg elif test "$build_libtool_libs" = yes; then 28571f0ac6a5Smrg # Not a shared library 28581f0ac6a5Smrg if test "$deplibs_check_method" != pass_all; then 28591f0ac6a5Smrg # We're trying link a shared library against a static one 28601f0ac6a5Smrg # but the system doesn't support it. 28611f0ac6a5Smrg 28621f0ac6a5Smrg # Just print a warning and add the library to dependency_libs so 28631f0ac6a5Smrg # that the program can be linked against the static library. 28641f0ac6a5Smrg $echo 28651f0ac6a5Smrg $echo "*** Warning: This system can not link to static lib archive $lib." 28661f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 28671f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 28681f0ac6a5Smrg $echo "*** shared version of the library, which you do not appear to have." 28691f0ac6a5Smrg if test "$module" = yes; then 28701f0ac6a5Smrg $echo "*** But as you try to build a module library, libtool will still create " 28711f0ac6a5Smrg $echo "*** a static module, that should work as long as the dlopening application" 28721f0ac6a5Smrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 28731f0ac6a5Smrg if test -z "$global_symbol_pipe"; then 28741f0ac6a5Smrg $echo 28751f0ac6a5Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 28761f0ac6a5Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 28771f0ac6a5Smrg $echo "*** not find such a program. So, this module is probably useless." 28781f0ac6a5Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 28791f0ac6a5Smrg fi 28801f0ac6a5Smrg if test "$build_old_libs" = no; then 28811f0ac6a5Smrg build_libtool_libs=module 28821f0ac6a5Smrg build_old_libs=yes 28831f0ac6a5Smrg else 28841f0ac6a5Smrg build_libtool_libs=no 28851f0ac6a5Smrg fi 28861f0ac6a5Smrg fi 28871f0ac6a5Smrg else 28881f0ac6a5Smrg deplibs="$dir/$old_library $deplibs" 28891f0ac6a5Smrg link_static=yes 28901f0ac6a5Smrg fi 28911f0ac6a5Smrg fi # link shared/static library? 28921f0ac6a5Smrg 28931f0ac6a5Smrg if test "$linkmode" = lib; then 28941f0ac6a5Smrg if test -n "$dependency_libs" && 28951f0ac6a5Smrg { test "$hardcode_into_libs" != yes || 28961f0ac6a5Smrg test "$build_old_libs" = yes || 28971f0ac6a5Smrg test "$link_static" = yes; }; then 28981f0ac6a5Smrg # Extract -R from dependency_libs 28991f0ac6a5Smrg temp_deplibs= 29001f0ac6a5Smrg for libdir in $dependency_libs; do 29011f0ac6a5Smrg case $libdir in 29021f0ac6a5Smrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 29031f0ac6a5Smrg case " $xrpath " in 29041f0ac6a5Smrg *" $temp_xrpath "*) ;; 29051f0ac6a5Smrg *) xrpath="$xrpath $temp_xrpath";; 29061f0ac6a5Smrg esac;; 29071f0ac6a5Smrg *) temp_deplibs="$temp_deplibs $libdir";; 29081f0ac6a5Smrg esac 29091f0ac6a5Smrg done 29101f0ac6a5Smrg dependency_libs="$temp_deplibs" 29111f0ac6a5Smrg fi 29121f0ac6a5Smrg 29131f0ac6a5Smrg newlib_search_path="$newlib_search_path $absdir" 29141f0ac6a5Smrg # Link against this library 29151f0ac6a5Smrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 29161f0ac6a5Smrg # ... and its dependency_libs 29171f0ac6a5Smrg tmp_libs= 29181f0ac6a5Smrg for deplib in $dependency_libs; do 29191f0ac6a5Smrg newdependency_libs="$deplib $newdependency_libs" 29201f0ac6a5Smrg if test "X$duplicate_deps" = "Xyes" ; then 29211f0ac6a5Smrg case "$tmp_libs " in 29221f0ac6a5Smrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 29231f0ac6a5Smrg esac 29241f0ac6a5Smrg fi 29251f0ac6a5Smrg tmp_libs="$tmp_libs $deplib" 29261f0ac6a5Smrg done 29271f0ac6a5Smrg 29281f0ac6a5Smrg if test "$link_all_deplibs" != no; then 29291f0ac6a5Smrg # Add the search paths of all dependency libraries 29301f0ac6a5Smrg for deplib in $dependency_libs; do 29311f0ac6a5Smrg case $deplib in 29321f0ac6a5Smrg -L*) path="$deplib" ;; 29331f0ac6a5Smrg *.la) 29341f0ac6a5Smrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 29351f0ac6a5Smrg test "X$dir" = "X$deplib" && dir="." 29361f0ac6a5Smrg # We need an absolute path. 29371f0ac6a5Smrg case $dir in 29381f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 29391f0ac6a5Smrg *) 29401f0ac6a5Smrg absdir=`cd "$dir" && pwd` 29411f0ac6a5Smrg if test -z "$absdir"; then 29421f0ac6a5Smrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 29431f0ac6a5Smrg absdir="$dir" 29441f0ac6a5Smrg fi 29451f0ac6a5Smrg ;; 29461f0ac6a5Smrg esac 29471f0ac6a5Smrg if grep "^installed=no" $deplib > /dev/null; then 29481f0ac6a5Smrg path="$absdir/$objdir" 29491f0ac6a5Smrg else 29501f0ac6a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 29511f0ac6a5Smrg if test -z "$libdir"; then 29521f0ac6a5Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 29531f0ac6a5Smrg exit $EXIT_FAILURE 29541f0ac6a5Smrg fi 29551f0ac6a5Smrg if test "$absdir" != "$libdir"; then 29561f0ac6a5Smrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 29571f0ac6a5Smrg fi 29581f0ac6a5Smrg path="$absdir" 29591f0ac6a5Smrg fi 29601f0ac6a5Smrg depdepl= 29611f0ac6a5Smrg case $host in 29621f0ac6a5Smrg *-*-darwin*) 29631f0ac6a5Smrg # we do not want to link against static libs, 29641f0ac6a5Smrg # but need to link against shared 29651f0ac6a5Smrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2966e5410a46Smrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 29671f0ac6a5Smrg if test -n "$deplibrary_names" ; then 29681f0ac6a5Smrg for tmp in $deplibrary_names ; do 29691f0ac6a5Smrg depdepl=$tmp 29701f0ac6a5Smrg done 2971e5410a46Smrg if test -f "$deplibdir/$depdepl" ; then 2972e5410a46Smrg depdepl="$deplibdir/$depdepl" 2973e5410a46Smrg elif test -f "$path/$depdepl" ; then 29741f0ac6a5Smrg depdepl="$path/$depdepl" 2975e5410a46Smrg else 2976e5410a46Smrg # Can't find it, oh well... 2977e5410a46Smrg depdepl= 29781f0ac6a5Smrg fi 29791f0ac6a5Smrg # do not add paths which are already there 29801f0ac6a5Smrg case " $newlib_search_path " in 29811f0ac6a5Smrg *" $path "*) ;; 29821f0ac6a5Smrg *) newlib_search_path="$newlib_search_path $path";; 29831f0ac6a5Smrg esac 29841f0ac6a5Smrg fi 29851f0ac6a5Smrg path="" 29861f0ac6a5Smrg ;; 29871f0ac6a5Smrg *) 29881f0ac6a5Smrg path="-L$path" 29891f0ac6a5Smrg ;; 29901f0ac6a5Smrg esac 29911f0ac6a5Smrg ;; 29921f0ac6a5Smrg -l*) 29931f0ac6a5Smrg case $host in 29941f0ac6a5Smrg *-*-darwin*) 29951f0ac6a5Smrg # Again, we only want to link against shared libraries 29961f0ac6a5Smrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 29971f0ac6a5Smrg for tmp in $newlib_search_path ; do 29981f0ac6a5Smrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 29991f0ac6a5Smrg eval depdepl="$tmp/lib$tmp_libs.dylib" 30001f0ac6a5Smrg break 30011f0ac6a5Smrg fi 30021f0ac6a5Smrg done 30031f0ac6a5Smrg path="" 30041f0ac6a5Smrg ;; 30051f0ac6a5Smrg *) continue ;; 30061f0ac6a5Smrg esac 30071f0ac6a5Smrg ;; 30081f0ac6a5Smrg *) continue ;; 30091f0ac6a5Smrg esac 30101f0ac6a5Smrg case " $deplibs " in 30111f0ac6a5Smrg *" $path "*) ;; 30121f0ac6a5Smrg *) deplibs="$path $deplibs" ;; 30131f0ac6a5Smrg esac 30141f0ac6a5Smrg case " $deplibs " in 30151f0ac6a5Smrg *" $depdepl "*) ;; 30161f0ac6a5Smrg *) deplibs="$depdepl $deplibs" ;; 30171f0ac6a5Smrg esac 30181f0ac6a5Smrg done 30191f0ac6a5Smrg fi # link_all_deplibs != no 30201f0ac6a5Smrg fi # linkmode = lib 30211f0ac6a5Smrg done # for deplib in $libs 30221f0ac6a5Smrg dependency_libs="$newdependency_libs" 30231f0ac6a5Smrg if test "$pass" = dlpreopen; then 30241f0ac6a5Smrg # Link the dlpreopened libraries before other libraries 30251f0ac6a5Smrg for deplib in $save_deplibs; do 30261f0ac6a5Smrg deplibs="$deplib $deplibs" 30271f0ac6a5Smrg done 30281f0ac6a5Smrg fi 30291f0ac6a5Smrg if test "$pass" != dlopen; then 30301f0ac6a5Smrg if test "$pass" != conv; then 30311f0ac6a5Smrg # Make sure lib_search_path contains only unique directories. 30321f0ac6a5Smrg lib_search_path= 30331f0ac6a5Smrg for dir in $newlib_search_path; do 30341f0ac6a5Smrg case "$lib_search_path " in 30351f0ac6a5Smrg *" $dir "*) ;; 30361f0ac6a5Smrg *) lib_search_path="$lib_search_path $dir" ;; 30371f0ac6a5Smrg esac 30381f0ac6a5Smrg done 30391f0ac6a5Smrg newlib_search_path= 30401f0ac6a5Smrg fi 30411f0ac6a5Smrg 30421f0ac6a5Smrg if test "$linkmode,$pass" != "prog,link"; then 30431f0ac6a5Smrg vars="deplibs" 30441f0ac6a5Smrg else 30451f0ac6a5Smrg vars="compile_deplibs finalize_deplibs" 30461f0ac6a5Smrg fi 30471f0ac6a5Smrg for var in $vars dependency_libs; do 30481f0ac6a5Smrg # Add libraries to $var in reverse order 30491f0ac6a5Smrg eval tmp_libs=\"\$$var\" 30501f0ac6a5Smrg new_libs= 30511f0ac6a5Smrg for deplib in $tmp_libs; do 30521f0ac6a5Smrg # FIXME: Pedantically, this is the right thing to do, so 30531f0ac6a5Smrg # that some nasty dependency loop isn't accidentally 30541f0ac6a5Smrg # broken: 30551f0ac6a5Smrg #new_libs="$deplib $new_libs" 30561f0ac6a5Smrg # Pragmatically, this seems to cause very few problems in 30571f0ac6a5Smrg # practice: 30581f0ac6a5Smrg case $deplib in 30591f0ac6a5Smrg -L*) new_libs="$deplib $new_libs" ;; 30601f0ac6a5Smrg -R*) ;; 30611f0ac6a5Smrg *) 30621f0ac6a5Smrg # And here is the reason: when a library appears more 30631f0ac6a5Smrg # than once as an explicit dependence of a library, or 30641f0ac6a5Smrg # is implicitly linked in more than once by the 30651f0ac6a5Smrg # compiler, it is considered special, and multiple 30661f0ac6a5Smrg # occurrences thereof are not removed. Compare this 30671f0ac6a5Smrg # with having the same library being listed as a 30681f0ac6a5Smrg # dependency of multiple other libraries: in this case, 30691f0ac6a5Smrg # we know (pedantically, we assume) the library does not 30701f0ac6a5Smrg # need to be listed more than once, so we keep only the 30711f0ac6a5Smrg # last copy. This is not always right, but it is rare 30721f0ac6a5Smrg # enough that we require users that really mean to play 30731f0ac6a5Smrg # such unportable linking tricks to link the library 30741f0ac6a5Smrg # using -Wl,-lname, so that libtool does not consider it 30751f0ac6a5Smrg # for duplicate removal. 30761f0ac6a5Smrg case " $specialdeplibs " in 30771f0ac6a5Smrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 30781f0ac6a5Smrg *) 30791f0ac6a5Smrg case " $new_libs " in 30801f0ac6a5Smrg *" $deplib "*) ;; 30811f0ac6a5Smrg *) new_libs="$deplib $new_libs" ;; 30821f0ac6a5Smrg esac 30831f0ac6a5Smrg ;; 30841f0ac6a5Smrg esac 30851f0ac6a5Smrg ;; 30861f0ac6a5Smrg esac 30871f0ac6a5Smrg done 30881f0ac6a5Smrg tmp_libs= 30891f0ac6a5Smrg for deplib in $new_libs; do 30901f0ac6a5Smrg case $deplib in 30911f0ac6a5Smrg -L*) 30921f0ac6a5Smrg case " $tmp_libs " in 30931f0ac6a5Smrg *" $deplib "*) ;; 30941f0ac6a5Smrg *) tmp_libs="$tmp_libs $deplib" ;; 30951f0ac6a5Smrg esac 30961f0ac6a5Smrg ;; 30971f0ac6a5Smrg *) tmp_libs="$tmp_libs $deplib" ;; 30981f0ac6a5Smrg esac 30991f0ac6a5Smrg done 31001f0ac6a5Smrg eval $var=\"$tmp_libs\" 31011f0ac6a5Smrg done # for var 31021f0ac6a5Smrg fi 31031f0ac6a5Smrg # Last step: remove runtime libs from dependency_libs 31041f0ac6a5Smrg # (they stay in deplibs) 31051f0ac6a5Smrg tmp_libs= 31061f0ac6a5Smrg for i in $dependency_libs ; do 31071f0ac6a5Smrg case " $predeps $postdeps $compiler_lib_search_path " in 31081f0ac6a5Smrg *" $i "*) 31091f0ac6a5Smrg i="" 31101f0ac6a5Smrg ;; 31111f0ac6a5Smrg esac 31121f0ac6a5Smrg if test -n "$i" ; then 31131f0ac6a5Smrg tmp_libs="$tmp_libs $i" 31141f0ac6a5Smrg fi 31151f0ac6a5Smrg done 31161f0ac6a5Smrg dependency_libs=$tmp_libs 31171f0ac6a5Smrg done # for pass 31181f0ac6a5Smrg if test "$linkmode" = prog; then 31191f0ac6a5Smrg dlfiles="$newdlfiles" 31201f0ac6a5Smrg dlprefiles="$newdlprefiles" 31211f0ac6a5Smrg fi 31221f0ac6a5Smrg 31231f0ac6a5Smrg case $linkmode in 31241f0ac6a5Smrg oldlib) 3125e5410a46Smrg case " $deplibs" in 3126e5410a46Smrg *\ -l* | *\ -L*) 3127e5410a46Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3128e5410a46Smrg esac 31291f0ac6a5Smrg 31301f0ac6a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 31311f0ac6a5Smrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 31321f0ac6a5Smrg fi 31331f0ac6a5Smrg 31341f0ac6a5Smrg if test -n "$rpath"; then 31351f0ac6a5Smrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 31361f0ac6a5Smrg fi 31371f0ac6a5Smrg 31381f0ac6a5Smrg if test -n "$xrpath"; then 31391f0ac6a5Smrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 31401f0ac6a5Smrg fi 31411f0ac6a5Smrg 31421f0ac6a5Smrg if test -n "$vinfo"; then 31431f0ac6a5Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 31441f0ac6a5Smrg fi 31451f0ac6a5Smrg 31461f0ac6a5Smrg if test -n "$release"; then 31471f0ac6a5Smrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 31481f0ac6a5Smrg fi 31491f0ac6a5Smrg 31501f0ac6a5Smrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 31511f0ac6a5Smrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 31521f0ac6a5Smrg fi 31531f0ac6a5Smrg 31541f0ac6a5Smrg # Now set the variables for building old libraries. 31551f0ac6a5Smrg build_libtool_libs=no 31561f0ac6a5Smrg oldlibs="$output" 31571f0ac6a5Smrg objs="$objs$old_deplibs" 31581f0ac6a5Smrg ;; 31591f0ac6a5Smrg 31601f0ac6a5Smrg lib) 31611f0ac6a5Smrg # Make sure we only generate libraries of the form `libNAME.la'. 31621f0ac6a5Smrg case $outputname in 31631f0ac6a5Smrg lib*) 31641f0ac6a5Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 31651f0ac6a5Smrg eval shared_ext=\"$shrext_cmds\" 31661f0ac6a5Smrg eval libname=\"$libname_spec\" 31671f0ac6a5Smrg ;; 31681f0ac6a5Smrg *) 31691f0ac6a5Smrg if test "$module" = no; then 31701f0ac6a5Smrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 31711f0ac6a5Smrg $echo "$help" 1>&2 31721f0ac6a5Smrg exit $EXIT_FAILURE 31731f0ac6a5Smrg fi 31741f0ac6a5Smrg if test "$need_lib_prefix" != no; then 31751f0ac6a5Smrg # Add the "lib" prefix for modules if required 31761f0ac6a5Smrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31771f0ac6a5Smrg eval shared_ext=\"$shrext_cmds\" 31781f0ac6a5Smrg eval libname=\"$libname_spec\" 31791f0ac6a5Smrg else 31801f0ac6a5Smrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 31811f0ac6a5Smrg fi 31821f0ac6a5Smrg ;; 31831f0ac6a5Smrg esac 31841f0ac6a5Smrg 31851f0ac6a5Smrg if test -n "$objs"; then 31861f0ac6a5Smrg if test "$deplibs_check_method" != pass_all; then 31871f0ac6a5Smrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 31881f0ac6a5Smrg exit $EXIT_FAILURE 31891f0ac6a5Smrg else 31901f0ac6a5Smrg $echo 31911f0ac6a5Smrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 31921f0ac6a5Smrg $echo "*** objects $objs is not portable!" 31931f0ac6a5Smrg libobjs="$libobjs $objs" 31941f0ac6a5Smrg fi 31951f0ac6a5Smrg fi 31961f0ac6a5Smrg 31971f0ac6a5Smrg if test "$dlself" != no; then 31981f0ac6a5Smrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 31991f0ac6a5Smrg fi 32001f0ac6a5Smrg 32011f0ac6a5Smrg set dummy $rpath 32021f0ac6a5Smrg if test "$#" -gt 2; then 32031f0ac6a5Smrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 32041f0ac6a5Smrg fi 32051f0ac6a5Smrg install_libdir="$2" 32061f0ac6a5Smrg 32071f0ac6a5Smrg oldlibs= 32081f0ac6a5Smrg if test -z "$rpath"; then 32091f0ac6a5Smrg if test "$build_libtool_libs" = yes; then 32101f0ac6a5Smrg # Building a libtool convenience library. 32111f0ac6a5Smrg # Some compilers have problems with a `.al' extension so 32121f0ac6a5Smrg # convenience libraries should have the same extension an 32131f0ac6a5Smrg # archive normally would. 32141f0ac6a5Smrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 32151f0ac6a5Smrg build_libtool_libs=convenience 32161f0ac6a5Smrg build_old_libs=yes 32171f0ac6a5Smrg fi 32181f0ac6a5Smrg 32191f0ac6a5Smrg if test -n "$vinfo"; then 32201f0ac6a5Smrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 32211f0ac6a5Smrg fi 32221f0ac6a5Smrg 32231f0ac6a5Smrg if test -n "$release"; then 32241f0ac6a5Smrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 32251f0ac6a5Smrg fi 32261f0ac6a5Smrg else 32271f0ac6a5Smrg 32281f0ac6a5Smrg # Parse the version information argument. 32291f0ac6a5Smrg save_ifs="$IFS"; IFS=':' 32301f0ac6a5Smrg set dummy $vinfo 0 0 0 32311f0ac6a5Smrg IFS="$save_ifs" 32321f0ac6a5Smrg 32331f0ac6a5Smrg if test -n "$8"; then 32341f0ac6a5Smrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 32351f0ac6a5Smrg $echo "$help" 1>&2 32361f0ac6a5Smrg exit $EXIT_FAILURE 32371f0ac6a5Smrg fi 32381f0ac6a5Smrg 32391f0ac6a5Smrg # convert absolute version numbers to libtool ages 32401f0ac6a5Smrg # this retains compatibility with .la files and attempts 32411f0ac6a5Smrg # to make the code below a bit more comprehensible 32421f0ac6a5Smrg 32431f0ac6a5Smrg case $vinfo_number in 32441f0ac6a5Smrg yes) 32451f0ac6a5Smrg number_major="$2" 32461f0ac6a5Smrg number_minor="$3" 32471f0ac6a5Smrg number_revision="$4" 32481f0ac6a5Smrg # 32491f0ac6a5Smrg # There are really only two kinds -- those that 32501f0ac6a5Smrg # use the current revision as the major version 32511f0ac6a5Smrg # and those that subtract age and use age as 32521f0ac6a5Smrg # a minor version. But, then there is irix 32531f0ac6a5Smrg # which has an extra 1 added just for fun 32541f0ac6a5Smrg # 32551f0ac6a5Smrg case $version_type in 3256e5410a46Smrg darwin|linux|osf|windows|none) 32571f0ac6a5Smrg current=`expr $number_major + $number_minor` 32581f0ac6a5Smrg age="$number_minor" 32591f0ac6a5Smrg revision="$number_revision" 32601f0ac6a5Smrg ;; 32611f0ac6a5Smrg freebsd-aout|freebsd-elf|sunos) 32621f0ac6a5Smrg current="$number_major" 32631f0ac6a5Smrg revision="$number_minor" 32641f0ac6a5Smrg age="0" 32651f0ac6a5Smrg ;; 32661f0ac6a5Smrg irix|nonstopux) 3267e5410a46Smrg current=`expr $number_major + $number_minor` 32681f0ac6a5Smrg age="$number_minor" 32691f0ac6a5Smrg revision="$number_minor" 3270e5410a46Smrg lt_irix_increment=no 32711f0ac6a5Smrg ;; 32721f0ac6a5Smrg esac 32731f0ac6a5Smrg ;; 32741f0ac6a5Smrg no) 32751f0ac6a5Smrg current="$2" 32761f0ac6a5Smrg revision="$3" 32771f0ac6a5Smrg age="$4" 32781f0ac6a5Smrg ;; 32791f0ac6a5Smrg esac 32801f0ac6a5Smrg 32811f0ac6a5Smrg # Check that each of the things are valid numbers. 32821f0ac6a5Smrg case $current in 32831f0ac6a5Smrg 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]) ;; 32841f0ac6a5Smrg *) 32851f0ac6a5Smrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 32861f0ac6a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32871f0ac6a5Smrg exit $EXIT_FAILURE 32881f0ac6a5Smrg ;; 32891f0ac6a5Smrg esac 32901f0ac6a5Smrg 32911f0ac6a5Smrg case $revision in 32921f0ac6a5Smrg 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]) ;; 32931f0ac6a5Smrg *) 32941f0ac6a5Smrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 32951f0ac6a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 32961f0ac6a5Smrg exit $EXIT_FAILURE 32971f0ac6a5Smrg ;; 32981f0ac6a5Smrg esac 32991f0ac6a5Smrg 33001f0ac6a5Smrg case $age in 33011f0ac6a5Smrg 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]) ;; 33021f0ac6a5Smrg *) 33031f0ac6a5Smrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 33041f0ac6a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 33051f0ac6a5Smrg exit $EXIT_FAILURE 33061f0ac6a5Smrg ;; 33071f0ac6a5Smrg esac 33081f0ac6a5Smrg 33091f0ac6a5Smrg if test "$age" -gt "$current"; then 33101f0ac6a5Smrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 33111f0ac6a5Smrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 33121f0ac6a5Smrg exit $EXIT_FAILURE 33131f0ac6a5Smrg fi 33141f0ac6a5Smrg 33151f0ac6a5Smrg # Calculate the version variables. 33161f0ac6a5Smrg major= 33171f0ac6a5Smrg versuffix= 33181f0ac6a5Smrg verstring= 33191f0ac6a5Smrg case $version_type in 33201f0ac6a5Smrg none) ;; 33211f0ac6a5Smrg 33221f0ac6a5Smrg darwin) 33231f0ac6a5Smrg # Like Linux, but with the current version available in 33241f0ac6a5Smrg # verstring for coding it into the library header 33251f0ac6a5Smrg major=.`expr $current - $age` 33261f0ac6a5Smrg versuffix="$major.$age.$revision" 33271f0ac6a5Smrg # Darwin ld doesn't like 0 for these options... 33281f0ac6a5Smrg minor_current=`expr $current + 1` 3329e5410a46Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3330e5410a46Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 33311f0ac6a5Smrg ;; 33321f0ac6a5Smrg 33331f0ac6a5Smrg freebsd-aout) 33341f0ac6a5Smrg major=".$current" 33351f0ac6a5Smrg versuffix=".$current.$revision"; 33361f0ac6a5Smrg ;; 33371f0ac6a5Smrg 33381f0ac6a5Smrg freebsd-elf) 33391f0ac6a5Smrg major=".$current" 33401f0ac6a5Smrg versuffix=".$current"; 33411f0ac6a5Smrg ;; 33421f0ac6a5Smrg 33431f0ac6a5Smrg irix | nonstopux) 3344e5410a46Smrg if test "X$lt_irix_increment" = "Xno"; then 3345e5410a46Smrg major=`expr $current - $age` 3346e5410a46Smrg else 3347e5410a46Smrg major=`expr $current - $age + 1` 3348e5410a46Smrg fi 33491f0ac6a5Smrg case $version_type in 33501f0ac6a5Smrg nonstopux) verstring_prefix=nonstopux ;; 33511f0ac6a5Smrg *) verstring_prefix=sgi ;; 33521f0ac6a5Smrg esac 33531f0ac6a5Smrg verstring="$verstring_prefix$major.$revision" 33541f0ac6a5Smrg 33551f0ac6a5Smrg # Add in all the interfaces that we are compatible with. 33561f0ac6a5Smrg loop=$revision 33571f0ac6a5Smrg while test "$loop" -ne 0; do 33581f0ac6a5Smrg iface=`expr $revision - $loop` 33591f0ac6a5Smrg loop=`expr $loop - 1` 33601f0ac6a5Smrg verstring="$verstring_prefix$major.$iface:$verstring" 33611f0ac6a5Smrg done 33621f0ac6a5Smrg 33631f0ac6a5Smrg # Before this point, $major must not contain `.'. 33641f0ac6a5Smrg major=.$major 33651f0ac6a5Smrg versuffix="$major.$revision" 33661f0ac6a5Smrg ;; 33671f0ac6a5Smrg 33681f0ac6a5Smrg linux) 33691f0ac6a5Smrg major=.`expr $current - $age` 33701f0ac6a5Smrg versuffix="$major.$age.$revision" 33711f0ac6a5Smrg ;; 33721f0ac6a5Smrg 33731f0ac6a5Smrg osf) 33741f0ac6a5Smrg major=.`expr $current - $age` 33751f0ac6a5Smrg versuffix=".$current.$age.$revision" 33761f0ac6a5Smrg verstring="$current.$age.$revision" 33771f0ac6a5Smrg 33781f0ac6a5Smrg # Add in all the interfaces that we are compatible with. 33791f0ac6a5Smrg loop=$age 33801f0ac6a5Smrg while test "$loop" -ne 0; do 33811f0ac6a5Smrg iface=`expr $current - $loop` 33821f0ac6a5Smrg loop=`expr $loop - 1` 33831f0ac6a5Smrg verstring="$verstring:${iface}.0" 33841f0ac6a5Smrg done 33851f0ac6a5Smrg 33861f0ac6a5Smrg # Make executables depend on our current version. 33871f0ac6a5Smrg verstring="$verstring:${current}.0" 33881f0ac6a5Smrg ;; 33891f0ac6a5Smrg 33901f0ac6a5Smrg sunos) 33911f0ac6a5Smrg major=".$current" 33921f0ac6a5Smrg versuffix=".$current.$revision" 33931f0ac6a5Smrg ;; 33941f0ac6a5Smrg 33951f0ac6a5Smrg windows) 33961f0ac6a5Smrg # Use '-' rather than '.', since we only want one 33971f0ac6a5Smrg # extension on DOS 8.3 filesystems. 33981f0ac6a5Smrg major=`expr $current - $age` 33991f0ac6a5Smrg versuffix="-$major" 34001f0ac6a5Smrg ;; 34011f0ac6a5Smrg 34021f0ac6a5Smrg *) 34031f0ac6a5Smrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 34041f0ac6a5Smrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 34051f0ac6a5Smrg exit $EXIT_FAILURE 34061f0ac6a5Smrg ;; 34071f0ac6a5Smrg esac 34081f0ac6a5Smrg 34091f0ac6a5Smrg # Clear the version info if we defaulted, and they specified a release. 34101f0ac6a5Smrg if test -z "$vinfo" && test -n "$release"; then 34111f0ac6a5Smrg major= 34121f0ac6a5Smrg case $version_type in 34131f0ac6a5Smrg darwin) 34141f0ac6a5Smrg # we can't check for "0.0" in archive_cmds due to quoting 34151f0ac6a5Smrg # problems, so we reset it completely 34161f0ac6a5Smrg verstring= 34171f0ac6a5Smrg ;; 34181f0ac6a5Smrg *) 34191f0ac6a5Smrg verstring="0.0" 34201f0ac6a5Smrg ;; 34211f0ac6a5Smrg esac 34221f0ac6a5Smrg if test "$need_version" = no; then 34231f0ac6a5Smrg versuffix= 34241f0ac6a5Smrg else 34251f0ac6a5Smrg versuffix=".0.0" 34261f0ac6a5Smrg fi 34271f0ac6a5Smrg fi 34281f0ac6a5Smrg 34291f0ac6a5Smrg # Remove version info from name if versioning should be avoided 34301f0ac6a5Smrg if test "$avoid_version" = yes && test "$need_version" = no; then 34311f0ac6a5Smrg major= 34321f0ac6a5Smrg versuffix= 34331f0ac6a5Smrg verstring="" 34341f0ac6a5Smrg fi 34351f0ac6a5Smrg 34361f0ac6a5Smrg # Check to see if the archive will have undefined symbols. 34371f0ac6a5Smrg if test "$allow_undefined" = yes; then 34381f0ac6a5Smrg if test "$allow_undefined_flag" = unsupported; then 34391f0ac6a5Smrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 34401f0ac6a5Smrg build_libtool_libs=no 34411f0ac6a5Smrg build_old_libs=yes 34421f0ac6a5Smrg fi 34431f0ac6a5Smrg else 34441f0ac6a5Smrg # Don't allow undefined symbols. 34451f0ac6a5Smrg allow_undefined_flag="$no_undefined_flag" 34461f0ac6a5Smrg fi 34471f0ac6a5Smrg fi 34481f0ac6a5Smrg 34491f0ac6a5Smrg if test "$mode" != relink; then 34501f0ac6a5Smrg # Remove our outputs, but don't remove object files since they 34511f0ac6a5Smrg # may have been created when compiling PIC objects. 34521f0ac6a5Smrg removelist= 34531f0ac6a5Smrg tempremovelist=`$echo "$output_objdir/*"` 34541f0ac6a5Smrg for p in $tempremovelist; do 34551f0ac6a5Smrg case $p in 34561f0ac6a5Smrg *.$objext) 34571f0ac6a5Smrg ;; 34581f0ac6a5Smrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 34591f0ac6a5Smrg if test "X$precious_files_regex" != "X"; then 34601f0ac6a5Smrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 34611f0ac6a5Smrg then 34621f0ac6a5Smrg continue 34631f0ac6a5Smrg fi 34641f0ac6a5Smrg fi 34651f0ac6a5Smrg removelist="$removelist $p" 34661f0ac6a5Smrg ;; 34671f0ac6a5Smrg *) ;; 34681f0ac6a5Smrg esac 34691f0ac6a5Smrg done 34701f0ac6a5Smrg if test -n "$removelist"; then 34711f0ac6a5Smrg $show "${rm}r $removelist" 34721f0ac6a5Smrg $run ${rm}r $removelist 34731f0ac6a5Smrg fi 34741f0ac6a5Smrg fi 34751f0ac6a5Smrg 34761f0ac6a5Smrg # Now set the variables for building old libraries. 34771f0ac6a5Smrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 34781f0ac6a5Smrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 34791f0ac6a5Smrg 34801f0ac6a5Smrg # Transform .lo files to .o files. 34811f0ac6a5Smrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 34821f0ac6a5Smrg fi 34831f0ac6a5Smrg 34841f0ac6a5Smrg # Eliminate all temporary directories. 3485e5410a46Smrg #for path in $notinst_path; do 3486e5410a46Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3487e5410a46Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3488e5410a46Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3489e5410a46Smrg #done 34901f0ac6a5Smrg 34911f0ac6a5Smrg if test -n "$xrpath"; then 34921f0ac6a5Smrg # If the user specified any rpath flags, then add them. 34931f0ac6a5Smrg temp_xrpath= 34941f0ac6a5Smrg for libdir in $xrpath; do 34951f0ac6a5Smrg temp_xrpath="$temp_xrpath -R$libdir" 34961f0ac6a5Smrg case "$finalize_rpath " in 34971f0ac6a5Smrg *" $libdir "*) ;; 34981f0ac6a5Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 34991f0ac6a5Smrg esac 35001f0ac6a5Smrg done 35011f0ac6a5Smrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 35021f0ac6a5Smrg dependency_libs="$temp_xrpath $dependency_libs" 35031f0ac6a5Smrg fi 35041f0ac6a5Smrg fi 35051f0ac6a5Smrg 35061f0ac6a5Smrg # Make sure dlfiles contains only unique files that won't be dlpreopened 35071f0ac6a5Smrg old_dlfiles="$dlfiles" 35081f0ac6a5Smrg dlfiles= 35091f0ac6a5Smrg for lib in $old_dlfiles; do 35101f0ac6a5Smrg case " $dlprefiles $dlfiles " in 35111f0ac6a5Smrg *" $lib "*) ;; 35121f0ac6a5Smrg *) dlfiles="$dlfiles $lib" ;; 35131f0ac6a5Smrg esac 35141f0ac6a5Smrg done 35151f0ac6a5Smrg 35161f0ac6a5Smrg # Make sure dlprefiles contains only unique files 35171f0ac6a5Smrg old_dlprefiles="$dlprefiles" 35181f0ac6a5Smrg dlprefiles= 35191f0ac6a5Smrg for lib in $old_dlprefiles; do 35201f0ac6a5Smrg case "$dlprefiles " in 35211f0ac6a5Smrg *" $lib "*) ;; 35221f0ac6a5Smrg *) dlprefiles="$dlprefiles $lib" ;; 35231f0ac6a5Smrg esac 35241f0ac6a5Smrg done 35251f0ac6a5Smrg 35261f0ac6a5Smrg if test "$build_libtool_libs" = yes; then 35271f0ac6a5Smrg if test -n "$rpath"; then 35281f0ac6a5Smrg case $host in 35291f0ac6a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 35301f0ac6a5Smrg # these systems don't actually have a c library (as such)! 35311f0ac6a5Smrg ;; 35321f0ac6a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 35331f0ac6a5Smrg # Rhapsody C library is in the System framework 35341f0ac6a5Smrg deplibs="$deplibs -framework System" 35351f0ac6a5Smrg ;; 35361f0ac6a5Smrg *-*-netbsd*) 35371f0ac6a5Smrg # Don't link with libc until the a.out ld.so is fixed. 35381f0ac6a5Smrg ;; 35391f0ac6a5Smrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 35401f0ac6a5Smrg # Do not include libc due to us having libc/libc_r. 35411f0ac6a5Smrg ;; 35421f0ac6a5Smrg *-*-sco3.2v5* | *-*-sco5v6*) 35431f0ac6a5Smrg # Causes problems with __ctype 35441f0ac6a5Smrg ;; 35451f0ac6a5Smrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 35461f0ac6a5Smrg # Compiler inserts libc in the correct place for threads to work 35471f0ac6a5Smrg ;; 35481f0ac6a5Smrg *) 35491f0ac6a5Smrg # Add libc to deplibs on all other systems if necessary. 35501f0ac6a5Smrg if test "$build_libtool_need_lc" = "yes"; then 35511f0ac6a5Smrg deplibs="$deplibs -lc" 35521f0ac6a5Smrg fi 35531f0ac6a5Smrg ;; 35541f0ac6a5Smrg esac 35551f0ac6a5Smrg fi 35561f0ac6a5Smrg 35571f0ac6a5Smrg # Transform deplibs into only deplibs that can be linked in shared. 35581f0ac6a5Smrg name_save=$name 35591f0ac6a5Smrg libname_save=$libname 35601f0ac6a5Smrg release_save=$release 35611f0ac6a5Smrg versuffix_save=$versuffix 35621f0ac6a5Smrg major_save=$major 35631f0ac6a5Smrg # I'm not sure if I'm treating the release correctly. I think 35641f0ac6a5Smrg # release should show up in the -l (ie -lgmp5) so we don't want to 35651f0ac6a5Smrg # add it in twice. Is that correct? 35661f0ac6a5Smrg release="" 35671f0ac6a5Smrg versuffix="" 35681f0ac6a5Smrg major="" 35691f0ac6a5Smrg newdeplibs= 35701f0ac6a5Smrg droppeddeps=no 35711f0ac6a5Smrg case $deplibs_check_method in 35721f0ac6a5Smrg pass_all) 35731f0ac6a5Smrg # Don't check for shared/static. Everything works. 35741f0ac6a5Smrg # This might be a little naive. We might want to check 35751f0ac6a5Smrg # whether the library exists or not. But this is on 35761f0ac6a5Smrg # osf3 & osf4 and I'm not really sure... Just 35771f0ac6a5Smrg # implementing what was already the behavior. 35781f0ac6a5Smrg newdeplibs=$deplibs 35791f0ac6a5Smrg ;; 35801f0ac6a5Smrg test_compile) 35811f0ac6a5Smrg # This code stresses the "libraries are programs" paradigm to its 35821f0ac6a5Smrg # limits. Maybe even breaks it. We compile a program, linking it 35831f0ac6a5Smrg # against the deplibs as a proxy for the library. Then we can check 35841f0ac6a5Smrg # whether they linked in statically or dynamically with ldd. 35851f0ac6a5Smrg $rm conftest.c 35861f0ac6a5Smrg cat > conftest.c <<EOF 35871f0ac6a5Smrg int main() { return 0; } 35881f0ac6a5SmrgEOF 35891f0ac6a5Smrg $rm conftest 3590e5410a46Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 35911f0ac6a5Smrg ldd_output=`ldd conftest` 35921f0ac6a5Smrg for i in $deplibs; do 35931f0ac6a5Smrg name=`expr $i : '-l\(.*\)'` 35941f0ac6a5Smrg # If $name is empty we are operating on a -L argument. 3595e5410a46Smrg if test "$name" != "" && test "$name" != "0"; then 35961f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 35971f0ac6a5Smrg case " $predeps $postdeps " in 35981f0ac6a5Smrg *" $i "*) 35991f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36001f0ac6a5Smrg i="" 36011f0ac6a5Smrg ;; 36021f0ac6a5Smrg esac 36031f0ac6a5Smrg fi 36041f0ac6a5Smrg if test -n "$i" ; then 36051f0ac6a5Smrg libname=`eval \\$echo \"$libname_spec\"` 36061f0ac6a5Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 36071f0ac6a5Smrg set dummy $deplib_matches 36081f0ac6a5Smrg deplib_match=$2 36091f0ac6a5Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 36101f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36111f0ac6a5Smrg else 36121f0ac6a5Smrg droppeddeps=yes 36131f0ac6a5Smrg $echo 36141f0ac6a5Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 36151f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 36161f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 36171f0ac6a5Smrg $echo "*** shared version of the library, which I believe you do not have" 36181f0ac6a5Smrg $echo "*** because a test_compile did reveal that the linker did not use it for" 36191f0ac6a5Smrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 36201f0ac6a5Smrg fi 36211f0ac6a5Smrg fi 36221f0ac6a5Smrg else 36231f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36241f0ac6a5Smrg fi 36251f0ac6a5Smrg done 36261f0ac6a5Smrg else 36271f0ac6a5Smrg # Error occurred in the first compile. Let's try to salvage 36281f0ac6a5Smrg # the situation: Compile a separate program for each library. 36291f0ac6a5Smrg for i in $deplibs; do 36301f0ac6a5Smrg name=`expr $i : '-l\(.*\)'` 36311f0ac6a5Smrg # If $name is empty we are operating on a -L argument. 36321f0ac6a5Smrg if test "$name" != "" && test "$name" != "0"; then 36331f0ac6a5Smrg $rm conftest 3634e5410a46Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 36351f0ac6a5Smrg ldd_output=`ldd conftest` 36361f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36371f0ac6a5Smrg case " $predeps $postdeps " in 36381f0ac6a5Smrg *" $i "*) 36391f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36401f0ac6a5Smrg i="" 36411f0ac6a5Smrg ;; 36421f0ac6a5Smrg esac 36431f0ac6a5Smrg fi 36441f0ac6a5Smrg if test -n "$i" ; then 36451f0ac6a5Smrg libname=`eval \\$echo \"$libname_spec\"` 36461f0ac6a5Smrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 36471f0ac6a5Smrg set dummy $deplib_matches 36481f0ac6a5Smrg deplib_match=$2 36491f0ac6a5Smrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 36501f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36511f0ac6a5Smrg else 36521f0ac6a5Smrg droppeddeps=yes 36531f0ac6a5Smrg $echo 36541f0ac6a5Smrg $echo "*** Warning: dynamic linker does not accept needed library $i." 36551f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 36561f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 36571f0ac6a5Smrg $echo "*** shared version of the library, which you do not appear to have" 36581f0ac6a5Smrg $echo "*** because a test_compile did reveal that the linker did not use this one" 36591f0ac6a5Smrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 36601f0ac6a5Smrg fi 36611f0ac6a5Smrg fi 36621f0ac6a5Smrg else 36631f0ac6a5Smrg droppeddeps=yes 36641f0ac6a5Smrg $echo 36651f0ac6a5Smrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3666e5410a46Smrg $echo "*** make it link in! You will probably need to install it or some" 36671f0ac6a5Smrg $echo "*** library that it depends on before this library will be fully" 36681f0ac6a5Smrg $echo "*** functional. Installing it before continuing would be even better." 36691f0ac6a5Smrg fi 36701f0ac6a5Smrg else 36711f0ac6a5Smrg newdeplibs="$newdeplibs $i" 36721f0ac6a5Smrg fi 36731f0ac6a5Smrg done 36741f0ac6a5Smrg fi 36751f0ac6a5Smrg ;; 36761f0ac6a5Smrg file_magic*) 36771f0ac6a5Smrg set dummy $deplibs_check_method 36781f0ac6a5Smrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 36791f0ac6a5Smrg for a_deplib in $deplibs; do 36801f0ac6a5Smrg name=`expr $a_deplib : '-l\(.*\)'` 36811f0ac6a5Smrg # If $name is empty we are operating on a -L argument. 36821f0ac6a5Smrg if test "$name" != "" && test "$name" != "0"; then 36831f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 36841f0ac6a5Smrg case " $predeps $postdeps " in 36851f0ac6a5Smrg *" $a_deplib "*) 36861f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 36871f0ac6a5Smrg a_deplib="" 36881f0ac6a5Smrg ;; 36891f0ac6a5Smrg esac 36901f0ac6a5Smrg fi 36911f0ac6a5Smrg if test -n "$a_deplib" ; then 36921f0ac6a5Smrg libname=`eval \\$echo \"$libname_spec\"` 36931f0ac6a5Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 36941f0ac6a5Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 36951f0ac6a5Smrg for potent_lib in $potential_libs; do 36961f0ac6a5Smrg # Follow soft links. 36971f0ac6a5Smrg if ls -lLd "$potent_lib" 2>/dev/null \ 36981f0ac6a5Smrg | grep " -> " >/dev/null; then 36991f0ac6a5Smrg continue 37001f0ac6a5Smrg fi 37011f0ac6a5Smrg # The statement above tries to avoid entering an 37021f0ac6a5Smrg # endless loop below, in case of cyclic links. 37031f0ac6a5Smrg # We might still enter an endless loop, since a link 37041f0ac6a5Smrg # loop can be closed while we follow links, 37051f0ac6a5Smrg # but so what? 37061f0ac6a5Smrg potlib="$potent_lib" 37071f0ac6a5Smrg while test -h "$potlib" 2>/dev/null; do 37081f0ac6a5Smrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 37091f0ac6a5Smrg case $potliblink in 37101f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 37111f0ac6a5Smrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 37121f0ac6a5Smrg esac 37131f0ac6a5Smrg done 37141f0ac6a5Smrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 37151f0ac6a5Smrg | ${SED} 10q \ 37161f0ac6a5Smrg | $EGREP "$file_magic_regex" > /dev/null; then 37171f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 37181f0ac6a5Smrg a_deplib="" 37191f0ac6a5Smrg break 2 37201f0ac6a5Smrg fi 37211f0ac6a5Smrg done 37221f0ac6a5Smrg done 37231f0ac6a5Smrg fi 37241f0ac6a5Smrg if test -n "$a_deplib" ; then 37251f0ac6a5Smrg droppeddeps=yes 37261f0ac6a5Smrg $echo 37271f0ac6a5Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 37281f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 37291f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 37301f0ac6a5Smrg $echo "*** shared version of the library, which you do not appear to have" 37311f0ac6a5Smrg $echo "*** because I did check the linker path looking for a file starting" 37321f0ac6a5Smrg if test -z "$potlib" ; then 37331f0ac6a5Smrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 37341f0ac6a5Smrg else 37351f0ac6a5Smrg $echo "*** with $libname and none of the candidates passed a file format test" 37361f0ac6a5Smrg $echo "*** using a file magic. Last file checked: $potlib" 37371f0ac6a5Smrg fi 37381f0ac6a5Smrg fi 37391f0ac6a5Smrg else 37401f0ac6a5Smrg # Add a -L argument. 37411f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 37421f0ac6a5Smrg fi 37431f0ac6a5Smrg done # Gone through all deplibs. 37441f0ac6a5Smrg ;; 37451f0ac6a5Smrg match_pattern*) 37461f0ac6a5Smrg set dummy $deplibs_check_method 37471f0ac6a5Smrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 37481f0ac6a5Smrg for a_deplib in $deplibs; do 37491f0ac6a5Smrg name=`expr $a_deplib : '-l\(.*\)'` 37501f0ac6a5Smrg # If $name is empty we are operating on a -L argument. 37511f0ac6a5Smrg if test -n "$name" && test "$name" != "0"; then 37521f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 37531f0ac6a5Smrg case " $predeps $postdeps " in 37541f0ac6a5Smrg *" $a_deplib "*) 37551f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 37561f0ac6a5Smrg a_deplib="" 37571f0ac6a5Smrg ;; 37581f0ac6a5Smrg esac 37591f0ac6a5Smrg fi 37601f0ac6a5Smrg if test -n "$a_deplib" ; then 37611f0ac6a5Smrg libname=`eval \\$echo \"$libname_spec\"` 37621f0ac6a5Smrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 37631f0ac6a5Smrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 37641f0ac6a5Smrg for potent_lib in $potential_libs; do 37651f0ac6a5Smrg potlib="$potent_lib" # see symlink-check above in file_magic test 37661f0ac6a5Smrg if eval $echo \"$potent_lib\" 2>/dev/null \ 37671f0ac6a5Smrg | ${SED} 10q \ 37681f0ac6a5Smrg | $EGREP "$match_pattern_regex" > /dev/null; then 37691f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 37701f0ac6a5Smrg a_deplib="" 37711f0ac6a5Smrg break 2 37721f0ac6a5Smrg fi 37731f0ac6a5Smrg done 37741f0ac6a5Smrg done 37751f0ac6a5Smrg fi 37761f0ac6a5Smrg if test -n "$a_deplib" ; then 37771f0ac6a5Smrg droppeddeps=yes 37781f0ac6a5Smrg $echo 37791f0ac6a5Smrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 37801f0ac6a5Smrg $echo "*** I have the capability to make that library automatically link in when" 37811f0ac6a5Smrg $echo "*** you link to this library. But I can only do this if you have a" 37821f0ac6a5Smrg $echo "*** shared version of the library, which you do not appear to have" 37831f0ac6a5Smrg $echo "*** because I did check the linker path looking for a file starting" 37841f0ac6a5Smrg if test -z "$potlib" ; then 37851f0ac6a5Smrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 37861f0ac6a5Smrg else 37871f0ac6a5Smrg $echo "*** with $libname and none of the candidates passed a file format test" 37881f0ac6a5Smrg $echo "*** using a regex pattern. Last file checked: $potlib" 37891f0ac6a5Smrg fi 37901f0ac6a5Smrg fi 37911f0ac6a5Smrg else 37921f0ac6a5Smrg # Add a -L argument. 37931f0ac6a5Smrg newdeplibs="$newdeplibs $a_deplib" 37941f0ac6a5Smrg fi 37951f0ac6a5Smrg done # Gone through all deplibs. 37961f0ac6a5Smrg ;; 37971f0ac6a5Smrg none | unknown | *) 37981f0ac6a5Smrg newdeplibs="" 37991f0ac6a5Smrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 38001f0ac6a5Smrg -e 's/ -[LR][^ ]*//g'` 38011f0ac6a5Smrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 38021f0ac6a5Smrg for i in $predeps $postdeps ; do 38031f0ac6a5Smrg # can't use Xsed below, because $i might contain '/' 38041f0ac6a5Smrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 38051f0ac6a5Smrg done 38061f0ac6a5Smrg fi 38071f0ac6a5Smrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 38081f0ac6a5Smrg | grep . >/dev/null; then 38091f0ac6a5Smrg $echo 38101f0ac6a5Smrg if test "X$deplibs_check_method" = "Xnone"; then 38111f0ac6a5Smrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 38121f0ac6a5Smrg else 38131f0ac6a5Smrg $echo "*** Warning: inter-library dependencies are not known to be supported." 38141f0ac6a5Smrg fi 38151f0ac6a5Smrg $echo "*** All declared inter-library dependencies are being dropped." 38161f0ac6a5Smrg droppeddeps=yes 38171f0ac6a5Smrg fi 38181f0ac6a5Smrg ;; 38191f0ac6a5Smrg esac 38201f0ac6a5Smrg versuffix=$versuffix_save 38211f0ac6a5Smrg major=$major_save 38221f0ac6a5Smrg release=$release_save 38231f0ac6a5Smrg libname=$libname_save 38241f0ac6a5Smrg name=$name_save 38251f0ac6a5Smrg 38261f0ac6a5Smrg case $host in 38271f0ac6a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 38281f0ac6a5Smrg # On Rhapsody replace the C library is the System framework 38291f0ac6a5Smrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 38301f0ac6a5Smrg ;; 38311f0ac6a5Smrg esac 38321f0ac6a5Smrg 38331f0ac6a5Smrg if test "$droppeddeps" = yes; then 38341f0ac6a5Smrg if test "$module" = yes; then 38351f0ac6a5Smrg $echo 38361f0ac6a5Smrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 38371f0ac6a5Smrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 38381f0ac6a5Smrg $echo "*** a static module, that should work as long as the dlopening" 38391f0ac6a5Smrg $echo "*** application is linked with the -dlopen flag." 38401f0ac6a5Smrg if test -z "$global_symbol_pipe"; then 38411f0ac6a5Smrg $echo 38421f0ac6a5Smrg $echo "*** However, this would only work if libtool was able to extract symbol" 38431f0ac6a5Smrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 38441f0ac6a5Smrg $echo "*** not find such a program. So, this module is probably useless." 38451f0ac6a5Smrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 38461f0ac6a5Smrg fi 38471f0ac6a5Smrg if test "$build_old_libs" = no; then 38481f0ac6a5Smrg oldlibs="$output_objdir/$libname.$libext" 38491f0ac6a5Smrg build_libtool_libs=module 38501f0ac6a5Smrg build_old_libs=yes 38511f0ac6a5Smrg else 38521f0ac6a5Smrg build_libtool_libs=no 38531f0ac6a5Smrg fi 38541f0ac6a5Smrg else 38551f0ac6a5Smrg $echo "*** The inter-library dependencies that have been dropped here will be" 38561f0ac6a5Smrg $echo "*** automatically added whenever a program is linked with this library" 38571f0ac6a5Smrg $echo "*** or is declared to -dlopen it." 38581f0ac6a5Smrg 38591f0ac6a5Smrg if test "$allow_undefined" = no; then 38601f0ac6a5Smrg $echo 38611f0ac6a5Smrg $echo "*** Since this library must not contain undefined symbols," 38621f0ac6a5Smrg $echo "*** because either the platform does not support them or" 38631f0ac6a5Smrg $echo "*** it was explicitly requested with -no-undefined," 38641f0ac6a5Smrg $echo "*** libtool will only create a static version of it." 38651f0ac6a5Smrg if test "$build_old_libs" = no; then 38661f0ac6a5Smrg oldlibs="$output_objdir/$libname.$libext" 38671f0ac6a5Smrg build_libtool_libs=module 38681f0ac6a5Smrg build_old_libs=yes 38691f0ac6a5Smrg else 38701f0ac6a5Smrg build_libtool_libs=no 38711f0ac6a5Smrg fi 38721f0ac6a5Smrg fi 38731f0ac6a5Smrg fi 38741f0ac6a5Smrg fi 38751f0ac6a5Smrg # Done checking deplibs! 38761f0ac6a5Smrg deplibs=$newdeplibs 38771f0ac6a5Smrg fi 38781f0ac6a5Smrg 38791f0ac6a5Smrg 38801f0ac6a5Smrg # move library search paths that coincide with paths to not yet 38811f0ac6a5Smrg # installed libraries to the beginning of the library search list 38821f0ac6a5Smrg new_libs= 38831f0ac6a5Smrg for path in $notinst_path; do 38841f0ac6a5Smrg case " $new_libs " in 38851f0ac6a5Smrg *" -L$path/$objdir "*) ;; 38861f0ac6a5Smrg *) 38871f0ac6a5Smrg case " $deplibs " in 38881f0ac6a5Smrg *" -L$path/$objdir "*) 38891f0ac6a5Smrg new_libs="$new_libs -L$path/$objdir" ;; 38901f0ac6a5Smrg esac 38911f0ac6a5Smrg ;; 38921f0ac6a5Smrg esac 38931f0ac6a5Smrg done 38941f0ac6a5Smrg for deplib in $deplibs; do 38951f0ac6a5Smrg case $deplib in 38961f0ac6a5Smrg -L*) 38971f0ac6a5Smrg case " $new_libs " in 38981f0ac6a5Smrg *" $deplib "*) ;; 38991f0ac6a5Smrg *) new_libs="$new_libs $deplib" ;; 39001f0ac6a5Smrg esac 39011f0ac6a5Smrg ;; 39021f0ac6a5Smrg *) new_libs="$new_libs $deplib" ;; 39031f0ac6a5Smrg esac 39041f0ac6a5Smrg done 39051f0ac6a5Smrg deplibs="$new_libs" 39061f0ac6a5Smrg 39071f0ac6a5Smrg 39081f0ac6a5Smrg # All the library-specific variables (install_libdir is set above). 39091f0ac6a5Smrg library_names= 39101f0ac6a5Smrg old_library= 39111f0ac6a5Smrg dlname= 39121f0ac6a5Smrg 39131f0ac6a5Smrg # Test again, we may have decided not to build it any more 39141f0ac6a5Smrg if test "$build_libtool_libs" = yes; then 39151f0ac6a5Smrg if test "$hardcode_into_libs" = yes; then 39161f0ac6a5Smrg # Hardcode the library paths 39171f0ac6a5Smrg hardcode_libdirs= 39181f0ac6a5Smrg dep_rpath= 39191f0ac6a5Smrg rpath="$finalize_rpath" 39201f0ac6a5Smrg test "$mode" != relink && rpath="$compile_rpath$rpath" 39211f0ac6a5Smrg for libdir in $rpath; do 39221f0ac6a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 39231f0ac6a5Smrg if test -n "$hardcode_libdir_separator"; then 39241f0ac6a5Smrg if test -z "$hardcode_libdirs"; then 39251f0ac6a5Smrg hardcode_libdirs="$libdir" 39261f0ac6a5Smrg else 39271f0ac6a5Smrg # Just accumulate the unique libdirs. 39281f0ac6a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 39291f0ac6a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 39301f0ac6a5Smrg ;; 39311f0ac6a5Smrg *) 39321f0ac6a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 39331f0ac6a5Smrg ;; 39341f0ac6a5Smrg esac 39351f0ac6a5Smrg fi 39361f0ac6a5Smrg else 39371f0ac6a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 39381f0ac6a5Smrg dep_rpath="$dep_rpath $flag" 39391f0ac6a5Smrg fi 39401f0ac6a5Smrg elif test -n "$runpath_var"; then 39411f0ac6a5Smrg case "$perm_rpath " in 39421f0ac6a5Smrg *" $libdir "*) ;; 39431f0ac6a5Smrg *) perm_rpath="$perm_rpath $libdir" ;; 39441f0ac6a5Smrg esac 39451f0ac6a5Smrg fi 39461f0ac6a5Smrg done 39471f0ac6a5Smrg # Substitute the hardcoded libdirs into the rpath. 39481f0ac6a5Smrg if test -n "$hardcode_libdir_separator" && 39491f0ac6a5Smrg test -n "$hardcode_libdirs"; then 39501f0ac6a5Smrg libdir="$hardcode_libdirs" 39511f0ac6a5Smrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3952e5410a46Smrg case $archive_cmds in 3953e5410a46Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3954e5410a46Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3955e5410a46Smrg esac 39561f0ac6a5Smrg else 39571f0ac6a5Smrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 39581f0ac6a5Smrg fi 39591f0ac6a5Smrg fi 39601f0ac6a5Smrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 39611f0ac6a5Smrg # We should set the runpath_var. 39621f0ac6a5Smrg rpath= 39631f0ac6a5Smrg for dir in $perm_rpath; do 39641f0ac6a5Smrg rpath="$rpath$dir:" 39651f0ac6a5Smrg done 39661f0ac6a5Smrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 39671f0ac6a5Smrg fi 39681f0ac6a5Smrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 39691f0ac6a5Smrg fi 39701f0ac6a5Smrg 39711f0ac6a5Smrg shlibpath="$finalize_shlibpath" 39721f0ac6a5Smrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 39731f0ac6a5Smrg if test -n "$shlibpath"; then 39741f0ac6a5Smrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 39751f0ac6a5Smrg fi 39761f0ac6a5Smrg 39771f0ac6a5Smrg # Get the real and link names of the library. 39781f0ac6a5Smrg eval shared_ext=\"$shrext_cmds\" 39791f0ac6a5Smrg eval library_names=\"$library_names_spec\" 39801f0ac6a5Smrg set dummy $library_names 39811f0ac6a5Smrg realname="$2" 39821f0ac6a5Smrg shift; shift 39831f0ac6a5Smrg 39841f0ac6a5Smrg if test -n "$soname_spec"; then 39851f0ac6a5Smrg eval soname=\"$soname_spec\" 39861f0ac6a5Smrg else 39871f0ac6a5Smrg soname="$realname" 39881f0ac6a5Smrg fi 39891f0ac6a5Smrg if test -z "$dlname"; then 39901f0ac6a5Smrg dlname=$soname 39911f0ac6a5Smrg fi 39921f0ac6a5Smrg 39931f0ac6a5Smrg lib="$output_objdir/$realname" 39941f0ac6a5Smrg linknames= 39951f0ac6a5Smrg for link 39961f0ac6a5Smrg do 39971f0ac6a5Smrg linknames="$linknames $link" 39981f0ac6a5Smrg done 39991f0ac6a5Smrg 40001f0ac6a5Smrg # Use standard objects if they are pic 40011f0ac6a5Smrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 40021f0ac6a5Smrg 40031f0ac6a5Smrg # Prepare the list of exported symbols 40041f0ac6a5Smrg if test -z "$export_symbols"; then 40051f0ac6a5Smrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 40061f0ac6a5Smrg $show "generating symbol list for \`$libname.la'" 40071f0ac6a5Smrg export_symbols="$output_objdir/$libname.exp" 40081f0ac6a5Smrg $run $rm $export_symbols 40091f0ac6a5Smrg cmds=$export_symbols_cmds 40101f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 40111f0ac6a5Smrg for cmd in $cmds; do 40121f0ac6a5Smrg IFS="$save_ifs" 40131f0ac6a5Smrg eval cmd=\"$cmd\" 40141f0ac6a5Smrg if len=`expr "X$cmd" : ".*"` && 40151f0ac6a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 40161f0ac6a5Smrg $show "$cmd" 40171f0ac6a5Smrg $run eval "$cmd" || exit $? 40181f0ac6a5Smrg skipped_export=false 40191f0ac6a5Smrg else 40201f0ac6a5Smrg # The command line is too long to execute in one step. 40211f0ac6a5Smrg $show "using reloadable object file for export list..." 40221f0ac6a5Smrg skipped_export=: 40231f0ac6a5Smrg # Break out early, otherwise skipped_export may be 40241f0ac6a5Smrg # set to false by a later but shorter cmd. 40251f0ac6a5Smrg break 40261f0ac6a5Smrg fi 40271f0ac6a5Smrg done 40281f0ac6a5Smrg IFS="$save_ifs" 40291f0ac6a5Smrg if test -n "$export_symbols_regex"; then 40301f0ac6a5Smrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 40311f0ac6a5Smrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 40321f0ac6a5Smrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 40331f0ac6a5Smrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 40341f0ac6a5Smrg fi 40351f0ac6a5Smrg fi 40361f0ac6a5Smrg fi 40371f0ac6a5Smrg 40381f0ac6a5Smrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 40391f0ac6a5Smrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 40401f0ac6a5Smrg fi 40411f0ac6a5Smrg 40421f0ac6a5Smrg tmp_deplibs= 40431f0ac6a5Smrg for test_deplib in $deplibs; do 40441f0ac6a5Smrg case " $convenience " in 40451f0ac6a5Smrg *" $test_deplib "*) ;; 40461f0ac6a5Smrg *) 40471f0ac6a5Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 40481f0ac6a5Smrg ;; 40491f0ac6a5Smrg esac 40501f0ac6a5Smrg done 40511f0ac6a5Smrg deplibs="$tmp_deplibs" 40521f0ac6a5Smrg 40531f0ac6a5Smrg if test -n "$convenience"; then 40541f0ac6a5Smrg if test -n "$whole_archive_flag_spec"; then 40551f0ac6a5Smrg save_libobjs=$libobjs 40561f0ac6a5Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 40571f0ac6a5Smrg else 40581f0ac6a5Smrg gentop="$output_objdir/${outputname}x" 40591f0ac6a5Smrg generated="$generated $gentop" 40601f0ac6a5Smrg 40611f0ac6a5Smrg func_extract_archives $gentop $convenience 40621f0ac6a5Smrg libobjs="$libobjs $func_extract_archives_result" 40631f0ac6a5Smrg fi 40641f0ac6a5Smrg fi 40651f0ac6a5Smrg 40661f0ac6a5Smrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 40671f0ac6a5Smrg eval flag=\"$thread_safe_flag_spec\" 40681f0ac6a5Smrg linker_flags="$linker_flags $flag" 40691f0ac6a5Smrg fi 40701f0ac6a5Smrg 40711f0ac6a5Smrg # Make a backup of the uninstalled library when relinking 40721f0ac6a5Smrg if test "$mode" = relink; then 40731f0ac6a5Smrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 40741f0ac6a5Smrg fi 40751f0ac6a5Smrg 40761f0ac6a5Smrg # Do each of the archive commands. 40771f0ac6a5Smrg if test "$module" = yes && test -n "$module_cmds" ; then 40781f0ac6a5Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 40791f0ac6a5Smrg eval test_cmds=\"$module_expsym_cmds\" 40801f0ac6a5Smrg cmds=$module_expsym_cmds 40811f0ac6a5Smrg else 40821f0ac6a5Smrg eval test_cmds=\"$module_cmds\" 40831f0ac6a5Smrg cmds=$module_cmds 40841f0ac6a5Smrg fi 40851f0ac6a5Smrg else 40861f0ac6a5Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 40871f0ac6a5Smrg eval test_cmds=\"$archive_expsym_cmds\" 40881f0ac6a5Smrg cmds=$archive_expsym_cmds 40891f0ac6a5Smrg else 40901f0ac6a5Smrg eval test_cmds=\"$archive_cmds\" 40911f0ac6a5Smrg cmds=$archive_cmds 40921f0ac6a5Smrg fi 40931f0ac6a5Smrg fi 40941f0ac6a5Smrg 40951f0ac6a5Smrg if test "X$skipped_export" != "X:" && 40961f0ac6a5Smrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 40971f0ac6a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 40981f0ac6a5Smrg : 40991f0ac6a5Smrg else 41001f0ac6a5Smrg # The command line is too long to link in one step, link piecewise. 41011f0ac6a5Smrg $echo "creating reloadable object files..." 41021f0ac6a5Smrg 41031f0ac6a5Smrg # Save the value of $output and $libobjs because we want to 41041f0ac6a5Smrg # use them later. If we have whole_archive_flag_spec, we 41051f0ac6a5Smrg # want to use save_libobjs as it was before 41061f0ac6a5Smrg # whole_archive_flag_spec was expanded, because we can't 41071f0ac6a5Smrg # assume the linker understands whole_archive_flag_spec. 41081f0ac6a5Smrg # This may have to be revisited, in case too many 41091f0ac6a5Smrg # convenience libraries get linked in and end up exceeding 41101f0ac6a5Smrg # the spec. 41111f0ac6a5Smrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 41121f0ac6a5Smrg save_libobjs=$libobjs 41131f0ac6a5Smrg fi 41141f0ac6a5Smrg save_output=$output 41151f0ac6a5Smrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 41161f0ac6a5Smrg 41171f0ac6a5Smrg # Clear the reloadable object creation command queue and 41181f0ac6a5Smrg # initialize k to one. 41191f0ac6a5Smrg test_cmds= 41201f0ac6a5Smrg concat_cmds= 41211f0ac6a5Smrg objlist= 41221f0ac6a5Smrg delfiles= 41231f0ac6a5Smrg last_robj= 41241f0ac6a5Smrg k=1 41251f0ac6a5Smrg output=$output_objdir/$output_la-${k}.$objext 41261f0ac6a5Smrg # Loop over the list of objects to be linked. 41271f0ac6a5Smrg for obj in $save_libobjs 41281f0ac6a5Smrg do 41291f0ac6a5Smrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 41301f0ac6a5Smrg if test "X$objlist" = X || 41311f0ac6a5Smrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 41321f0ac6a5Smrg test "$len" -le "$max_cmd_len"; }; then 41331f0ac6a5Smrg objlist="$objlist $obj" 41341f0ac6a5Smrg else 41351f0ac6a5Smrg # The command $test_cmds is almost too long, add a 41361f0ac6a5Smrg # command to the queue. 41371f0ac6a5Smrg if test "$k" -eq 1 ; then 41381f0ac6a5Smrg # The first file doesn't have a previous command to add. 41391f0ac6a5Smrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 41401f0ac6a5Smrg else 41411f0ac6a5Smrg # All subsequent reloadable object files will link in 41421f0ac6a5Smrg # the last one created. 41431f0ac6a5Smrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 41441f0ac6a5Smrg fi 41451f0ac6a5Smrg last_robj=$output_objdir/$output_la-${k}.$objext 41461f0ac6a5Smrg k=`expr $k + 1` 41471f0ac6a5Smrg output=$output_objdir/$output_la-${k}.$objext 41481f0ac6a5Smrg objlist=$obj 41491f0ac6a5Smrg len=1 41501f0ac6a5Smrg fi 41511f0ac6a5Smrg done 41521f0ac6a5Smrg # Handle the remaining objects by creating one last 41531f0ac6a5Smrg # reloadable object file. All subsequent reloadable object 41541f0ac6a5Smrg # files will link in the last one created. 41551f0ac6a5Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 41561f0ac6a5Smrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 41571f0ac6a5Smrg 41581f0ac6a5Smrg if ${skipped_export-false}; then 41591f0ac6a5Smrg $show "generating symbol list for \`$libname.la'" 41601f0ac6a5Smrg export_symbols="$output_objdir/$libname.exp" 41611f0ac6a5Smrg $run $rm $export_symbols 41621f0ac6a5Smrg libobjs=$output 41631f0ac6a5Smrg # Append the command to create the export file. 41641f0ac6a5Smrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 41651f0ac6a5Smrg fi 41661f0ac6a5Smrg 41671f0ac6a5Smrg # Set up a command to remove the reloadable object files 41681f0ac6a5Smrg # after they are used. 41691f0ac6a5Smrg i=0 41701f0ac6a5Smrg while test "$i" -lt "$k" 41711f0ac6a5Smrg do 41721f0ac6a5Smrg i=`expr $i + 1` 41731f0ac6a5Smrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 41741f0ac6a5Smrg done 41751f0ac6a5Smrg 41761f0ac6a5Smrg $echo "creating a temporary reloadable object file: $output" 41771f0ac6a5Smrg 41781f0ac6a5Smrg # Loop through the commands generated above and execute them. 41791f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 41801f0ac6a5Smrg for cmd in $concat_cmds; do 41811f0ac6a5Smrg IFS="$save_ifs" 41821f0ac6a5Smrg $show "$cmd" 41831f0ac6a5Smrg $run eval "$cmd" || exit $? 41841f0ac6a5Smrg done 41851f0ac6a5Smrg IFS="$save_ifs" 41861f0ac6a5Smrg 41871f0ac6a5Smrg libobjs=$output 41881f0ac6a5Smrg # Restore the value of output. 41891f0ac6a5Smrg output=$save_output 41901f0ac6a5Smrg 41911f0ac6a5Smrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 41921f0ac6a5Smrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 41931f0ac6a5Smrg fi 41941f0ac6a5Smrg # Expand the library linking commands again to reset the 41951f0ac6a5Smrg # value of $libobjs for piecewise linking. 41961f0ac6a5Smrg 41971f0ac6a5Smrg # Do each of the archive commands. 41981f0ac6a5Smrg if test "$module" = yes && test -n "$module_cmds" ; then 41991f0ac6a5Smrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 42001f0ac6a5Smrg cmds=$module_expsym_cmds 42011f0ac6a5Smrg else 42021f0ac6a5Smrg cmds=$module_cmds 42031f0ac6a5Smrg fi 42041f0ac6a5Smrg else 42051f0ac6a5Smrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 42061f0ac6a5Smrg cmds=$archive_expsym_cmds 42071f0ac6a5Smrg else 42081f0ac6a5Smrg cmds=$archive_cmds 42091f0ac6a5Smrg fi 42101f0ac6a5Smrg fi 42111f0ac6a5Smrg 42121f0ac6a5Smrg # Append the command to remove the reloadable object files 42131f0ac6a5Smrg # to the just-reset $cmds. 42141f0ac6a5Smrg eval cmds=\"\$cmds~\$rm $delfiles\" 42151f0ac6a5Smrg fi 42161f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 42171f0ac6a5Smrg for cmd in $cmds; do 42181f0ac6a5Smrg IFS="$save_ifs" 42191f0ac6a5Smrg eval cmd=\"$cmd\" 42201f0ac6a5Smrg $show "$cmd" 42211f0ac6a5Smrg $run eval "$cmd" || { 42221f0ac6a5Smrg lt_exit=$? 42231f0ac6a5Smrg 42241f0ac6a5Smrg # Restore the uninstalled library and exit 42251f0ac6a5Smrg if test "$mode" = relink; then 42261f0ac6a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 42271f0ac6a5Smrg fi 42281f0ac6a5Smrg 42291f0ac6a5Smrg exit $lt_exit 42301f0ac6a5Smrg } 42311f0ac6a5Smrg done 42321f0ac6a5Smrg IFS="$save_ifs" 42331f0ac6a5Smrg 42341f0ac6a5Smrg # Restore the uninstalled library and exit 42351f0ac6a5Smrg if test "$mode" = relink; then 42361f0ac6a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 42371f0ac6a5Smrg 42381f0ac6a5Smrg if test -n "$convenience"; then 42391f0ac6a5Smrg if test -z "$whole_archive_flag_spec"; then 42401f0ac6a5Smrg $show "${rm}r $gentop" 42411f0ac6a5Smrg $run ${rm}r "$gentop" 42421f0ac6a5Smrg fi 42431f0ac6a5Smrg fi 42441f0ac6a5Smrg 42451f0ac6a5Smrg exit $EXIT_SUCCESS 42461f0ac6a5Smrg fi 42471f0ac6a5Smrg 42481f0ac6a5Smrg # Create links to the real library. 42491f0ac6a5Smrg for linkname in $linknames; do 42501f0ac6a5Smrg if test "$realname" != "$linkname"; then 42511f0ac6a5Smrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 42521f0ac6a5Smrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 42531f0ac6a5Smrg fi 42541f0ac6a5Smrg done 42551f0ac6a5Smrg 42561f0ac6a5Smrg # If -module or -export-dynamic was specified, set the dlname. 42571f0ac6a5Smrg if test "$module" = yes || test "$export_dynamic" = yes; then 42581f0ac6a5Smrg # On all known operating systems, these are identical. 42591f0ac6a5Smrg dlname="$soname" 42601f0ac6a5Smrg fi 42611f0ac6a5Smrg fi 42621f0ac6a5Smrg ;; 42631f0ac6a5Smrg 42641f0ac6a5Smrg obj) 4265e5410a46Smrg case " $deplibs" in 4266e5410a46Smrg *\ -l* | *\ -L*) 4267e5410a46Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4268e5410a46Smrg esac 42691f0ac6a5Smrg 42701f0ac6a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 42711f0ac6a5Smrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 42721f0ac6a5Smrg fi 42731f0ac6a5Smrg 42741f0ac6a5Smrg if test -n "$rpath"; then 42751f0ac6a5Smrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 42761f0ac6a5Smrg fi 42771f0ac6a5Smrg 42781f0ac6a5Smrg if test -n "$xrpath"; then 42791f0ac6a5Smrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 42801f0ac6a5Smrg fi 42811f0ac6a5Smrg 42821f0ac6a5Smrg if test -n "$vinfo"; then 42831f0ac6a5Smrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 42841f0ac6a5Smrg fi 42851f0ac6a5Smrg 42861f0ac6a5Smrg if test -n "$release"; then 42871f0ac6a5Smrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 42881f0ac6a5Smrg fi 42891f0ac6a5Smrg 42901f0ac6a5Smrg case $output in 42911f0ac6a5Smrg *.lo) 42921f0ac6a5Smrg if test -n "$objs$old_deplibs"; then 42931f0ac6a5Smrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 42941f0ac6a5Smrg exit $EXIT_FAILURE 42951f0ac6a5Smrg fi 42961f0ac6a5Smrg libobj="$output" 42971f0ac6a5Smrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 42981f0ac6a5Smrg ;; 42991f0ac6a5Smrg *) 43001f0ac6a5Smrg libobj= 43011f0ac6a5Smrg obj="$output" 43021f0ac6a5Smrg ;; 43031f0ac6a5Smrg esac 43041f0ac6a5Smrg 43051f0ac6a5Smrg # Delete the old objects. 43061f0ac6a5Smrg $run $rm $obj $libobj 43071f0ac6a5Smrg 43081f0ac6a5Smrg # Objects from convenience libraries. This assumes 43091f0ac6a5Smrg # single-version convenience libraries. Whenever we create 43101f0ac6a5Smrg # different ones for PIC/non-PIC, this we'll have to duplicate 43111f0ac6a5Smrg # the extraction. 43121f0ac6a5Smrg reload_conv_objs= 43131f0ac6a5Smrg gentop= 43141f0ac6a5Smrg # reload_cmds runs $LD directly, so let us get rid of 4315e5410a46Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 4316e5410a46Smrg # turning comma into space.. 43171f0ac6a5Smrg wl= 43181f0ac6a5Smrg 43191f0ac6a5Smrg if test -n "$convenience"; then 43201f0ac6a5Smrg if test -n "$whole_archive_flag_spec"; then 4321e5410a46Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4322e5410a46Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 43231f0ac6a5Smrg else 43241f0ac6a5Smrg gentop="$output_objdir/${obj}x" 43251f0ac6a5Smrg generated="$generated $gentop" 43261f0ac6a5Smrg 43271f0ac6a5Smrg func_extract_archives $gentop $convenience 43281f0ac6a5Smrg reload_conv_objs="$reload_objs $func_extract_archives_result" 43291f0ac6a5Smrg fi 43301f0ac6a5Smrg fi 43311f0ac6a5Smrg 43321f0ac6a5Smrg # Create the old-style object. 43331f0ac6a5Smrg 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 43341f0ac6a5Smrg 43351f0ac6a5Smrg output="$obj" 43361f0ac6a5Smrg cmds=$reload_cmds 43371f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 43381f0ac6a5Smrg for cmd in $cmds; do 43391f0ac6a5Smrg IFS="$save_ifs" 43401f0ac6a5Smrg eval cmd=\"$cmd\" 43411f0ac6a5Smrg $show "$cmd" 43421f0ac6a5Smrg $run eval "$cmd" || exit $? 43431f0ac6a5Smrg done 43441f0ac6a5Smrg IFS="$save_ifs" 43451f0ac6a5Smrg 43461f0ac6a5Smrg # Exit if we aren't doing a library object file. 43471f0ac6a5Smrg if test -z "$libobj"; then 43481f0ac6a5Smrg if test -n "$gentop"; then 43491f0ac6a5Smrg $show "${rm}r $gentop" 43501f0ac6a5Smrg $run ${rm}r $gentop 43511f0ac6a5Smrg fi 43521f0ac6a5Smrg 43531f0ac6a5Smrg exit $EXIT_SUCCESS 43541f0ac6a5Smrg fi 43551f0ac6a5Smrg 43561f0ac6a5Smrg if test "$build_libtool_libs" != yes; then 43571f0ac6a5Smrg if test -n "$gentop"; then 43581f0ac6a5Smrg $show "${rm}r $gentop" 43591f0ac6a5Smrg $run ${rm}r $gentop 43601f0ac6a5Smrg fi 43611f0ac6a5Smrg 43621f0ac6a5Smrg # Create an invalid libtool object if no PIC, so that we don't 43631f0ac6a5Smrg # accidentally link it into a program. 43641f0ac6a5Smrg # $show "echo timestamp > $libobj" 43651f0ac6a5Smrg # $run eval "echo timestamp > $libobj" || exit $? 43661f0ac6a5Smrg exit $EXIT_SUCCESS 43671f0ac6a5Smrg fi 43681f0ac6a5Smrg 43691f0ac6a5Smrg if test -n "$pic_flag" || test "$pic_mode" != default; then 43701f0ac6a5Smrg # Only do commands if we really have different PIC objects. 43711f0ac6a5Smrg reload_objs="$libobjs $reload_conv_objs" 43721f0ac6a5Smrg output="$libobj" 43731f0ac6a5Smrg cmds=$reload_cmds 43741f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 43751f0ac6a5Smrg for cmd in $cmds; do 43761f0ac6a5Smrg IFS="$save_ifs" 43771f0ac6a5Smrg eval cmd=\"$cmd\" 43781f0ac6a5Smrg $show "$cmd" 43791f0ac6a5Smrg $run eval "$cmd" || exit $? 43801f0ac6a5Smrg done 43811f0ac6a5Smrg IFS="$save_ifs" 43821f0ac6a5Smrg fi 43831f0ac6a5Smrg 43841f0ac6a5Smrg if test -n "$gentop"; then 43851f0ac6a5Smrg $show "${rm}r $gentop" 43861f0ac6a5Smrg $run ${rm}r $gentop 43871f0ac6a5Smrg fi 43881f0ac6a5Smrg 43891f0ac6a5Smrg exit $EXIT_SUCCESS 43901f0ac6a5Smrg ;; 43911f0ac6a5Smrg 43921f0ac6a5Smrg prog) 43931f0ac6a5Smrg case $host in 43941f0ac6a5Smrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 43951f0ac6a5Smrg esac 43961f0ac6a5Smrg if test -n "$vinfo"; then 43971f0ac6a5Smrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 43981f0ac6a5Smrg fi 43991f0ac6a5Smrg 44001f0ac6a5Smrg if test -n "$release"; then 44011f0ac6a5Smrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 44021f0ac6a5Smrg fi 44031f0ac6a5Smrg 44041f0ac6a5Smrg if test "$preload" = yes; then 44051f0ac6a5Smrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 44061f0ac6a5Smrg test "$dlopen_self_static" = unknown; then 44071f0ac6a5Smrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 44081f0ac6a5Smrg fi 44091f0ac6a5Smrg fi 44101f0ac6a5Smrg 44111f0ac6a5Smrg case $host in 44121f0ac6a5Smrg *-*-rhapsody* | *-*-darwin1.[012]) 44131f0ac6a5Smrg # On Rhapsody replace the C library is the System framework 44141f0ac6a5Smrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44151f0ac6a5Smrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 44161f0ac6a5Smrg ;; 44171f0ac6a5Smrg esac 44181f0ac6a5Smrg 44191f0ac6a5Smrg case $host in 44201f0ac6a5Smrg *darwin*) 44211f0ac6a5Smrg # Don't allow lazy linking, it breaks C++ global constructors 44221f0ac6a5Smrg if test "$tagname" = CXX ; then 44231f0ac6a5Smrg compile_command="$compile_command ${wl}-bind_at_load" 44241f0ac6a5Smrg finalize_command="$finalize_command ${wl}-bind_at_load" 44251f0ac6a5Smrg fi 44261f0ac6a5Smrg ;; 44271f0ac6a5Smrg esac 44281f0ac6a5Smrg 44291f0ac6a5Smrg 44301f0ac6a5Smrg # move library search paths that coincide with paths to not yet 44311f0ac6a5Smrg # installed libraries to the beginning of the library search list 44321f0ac6a5Smrg new_libs= 44331f0ac6a5Smrg for path in $notinst_path; do 44341f0ac6a5Smrg case " $new_libs " in 44351f0ac6a5Smrg *" -L$path/$objdir "*) ;; 44361f0ac6a5Smrg *) 44371f0ac6a5Smrg case " $compile_deplibs " in 44381f0ac6a5Smrg *" -L$path/$objdir "*) 44391f0ac6a5Smrg new_libs="$new_libs -L$path/$objdir" ;; 44401f0ac6a5Smrg esac 44411f0ac6a5Smrg ;; 44421f0ac6a5Smrg esac 44431f0ac6a5Smrg done 44441f0ac6a5Smrg for deplib in $compile_deplibs; do 44451f0ac6a5Smrg case $deplib in 44461f0ac6a5Smrg -L*) 44471f0ac6a5Smrg case " $new_libs " in 44481f0ac6a5Smrg *" $deplib "*) ;; 44491f0ac6a5Smrg *) new_libs="$new_libs $deplib" ;; 44501f0ac6a5Smrg esac 44511f0ac6a5Smrg ;; 44521f0ac6a5Smrg *) new_libs="$new_libs $deplib" ;; 44531f0ac6a5Smrg esac 44541f0ac6a5Smrg done 44551f0ac6a5Smrg compile_deplibs="$new_libs" 44561f0ac6a5Smrg 44571f0ac6a5Smrg 44581f0ac6a5Smrg compile_command="$compile_command $compile_deplibs" 44591f0ac6a5Smrg finalize_command="$finalize_command $finalize_deplibs" 44601f0ac6a5Smrg 44611f0ac6a5Smrg if test -n "$rpath$xrpath"; then 44621f0ac6a5Smrg # If the user specified any rpath flags, then add them. 44631f0ac6a5Smrg for libdir in $rpath $xrpath; do 44641f0ac6a5Smrg # This is the magic to use -rpath. 44651f0ac6a5Smrg case "$finalize_rpath " in 44661f0ac6a5Smrg *" $libdir "*) ;; 44671f0ac6a5Smrg *) finalize_rpath="$finalize_rpath $libdir" ;; 44681f0ac6a5Smrg esac 44691f0ac6a5Smrg done 44701f0ac6a5Smrg fi 44711f0ac6a5Smrg 44721f0ac6a5Smrg # Now hardcode the library paths 44731f0ac6a5Smrg rpath= 44741f0ac6a5Smrg hardcode_libdirs= 44751f0ac6a5Smrg for libdir in $compile_rpath $finalize_rpath; do 44761f0ac6a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 44771f0ac6a5Smrg if test -n "$hardcode_libdir_separator"; then 44781f0ac6a5Smrg if test -z "$hardcode_libdirs"; then 44791f0ac6a5Smrg hardcode_libdirs="$libdir" 44801f0ac6a5Smrg else 44811f0ac6a5Smrg # Just accumulate the unique libdirs. 44821f0ac6a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 44831f0ac6a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 44841f0ac6a5Smrg ;; 44851f0ac6a5Smrg *) 44861f0ac6a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 44871f0ac6a5Smrg ;; 44881f0ac6a5Smrg esac 44891f0ac6a5Smrg fi 44901f0ac6a5Smrg else 44911f0ac6a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 44921f0ac6a5Smrg rpath="$rpath $flag" 44931f0ac6a5Smrg fi 44941f0ac6a5Smrg elif test -n "$runpath_var"; then 44951f0ac6a5Smrg case "$perm_rpath " in 44961f0ac6a5Smrg *" $libdir "*) ;; 44971f0ac6a5Smrg *) perm_rpath="$perm_rpath $libdir" ;; 44981f0ac6a5Smrg esac 44991f0ac6a5Smrg fi 45001f0ac6a5Smrg case $host in 45011f0ac6a5Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 45021f0ac6a5Smrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 45031f0ac6a5Smrg case :$dllsearchpath: in 45041f0ac6a5Smrg *":$libdir:"*) ;; 45051f0ac6a5Smrg *) dllsearchpath="$dllsearchpath:$libdir";; 45061f0ac6a5Smrg esac 45071f0ac6a5Smrg case :$dllsearchpath: in 45081f0ac6a5Smrg *":$testbindir:"*) ;; 45091f0ac6a5Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 45101f0ac6a5Smrg esac 45111f0ac6a5Smrg ;; 45121f0ac6a5Smrg esac 45131f0ac6a5Smrg done 45141f0ac6a5Smrg # Substitute the hardcoded libdirs into the rpath. 45151f0ac6a5Smrg if test -n "$hardcode_libdir_separator" && 45161f0ac6a5Smrg test -n "$hardcode_libdirs"; then 45171f0ac6a5Smrg libdir="$hardcode_libdirs" 45181f0ac6a5Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 45191f0ac6a5Smrg fi 45201f0ac6a5Smrg compile_rpath="$rpath" 45211f0ac6a5Smrg 45221f0ac6a5Smrg rpath= 45231f0ac6a5Smrg hardcode_libdirs= 45241f0ac6a5Smrg for libdir in $finalize_rpath; do 45251f0ac6a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 45261f0ac6a5Smrg if test -n "$hardcode_libdir_separator"; then 45271f0ac6a5Smrg if test -z "$hardcode_libdirs"; then 45281f0ac6a5Smrg hardcode_libdirs="$libdir" 45291f0ac6a5Smrg else 45301f0ac6a5Smrg # Just accumulate the unique libdirs. 45311f0ac6a5Smrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 45321f0ac6a5Smrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 45331f0ac6a5Smrg ;; 45341f0ac6a5Smrg *) 45351f0ac6a5Smrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 45361f0ac6a5Smrg ;; 45371f0ac6a5Smrg esac 45381f0ac6a5Smrg fi 45391f0ac6a5Smrg else 45401f0ac6a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 45411f0ac6a5Smrg rpath="$rpath $flag" 45421f0ac6a5Smrg fi 45431f0ac6a5Smrg elif test -n "$runpath_var"; then 45441f0ac6a5Smrg case "$finalize_perm_rpath " in 45451f0ac6a5Smrg *" $libdir "*) ;; 45461f0ac6a5Smrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 45471f0ac6a5Smrg esac 45481f0ac6a5Smrg fi 45491f0ac6a5Smrg done 45501f0ac6a5Smrg # Substitute the hardcoded libdirs into the rpath. 45511f0ac6a5Smrg if test -n "$hardcode_libdir_separator" && 45521f0ac6a5Smrg test -n "$hardcode_libdirs"; then 45531f0ac6a5Smrg libdir="$hardcode_libdirs" 45541f0ac6a5Smrg eval rpath=\" $hardcode_libdir_flag_spec\" 45551f0ac6a5Smrg fi 45561f0ac6a5Smrg finalize_rpath="$rpath" 45571f0ac6a5Smrg 45581f0ac6a5Smrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 45591f0ac6a5Smrg # Transform all the library objects into standard objects. 45601f0ac6a5Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 45611f0ac6a5Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 45621f0ac6a5Smrg fi 45631f0ac6a5Smrg 45641f0ac6a5Smrg dlsyms= 45651f0ac6a5Smrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 45661f0ac6a5Smrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 45671f0ac6a5Smrg dlsyms="${outputname}S.c" 45681f0ac6a5Smrg else 45691f0ac6a5Smrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 45701f0ac6a5Smrg fi 45711f0ac6a5Smrg fi 45721f0ac6a5Smrg 45731f0ac6a5Smrg if test -n "$dlsyms"; then 45741f0ac6a5Smrg case $dlsyms in 45751f0ac6a5Smrg "") ;; 45761f0ac6a5Smrg *.c) 45771f0ac6a5Smrg # Discover the nlist of each of the dlfiles. 45781f0ac6a5Smrg nlist="$output_objdir/${outputname}.nm" 45791f0ac6a5Smrg 45801f0ac6a5Smrg $show "$rm $nlist ${nlist}S ${nlist}T" 45811f0ac6a5Smrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 45821f0ac6a5Smrg 45831f0ac6a5Smrg # Parse the name list into a source file. 45841f0ac6a5Smrg $show "creating $output_objdir/$dlsyms" 45851f0ac6a5Smrg 45861f0ac6a5Smrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 45871f0ac6a5Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 45881f0ac6a5Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 45891f0ac6a5Smrg 45901f0ac6a5Smrg#ifdef __cplusplus 45911f0ac6a5Smrgextern \"C\" { 45921f0ac6a5Smrg#endif 45931f0ac6a5Smrg 45941f0ac6a5Smrg/* Prevent the only kind of declaration conflicts we can make. */ 45951f0ac6a5Smrg#define lt_preloaded_symbols some_other_symbol 45961f0ac6a5Smrg 45971f0ac6a5Smrg/* External symbol declarations for the compiler. */\ 45981f0ac6a5Smrg" 45991f0ac6a5Smrg 46001f0ac6a5Smrg if test "$dlself" = yes; then 46011f0ac6a5Smrg $show "generating symbol list for \`$output'" 46021f0ac6a5Smrg 46031f0ac6a5Smrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 46041f0ac6a5Smrg 46051f0ac6a5Smrg # Add our own program objects to the symbol list. 46061f0ac6a5Smrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 46071f0ac6a5Smrg for arg in $progfiles; do 46081f0ac6a5Smrg $show "extracting global C symbols from \`$arg'" 46091f0ac6a5Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 46101f0ac6a5Smrg done 46111f0ac6a5Smrg 46121f0ac6a5Smrg if test -n "$exclude_expsyms"; then 46131f0ac6a5Smrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 46141f0ac6a5Smrg $run eval '$mv "$nlist"T "$nlist"' 46151f0ac6a5Smrg fi 46161f0ac6a5Smrg 46171f0ac6a5Smrg if test -n "$export_symbols_regex"; then 46181f0ac6a5Smrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 46191f0ac6a5Smrg $run eval '$mv "$nlist"T "$nlist"' 46201f0ac6a5Smrg fi 46211f0ac6a5Smrg 46221f0ac6a5Smrg # Prepare the list of exported symbols 46231f0ac6a5Smrg if test -z "$export_symbols"; then 46241f0ac6a5Smrg export_symbols="$output_objdir/$outputname.exp" 46251f0ac6a5Smrg $run $rm $export_symbols 46261f0ac6a5Smrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 46271f0ac6a5Smrg case $host in 46281f0ac6a5Smrg *cygwin* | *mingw* ) 46291f0ac6a5Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 46301f0ac6a5Smrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 46311f0ac6a5Smrg ;; 46321f0ac6a5Smrg esac 46331f0ac6a5Smrg else 46341f0ac6a5Smrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 46351f0ac6a5Smrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 46361f0ac6a5Smrg $run eval 'mv "$nlist"T "$nlist"' 46371f0ac6a5Smrg case $host in 46381f0ac6a5Smrg *cygwin* | *mingw* ) 46391f0ac6a5Smrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 46401f0ac6a5Smrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 46411f0ac6a5Smrg ;; 46421f0ac6a5Smrg esac 46431f0ac6a5Smrg fi 46441f0ac6a5Smrg fi 46451f0ac6a5Smrg 46461f0ac6a5Smrg for arg in $dlprefiles; do 46471f0ac6a5Smrg $show "extracting global C symbols from \`$arg'" 46481f0ac6a5Smrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 46491f0ac6a5Smrg $run eval '$echo ": $name " >> "$nlist"' 46501f0ac6a5Smrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 46511f0ac6a5Smrg done 46521f0ac6a5Smrg 46531f0ac6a5Smrg if test -z "$run"; then 46541f0ac6a5Smrg # Make sure we have at least an empty file. 46551f0ac6a5Smrg test -f "$nlist" || : > "$nlist" 46561f0ac6a5Smrg 46571f0ac6a5Smrg if test -n "$exclude_expsyms"; then 46581f0ac6a5Smrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 46591f0ac6a5Smrg $mv "$nlist"T "$nlist" 46601f0ac6a5Smrg fi 46611f0ac6a5Smrg 46621f0ac6a5Smrg # Try sorting and uniquifying the output. 46631f0ac6a5Smrg if grep -v "^: " < "$nlist" | 46641f0ac6a5Smrg if sort -k 3 </dev/null >/dev/null 2>&1; then 46651f0ac6a5Smrg sort -k 3 46661f0ac6a5Smrg else 46671f0ac6a5Smrg sort +2 46681f0ac6a5Smrg fi | 46691f0ac6a5Smrg uniq > "$nlist"S; then 46701f0ac6a5Smrg : 46711f0ac6a5Smrg else 46721f0ac6a5Smrg grep -v "^: " < "$nlist" > "$nlist"S 46731f0ac6a5Smrg fi 46741f0ac6a5Smrg 46751f0ac6a5Smrg if test -f "$nlist"S; then 46761f0ac6a5Smrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 46771f0ac6a5Smrg else 46781f0ac6a5Smrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 46791f0ac6a5Smrg fi 46801f0ac6a5Smrg 46811f0ac6a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 46821f0ac6a5Smrg 46831f0ac6a5Smrg#undef lt_preloaded_symbols 46841f0ac6a5Smrg 46851f0ac6a5Smrg#if defined (__STDC__) && __STDC__ 46861f0ac6a5Smrg# define lt_ptr void * 46871f0ac6a5Smrg#else 46881f0ac6a5Smrg# define lt_ptr char * 46891f0ac6a5Smrg# define const 46901f0ac6a5Smrg#endif 46911f0ac6a5Smrg 46921f0ac6a5Smrg/* The mapping between symbol names and symbols. */ 46931f0ac6a5Smrg" 46941f0ac6a5Smrg 46951f0ac6a5Smrg case $host in 46961f0ac6a5Smrg *cygwin* | *mingw* ) 46971f0ac6a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 46981f0ac6a5Smrg/* DATA imports from DLLs on WIN32 can't be const, because 46991f0ac6a5Smrg runtime relocations are performed -- see ld's documentation 47001f0ac6a5Smrg on pseudo-relocs */ 47011f0ac6a5Smrgstruct { 47021f0ac6a5Smrg" 47031f0ac6a5Smrg ;; 47041f0ac6a5Smrg * ) 47051f0ac6a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 47061f0ac6a5Smrgconst struct { 47071f0ac6a5Smrg" 47081f0ac6a5Smrg ;; 47091f0ac6a5Smrg esac 47101f0ac6a5Smrg 47111f0ac6a5Smrg 47121f0ac6a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 47131f0ac6a5Smrg const char *name; 47141f0ac6a5Smrg lt_ptr address; 47151f0ac6a5Smrg} 47161f0ac6a5Smrglt_preloaded_symbols[] = 47171f0ac6a5Smrg{\ 47181f0ac6a5Smrg" 47191f0ac6a5Smrg 47201f0ac6a5Smrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 47211f0ac6a5Smrg 47221f0ac6a5Smrg $echo >> "$output_objdir/$dlsyms" "\ 47231f0ac6a5Smrg {0, (lt_ptr) 0} 47241f0ac6a5Smrg}; 47251f0ac6a5Smrg 47261f0ac6a5Smrg/* This works around a problem in FreeBSD linker */ 47271f0ac6a5Smrg#ifdef FREEBSD_WORKAROUND 47281f0ac6a5Smrgstatic const void *lt_preloaded_setup() { 47291f0ac6a5Smrg return lt_preloaded_symbols; 47301f0ac6a5Smrg} 47311f0ac6a5Smrg#endif 47321f0ac6a5Smrg 47331f0ac6a5Smrg#ifdef __cplusplus 47341f0ac6a5Smrg} 47351f0ac6a5Smrg#endif\ 47361f0ac6a5Smrg" 47371f0ac6a5Smrg fi 47381f0ac6a5Smrg 47391f0ac6a5Smrg pic_flag_for_symtable= 47401f0ac6a5Smrg case $host in 47411f0ac6a5Smrg # compiling the symbol table file with pic_flag works around 47421f0ac6a5Smrg # a FreeBSD bug that causes programs to crash when -lm is 47431f0ac6a5Smrg # linked before any other PIC object. But we must not use 47441f0ac6a5Smrg # pic_flag when linking with -static. The problem exists in 47451f0ac6a5Smrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 47461f0ac6a5Smrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 47471f0ac6a5Smrg case "$compile_command " in 47481f0ac6a5Smrg *" -static "*) ;; 47491f0ac6a5Smrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 47501f0ac6a5Smrg esac;; 47511f0ac6a5Smrg *-*-hpux*) 47521f0ac6a5Smrg case "$compile_command " in 47531f0ac6a5Smrg *" -static "*) ;; 47541f0ac6a5Smrg *) pic_flag_for_symtable=" $pic_flag";; 47551f0ac6a5Smrg esac 47561f0ac6a5Smrg esac 47571f0ac6a5Smrg 47581f0ac6a5Smrg # Now compile the dynamic symbol file. 47591f0ac6a5Smrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 47601f0ac6a5Smrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 47611f0ac6a5Smrg 47621f0ac6a5Smrg # Clean up the generated files. 47631f0ac6a5Smrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 47641f0ac6a5Smrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 47651f0ac6a5Smrg 47661f0ac6a5Smrg # Transform the symbol file into the correct name. 47671f0ac6a5Smrg case $host in 47681f0ac6a5Smrg *cygwin* | *mingw* ) 47691f0ac6a5Smrg if test -f "$output_objdir/${outputname}.def" ; then 4770e5410a46Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4771e5410a46Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 47721f0ac6a5Smrg else 4773e5410a46Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4774e5410a46Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47751f0ac6a5Smrg fi 47761f0ac6a5Smrg ;; 47771f0ac6a5Smrg * ) 4778e5410a46Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4779e5410a46Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 47801f0ac6a5Smrg ;; 47811f0ac6a5Smrg esac 47821f0ac6a5Smrg ;; 47831f0ac6a5Smrg *) 47841f0ac6a5Smrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 47851f0ac6a5Smrg exit $EXIT_FAILURE 47861f0ac6a5Smrg ;; 47871f0ac6a5Smrg esac 47881f0ac6a5Smrg else 47891f0ac6a5Smrg # We keep going just in case the user didn't refer to 47901f0ac6a5Smrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 47911f0ac6a5Smrg # really was required. 47921f0ac6a5Smrg 47931f0ac6a5Smrg # Nullify the symbol file. 4794e5410a46Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4795e5410a46Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 47961f0ac6a5Smrg fi 47971f0ac6a5Smrg 47981f0ac6a5Smrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 47991f0ac6a5Smrg # Replace the output file specification. 4800e5410a46Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 48011f0ac6a5Smrg link_command="$compile_command$compile_rpath" 48021f0ac6a5Smrg 48031f0ac6a5Smrg # We have no uninstalled library dependencies, so finalize right now. 48041f0ac6a5Smrg $show "$link_command" 48051f0ac6a5Smrg $run eval "$link_command" 48061f0ac6a5Smrg exit_status=$? 48071f0ac6a5Smrg 48081f0ac6a5Smrg # Delete the generated files. 48091f0ac6a5Smrg if test -n "$dlsyms"; then 48101f0ac6a5Smrg $show "$rm $output_objdir/${outputname}S.${objext}" 48111f0ac6a5Smrg $run $rm "$output_objdir/${outputname}S.${objext}" 48121f0ac6a5Smrg fi 48131f0ac6a5Smrg 48141f0ac6a5Smrg exit $exit_status 48151f0ac6a5Smrg fi 48161f0ac6a5Smrg 48171f0ac6a5Smrg if test -n "$shlibpath_var"; then 48181f0ac6a5Smrg # We should set the shlibpath_var 48191f0ac6a5Smrg rpath= 48201f0ac6a5Smrg for dir in $temp_rpath; do 48211f0ac6a5Smrg case $dir in 48221f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) 48231f0ac6a5Smrg # Absolute path. 48241f0ac6a5Smrg rpath="$rpath$dir:" 48251f0ac6a5Smrg ;; 48261f0ac6a5Smrg *) 48271f0ac6a5Smrg # Relative path: add a thisdir entry. 48281f0ac6a5Smrg rpath="$rpath\$thisdir/$dir:" 48291f0ac6a5Smrg ;; 48301f0ac6a5Smrg esac 48311f0ac6a5Smrg done 48321f0ac6a5Smrg temp_rpath="$rpath" 48331f0ac6a5Smrg fi 48341f0ac6a5Smrg 48351f0ac6a5Smrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 48361f0ac6a5Smrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 48371f0ac6a5Smrg fi 48381f0ac6a5Smrg if test -n "$finalize_shlibpath"; then 48391f0ac6a5Smrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 48401f0ac6a5Smrg fi 48411f0ac6a5Smrg 48421f0ac6a5Smrg compile_var= 48431f0ac6a5Smrg finalize_var= 48441f0ac6a5Smrg if test -n "$runpath_var"; then 48451f0ac6a5Smrg if test -n "$perm_rpath"; then 48461f0ac6a5Smrg # We should set the runpath_var. 48471f0ac6a5Smrg rpath= 48481f0ac6a5Smrg for dir in $perm_rpath; do 48491f0ac6a5Smrg rpath="$rpath$dir:" 48501f0ac6a5Smrg done 48511f0ac6a5Smrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 48521f0ac6a5Smrg fi 48531f0ac6a5Smrg if test -n "$finalize_perm_rpath"; then 48541f0ac6a5Smrg # We should set the runpath_var. 48551f0ac6a5Smrg rpath= 48561f0ac6a5Smrg for dir in $finalize_perm_rpath; do 48571f0ac6a5Smrg rpath="$rpath$dir:" 48581f0ac6a5Smrg done 48591f0ac6a5Smrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 48601f0ac6a5Smrg fi 48611f0ac6a5Smrg fi 48621f0ac6a5Smrg 48631f0ac6a5Smrg if test "$no_install" = yes; then 48641f0ac6a5Smrg # We don't need to create a wrapper script. 48651f0ac6a5Smrg link_command="$compile_var$compile_command$compile_rpath" 48661f0ac6a5Smrg # Replace the output file specification. 48671f0ac6a5Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 48681f0ac6a5Smrg # Delete the old output file. 48691f0ac6a5Smrg $run $rm $output 48701f0ac6a5Smrg # Link the executable and exit 48711f0ac6a5Smrg $show "$link_command" 48721f0ac6a5Smrg $run eval "$link_command" || exit $? 48731f0ac6a5Smrg exit $EXIT_SUCCESS 48741f0ac6a5Smrg fi 48751f0ac6a5Smrg 48761f0ac6a5Smrg if test "$hardcode_action" = relink; then 48771f0ac6a5Smrg # Fast installation is not supported 48781f0ac6a5Smrg link_command="$compile_var$compile_command$compile_rpath" 48791f0ac6a5Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48801f0ac6a5Smrg 48811f0ac6a5Smrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 48821f0ac6a5Smrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 48831f0ac6a5Smrg else 48841f0ac6a5Smrg if test "$fast_install" != no; then 48851f0ac6a5Smrg link_command="$finalize_var$compile_command$finalize_rpath" 48861f0ac6a5Smrg if test "$fast_install" = yes; then 4887e5410a46Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 48881f0ac6a5Smrg else 48891f0ac6a5Smrg # fast_install is set to needless 48901f0ac6a5Smrg relink_command= 48911f0ac6a5Smrg fi 48921f0ac6a5Smrg else 48931f0ac6a5Smrg link_command="$compile_var$compile_command$compile_rpath" 48941f0ac6a5Smrg relink_command="$finalize_var$finalize_command$finalize_rpath" 48951f0ac6a5Smrg fi 48961f0ac6a5Smrg fi 48971f0ac6a5Smrg 48981f0ac6a5Smrg # Replace the output file specification. 48991f0ac6a5Smrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 49001f0ac6a5Smrg 49011f0ac6a5Smrg # Delete the old output files. 49021f0ac6a5Smrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 49031f0ac6a5Smrg 49041f0ac6a5Smrg $show "$link_command" 49051f0ac6a5Smrg $run eval "$link_command" || exit $? 49061f0ac6a5Smrg 49071f0ac6a5Smrg # Now create the wrapper script. 49081f0ac6a5Smrg $show "creating $output" 49091f0ac6a5Smrg 49101f0ac6a5Smrg # Quote the relink command for shipping. 49111f0ac6a5Smrg if test -n "$relink_command"; then 49121f0ac6a5Smrg # Preserve any variables that may affect compiler behavior 49131f0ac6a5Smrg for var in $variables_saved_for_relink; do 49141f0ac6a5Smrg if eval test -z \"\${$var+set}\"; then 49151f0ac6a5Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 49161f0ac6a5Smrg elif eval var_value=\$$var; test -z "$var_value"; then 49171f0ac6a5Smrg relink_command="$var=; export $var; $relink_command" 49181f0ac6a5Smrg else 49191f0ac6a5Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 49201f0ac6a5Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 49211f0ac6a5Smrg fi 49221f0ac6a5Smrg done 49231f0ac6a5Smrg relink_command="(cd `pwd`; $relink_command)" 4924e5410a46Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 49251f0ac6a5Smrg fi 49261f0ac6a5Smrg 49271f0ac6a5Smrg # Quote $echo for shipping. 49281f0ac6a5Smrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 49291f0ac6a5Smrg case $progpath in 49301f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 49311f0ac6a5Smrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 49321f0ac6a5Smrg esac 49331f0ac6a5Smrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 49341f0ac6a5Smrg else 49351f0ac6a5Smrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 49361f0ac6a5Smrg fi 49371f0ac6a5Smrg 49381f0ac6a5Smrg # Only actually do things if our run command is non-null. 49391f0ac6a5Smrg if test -z "$run"; then 49401f0ac6a5Smrg # win32 will think the script is a binary if it has 49411f0ac6a5Smrg # a .exe suffix, so we strip it off here. 49421f0ac6a5Smrg case $output in 49431f0ac6a5Smrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 49441f0ac6a5Smrg esac 49451f0ac6a5Smrg # test for cygwin because mv fails w/o .exe extensions 49461f0ac6a5Smrg case $host in 49471f0ac6a5Smrg *cygwin*) 49481f0ac6a5Smrg exeext=.exe 49491f0ac6a5Smrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 49501f0ac6a5Smrg *) exeext= ;; 49511f0ac6a5Smrg esac 49521f0ac6a5Smrg case $host in 49531f0ac6a5Smrg *cygwin* | *mingw* ) 49541f0ac6a5Smrg output_name=`basename $output` 49551f0ac6a5Smrg output_path=`dirname $output` 49561f0ac6a5Smrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 49571f0ac6a5Smrg cwrapper="$output_path/$output_name.exe" 49581f0ac6a5Smrg $rm $cwrappersource $cwrapper 49591f0ac6a5Smrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 49601f0ac6a5Smrg 49611f0ac6a5Smrg cat > $cwrappersource <<EOF 49621f0ac6a5Smrg 49631f0ac6a5Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 49641f0ac6a5Smrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 49651f0ac6a5Smrg 49661f0ac6a5Smrg The $output program cannot be directly executed until all the libtool 49671f0ac6a5Smrg libraries that it depends on are installed. 49681f0ac6a5Smrg 49691f0ac6a5Smrg This wrapper executable should never be moved out of the build directory. 49701f0ac6a5Smrg If it is, it will not operate correctly. 49711f0ac6a5Smrg 49721f0ac6a5Smrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 49731f0ac6a5Smrg but could eventually absorb all of the scripts functionality and 49741f0ac6a5Smrg exec $objdir/$outputname directly. 49751f0ac6a5Smrg*/ 49761f0ac6a5SmrgEOF 49771f0ac6a5Smrg cat >> $cwrappersource<<"EOF" 49781f0ac6a5Smrg#include <stdio.h> 49791f0ac6a5Smrg#include <stdlib.h> 49801f0ac6a5Smrg#include <unistd.h> 49811f0ac6a5Smrg#include <malloc.h> 49821f0ac6a5Smrg#include <stdarg.h> 49831f0ac6a5Smrg#include <assert.h> 49841f0ac6a5Smrg#include <string.h> 49851f0ac6a5Smrg#include <ctype.h> 49861f0ac6a5Smrg#include <sys/stat.h> 49871f0ac6a5Smrg 49881f0ac6a5Smrg#if defined(PATH_MAX) 49891f0ac6a5Smrg# define LT_PATHMAX PATH_MAX 49901f0ac6a5Smrg#elif defined(MAXPATHLEN) 49911f0ac6a5Smrg# define LT_PATHMAX MAXPATHLEN 49921f0ac6a5Smrg#else 49931f0ac6a5Smrg# define LT_PATHMAX 1024 49941f0ac6a5Smrg#endif 49951f0ac6a5Smrg 49961f0ac6a5Smrg#ifndef DIR_SEPARATOR 49971f0ac6a5Smrg# define DIR_SEPARATOR '/' 49981f0ac6a5Smrg# define PATH_SEPARATOR ':' 49991f0ac6a5Smrg#endif 50001f0ac6a5Smrg 50011f0ac6a5Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 50021f0ac6a5Smrg defined (__OS2__) 50031f0ac6a5Smrg# define HAVE_DOS_BASED_FILE_SYSTEM 50041f0ac6a5Smrg# ifndef DIR_SEPARATOR_2 50051f0ac6a5Smrg# define DIR_SEPARATOR_2 '\\' 50061f0ac6a5Smrg# endif 50071f0ac6a5Smrg# ifndef PATH_SEPARATOR_2 50081f0ac6a5Smrg# define PATH_SEPARATOR_2 ';' 50091f0ac6a5Smrg# endif 50101f0ac6a5Smrg#endif 50111f0ac6a5Smrg 50121f0ac6a5Smrg#ifndef DIR_SEPARATOR_2 50131f0ac6a5Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 50141f0ac6a5Smrg#else /* DIR_SEPARATOR_2 */ 50151f0ac6a5Smrg# define IS_DIR_SEPARATOR(ch) \ 50161f0ac6a5Smrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 50171f0ac6a5Smrg#endif /* DIR_SEPARATOR_2 */ 50181f0ac6a5Smrg 50191f0ac6a5Smrg#ifndef PATH_SEPARATOR_2 50201f0ac6a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 50211f0ac6a5Smrg#else /* PATH_SEPARATOR_2 */ 50221f0ac6a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 50231f0ac6a5Smrg#endif /* PATH_SEPARATOR_2 */ 50241f0ac6a5Smrg 50251f0ac6a5Smrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 50261f0ac6a5Smrg#define XFREE(stale) do { \ 50271f0ac6a5Smrg if (stale) { free ((void *) stale); stale = 0; } \ 50281f0ac6a5Smrg} while (0) 50291f0ac6a5Smrg 50301f0ac6a5Smrg/* -DDEBUG is fairly common in CFLAGS. */ 50311f0ac6a5Smrg#undef DEBUG 50321f0ac6a5Smrg#if defined DEBUGWRAPPER 50331f0ac6a5Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 50341f0ac6a5Smrg#else 50351f0ac6a5Smrg# define DEBUG(format, ...) 50361f0ac6a5Smrg#endif 50371f0ac6a5Smrg 50381f0ac6a5Smrgconst char *program_name = NULL; 50391f0ac6a5Smrg 50401f0ac6a5Smrgvoid * xmalloc (size_t num); 50411f0ac6a5Smrgchar * xstrdup (const char *string); 50421f0ac6a5Smrgconst char * base_name (const char *name); 50431f0ac6a5Smrgchar * find_executable(const char *wrapper); 50441f0ac6a5Smrgint check_executable(const char *path); 50451f0ac6a5Smrgchar * strendzap(char *str, const char *pat); 50461f0ac6a5Smrgvoid lt_fatal (const char *message, ...); 50471f0ac6a5Smrg 50481f0ac6a5Smrgint 50491f0ac6a5Smrgmain (int argc, char *argv[]) 50501f0ac6a5Smrg{ 50511f0ac6a5Smrg char **newargz; 50521f0ac6a5Smrg int i; 50531f0ac6a5Smrg 50541f0ac6a5Smrg program_name = (char *) xstrdup (base_name (argv[0])); 50551f0ac6a5Smrg DEBUG("(main) argv[0] : %s\n",argv[0]); 50561f0ac6a5Smrg DEBUG("(main) program_name : %s\n",program_name); 50571f0ac6a5Smrg newargz = XMALLOC(char *, argc+2); 50581f0ac6a5SmrgEOF 50591f0ac6a5Smrg 50601f0ac6a5Smrg cat >> $cwrappersource <<EOF 50611f0ac6a5Smrg newargz[0] = (char *) xstrdup("$SHELL"); 50621f0ac6a5SmrgEOF 50631f0ac6a5Smrg 50641f0ac6a5Smrg cat >> $cwrappersource <<"EOF" 50651f0ac6a5Smrg newargz[1] = find_executable(argv[0]); 50661f0ac6a5Smrg if (newargz[1] == NULL) 50671f0ac6a5Smrg lt_fatal("Couldn't find %s", argv[0]); 50681f0ac6a5Smrg DEBUG("(main) found exe at : %s\n",newargz[1]); 50691f0ac6a5Smrg /* we know the script has the same name, without the .exe */ 50701f0ac6a5Smrg /* so make sure newargz[1] doesn't end in .exe */ 50711f0ac6a5Smrg strendzap(newargz[1],".exe"); 50721f0ac6a5Smrg for (i = 1; i < argc; i++) 50731f0ac6a5Smrg newargz[i+1] = xstrdup(argv[i]); 50741f0ac6a5Smrg newargz[argc+1] = NULL; 50751f0ac6a5Smrg 50761f0ac6a5Smrg for (i=0; i<argc+1; i++) 50771f0ac6a5Smrg { 50781f0ac6a5Smrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 50791f0ac6a5Smrg ; 50801f0ac6a5Smrg } 50811f0ac6a5Smrg 50821f0ac6a5SmrgEOF 50831f0ac6a5Smrg 50841f0ac6a5Smrg case $host_os in 50851f0ac6a5Smrg mingw*) 50861f0ac6a5Smrg cat >> $cwrappersource <<EOF 50871f0ac6a5Smrg execv("$SHELL",(char const **)newargz); 50881f0ac6a5SmrgEOF 50891f0ac6a5Smrg ;; 50901f0ac6a5Smrg *) 50911f0ac6a5Smrg cat >> $cwrappersource <<EOF 50921f0ac6a5Smrg execv("$SHELL",newargz); 50931f0ac6a5SmrgEOF 50941f0ac6a5Smrg ;; 50951f0ac6a5Smrg esac 50961f0ac6a5Smrg 50971f0ac6a5Smrg cat >> $cwrappersource <<"EOF" 50981f0ac6a5Smrg return 127; 50991f0ac6a5Smrg} 51001f0ac6a5Smrg 51011f0ac6a5Smrgvoid * 51021f0ac6a5Smrgxmalloc (size_t num) 51031f0ac6a5Smrg{ 51041f0ac6a5Smrg void * p = (void *) malloc (num); 51051f0ac6a5Smrg if (!p) 51061f0ac6a5Smrg lt_fatal ("Memory exhausted"); 51071f0ac6a5Smrg 51081f0ac6a5Smrg return p; 51091f0ac6a5Smrg} 51101f0ac6a5Smrg 51111f0ac6a5Smrgchar * 51121f0ac6a5Smrgxstrdup (const char *string) 51131f0ac6a5Smrg{ 51141f0ac6a5Smrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 51151f0ac6a5Smrg; 51161f0ac6a5Smrg} 51171f0ac6a5Smrg 51181f0ac6a5Smrgconst char * 51191f0ac6a5Smrgbase_name (const char *name) 51201f0ac6a5Smrg{ 51211f0ac6a5Smrg const char *base; 51221f0ac6a5Smrg 51231f0ac6a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51241f0ac6a5Smrg /* Skip over the disk name in MSDOS pathnames. */ 51251f0ac6a5Smrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 51261f0ac6a5Smrg name += 2; 51271f0ac6a5Smrg#endif 51281f0ac6a5Smrg 51291f0ac6a5Smrg for (base = name; *name; name++) 51301f0ac6a5Smrg if (IS_DIR_SEPARATOR (*name)) 51311f0ac6a5Smrg base = name + 1; 51321f0ac6a5Smrg return base; 51331f0ac6a5Smrg} 51341f0ac6a5Smrg 51351f0ac6a5Smrgint 51361f0ac6a5Smrgcheck_executable(const char * path) 51371f0ac6a5Smrg{ 51381f0ac6a5Smrg struct stat st; 51391f0ac6a5Smrg 51401f0ac6a5Smrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 51411f0ac6a5Smrg if ((!path) || (!*path)) 51421f0ac6a5Smrg return 0; 51431f0ac6a5Smrg 51441f0ac6a5Smrg if ((stat (path, &st) >= 0) && 51451f0ac6a5Smrg ( 51461f0ac6a5Smrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 51471f0ac6a5Smrg#if defined (S_IXOTH) 51481f0ac6a5Smrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 51491f0ac6a5Smrg#endif 51501f0ac6a5Smrg#if defined (S_IXGRP) 51511f0ac6a5Smrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 51521f0ac6a5Smrg#endif 51531f0ac6a5Smrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 51541f0ac6a5Smrg ) 51551f0ac6a5Smrg return 1; 51561f0ac6a5Smrg else 51571f0ac6a5Smrg return 0; 51581f0ac6a5Smrg} 51591f0ac6a5Smrg 51601f0ac6a5Smrg/* Searches for the full path of the wrapper. Returns 51611f0ac6a5Smrg newly allocated full path name if found, NULL otherwise */ 51621f0ac6a5Smrgchar * 51631f0ac6a5Smrgfind_executable (const char* wrapper) 51641f0ac6a5Smrg{ 51651f0ac6a5Smrg int has_slash = 0; 51661f0ac6a5Smrg const char* p; 51671f0ac6a5Smrg const char* p_next; 51681f0ac6a5Smrg /* static buffer for getcwd */ 51691f0ac6a5Smrg char tmp[LT_PATHMAX + 1]; 51701f0ac6a5Smrg int tmp_len; 51711f0ac6a5Smrg char* concat_name; 51721f0ac6a5Smrg 51731f0ac6a5Smrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 51741f0ac6a5Smrg 51751f0ac6a5Smrg if ((wrapper == NULL) || (*wrapper == '\0')) 51761f0ac6a5Smrg return NULL; 51771f0ac6a5Smrg 51781f0ac6a5Smrg /* Absolute path? */ 51791f0ac6a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51801f0ac6a5Smrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 51811f0ac6a5Smrg { 51821f0ac6a5Smrg concat_name = xstrdup (wrapper); 51831f0ac6a5Smrg if (check_executable(concat_name)) 51841f0ac6a5Smrg return concat_name; 51851f0ac6a5Smrg XFREE(concat_name); 51861f0ac6a5Smrg } 51871f0ac6a5Smrg else 51881f0ac6a5Smrg { 51891f0ac6a5Smrg#endif 51901f0ac6a5Smrg if (IS_DIR_SEPARATOR (wrapper[0])) 51911f0ac6a5Smrg { 51921f0ac6a5Smrg concat_name = xstrdup (wrapper); 51931f0ac6a5Smrg if (check_executable(concat_name)) 51941f0ac6a5Smrg return concat_name; 51951f0ac6a5Smrg XFREE(concat_name); 51961f0ac6a5Smrg } 51971f0ac6a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 51981f0ac6a5Smrg } 51991f0ac6a5Smrg#endif 52001f0ac6a5Smrg 52011f0ac6a5Smrg for (p = wrapper; *p; p++) 52021f0ac6a5Smrg if (*p == '/') 52031f0ac6a5Smrg { 52041f0ac6a5Smrg has_slash = 1; 52051f0ac6a5Smrg break; 52061f0ac6a5Smrg } 52071f0ac6a5Smrg if (!has_slash) 52081f0ac6a5Smrg { 52091f0ac6a5Smrg /* no slashes; search PATH */ 52101f0ac6a5Smrg const char* path = getenv ("PATH"); 52111f0ac6a5Smrg if (path != NULL) 52121f0ac6a5Smrg { 52131f0ac6a5Smrg for (p = path; *p; p = p_next) 52141f0ac6a5Smrg { 52151f0ac6a5Smrg const char* q; 52161f0ac6a5Smrg size_t p_len; 52171f0ac6a5Smrg for (q = p; *q; q++) 52181f0ac6a5Smrg if (IS_PATH_SEPARATOR(*q)) 52191f0ac6a5Smrg break; 52201f0ac6a5Smrg p_len = q - p; 52211f0ac6a5Smrg p_next = (*q == '\0' ? q : q + 1); 52221f0ac6a5Smrg if (p_len == 0) 52231f0ac6a5Smrg { 52241f0ac6a5Smrg /* empty path: current directory */ 52251f0ac6a5Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 52261f0ac6a5Smrg lt_fatal ("getcwd failed"); 52271f0ac6a5Smrg tmp_len = strlen(tmp); 52281f0ac6a5Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 52291f0ac6a5Smrg memcpy (concat_name, tmp, tmp_len); 52301f0ac6a5Smrg concat_name[tmp_len] = '/'; 52311f0ac6a5Smrg strcpy (concat_name + tmp_len + 1, wrapper); 52321f0ac6a5Smrg } 52331f0ac6a5Smrg else 52341f0ac6a5Smrg { 52351f0ac6a5Smrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 52361f0ac6a5Smrg memcpy (concat_name, p, p_len); 52371f0ac6a5Smrg concat_name[p_len] = '/'; 52381f0ac6a5Smrg strcpy (concat_name + p_len + 1, wrapper); 52391f0ac6a5Smrg } 52401f0ac6a5Smrg if (check_executable(concat_name)) 52411f0ac6a5Smrg return concat_name; 52421f0ac6a5Smrg XFREE(concat_name); 52431f0ac6a5Smrg } 52441f0ac6a5Smrg } 52451f0ac6a5Smrg /* not found in PATH; assume curdir */ 52461f0ac6a5Smrg } 52471f0ac6a5Smrg /* Relative path | not found in path: prepend cwd */ 52481f0ac6a5Smrg if (getcwd (tmp, LT_PATHMAX) == NULL) 52491f0ac6a5Smrg lt_fatal ("getcwd failed"); 52501f0ac6a5Smrg tmp_len = strlen(tmp); 52511f0ac6a5Smrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 52521f0ac6a5Smrg memcpy (concat_name, tmp, tmp_len); 52531f0ac6a5Smrg concat_name[tmp_len] = '/'; 52541f0ac6a5Smrg strcpy (concat_name + tmp_len + 1, wrapper); 52551f0ac6a5Smrg 52561f0ac6a5Smrg if (check_executable(concat_name)) 52571f0ac6a5Smrg return concat_name; 52581f0ac6a5Smrg XFREE(concat_name); 52591f0ac6a5Smrg return NULL; 52601f0ac6a5Smrg} 52611f0ac6a5Smrg 52621f0ac6a5Smrgchar * 52631f0ac6a5Smrgstrendzap(char *str, const char *pat) 52641f0ac6a5Smrg{ 52651f0ac6a5Smrg size_t len, patlen; 52661f0ac6a5Smrg 52671f0ac6a5Smrg assert(str != NULL); 52681f0ac6a5Smrg assert(pat != NULL); 52691f0ac6a5Smrg 52701f0ac6a5Smrg len = strlen(str); 52711f0ac6a5Smrg patlen = strlen(pat); 52721f0ac6a5Smrg 52731f0ac6a5Smrg if (patlen <= len) 52741f0ac6a5Smrg { 52751f0ac6a5Smrg str += len - patlen; 52761f0ac6a5Smrg if (strcmp(str, pat) == 0) 52771f0ac6a5Smrg *str = '\0'; 52781f0ac6a5Smrg } 52791f0ac6a5Smrg return str; 52801f0ac6a5Smrg} 52811f0ac6a5Smrg 52821f0ac6a5Smrgstatic void 52831f0ac6a5Smrglt_error_core (int exit_status, const char * mode, 52841f0ac6a5Smrg const char * message, va_list ap) 52851f0ac6a5Smrg{ 52861f0ac6a5Smrg fprintf (stderr, "%s: %s: ", program_name, mode); 52871f0ac6a5Smrg vfprintf (stderr, message, ap); 52881f0ac6a5Smrg fprintf (stderr, ".\n"); 52891f0ac6a5Smrg 52901f0ac6a5Smrg if (exit_status >= 0) 52911f0ac6a5Smrg exit (exit_status); 52921f0ac6a5Smrg} 52931f0ac6a5Smrg 52941f0ac6a5Smrgvoid 52951f0ac6a5Smrglt_fatal (const char *message, ...) 52961f0ac6a5Smrg{ 52971f0ac6a5Smrg va_list ap; 52981f0ac6a5Smrg va_start (ap, message); 52991f0ac6a5Smrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 53001f0ac6a5Smrg va_end (ap); 53011f0ac6a5Smrg} 53021f0ac6a5SmrgEOF 53031f0ac6a5Smrg # we should really use a build-platform specific compiler 53041f0ac6a5Smrg # here, but OTOH, the wrappers (shell script and this C one) 53051f0ac6a5Smrg # are only useful if you want to execute the "real" binary. 53061f0ac6a5Smrg # Since the "real" binary is built for $host, then this 53071f0ac6a5Smrg # wrapper might as well be built for $host, too. 53081f0ac6a5Smrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 53091f0ac6a5Smrg ;; 53101f0ac6a5Smrg esac 53111f0ac6a5Smrg $rm $output 53121f0ac6a5Smrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 53131f0ac6a5Smrg 53141f0ac6a5Smrg $echo > $output "\ 53151f0ac6a5Smrg#! $SHELL 53161f0ac6a5Smrg 53171f0ac6a5Smrg# $output - temporary wrapper script for $objdir/$outputname 53181f0ac6a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 53191f0ac6a5Smrg# 53201f0ac6a5Smrg# The $output program cannot be directly executed until all the libtool 53211f0ac6a5Smrg# libraries that it depends on are installed. 53221f0ac6a5Smrg# 53231f0ac6a5Smrg# This wrapper script should never be moved out of the build directory. 53241f0ac6a5Smrg# If it is, it will not operate correctly. 53251f0ac6a5Smrg 53261f0ac6a5Smrg# Sed substitution that helps us do robust quoting. It backslashifies 53271f0ac6a5Smrg# metacharacters that are still active within double-quoted strings. 53281f0ac6a5SmrgXsed='${SED} -e 1s/^X//' 53291f0ac6a5Smrgsed_quote_subst='$sed_quote_subst' 53301f0ac6a5Smrg 5331e5410a46Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5332e5410a46Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5333e5410a46Smrg emulate sh 5334e5410a46Smrg NULLCMD=: 5335e5410a46Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5336e5410a46Smrg # is contrary to our usage. Disable this feature. 5337e5410a46Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5338e5410a46Smrg setopt NO_GLOB_SUBST 5339e5410a46Smrgelse 5340e5410a46Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5341e5410a46Smrgfi 5342e5410a46SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5343e5410a46SmrgDUALCASE=1; export DUALCASE # for MKS sh 5344e5410a46Smrg 53451f0ac6a5Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout 53461f0ac6a5Smrg# if CDPATH is set. 53471f0ac6a5Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 53481f0ac6a5Smrg 53491f0ac6a5Smrgrelink_command=\"$relink_command\" 53501f0ac6a5Smrg 53511f0ac6a5Smrg# This environment variable determines our operation mode. 53521f0ac6a5Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then 53531f0ac6a5Smrg # install mode needs the following variable: 53541f0ac6a5Smrg notinst_deplibs='$notinst_deplibs' 53551f0ac6a5Smrgelse 53561f0ac6a5Smrg # When we are sourced in execute mode, \$file and \$echo are already set. 53571f0ac6a5Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 53581f0ac6a5Smrg echo=\"$qecho\" 53591f0ac6a5Smrg file=\"\$0\" 53601f0ac6a5Smrg # Make sure echo works. 53611f0ac6a5Smrg if test \"X\$1\" = X--no-reexec; then 53621f0ac6a5Smrg # Discard the --no-reexec flag, and continue. 53631f0ac6a5Smrg shift 53641f0ac6a5Smrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 53651f0ac6a5Smrg # Yippee, \$echo works! 53661f0ac6a5Smrg : 53671f0ac6a5Smrg else 53681f0ac6a5Smrg # Restart under the correct shell, and then maybe \$echo will work. 53691f0ac6a5Smrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 53701f0ac6a5Smrg fi 53711f0ac6a5Smrg fi\ 53721f0ac6a5Smrg" 53731f0ac6a5Smrg $echo >> $output "\ 53741f0ac6a5Smrg 53751f0ac6a5Smrg # Find the directory that this script lives in. 53761f0ac6a5Smrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 53771f0ac6a5Smrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 53781f0ac6a5Smrg 53791f0ac6a5Smrg # Follow symbolic links until we get to the real thisdir. 53801f0ac6a5Smrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 53811f0ac6a5Smrg while test -n \"\$file\"; do 53821f0ac6a5Smrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 53831f0ac6a5Smrg 53841f0ac6a5Smrg # If there was a directory component, then change thisdir. 53851f0ac6a5Smrg if test \"x\$destdir\" != \"x\$file\"; then 53861f0ac6a5Smrg case \"\$destdir\" in 53871f0ac6a5Smrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 53881f0ac6a5Smrg *) thisdir=\"\$thisdir/\$destdir\" ;; 53891f0ac6a5Smrg esac 53901f0ac6a5Smrg fi 53911f0ac6a5Smrg 53921f0ac6a5Smrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 53931f0ac6a5Smrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 53941f0ac6a5Smrg done 53951f0ac6a5Smrg 53961f0ac6a5Smrg # Try to get the absolute directory name. 53971f0ac6a5Smrg absdir=\`cd \"\$thisdir\" && pwd\` 53981f0ac6a5Smrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 53991f0ac6a5Smrg" 54001f0ac6a5Smrg 54011f0ac6a5Smrg if test "$fast_install" = yes; then 54021f0ac6a5Smrg $echo >> $output "\ 54031f0ac6a5Smrg program=lt-'$outputname'$exeext 54041f0ac6a5Smrg progdir=\"\$thisdir/$objdir\" 54051f0ac6a5Smrg 54061f0ac6a5Smrg if test ! -f \"\$progdir/\$program\" || \\ 54071f0ac6a5Smrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 54081f0ac6a5Smrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 54091f0ac6a5Smrg 54101f0ac6a5Smrg file=\"\$\$-\$program\" 54111f0ac6a5Smrg 54121f0ac6a5Smrg if test ! -d \"\$progdir\"; then 54131f0ac6a5Smrg $mkdir \"\$progdir\" 54141f0ac6a5Smrg else 54151f0ac6a5Smrg $rm \"\$progdir/\$file\" 54161f0ac6a5Smrg fi" 54171f0ac6a5Smrg 54181f0ac6a5Smrg $echo >> $output "\ 54191f0ac6a5Smrg 54201f0ac6a5Smrg # relink executable if necessary 54211f0ac6a5Smrg if test -n \"\$relink_command\"; then 54221f0ac6a5Smrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 54231f0ac6a5Smrg else 54241f0ac6a5Smrg $echo \"\$relink_command_output\" >&2 54251f0ac6a5Smrg $rm \"\$progdir/\$file\" 54261f0ac6a5Smrg exit $EXIT_FAILURE 54271f0ac6a5Smrg fi 54281f0ac6a5Smrg fi 54291f0ac6a5Smrg 54301f0ac6a5Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 54311f0ac6a5Smrg { $rm \"\$progdir/\$program\"; 54321f0ac6a5Smrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 54331f0ac6a5Smrg $rm \"\$progdir/\$file\" 54341f0ac6a5Smrg fi" 54351f0ac6a5Smrg else 54361f0ac6a5Smrg $echo >> $output "\ 54371f0ac6a5Smrg program='$outputname' 54381f0ac6a5Smrg progdir=\"\$thisdir/$objdir\" 54391f0ac6a5Smrg" 54401f0ac6a5Smrg fi 54411f0ac6a5Smrg 54421f0ac6a5Smrg $echo >> $output "\ 54431f0ac6a5Smrg 54441f0ac6a5Smrg if test -f \"\$progdir/\$program\"; then" 54451f0ac6a5Smrg 54461f0ac6a5Smrg # Export our shlibpath_var if we have one. 54471f0ac6a5Smrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 54481f0ac6a5Smrg $echo >> $output "\ 54491f0ac6a5Smrg # Add our own library path to $shlibpath_var 54501f0ac6a5Smrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 54511f0ac6a5Smrg 54521f0ac6a5Smrg # Some systems cannot cope with colon-terminated $shlibpath_var 54531f0ac6a5Smrg # The second colon is a workaround for a bug in BeOS R4 sed 54541f0ac6a5Smrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 54551f0ac6a5Smrg 54561f0ac6a5Smrg export $shlibpath_var 54571f0ac6a5Smrg" 54581f0ac6a5Smrg fi 54591f0ac6a5Smrg 54601f0ac6a5Smrg # fixup the dll searchpath if we need to. 54611f0ac6a5Smrg if test -n "$dllsearchpath"; then 54621f0ac6a5Smrg $echo >> $output "\ 54631f0ac6a5Smrg # Add the dll search path components to the executable PATH 54641f0ac6a5Smrg PATH=$dllsearchpath:\$PATH 54651f0ac6a5Smrg" 54661f0ac6a5Smrg fi 54671f0ac6a5Smrg 54681f0ac6a5Smrg $echo >> $output "\ 54691f0ac6a5Smrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 54701f0ac6a5Smrg # Run the actual program with our arguments. 54711f0ac6a5Smrg" 54721f0ac6a5Smrg case $host in 54731f0ac6a5Smrg # Backslashes separate directories on plain windows 54741f0ac6a5Smrg *-*-mingw | *-*-os2*) 54751f0ac6a5Smrg $echo >> $output "\ 54761f0ac6a5Smrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 54771f0ac6a5Smrg" 54781f0ac6a5Smrg ;; 54791f0ac6a5Smrg 54801f0ac6a5Smrg *) 54811f0ac6a5Smrg $echo >> $output "\ 54821f0ac6a5Smrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 54831f0ac6a5Smrg" 54841f0ac6a5Smrg ;; 54851f0ac6a5Smrg esac 54861f0ac6a5Smrg $echo >> $output "\ 5487e5410a46Smrg \$echo \"\$0: cannot exec \$program \$*\" 54881f0ac6a5Smrg exit $EXIT_FAILURE 54891f0ac6a5Smrg fi 54901f0ac6a5Smrg else 54911f0ac6a5Smrg # The program doesn't exist. 54921f0ac6a5Smrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 54931f0ac6a5Smrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 54941f0ac6a5Smrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 54951f0ac6a5Smrg exit $EXIT_FAILURE 54961f0ac6a5Smrg fi 54971f0ac6a5Smrgfi\ 54981f0ac6a5Smrg" 54991f0ac6a5Smrg chmod +x $output 55001f0ac6a5Smrg fi 55011f0ac6a5Smrg exit $EXIT_SUCCESS 55021f0ac6a5Smrg ;; 55031f0ac6a5Smrg esac 55041f0ac6a5Smrg 55051f0ac6a5Smrg # See if we need to build an old-fashioned archive. 55061f0ac6a5Smrg for oldlib in $oldlibs; do 55071f0ac6a5Smrg 55081f0ac6a5Smrg if test "$build_libtool_libs" = convenience; then 55091f0ac6a5Smrg oldobjs="$libobjs_save" 55101f0ac6a5Smrg addlibs="$convenience" 55111f0ac6a5Smrg build_libtool_libs=no 55121f0ac6a5Smrg else 55131f0ac6a5Smrg if test "$build_libtool_libs" = module; then 55141f0ac6a5Smrg oldobjs="$libobjs_save" 55151f0ac6a5Smrg build_libtool_libs=no 55161f0ac6a5Smrg else 55171f0ac6a5Smrg oldobjs="$old_deplibs $non_pic_objects" 55181f0ac6a5Smrg fi 55191f0ac6a5Smrg addlibs="$old_convenience" 55201f0ac6a5Smrg fi 55211f0ac6a5Smrg 55221f0ac6a5Smrg if test -n "$addlibs"; then 55231f0ac6a5Smrg gentop="$output_objdir/${outputname}x" 55241f0ac6a5Smrg generated="$generated $gentop" 55251f0ac6a5Smrg 55261f0ac6a5Smrg func_extract_archives $gentop $addlibs 55271f0ac6a5Smrg oldobjs="$oldobjs $func_extract_archives_result" 55281f0ac6a5Smrg fi 55291f0ac6a5Smrg 55301f0ac6a5Smrg # Do each command in the archive commands. 55311f0ac6a5Smrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 55321f0ac6a5Smrg cmds=$old_archive_from_new_cmds 55331f0ac6a5Smrg else 55341f0ac6a5Smrg # POSIX demands no paths to be encoded in archives. We have 55351f0ac6a5Smrg # to avoid creating archives with duplicate basenames if we 55361f0ac6a5Smrg # might have to extract them afterwards, e.g., when creating a 55371f0ac6a5Smrg # static archive out of a convenience library, or when linking 55381f0ac6a5Smrg # the entirety of a libtool archive into another (currently 55391f0ac6a5Smrg # not supported by libtool). 55401f0ac6a5Smrg if (for obj in $oldobjs 55411f0ac6a5Smrg do 55421f0ac6a5Smrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 55431f0ac6a5Smrg done | sort | sort -uc >/dev/null 2>&1); then 55441f0ac6a5Smrg : 55451f0ac6a5Smrg else 55461f0ac6a5Smrg $echo "copying selected object files to avoid basename conflicts..." 55471f0ac6a5Smrg 55481f0ac6a5Smrg if test -z "$gentop"; then 55491f0ac6a5Smrg gentop="$output_objdir/${outputname}x" 55501f0ac6a5Smrg generated="$generated $gentop" 55511f0ac6a5Smrg 55521f0ac6a5Smrg $show "${rm}r $gentop" 55531f0ac6a5Smrg $run ${rm}r "$gentop" 55541f0ac6a5Smrg $show "$mkdir $gentop" 55551f0ac6a5Smrg $run $mkdir "$gentop" 55561f0ac6a5Smrg exit_status=$? 55571f0ac6a5Smrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 55581f0ac6a5Smrg exit $exit_status 55591f0ac6a5Smrg fi 55601f0ac6a5Smrg fi 55611f0ac6a5Smrg 55621f0ac6a5Smrg save_oldobjs=$oldobjs 55631f0ac6a5Smrg oldobjs= 55641f0ac6a5Smrg counter=1 55651f0ac6a5Smrg for obj in $save_oldobjs 55661f0ac6a5Smrg do 55671f0ac6a5Smrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 55681f0ac6a5Smrg case " $oldobjs " in 55691f0ac6a5Smrg " ") oldobjs=$obj ;; 55701f0ac6a5Smrg *[\ /]"$objbase "*) 55711f0ac6a5Smrg while :; do 55721f0ac6a5Smrg # Make sure we don't pick an alternate name that also 55731f0ac6a5Smrg # overlaps. 55741f0ac6a5Smrg newobj=lt$counter-$objbase 55751f0ac6a5Smrg counter=`expr $counter + 1` 55761f0ac6a5Smrg case " $oldobjs " in 55771f0ac6a5Smrg *[\ /]"$newobj "*) ;; 55781f0ac6a5Smrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 55791f0ac6a5Smrg esac 55801f0ac6a5Smrg done 55811f0ac6a5Smrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 55821f0ac6a5Smrg $run ln "$obj" "$gentop/$newobj" || 55831f0ac6a5Smrg $run cp "$obj" "$gentop/$newobj" 55841f0ac6a5Smrg oldobjs="$oldobjs $gentop/$newobj" 55851f0ac6a5Smrg ;; 55861f0ac6a5Smrg *) oldobjs="$oldobjs $obj" ;; 55871f0ac6a5Smrg esac 55881f0ac6a5Smrg done 55891f0ac6a5Smrg fi 55901f0ac6a5Smrg 55911f0ac6a5Smrg eval cmds=\"$old_archive_cmds\" 55921f0ac6a5Smrg 55931f0ac6a5Smrg if len=`expr "X$cmds" : ".*"` && 55941f0ac6a5Smrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 55951f0ac6a5Smrg cmds=$old_archive_cmds 55961f0ac6a5Smrg else 55971f0ac6a5Smrg # the command line is too long to link in one step, link in parts 55981f0ac6a5Smrg $echo "using piecewise archive linking..." 55991f0ac6a5Smrg save_RANLIB=$RANLIB 56001f0ac6a5Smrg RANLIB=: 56011f0ac6a5Smrg objlist= 56021f0ac6a5Smrg concat_cmds= 56031f0ac6a5Smrg save_oldobjs=$oldobjs 56041f0ac6a5Smrg 56051f0ac6a5Smrg # Is there a better way of finding the last object in the list? 56061f0ac6a5Smrg for obj in $save_oldobjs 56071f0ac6a5Smrg do 56081f0ac6a5Smrg last_oldobj=$obj 56091f0ac6a5Smrg done 56101f0ac6a5Smrg for obj in $save_oldobjs 56111f0ac6a5Smrg do 56121f0ac6a5Smrg oldobjs="$objlist $obj" 56131f0ac6a5Smrg objlist="$objlist $obj" 56141f0ac6a5Smrg eval test_cmds=\"$old_archive_cmds\" 56151f0ac6a5Smrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 56161f0ac6a5Smrg test "$len" -le "$max_cmd_len"; then 56171f0ac6a5Smrg : 56181f0ac6a5Smrg else 56191f0ac6a5Smrg # the above command should be used before it gets too long 56201f0ac6a5Smrg oldobjs=$objlist 56211f0ac6a5Smrg if test "$obj" = "$last_oldobj" ; then 56221f0ac6a5Smrg RANLIB=$save_RANLIB 56231f0ac6a5Smrg fi 56241f0ac6a5Smrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 56251f0ac6a5Smrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 56261f0ac6a5Smrg objlist= 56271f0ac6a5Smrg fi 56281f0ac6a5Smrg done 56291f0ac6a5Smrg RANLIB=$save_RANLIB 56301f0ac6a5Smrg oldobjs=$objlist 56311f0ac6a5Smrg if test "X$oldobjs" = "X" ; then 56321f0ac6a5Smrg eval cmds=\"\$concat_cmds\" 56331f0ac6a5Smrg else 56341f0ac6a5Smrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 56351f0ac6a5Smrg fi 56361f0ac6a5Smrg fi 56371f0ac6a5Smrg fi 56381f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 56391f0ac6a5Smrg for cmd in $cmds; do 56401f0ac6a5Smrg eval cmd=\"$cmd\" 56411f0ac6a5Smrg IFS="$save_ifs" 56421f0ac6a5Smrg $show "$cmd" 56431f0ac6a5Smrg $run eval "$cmd" || exit $? 56441f0ac6a5Smrg done 56451f0ac6a5Smrg IFS="$save_ifs" 56461f0ac6a5Smrg done 56471f0ac6a5Smrg 56481f0ac6a5Smrg if test -n "$generated"; then 56491f0ac6a5Smrg $show "${rm}r$generated" 56501f0ac6a5Smrg $run ${rm}r$generated 56511f0ac6a5Smrg fi 56521f0ac6a5Smrg 56531f0ac6a5Smrg # Now create the libtool archive. 56541f0ac6a5Smrg case $output in 56551f0ac6a5Smrg *.la) 56561f0ac6a5Smrg old_library= 56571f0ac6a5Smrg test "$build_old_libs" = yes && old_library="$libname.$libext" 56581f0ac6a5Smrg $show "creating $output" 56591f0ac6a5Smrg 56601f0ac6a5Smrg # Preserve any variables that may affect compiler behavior 56611f0ac6a5Smrg for var in $variables_saved_for_relink; do 56621f0ac6a5Smrg if eval test -z \"\${$var+set}\"; then 56631f0ac6a5Smrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 56641f0ac6a5Smrg elif eval var_value=\$$var; test -z "$var_value"; then 56651f0ac6a5Smrg relink_command="$var=; export $var; $relink_command" 56661f0ac6a5Smrg else 56671f0ac6a5Smrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 56681f0ac6a5Smrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 56691f0ac6a5Smrg fi 56701f0ac6a5Smrg done 56711f0ac6a5Smrg # Quote the link command for shipping. 56721f0ac6a5Smrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5673e5410a46Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 56741f0ac6a5Smrg if test "$hardcode_automatic" = yes ; then 56751f0ac6a5Smrg relink_command= 56761f0ac6a5Smrg fi 56771f0ac6a5Smrg 56781f0ac6a5Smrg 56791f0ac6a5Smrg # Only create the output if not a dry run. 56801f0ac6a5Smrg if test -z "$run"; then 56811f0ac6a5Smrg for installed in no yes; do 56821f0ac6a5Smrg if test "$installed" = yes; then 56831f0ac6a5Smrg if test -z "$install_libdir"; then 56841f0ac6a5Smrg break 56851f0ac6a5Smrg fi 56861f0ac6a5Smrg output="$output_objdir/$outputname"i 56871f0ac6a5Smrg # Replace all uninstalled libtool libraries with the installed ones 56881f0ac6a5Smrg newdependency_libs= 56891f0ac6a5Smrg for deplib in $dependency_libs; do 56901f0ac6a5Smrg case $deplib in 56911f0ac6a5Smrg *.la) 56921f0ac6a5Smrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 56931f0ac6a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 56941f0ac6a5Smrg if test -z "$libdir"; then 56951f0ac6a5Smrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 56961f0ac6a5Smrg exit $EXIT_FAILURE 56971f0ac6a5Smrg fi 56981f0ac6a5Smrg newdependency_libs="$newdependency_libs $libdir/$name" 56991f0ac6a5Smrg ;; 57001f0ac6a5Smrg *) newdependency_libs="$newdependency_libs $deplib" ;; 57011f0ac6a5Smrg esac 57021f0ac6a5Smrg done 57031f0ac6a5Smrg dependency_libs="$newdependency_libs" 57041f0ac6a5Smrg newdlfiles= 57051f0ac6a5Smrg for lib in $dlfiles; do 57061f0ac6a5Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 57071f0ac6a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 57081f0ac6a5Smrg if test -z "$libdir"; then 57091f0ac6a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 57101f0ac6a5Smrg exit $EXIT_FAILURE 57111f0ac6a5Smrg fi 57121f0ac6a5Smrg newdlfiles="$newdlfiles $libdir/$name" 57131f0ac6a5Smrg done 57141f0ac6a5Smrg dlfiles="$newdlfiles" 57151f0ac6a5Smrg newdlprefiles= 57161f0ac6a5Smrg for lib in $dlprefiles; do 57171f0ac6a5Smrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 57181f0ac6a5Smrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 57191f0ac6a5Smrg if test -z "$libdir"; then 57201f0ac6a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 57211f0ac6a5Smrg exit $EXIT_FAILURE 57221f0ac6a5Smrg fi 57231f0ac6a5Smrg newdlprefiles="$newdlprefiles $libdir/$name" 57241f0ac6a5Smrg done 57251f0ac6a5Smrg dlprefiles="$newdlprefiles" 57261f0ac6a5Smrg else 57271f0ac6a5Smrg newdlfiles= 57281f0ac6a5Smrg for lib in $dlfiles; do 57291f0ac6a5Smrg case $lib in 57301f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 57311f0ac6a5Smrg *) abs=`pwd`"/$lib" ;; 57321f0ac6a5Smrg esac 57331f0ac6a5Smrg newdlfiles="$newdlfiles $abs" 57341f0ac6a5Smrg done 57351f0ac6a5Smrg dlfiles="$newdlfiles" 57361f0ac6a5Smrg newdlprefiles= 57371f0ac6a5Smrg for lib in $dlprefiles; do 57381f0ac6a5Smrg case $lib in 57391f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 57401f0ac6a5Smrg *) abs=`pwd`"/$lib" ;; 57411f0ac6a5Smrg esac 57421f0ac6a5Smrg newdlprefiles="$newdlprefiles $abs" 57431f0ac6a5Smrg done 57441f0ac6a5Smrg dlprefiles="$newdlprefiles" 57451f0ac6a5Smrg fi 57461f0ac6a5Smrg $rm $output 57471f0ac6a5Smrg # place dlname in correct position for cygwin 57481f0ac6a5Smrg tdlname=$dlname 57491f0ac6a5Smrg case $host,$output,$installed,$module,$dlname in 57501f0ac6a5Smrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 57511f0ac6a5Smrg esac 57521f0ac6a5Smrg $echo > $output "\ 57531f0ac6a5Smrg# $outputname - a libtool library file 57541f0ac6a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 57551f0ac6a5Smrg# 57561f0ac6a5Smrg# Please DO NOT delete this file! 57571f0ac6a5Smrg# It is necessary for linking the library. 57581f0ac6a5Smrg 57591f0ac6a5Smrg# The name that we can dlopen(3). 57601f0ac6a5Smrgdlname='$tdlname' 57611f0ac6a5Smrg 57621f0ac6a5Smrg# Names of this library. 57631f0ac6a5Smrglibrary_names='$library_names' 57641f0ac6a5Smrg 57651f0ac6a5Smrg# The name of the static archive. 57661f0ac6a5Smrgold_library='$old_library' 57671f0ac6a5Smrg 57681f0ac6a5Smrg# Libraries that this one depends upon. 57691f0ac6a5Smrgdependency_libs='$dependency_libs' 57701f0ac6a5Smrg 57711f0ac6a5Smrg# Version information for $libname. 57721f0ac6a5Smrgcurrent=$current 57731f0ac6a5Smrgage=$age 57741f0ac6a5Smrgrevision=$revision 57751f0ac6a5Smrg 57761f0ac6a5Smrg# Is this an already installed library? 57771f0ac6a5Smrginstalled=$installed 57781f0ac6a5Smrg 57791f0ac6a5Smrg# Should we warn about portability when linking against -modules? 57801f0ac6a5Smrgshouldnotlink=$module 57811f0ac6a5Smrg 57821f0ac6a5Smrg# Files to dlopen/dlpreopen 57831f0ac6a5Smrgdlopen='$dlfiles' 57841f0ac6a5Smrgdlpreopen='$dlprefiles' 57851f0ac6a5Smrg 57861f0ac6a5Smrg# Directory that this library needs to be installed in: 57871f0ac6a5Smrglibdir='$install_libdir'" 57881f0ac6a5Smrg if test "$installed" = no && test "$need_relink" = yes; then 57891f0ac6a5Smrg $echo >> $output "\ 57901f0ac6a5Smrgrelink_command=\"$relink_command\"" 57911f0ac6a5Smrg fi 57921f0ac6a5Smrg done 57931f0ac6a5Smrg fi 57941f0ac6a5Smrg 57951f0ac6a5Smrg # Do a symbolic link so that the libtool archive can be found in 57961f0ac6a5Smrg # LD_LIBRARY_PATH before the program is installed. 57971f0ac6a5Smrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 57981f0ac6a5Smrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 57991f0ac6a5Smrg ;; 58001f0ac6a5Smrg esac 58011f0ac6a5Smrg exit $EXIT_SUCCESS 58021f0ac6a5Smrg ;; 58031f0ac6a5Smrg 58041f0ac6a5Smrg # libtool install mode 58051f0ac6a5Smrg install) 58061f0ac6a5Smrg modename="$modename: install" 58071f0ac6a5Smrg 58081f0ac6a5Smrg # There may be an optional sh(1) argument at the beginning of 58091f0ac6a5Smrg # install_prog (especially on Windows NT). 58101f0ac6a5Smrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 58111f0ac6a5Smrg # Allow the use of GNU shtool's install command. 58121f0ac6a5Smrg $echo "X$nonopt" | grep shtool > /dev/null; then 58131f0ac6a5Smrg # Aesthetically quote it. 58141f0ac6a5Smrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 58151f0ac6a5Smrg case $arg in 58161f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58171f0ac6a5Smrg arg="\"$arg\"" 58181f0ac6a5Smrg ;; 58191f0ac6a5Smrg esac 58201f0ac6a5Smrg install_prog="$arg " 58211f0ac6a5Smrg arg="$1" 58221f0ac6a5Smrg shift 58231f0ac6a5Smrg else 58241f0ac6a5Smrg install_prog= 58251f0ac6a5Smrg arg=$nonopt 58261f0ac6a5Smrg fi 58271f0ac6a5Smrg 58281f0ac6a5Smrg # The real first argument should be the name of the installation program. 58291f0ac6a5Smrg # Aesthetically quote it. 58301f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 58311f0ac6a5Smrg case $arg in 58321f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58331f0ac6a5Smrg arg="\"$arg\"" 58341f0ac6a5Smrg ;; 58351f0ac6a5Smrg esac 58361f0ac6a5Smrg install_prog="$install_prog$arg" 58371f0ac6a5Smrg 58381f0ac6a5Smrg # We need to accept at least all the BSD install flags. 58391f0ac6a5Smrg dest= 58401f0ac6a5Smrg files= 58411f0ac6a5Smrg opts= 58421f0ac6a5Smrg prev= 58431f0ac6a5Smrg install_type= 58441f0ac6a5Smrg isdir=no 58451f0ac6a5Smrg stripme= 58461f0ac6a5Smrg for arg 58471f0ac6a5Smrg do 58481f0ac6a5Smrg if test -n "$dest"; then 58491f0ac6a5Smrg files="$files $dest" 58501f0ac6a5Smrg dest=$arg 58511f0ac6a5Smrg continue 58521f0ac6a5Smrg fi 58531f0ac6a5Smrg 58541f0ac6a5Smrg case $arg in 58551f0ac6a5Smrg -d) isdir=yes ;; 58561f0ac6a5Smrg -f) 58571f0ac6a5Smrg case " $install_prog " in 58581f0ac6a5Smrg *[\\\ /]cp\ *) ;; 58591f0ac6a5Smrg *) prev=$arg ;; 58601f0ac6a5Smrg esac 58611f0ac6a5Smrg ;; 58621f0ac6a5Smrg -g | -m | -o) prev=$arg ;; 58631f0ac6a5Smrg -s) 58641f0ac6a5Smrg stripme=" -s" 58651f0ac6a5Smrg continue 58661f0ac6a5Smrg ;; 58671f0ac6a5Smrg -*) 58681f0ac6a5Smrg ;; 58691f0ac6a5Smrg *) 58701f0ac6a5Smrg # If the previous option needed an argument, then skip it. 58711f0ac6a5Smrg if test -n "$prev"; then 58721f0ac6a5Smrg prev= 58731f0ac6a5Smrg else 58741f0ac6a5Smrg dest=$arg 58751f0ac6a5Smrg continue 58761f0ac6a5Smrg fi 58771f0ac6a5Smrg ;; 58781f0ac6a5Smrg esac 58791f0ac6a5Smrg 58801f0ac6a5Smrg # Aesthetically quote the argument. 58811f0ac6a5Smrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 58821f0ac6a5Smrg case $arg in 58831f0ac6a5Smrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 58841f0ac6a5Smrg arg="\"$arg\"" 58851f0ac6a5Smrg ;; 58861f0ac6a5Smrg esac 58871f0ac6a5Smrg install_prog="$install_prog $arg" 58881f0ac6a5Smrg done 58891f0ac6a5Smrg 58901f0ac6a5Smrg if test -z "$install_prog"; then 58911f0ac6a5Smrg $echo "$modename: you must specify an install program" 1>&2 58921f0ac6a5Smrg $echo "$help" 1>&2 58931f0ac6a5Smrg exit $EXIT_FAILURE 58941f0ac6a5Smrg fi 58951f0ac6a5Smrg 58961f0ac6a5Smrg if test -n "$prev"; then 58971f0ac6a5Smrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 58981f0ac6a5Smrg $echo "$help" 1>&2 58991f0ac6a5Smrg exit $EXIT_FAILURE 59001f0ac6a5Smrg fi 59011f0ac6a5Smrg 59021f0ac6a5Smrg if test -z "$files"; then 59031f0ac6a5Smrg if test -z "$dest"; then 59041f0ac6a5Smrg $echo "$modename: no file or destination specified" 1>&2 59051f0ac6a5Smrg else 59061f0ac6a5Smrg $echo "$modename: you must specify a destination" 1>&2 59071f0ac6a5Smrg fi 59081f0ac6a5Smrg $echo "$help" 1>&2 59091f0ac6a5Smrg exit $EXIT_FAILURE 59101f0ac6a5Smrg fi 59111f0ac6a5Smrg 59121f0ac6a5Smrg # Strip any trailing slash from the destination. 59131f0ac6a5Smrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 59141f0ac6a5Smrg 59151f0ac6a5Smrg # Check to see that the destination is a directory. 59161f0ac6a5Smrg test -d "$dest" && isdir=yes 59171f0ac6a5Smrg if test "$isdir" = yes; then 59181f0ac6a5Smrg destdir="$dest" 59191f0ac6a5Smrg destname= 59201f0ac6a5Smrg else 59211f0ac6a5Smrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 59221f0ac6a5Smrg test "X$destdir" = "X$dest" && destdir=. 59231f0ac6a5Smrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 59241f0ac6a5Smrg 59251f0ac6a5Smrg # Not a directory, so check to see that there is only one file specified. 59261f0ac6a5Smrg set dummy $files 59271f0ac6a5Smrg if test "$#" -gt 2; then 59281f0ac6a5Smrg $echo "$modename: \`$dest' is not a directory" 1>&2 59291f0ac6a5Smrg $echo "$help" 1>&2 59301f0ac6a5Smrg exit $EXIT_FAILURE 59311f0ac6a5Smrg fi 59321f0ac6a5Smrg fi 59331f0ac6a5Smrg case $destdir in 59341f0ac6a5Smrg [\\/]* | [A-Za-z]:[\\/]*) ;; 59351f0ac6a5Smrg *) 59361f0ac6a5Smrg for file in $files; do 59371f0ac6a5Smrg case $file in 59381f0ac6a5Smrg *.lo) ;; 59391f0ac6a5Smrg *) 59401f0ac6a5Smrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 59411f0ac6a5Smrg $echo "$help" 1>&2 59421f0ac6a5Smrg exit $EXIT_FAILURE 59431f0ac6a5Smrg ;; 59441f0ac6a5Smrg esac 59451f0ac6a5Smrg done 59461f0ac6a5Smrg ;; 59471f0ac6a5Smrg esac 59481f0ac6a5Smrg 59491f0ac6a5Smrg # This variable tells wrapper scripts just to set variables rather 59501f0ac6a5Smrg # than running their programs. 59511f0ac6a5Smrg libtool_install_magic="$magic" 59521f0ac6a5Smrg 59531f0ac6a5Smrg staticlibs= 59541f0ac6a5Smrg future_libdirs= 59551f0ac6a5Smrg current_libdirs= 59561f0ac6a5Smrg for file in $files; do 59571f0ac6a5Smrg 59581f0ac6a5Smrg # Do each installation. 59591f0ac6a5Smrg case $file in 59601f0ac6a5Smrg *.$libext) 59611f0ac6a5Smrg # Do the static libraries later. 59621f0ac6a5Smrg staticlibs="$staticlibs $file" 59631f0ac6a5Smrg ;; 59641f0ac6a5Smrg 59651f0ac6a5Smrg *.la) 59661f0ac6a5Smrg # Check to see that this really is a libtool archive. 59671f0ac6a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 59681f0ac6a5Smrg else 59691f0ac6a5Smrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 59701f0ac6a5Smrg $echo "$help" 1>&2 59711f0ac6a5Smrg exit $EXIT_FAILURE 59721f0ac6a5Smrg fi 59731f0ac6a5Smrg 59741f0ac6a5Smrg library_names= 59751f0ac6a5Smrg old_library= 59761f0ac6a5Smrg relink_command= 59771f0ac6a5Smrg # If there is no directory component, then add one. 59781f0ac6a5Smrg case $file in 59791f0ac6a5Smrg */* | *\\*) . $file ;; 59801f0ac6a5Smrg *) . ./$file ;; 59811f0ac6a5Smrg esac 59821f0ac6a5Smrg 59831f0ac6a5Smrg # Add the libdir to current_libdirs if it is the destination. 59841f0ac6a5Smrg if test "X$destdir" = "X$libdir"; then 59851f0ac6a5Smrg case "$current_libdirs " in 59861f0ac6a5Smrg *" $libdir "*) ;; 59871f0ac6a5Smrg *) current_libdirs="$current_libdirs $libdir" ;; 59881f0ac6a5Smrg esac 59891f0ac6a5Smrg else 59901f0ac6a5Smrg # Note the libdir as a future libdir. 59911f0ac6a5Smrg case "$future_libdirs " in 59921f0ac6a5Smrg *" $libdir "*) ;; 59931f0ac6a5Smrg *) future_libdirs="$future_libdirs $libdir" ;; 59941f0ac6a5Smrg esac 59951f0ac6a5Smrg fi 59961f0ac6a5Smrg 59971f0ac6a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 59981f0ac6a5Smrg test "X$dir" = "X$file/" && dir= 59991f0ac6a5Smrg dir="$dir$objdir" 60001f0ac6a5Smrg 60011f0ac6a5Smrg if test -n "$relink_command"; then 60021f0ac6a5Smrg # Determine the prefix the user has applied to our future dir. 60031f0ac6a5Smrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 60041f0ac6a5Smrg 60051f0ac6a5Smrg # Don't allow the user to place us outside of our expected 60061f0ac6a5Smrg # location b/c this prevents finding dependent libraries that 60071f0ac6a5Smrg # are installed to the same prefix. 60081f0ac6a5Smrg # At present, this check doesn't affect windows .dll's that 60091f0ac6a5Smrg # are installed into $libdir/../bin (currently, that works fine) 60101f0ac6a5Smrg # but it's something to keep an eye on. 60111f0ac6a5Smrg if test "$inst_prefix_dir" = "$destdir"; then 60121f0ac6a5Smrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 60131f0ac6a5Smrg exit $EXIT_FAILURE 60141f0ac6a5Smrg fi 60151f0ac6a5Smrg 60161f0ac6a5Smrg if test -n "$inst_prefix_dir"; then 60171f0ac6a5Smrg # Stick the inst_prefix_dir data into the link command. 6018e5410a46Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 60191f0ac6a5Smrg else 6020e5410a46Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 60211f0ac6a5Smrg fi 60221f0ac6a5Smrg 60231f0ac6a5Smrg $echo "$modename: warning: relinking \`$file'" 1>&2 60241f0ac6a5Smrg $show "$relink_command" 60251f0ac6a5Smrg if $run eval "$relink_command"; then : 60261f0ac6a5Smrg else 60271f0ac6a5Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 60281f0ac6a5Smrg exit $EXIT_FAILURE 60291f0ac6a5Smrg fi 60301f0ac6a5Smrg fi 60311f0ac6a5Smrg 60321f0ac6a5Smrg # See the names of the shared library. 60331f0ac6a5Smrg set dummy $library_names 60341f0ac6a5Smrg if test -n "$2"; then 60351f0ac6a5Smrg realname="$2" 60361f0ac6a5Smrg shift 60371f0ac6a5Smrg shift 60381f0ac6a5Smrg 60391f0ac6a5Smrg srcname="$realname" 60401f0ac6a5Smrg test -n "$relink_command" && srcname="$realname"T 60411f0ac6a5Smrg 60421f0ac6a5Smrg # Install the shared library and build the symlinks. 60431f0ac6a5Smrg $show "$install_prog $dir/$srcname $destdir/$realname" 60441f0ac6a5Smrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 60451f0ac6a5Smrg if test -n "$stripme" && test -n "$striplib"; then 60461f0ac6a5Smrg $show "$striplib $destdir/$realname" 60471f0ac6a5Smrg $run eval "$striplib $destdir/$realname" || exit $? 60481f0ac6a5Smrg fi 60491f0ac6a5Smrg 60501f0ac6a5Smrg if test "$#" -gt 0; then 60511f0ac6a5Smrg # Delete the old symlinks, and create new ones. 60521f0ac6a5Smrg # Try `ln -sf' first, because the `ln' binary might depend on 60531f0ac6a5Smrg # the symlink we replace! Solaris /bin/ln does not understand -f, 60541f0ac6a5Smrg # so we also need to try rm && ln -s. 60551f0ac6a5Smrg for linkname 60561f0ac6a5Smrg do 60571f0ac6a5Smrg if test "$linkname" != "$realname"; then 60581f0ac6a5Smrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 60591f0ac6a5Smrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 60601f0ac6a5Smrg fi 60611f0ac6a5Smrg done 60621f0ac6a5Smrg fi 60631f0ac6a5Smrg 60641f0ac6a5Smrg # Do each command in the postinstall commands. 60651f0ac6a5Smrg lib="$destdir/$realname" 60661f0ac6a5Smrg cmds=$postinstall_cmds 60671f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 60681f0ac6a5Smrg for cmd in $cmds; do 60691f0ac6a5Smrg IFS="$save_ifs" 60701f0ac6a5Smrg eval cmd=\"$cmd\" 60711f0ac6a5Smrg $show "$cmd" 60721f0ac6a5Smrg $run eval "$cmd" || { 60731f0ac6a5Smrg lt_exit=$? 60741f0ac6a5Smrg 60751f0ac6a5Smrg # Restore the uninstalled library and exit 60761f0ac6a5Smrg if test "$mode" = relink; then 60771f0ac6a5Smrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 60781f0ac6a5Smrg fi 60791f0ac6a5Smrg 60801f0ac6a5Smrg exit $lt_exit 60811f0ac6a5Smrg } 60821f0ac6a5Smrg done 60831f0ac6a5Smrg IFS="$save_ifs" 60841f0ac6a5Smrg fi 60851f0ac6a5Smrg 60861f0ac6a5Smrg # Install the pseudo-library for information purposes. 60871f0ac6a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 60881f0ac6a5Smrg instname="$dir/$name"i 60891f0ac6a5Smrg $show "$install_prog $instname $destdir/$name" 60901f0ac6a5Smrg $run eval "$install_prog $instname $destdir/$name" || exit $? 60911f0ac6a5Smrg 60921f0ac6a5Smrg # Maybe install the static library, too. 60931f0ac6a5Smrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 60941f0ac6a5Smrg ;; 60951f0ac6a5Smrg 60961f0ac6a5Smrg *.lo) 60971f0ac6a5Smrg # Install (i.e. copy) a libtool object. 60981f0ac6a5Smrg 60991f0ac6a5Smrg # Figure out destination file name, if it wasn't already specified. 61001f0ac6a5Smrg if test -n "$destname"; then 61011f0ac6a5Smrg destfile="$destdir/$destname" 61021f0ac6a5Smrg else 61031f0ac6a5Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 61041f0ac6a5Smrg destfile="$destdir/$destfile" 61051f0ac6a5Smrg fi 61061f0ac6a5Smrg 61071f0ac6a5Smrg # Deduce the name of the destination old-style object file. 61081f0ac6a5Smrg case $destfile in 61091f0ac6a5Smrg *.lo) 61101f0ac6a5Smrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 61111f0ac6a5Smrg ;; 61121f0ac6a5Smrg *.$objext) 61131f0ac6a5Smrg staticdest="$destfile" 61141f0ac6a5Smrg destfile= 61151f0ac6a5Smrg ;; 61161f0ac6a5Smrg *) 61171f0ac6a5Smrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 61181f0ac6a5Smrg $echo "$help" 1>&2 61191f0ac6a5Smrg exit $EXIT_FAILURE 61201f0ac6a5Smrg ;; 61211f0ac6a5Smrg esac 61221f0ac6a5Smrg 61231f0ac6a5Smrg # Install the libtool object if requested. 61241f0ac6a5Smrg if test -n "$destfile"; then 61251f0ac6a5Smrg $show "$install_prog $file $destfile" 61261f0ac6a5Smrg $run eval "$install_prog $file $destfile" || exit $? 61271f0ac6a5Smrg fi 61281f0ac6a5Smrg 61291f0ac6a5Smrg # Install the old object if enabled. 61301f0ac6a5Smrg if test "$build_old_libs" = yes; then 61311f0ac6a5Smrg # Deduce the name of the old-style object file. 61321f0ac6a5Smrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 61331f0ac6a5Smrg 61341f0ac6a5Smrg $show "$install_prog $staticobj $staticdest" 61351f0ac6a5Smrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 61361f0ac6a5Smrg fi 61371f0ac6a5Smrg exit $EXIT_SUCCESS 61381f0ac6a5Smrg ;; 61391f0ac6a5Smrg 61401f0ac6a5Smrg *) 61411f0ac6a5Smrg # Figure out destination file name, if it wasn't already specified. 61421f0ac6a5Smrg if test -n "$destname"; then 61431f0ac6a5Smrg destfile="$destdir/$destname" 61441f0ac6a5Smrg else 61451f0ac6a5Smrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 61461f0ac6a5Smrg destfile="$destdir/$destfile" 61471f0ac6a5Smrg fi 61481f0ac6a5Smrg 61491f0ac6a5Smrg # If the file is missing, and there is a .exe on the end, strip it 61501f0ac6a5Smrg # because it is most likely a libtool script we actually want to 61511f0ac6a5Smrg # install 61521f0ac6a5Smrg stripped_ext="" 61531f0ac6a5Smrg case $file in 61541f0ac6a5Smrg *.exe) 61551f0ac6a5Smrg if test ! -f "$file"; then 61561f0ac6a5Smrg file=`$echo $file|${SED} 's,.exe$,,'` 61571f0ac6a5Smrg stripped_ext=".exe" 61581f0ac6a5Smrg fi 61591f0ac6a5Smrg ;; 61601f0ac6a5Smrg esac 61611f0ac6a5Smrg 61621f0ac6a5Smrg # Do a test to see if this is really a libtool program. 61631f0ac6a5Smrg case $host in 61641f0ac6a5Smrg *cygwin*|*mingw*) 61651f0ac6a5Smrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 61661f0ac6a5Smrg ;; 61671f0ac6a5Smrg *) 61681f0ac6a5Smrg wrapper=$file 61691f0ac6a5Smrg ;; 61701f0ac6a5Smrg esac 61711f0ac6a5Smrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 61721f0ac6a5Smrg notinst_deplibs= 61731f0ac6a5Smrg relink_command= 61741f0ac6a5Smrg 61751f0ac6a5Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 61761f0ac6a5Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 61771f0ac6a5Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 61781f0ac6a5Smrg # `FILE.' does not work on cygwin managed mounts. 61791f0ac6a5Smrg # 61801f0ac6a5Smrg # If there is no directory component, then add one. 61811f0ac6a5Smrg case $wrapper in 61821f0ac6a5Smrg */* | *\\*) . ${wrapper} ;; 61831f0ac6a5Smrg *) . ./${wrapper} ;; 61841f0ac6a5Smrg esac 61851f0ac6a5Smrg 61861f0ac6a5Smrg # Check the variables that should have been set. 61871f0ac6a5Smrg if test -z "$notinst_deplibs"; then 61881f0ac6a5Smrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 61891f0ac6a5Smrg exit $EXIT_FAILURE 61901f0ac6a5Smrg fi 61911f0ac6a5Smrg 61921f0ac6a5Smrg finalize=yes 61931f0ac6a5Smrg for lib in $notinst_deplibs; do 61941f0ac6a5Smrg # Check to see that each library is installed. 61951f0ac6a5Smrg libdir= 61961f0ac6a5Smrg if test -f "$lib"; then 61971f0ac6a5Smrg # If there is no directory component, then add one. 61981f0ac6a5Smrg case $lib in 61991f0ac6a5Smrg */* | *\\*) . $lib ;; 62001f0ac6a5Smrg *) . ./$lib ;; 62011f0ac6a5Smrg esac 62021f0ac6a5Smrg fi 62031f0ac6a5Smrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 62041f0ac6a5Smrg if test -n "$libdir" && test ! -f "$libfile"; then 62051f0ac6a5Smrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 62061f0ac6a5Smrg finalize=no 62071f0ac6a5Smrg fi 62081f0ac6a5Smrg done 62091f0ac6a5Smrg 62101f0ac6a5Smrg relink_command= 62111f0ac6a5Smrg # Note that it is not necessary on cygwin/mingw to append a dot to 62121f0ac6a5Smrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 62131f0ac6a5Smrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 62141f0ac6a5Smrg # `FILE.' does not work on cygwin managed mounts. 62151f0ac6a5Smrg # 62161f0ac6a5Smrg # If there is no directory component, then add one. 62171f0ac6a5Smrg case $wrapper in 62181f0ac6a5Smrg */* | *\\*) . ${wrapper} ;; 62191f0ac6a5Smrg *) . ./${wrapper} ;; 62201f0ac6a5Smrg esac 62211f0ac6a5Smrg 62221f0ac6a5Smrg outputname= 62231f0ac6a5Smrg if test "$fast_install" = no && test -n "$relink_command"; then 62241f0ac6a5Smrg if test "$finalize" = yes && test -z "$run"; then 62251f0ac6a5Smrg tmpdir=`func_mktempdir` 62261f0ac6a5Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 62271f0ac6a5Smrg outputname="$tmpdir/$file" 62281f0ac6a5Smrg # Replace the output file specification. 6229e5410a46Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 62301f0ac6a5Smrg 62311f0ac6a5Smrg $show "$relink_command" 62321f0ac6a5Smrg if $run eval "$relink_command"; then : 62331f0ac6a5Smrg else 62341f0ac6a5Smrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 62351f0ac6a5Smrg ${rm}r "$tmpdir" 62361f0ac6a5Smrg continue 62371f0ac6a5Smrg fi 62381f0ac6a5Smrg file="$outputname" 62391f0ac6a5Smrg else 62401f0ac6a5Smrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 62411f0ac6a5Smrg fi 62421f0ac6a5Smrg else 62431f0ac6a5Smrg # Install the binary that we compiled earlier. 62441f0ac6a5Smrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 62451f0ac6a5Smrg fi 62461f0ac6a5Smrg fi 62471f0ac6a5Smrg 62481f0ac6a5Smrg # remove .exe since cygwin /usr/bin/install will append another 62491f0ac6a5Smrg # one anyway 62501f0ac6a5Smrg case $install_prog,$host in 62511f0ac6a5Smrg */usr/bin/install*,*cygwin*) 62521f0ac6a5Smrg case $file:$destfile in 62531f0ac6a5Smrg *.exe:*.exe) 62541f0ac6a5Smrg # this is ok 62551f0ac6a5Smrg ;; 62561f0ac6a5Smrg *.exe:*) 62571f0ac6a5Smrg destfile=$destfile.exe 62581f0ac6a5Smrg ;; 62591f0ac6a5Smrg *:*.exe) 62601f0ac6a5Smrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 62611f0ac6a5Smrg ;; 62621f0ac6a5Smrg esac 62631f0ac6a5Smrg ;; 62641f0ac6a5Smrg esac 62651f0ac6a5Smrg $show "$install_prog$stripme $file $destfile" 62661f0ac6a5Smrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 62671f0ac6a5Smrg test -n "$outputname" && ${rm}r "$tmpdir" 62681f0ac6a5Smrg ;; 62691f0ac6a5Smrg esac 62701f0ac6a5Smrg done 62711f0ac6a5Smrg 62721f0ac6a5Smrg for file in $staticlibs; do 62731f0ac6a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 62741f0ac6a5Smrg 62751f0ac6a5Smrg # Set up the ranlib parameters. 62761f0ac6a5Smrg oldlib="$destdir/$name" 62771f0ac6a5Smrg 62781f0ac6a5Smrg $show "$install_prog $file $oldlib" 62791f0ac6a5Smrg $run eval "$install_prog \$file \$oldlib" || exit $? 62801f0ac6a5Smrg 62811f0ac6a5Smrg if test -n "$stripme" && test -n "$old_striplib"; then 62821f0ac6a5Smrg $show "$old_striplib $oldlib" 62831f0ac6a5Smrg $run eval "$old_striplib $oldlib" || exit $? 62841f0ac6a5Smrg fi 62851f0ac6a5Smrg 62861f0ac6a5Smrg # Do each command in the postinstall commands. 62871f0ac6a5Smrg cmds=$old_postinstall_cmds 62881f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 62891f0ac6a5Smrg for cmd in $cmds; do 62901f0ac6a5Smrg IFS="$save_ifs" 62911f0ac6a5Smrg eval cmd=\"$cmd\" 62921f0ac6a5Smrg $show "$cmd" 62931f0ac6a5Smrg $run eval "$cmd" || exit $? 62941f0ac6a5Smrg done 62951f0ac6a5Smrg IFS="$save_ifs" 62961f0ac6a5Smrg done 62971f0ac6a5Smrg 62981f0ac6a5Smrg if test -n "$future_libdirs"; then 62991f0ac6a5Smrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 63001f0ac6a5Smrg fi 63011f0ac6a5Smrg 63021f0ac6a5Smrg if test -n "$current_libdirs"; then 63031f0ac6a5Smrg # Maybe just do a dry run. 63041f0ac6a5Smrg test -n "$run" && current_libdirs=" -n$current_libdirs" 63051f0ac6a5Smrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 63061f0ac6a5Smrg else 63071f0ac6a5Smrg exit $EXIT_SUCCESS 63081f0ac6a5Smrg fi 63091f0ac6a5Smrg ;; 63101f0ac6a5Smrg 63111f0ac6a5Smrg # libtool finish mode 63121f0ac6a5Smrg finish) 63131f0ac6a5Smrg modename="$modename: finish" 63141f0ac6a5Smrg libdirs="$nonopt" 63151f0ac6a5Smrg admincmds= 63161f0ac6a5Smrg 63171f0ac6a5Smrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 63181f0ac6a5Smrg for dir 63191f0ac6a5Smrg do 63201f0ac6a5Smrg libdirs="$libdirs $dir" 63211f0ac6a5Smrg done 63221f0ac6a5Smrg 63231f0ac6a5Smrg for libdir in $libdirs; do 63241f0ac6a5Smrg if test -n "$finish_cmds"; then 63251f0ac6a5Smrg # Do each command in the finish commands. 63261f0ac6a5Smrg cmds=$finish_cmds 63271f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 63281f0ac6a5Smrg for cmd in $cmds; do 63291f0ac6a5Smrg IFS="$save_ifs" 63301f0ac6a5Smrg eval cmd=\"$cmd\" 63311f0ac6a5Smrg $show "$cmd" 63321f0ac6a5Smrg $run eval "$cmd" || admincmds="$admincmds 63331f0ac6a5Smrg $cmd" 63341f0ac6a5Smrg done 63351f0ac6a5Smrg IFS="$save_ifs" 63361f0ac6a5Smrg fi 63371f0ac6a5Smrg if test -n "$finish_eval"; then 63381f0ac6a5Smrg # Do the single finish_eval. 63391f0ac6a5Smrg eval cmds=\"$finish_eval\" 63401f0ac6a5Smrg $run eval "$cmds" || admincmds="$admincmds 63411f0ac6a5Smrg $cmds" 63421f0ac6a5Smrg fi 63431f0ac6a5Smrg done 63441f0ac6a5Smrg fi 63451f0ac6a5Smrg 63461f0ac6a5Smrg # Exit here if they wanted silent mode. 63471f0ac6a5Smrg test "$show" = : && exit $EXIT_SUCCESS 63481f0ac6a5Smrg 63491f0ac6a5Smrg $echo "X----------------------------------------------------------------------" | $Xsed 63501f0ac6a5Smrg $echo "Libraries have been installed in:" 63511f0ac6a5Smrg for libdir in $libdirs; do 63521f0ac6a5Smrg $echo " $libdir" 63531f0ac6a5Smrg done 63541f0ac6a5Smrg $echo 63551f0ac6a5Smrg $echo "If you ever happen to want to link against installed libraries" 63561f0ac6a5Smrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 63571f0ac6a5Smrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 63581f0ac6a5Smrg $echo "flag during linking and do at least one of the following:" 63591f0ac6a5Smrg if test -n "$shlibpath_var"; then 63601f0ac6a5Smrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 63611f0ac6a5Smrg $echo " during execution" 63621f0ac6a5Smrg fi 63631f0ac6a5Smrg if test -n "$runpath_var"; then 63641f0ac6a5Smrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 63651f0ac6a5Smrg $echo " during linking" 63661f0ac6a5Smrg fi 63671f0ac6a5Smrg if test -n "$hardcode_libdir_flag_spec"; then 63681f0ac6a5Smrg libdir=LIBDIR 63691f0ac6a5Smrg eval flag=\"$hardcode_libdir_flag_spec\" 63701f0ac6a5Smrg 63711f0ac6a5Smrg $echo " - use the \`$flag' linker flag" 63721f0ac6a5Smrg fi 63731f0ac6a5Smrg if test -n "$admincmds"; then 63741f0ac6a5Smrg $echo " - have your system administrator run these commands:$admincmds" 63751f0ac6a5Smrg fi 63761f0ac6a5Smrg if test -f /etc/ld.so.conf; then 63771f0ac6a5Smrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 63781f0ac6a5Smrg fi 63791f0ac6a5Smrg $echo 63801f0ac6a5Smrg $echo "See any operating system documentation about shared libraries for" 63811f0ac6a5Smrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 63821f0ac6a5Smrg $echo "X----------------------------------------------------------------------" | $Xsed 63831f0ac6a5Smrg exit $EXIT_SUCCESS 63841f0ac6a5Smrg ;; 63851f0ac6a5Smrg 63861f0ac6a5Smrg # libtool execute mode 63871f0ac6a5Smrg execute) 63881f0ac6a5Smrg modename="$modename: execute" 63891f0ac6a5Smrg 63901f0ac6a5Smrg # The first argument is the command name. 63911f0ac6a5Smrg cmd="$nonopt" 63921f0ac6a5Smrg if test -z "$cmd"; then 63931f0ac6a5Smrg $echo "$modename: you must specify a COMMAND" 1>&2 63941f0ac6a5Smrg $echo "$help" 63951f0ac6a5Smrg exit $EXIT_FAILURE 63961f0ac6a5Smrg fi 63971f0ac6a5Smrg 63981f0ac6a5Smrg # Handle -dlopen flags immediately. 63991f0ac6a5Smrg for file in $execute_dlfiles; do 64001f0ac6a5Smrg if test ! -f "$file"; then 64011f0ac6a5Smrg $echo "$modename: \`$file' is not a file" 1>&2 64021f0ac6a5Smrg $echo "$help" 1>&2 64031f0ac6a5Smrg exit $EXIT_FAILURE 64041f0ac6a5Smrg fi 64051f0ac6a5Smrg 64061f0ac6a5Smrg dir= 64071f0ac6a5Smrg case $file in 64081f0ac6a5Smrg *.la) 64091f0ac6a5Smrg # Check to see that this really is a libtool archive. 64101f0ac6a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 64111f0ac6a5Smrg else 64121f0ac6a5Smrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 64131f0ac6a5Smrg $echo "$help" 1>&2 64141f0ac6a5Smrg exit $EXIT_FAILURE 64151f0ac6a5Smrg fi 64161f0ac6a5Smrg 64171f0ac6a5Smrg # Read the libtool library. 64181f0ac6a5Smrg dlname= 64191f0ac6a5Smrg library_names= 64201f0ac6a5Smrg 64211f0ac6a5Smrg # If there is no directory component, then add one. 64221f0ac6a5Smrg case $file in 64231f0ac6a5Smrg */* | *\\*) . $file ;; 64241f0ac6a5Smrg *) . ./$file ;; 64251f0ac6a5Smrg esac 64261f0ac6a5Smrg 64271f0ac6a5Smrg # Skip this library if it cannot be dlopened. 64281f0ac6a5Smrg if test -z "$dlname"; then 64291f0ac6a5Smrg # Warn if it was a shared library. 64301f0ac6a5Smrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 64311f0ac6a5Smrg continue 64321f0ac6a5Smrg fi 64331f0ac6a5Smrg 64341f0ac6a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 64351f0ac6a5Smrg test "X$dir" = "X$file" && dir=. 64361f0ac6a5Smrg 64371f0ac6a5Smrg if test -f "$dir/$objdir/$dlname"; then 64381f0ac6a5Smrg dir="$dir/$objdir" 64391f0ac6a5Smrg else 6440e5410a46Smrg if test ! -f "$dir/$dlname"; then 6441e5410a46Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6442e5410a46Smrg exit $EXIT_FAILURE 6443e5410a46Smrg fi 64441f0ac6a5Smrg fi 64451f0ac6a5Smrg ;; 64461f0ac6a5Smrg 64471f0ac6a5Smrg *.lo) 64481f0ac6a5Smrg # Just add the directory containing the .lo file. 64491f0ac6a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 64501f0ac6a5Smrg test "X$dir" = "X$file" && dir=. 64511f0ac6a5Smrg ;; 64521f0ac6a5Smrg 64531f0ac6a5Smrg *) 64541f0ac6a5Smrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 64551f0ac6a5Smrg continue 64561f0ac6a5Smrg ;; 64571f0ac6a5Smrg esac 64581f0ac6a5Smrg 64591f0ac6a5Smrg # Get the absolute pathname. 64601f0ac6a5Smrg absdir=`cd "$dir" && pwd` 64611f0ac6a5Smrg test -n "$absdir" && dir="$absdir" 64621f0ac6a5Smrg 64631f0ac6a5Smrg # Now add the directory to shlibpath_var. 64641f0ac6a5Smrg if eval "test -z \"\$$shlibpath_var\""; then 64651f0ac6a5Smrg eval "$shlibpath_var=\"\$dir\"" 64661f0ac6a5Smrg else 64671f0ac6a5Smrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 64681f0ac6a5Smrg fi 64691f0ac6a5Smrg done 64701f0ac6a5Smrg 64711f0ac6a5Smrg # This variable tells wrapper scripts just to set shlibpath_var 64721f0ac6a5Smrg # rather than running their programs. 64731f0ac6a5Smrg libtool_execute_magic="$magic" 64741f0ac6a5Smrg 64751f0ac6a5Smrg # Check if any of the arguments is a wrapper script. 64761f0ac6a5Smrg args= 64771f0ac6a5Smrg for file 64781f0ac6a5Smrg do 64791f0ac6a5Smrg case $file in 64801f0ac6a5Smrg -*) ;; 64811f0ac6a5Smrg *) 64821f0ac6a5Smrg # Do a test to see if this is really a libtool program. 64831f0ac6a5Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 64841f0ac6a5Smrg # If there is no directory component, then add one. 64851f0ac6a5Smrg case $file in 64861f0ac6a5Smrg */* | *\\*) . $file ;; 64871f0ac6a5Smrg *) . ./$file ;; 64881f0ac6a5Smrg esac 64891f0ac6a5Smrg 64901f0ac6a5Smrg # Transform arg to wrapped name. 64911f0ac6a5Smrg file="$progdir/$program" 64921f0ac6a5Smrg fi 64931f0ac6a5Smrg ;; 64941f0ac6a5Smrg esac 64951f0ac6a5Smrg # Quote arguments (to preserve shell metacharacters). 64961f0ac6a5Smrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 64971f0ac6a5Smrg args="$args \"$file\"" 64981f0ac6a5Smrg done 64991f0ac6a5Smrg 65001f0ac6a5Smrg if test -z "$run"; then 65011f0ac6a5Smrg if test -n "$shlibpath_var"; then 65021f0ac6a5Smrg # Export the shlibpath_var. 65031f0ac6a5Smrg eval "export $shlibpath_var" 65041f0ac6a5Smrg fi 65051f0ac6a5Smrg 65061f0ac6a5Smrg # Restore saved environment variables 6507e5410a46Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6508e5410a46Smrg do 6509e5410a46Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 6510e5410a46Smrg $lt_var=\$save_$lt_var; export $lt_var 6511e5410a46Smrg fi" 6512e5410a46Smrg done 65131f0ac6a5Smrg 65141f0ac6a5Smrg # Now prepare to actually exec the command. 65151f0ac6a5Smrg exec_cmd="\$cmd$args" 65161f0ac6a5Smrg else 65171f0ac6a5Smrg # Display what would be done. 65181f0ac6a5Smrg if test -n "$shlibpath_var"; then 65191f0ac6a5Smrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 65201f0ac6a5Smrg $echo "export $shlibpath_var" 65211f0ac6a5Smrg fi 65221f0ac6a5Smrg $echo "$cmd$args" 65231f0ac6a5Smrg exit $EXIT_SUCCESS 65241f0ac6a5Smrg fi 65251f0ac6a5Smrg ;; 65261f0ac6a5Smrg 65271f0ac6a5Smrg # libtool clean and uninstall mode 65281f0ac6a5Smrg clean | uninstall) 65291f0ac6a5Smrg modename="$modename: $mode" 65301f0ac6a5Smrg rm="$nonopt" 65311f0ac6a5Smrg files= 65321f0ac6a5Smrg rmforce= 65331f0ac6a5Smrg exit_status=0 65341f0ac6a5Smrg 65351f0ac6a5Smrg # This variable tells wrapper scripts just to set variables rather 65361f0ac6a5Smrg # than running their programs. 65371f0ac6a5Smrg libtool_install_magic="$magic" 65381f0ac6a5Smrg 65391f0ac6a5Smrg for arg 65401f0ac6a5Smrg do 65411f0ac6a5Smrg case $arg in 65421f0ac6a5Smrg -f) rm="$rm $arg"; rmforce=yes ;; 65431f0ac6a5Smrg -*) rm="$rm $arg" ;; 65441f0ac6a5Smrg *) files="$files $arg" ;; 65451f0ac6a5Smrg esac 65461f0ac6a5Smrg done 65471f0ac6a5Smrg 65481f0ac6a5Smrg if test -z "$rm"; then 65491f0ac6a5Smrg $echo "$modename: you must specify an RM program" 1>&2 65501f0ac6a5Smrg $echo "$help" 1>&2 65511f0ac6a5Smrg exit $EXIT_FAILURE 65521f0ac6a5Smrg fi 65531f0ac6a5Smrg 65541f0ac6a5Smrg rmdirs= 65551f0ac6a5Smrg 65561f0ac6a5Smrg origobjdir="$objdir" 65571f0ac6a5Smrg for file in $files; do 65581f0ac6a5Smrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 65591f0ac6a5Smrg if test "X$dir" = "X$file"; then 65601f0ac6a5Smrg dir=. 65611f0ac6a5Smrg objdir="$origobjdir" 65621f0ac6a5Smrg else 65631f0ac6a5Smrg objdir="$dir/$origobjdir" 65641f0ac6a5Smrg fi 65651f0ac6a5Smrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 65661f0ac6a5Smrg test "$mode" = uninstall && objdir="$dir" 65671f0ac6a5Smrg 65681f0ac6a5Smrg # Remember objdir for removal later, being careful to avoid duplicates 65691f0ac6a5Smrg if test "$mode" = clean; then 65701f0ac6a5Smrg case " $rmdirs " in 65711f0ac6a5Smrg *" $objdir "*) ;; 65721f0ac6a5Smrg *) rmdirs="$rmdirs $objdir" ;; 65731f0ac6a5Smrg esac 65741f0ac6a5Smrg fi 65751f0ac6a5Smrg 65761f0ac6a5Smrg # Don't error if the file doesn't exist and rm -f was used. 65771f0ac6a5Smrg if (test -L "$file") >/dev/null 2>&1 \ 65781f0ac6a5Smrg || (test -h "$file") >/dev/null 2>&1 \ 65791f0ac6a5Smrg || test -f "$file"; then 65801f0ac6a5Smrg : 65811f0ac6a5Smrg elif test -d "$file"; then 65821f0ac6a5Smrg exit_status=1 65831f0ac6a5Smrg continue 65841f0ac6a5Smrg elif test "$rmforce" = yes; then 65851f0ac6a5Smrg continue 65861f0ac6a5Smrg fi 65871f0ac6a5Smrg 65881f0ac6a5Smrg rmfiles="$file" 65891f0ac6a5Smrg 65901f0ac6a5Smrg case $name in 65911f0ac6a5Smrg *.la) 65921f0ac6a5Smrg # Possibly a libtool archive, so verify it. 65931f0ac6a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 65941f0ac6a5Smrg . $dir/$name 65951f0ac6a5Smrg 65961f0ac6a5Smrg # Delete the libtool libraries and symlinks. 65971f0ac6a5Smrg for n in $library_names; do 65981f0ac6a5Smrg rmfiles="$rmfiles $objdir/$n" 65991f0ac6a5Smrg done 66001f0ac6a5Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 66011f0ac6a5Smrg 66021f0ac6a5Smrg case "$mode" in 66031f0ac6a5Smrg clean) 66041f0ac6a5Smrg case " $library_names " in 66051f0ac6a5Smrg # " " in the beginning catches empty $dlname 66061f0ac6a5Smrg *" $dlname "*) ;; 66071f0ac6a5Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 66081f0ac6a5Smrg esac 66091f0ac6a5Smrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 66101f0ac6a5Smrg ;; 66111f0ac6a5Smrg uninstall) 66121f0ac6a5Smrg if test -n "$library_names"; then 66131f0ac6a5Smrg # Do each command in the postuninstall commands. 66141f0ac6a5Smrg cmds=$postuninstall_cmds 66151f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 66161f0ac6a5Smrg for cmd in $cmds; do 66171f0ac6a5Smrg IFS="$save_ifs" 66181f0ac6a5Smrg eval cmd=\"$cmd\" 66191f0ac6a5Smrg $show "$cmd" 66201f0ac6a5Smrg $run eval "$cmd" 66211f0ac6a5Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 66221f0ac6a5Smrg exit_status=1 66231f0ac6a5Smrg fi 66241f0ac6a5Smrg done 66251f0ac6a5Smrg IFS="$save_ifs" 66261f0ac6a5Smrg fi 66271f0ac6a5Smrg 66281f0ac6a5Smrg if test -n "$old_library"; then 66291f0ac6a5Smrg # Do each command in the old_postuninstall commands. 66301f0ac6a5Smrg cmds=$old_postuninstall_cmds 66311f0ac6a5Smrg save_ifs="$IFS"; IFS='~' 66321f0ac6a5Smrg for cmd in $cmds; do 66331f0ac6a5Smrg IFS="$save_ifs" 66341f0ac6a5Smrg eval cmd=\"$cmd\" 66351f0ac6a5Smrg $show "$cmd" 66361f0ac6a5Smrg $run eval "$cmd" 66371f0ac6a5Smrg if test "$?" -ne 0 && test "$rmforce" != yes; then 66381f0ac6a5Smrg exit_status=1 66391f0ac6a5Smrg fi 66401f0ac6a5Smrg done 66411f0ac6a5Smrg IFS="$save_ifs" 66421f0ac6a5Smrg fi 66431f0ac6a5Smrg # FIXME: should reinstall the best remaining shared library. 66441f0ac6a5Smrg ;; 66451f0ac6a5Smrg esac 66461f0ac6a5Smrg fi 66471f0ac6a5Smrg ;; 66481f0ac6a5Smrg 66491f0ac6a5Smrg *.lo) 66501f0ac6a5Smrg # Possibly a libtool object, so verify it. 66511f0ac6a5Smrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 66521f0ac6a5Smrg 66531f0ac6a5Smrg # Read the .lo file 66541f0ac6a5Smrg . $dir/$name 66551f0ac6a5Smrg 66561f0ac6a5Smrg # Add PIC object to the list of files to remove. 66571f0ac6a5Smrg if test -n "$pic_object" \ 66581f0ac6a5Smrg && test "$pic_object" != none; then 66591f0ac6a5Smrg rmfiles="$rmfiles $dir/$pic_object" 66601f0ac6a5Smrg fi 66611f0ac6a5Smrg 66621f0ac6a5Smrg # Add non-PIC object to the list of files to remove. 66631f0ac6a5Smrg if test -n "$non_pic_object" \ 66641f0ac6a5Smrg && test "$non_pic_object" != none; then 66651f0ac6a5Smrg rmfiles="$rmfiles $dir/$non_pic_object" 66661f0ac6a5Smrg fi 66671f0ac6a5Smrg fi 66681f0ac6a5Smrg ;; 66691f0ac6a5Smrg 66701f0ac6a5Smrg *) 66711f0ac6a5Smrg if test "$mode" = clean ; then 66721f0ac6a5Smrg noexename=$name 66731f0ac6a5Smrg case $file in 66741f0ac6a5Smrg *.exe) 66751f0ac6a5Smrg file=`$echo $file|${SED} 's,.exe$,,'` 66761f0ac6a5Smrg noexename=`$echo $name|${SED} 's,.exe$,,'` 66771f0ac6a5Smrg # $file with .exe has already been added to rmfiles, 66781f0ac6a5Smrg # add $file without .exe 66791f0ac6a5Smrg rmfiles="$rmfiles $file" 66801f0ac6a5Smrg ;; 66811f0ac6a5Smrg esac 66821f0ac6a5Smrg # Do a test to see if this is a libtool program. 66831f0ac6a5Smrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 66841f0ac6a5Smrg relink_command= 66851f0ac6a5Smrg . $dir/$noexename 66861f0ac6a5Smrg 66871f0ac6a5Smrg # note $name still contains .exe if it was in $file originally 66881f0ac6a5Smrg # as does the version of $file that was added into $rmfiles 66891f0ac6a5Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 66901f0ac6a5Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 66911f0ac6a5Smrg rmfiles="$rmfiles $objdir/lt-$name" 66921f0ac6a5Smrg fi 66931f0ac6a5Smrg if test "X$noexename" != "X$name" ; then 66941f0ac6a5Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 66951f0ac6a5Smrg fi 66961f0ac6a5Smrg fi 66971f0ac6a5Smrg fi 66981f0ac6a5Smrg ;; 66991f0ac6a5Smrg esac 67001f0ac6a5Smrg $show "$rm $rmfiles" 67011f0ac6a5Smrg $run $rm $rmfiles || exit_status=1 67021f0ac6a5Smrg done 67031f0ac6a5Smrg objdir="$origobjdir" 67041f0ac6a5Smrg 67051f0ac6a5Smrg # Try to remove the ${objdir}s in the directories where we deleted files 67061f0ac6a5Smrg for dir in $rmdirs; do 67071f0ac6a5Smrg if test -d "$dir"; then 67081f0ac6a5Smrg $show "rmdir $dir" 67091f0ac6a5Smrg $run rmdir $dir >/dev/null 2>&1 67101f0ac6a5Smrg fi 67111f0ac6a5Smrg done 67121f0ac6a5Smrg 67131f0ac6a5Smrg exit $exit_status 67141f0ac6a5Smrg ;; 67151f0ac6a5Smrg 67161f0ac6a5Smrg "") 67171f0ac6a5Smrg $echo "$modename: you must specify a MODE" 1>&2 67181f0ac6a5Smrg $echo "$generic_help" 1>&2 67191f0ac6a5Smrg exit $EXIT_FAILURE 67201f0ac6a5Smrg ;; 67211f0ac6a5Smrg esac 67221f0ac6a5Smrg 67231f0ac6a5Smrg if test -z "$exec_cmd"; then 67241f0ac6a5Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 67251f0ac6a5Smrg $echo "$generic_help" 1>&2 67261f0ac6a5Smrg exit $EXIT_FAILURE 67271f0ac6a5Smrg fi 67281f0ac6a5Smrgfi # test -z "$show_help" 67291f0ac6a5Smrg 67301f0ac6a5Smrgif test -n "$exec_cmd"; then 67311f0ac6a5Smrg eval exec $exec_cmd 67321f0ac6a5Smrg exit $EXIT_FAILURE 67331f0ac6a5Smrgfi 67341f0ac6a5Smrg 67351f0ac6a5Smrg# We need to display help for each of the modes. 67361f0ac6a5Smrgcase $mode in 67371f0ac6a5Smrg"") $echo \ 67381f0ac6a5Smrg"Usage: $modename [OPTION]... [MODE-ARG]... 67391f0ac6a5Smrg 67401f0ac6a5SmrgProvide generalized library-building support services. 67411f0ac6a5Smrg 67421f0ac6a5Smrg --config show all configuration variables 67431f0ac6a5Smrg --debug enable verbose shell tracing 67441f0ac6a5Smrg-n, --dry-run display commands without modifying any files 67451f0ac6a5Smrg --features display basic configuration information and exit 67461f0ac6a5Smrg --finish same as \`--mode=finish' 67471f0ac6a5Smrg --help display this help message and exit 67481f0ac6a5Smrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 67491f0ac6a5Smrg --quiet same as \`--silent' 67501f0ac6a5Smrg --silent don't print informational messages 67511f0ac6a5Smrg --tag=TAG use configuration variables from tag TAG 67521f0ac6a5Smrg --version print version information 67531f0ac6a5Smrg 67541f0ac6a5SmrgMODE must be one of the following: 67551f0ac6a5Smrg 67561f0ac6a5Smrg clean remove files from the build directory 67571f0ac6a5Smrg compile compile a source file into a libtool object 67581f0ac6a5Smrg execute automatically set library path, then run a program 67591f0ac6a5Smrg finish complete the installation of libtool libraries 67601f0ac6a5Smrg install install libraries or executables 67611f0ac6a5Smrg link create a library or an executable 67621f0ac6a5Smrg uninstall remove libraries from an installed directory 67631f0ac6a5Smrg 67641f0ac6a5SmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 67651f0ac6a5Smrga more detailed description of MODE. 67661f0ac6a5Smrg 67671f0ac6a5SmrgReport bugs to <bug-libtool@gnu.org>." 67681f0ac6a5Smrg exit $EXIT_SUCCESS 67691f0ac6a5Smrg ;; 67701f0ac6a5Smrg 67711f0ac6a5Smrgclean) 67721f0ac6a5Smrg $echo \ 67731f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 67741f0ac6a5Smrg 67751f0ac6a5SmrgRemove files from the build directory. 67761f0ac6a5Smrg 67771f0ac6a5SmrgRM is the name of the program to use to delete files associated with each FILE 67781f0ac6a5Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 67791f0ac6a5Smrgto RM. 67801f0ac6a5Smrg 67811f0ac6a5SmrgIf FILE is a libtool library, object or program, all the files associated 67821f0ac6a5Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 67831f0ac6a5Smrg ;; 67841f0ac6a5Smrg 67851f0ac6a5Smrgcompile) 67861f0ac6a5Smrg $echo \ 67871f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 67881f0ac6a5Smrg 67891f0ac6a5SmrgCompile a source file into a libtool library object. 67901f0ac6a5Smrg 67911f0ac6a5SmrgThis mode accepts the following additional options: 67921f0ac6a5Smrg 67931f0ac6a5Smrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 67941f0ac6a5Smrg -prefer-pic try to building PIC objects only 67951f0ac6a5Smrg -prefer-non-pic try to building non-PIC objects only 67961f0ac6a5Smrg -static always build a \`.o' file suitable for static linking 67971f0ac6a5Smrg 67981f0ac6a5SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 67991f0ac6a5Smrgfrom the given SOURCEFILE. 68001f0ac6a5Smrg 68011f0ac6a5SmrgThe output file name is determined by removing the directory component from 68021f0ac6a5SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 68031f0ac6a5Smrglibrary object suffix, \`.lo'." 68041f0ac6a5Smrg ;; 68051f0ac6a5Smrg 68061f0ac6a5Smrgexecute) 68071f0ac6a5Smrg $echo \ 68081f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 68091f0ac6a5Smrg 68101f0ac6a5SmrgAutomatically set library path, then run a program. 68111f0ac6a5Smrg 68121f0ac6a5SmrgThis mode accepts the following additional options: 68131f0ac6a5Smrg 68141f0ac6a5Smrg -dlopen FILE add the directory containing FILE to the library path 68151f0ac6a5Smrg 68161f0ac6a5SmrgThis mode sets the library path environment variable according to \`-dlopen' 68171f0ac6a5Smrgflags. 68181f0ac6a5Smrg 68191f0ac6a5SmrgIf any of the ARGS are libtool executable wrappers, then they are translated 68201f0ac6a5Smrginto their corresponding uninstalled binary, and any of their required library 68211f0ac6a5Smrgdirectories are added to the library path. 68221f0ac6a5Smrg 68231f0ac6a5SmrgThen, COMMAND is executed, with ARGS as arguments." 68241f0ac6a5Smrg ;; 68251f0ac6a5Smrg 68261f0ac6a5Smrgfinish) 68271f0ac6a5Smrg $echo \ 68281f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 68291f0ac6a5Smrg 68301f0ac6a5SmrgComplete the installation of libtool libraries. 68311f0ac6a5Smrg 68321f0ac6a5SmrgEach LIBDIR is a directory that contains libtool libraries. 68331f0ac6a5Smrg 68341f0ac6a5SmrgThe commands that this mode executes may require superuser privileges. Use 68351f0ac6a5Smrgthe \`--dry-run' option if you just want to see what would be executed." 68361f0ac6a5Smrg ;; 68371f0ac6a5Smrg 68381f0ac6a5Smrginstall) 68391f0ac6a5Smrg $echo \ 68401f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 68411f0ac6a5Smrg 68421f0ac6a5SmrgInstall executables or libraries. 68431f0ac6a5Smrg 68441f0ac6a5SmrgINSTALL-COMMAND is the installation command. The first component should be 68451f0ac6a5Smrgeither the \`install' or \`cp' program. 68461f0ac6a5Smrg 68471f0ac6a5SmrgThe rest of the components are interpreted as arguments to that command (only 68481f0ac6a5SmrgBSD-compatible install options are recognized)." 68491f0ac6a5Smrg ;; 68501f0ac6a5Smrg 68511f0ac6a5Smrglink) 68521f0ac6a5Smrg $echo \ 68531f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 68541f0ac6a5Smrg 68551f0ac6a5SmrgLink object files or libraries together to form another library, or to 68561f0ac6a5Smrgcreate an executable program. 68571f0ac6a5Smrg 68581f0ac6a5SmrgLINK-COMMAND is a command using the C compiler that you would use to create 68591f0ac6a5Smrga program from several object files. 68601f0ac6a5Smrg 68611f0ac6a5SmrgThe following components of LINK-COMMAND are treated specially: 68621f0ac6a5Smrg 68631f0ac6a5Smrg -all-static do not do any dynamic linking at all 68641f0ac6a5Smrg -avoid-version do not add a version suffix if possible 68651f0ac6a5Smrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 68661f0ac6a5Smrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 68671f0ac6a5Smrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 68681f0ac6a5Smrg -export-symbols SYMFILE 6869e5410a46Smrg try to export only the symbols listed in SYMFILE 68701f0ac6a5Smrg -export-symbols-regex REGEX 6871e5410a46Smrg try to export only the symbols matching REGEX 68721f0ac6a5Smrg -LLIBDIR search LIBDIR for required installed libraries 68731f0ac6a5Smrg -lNAME OUTPUT-FILE requires the installed library libNAME 68741f0ac6a5Smrg -module build a library that can dlopened 68751f0ac6a5Smrg -no-fast-install disable the fast-install mode 68761f0ac6a5Smrg -no-install link a not-installable executable 68771f0ac6a5Smrg -no-undefined declare that a library does not refer to external symbols 68781f0ac6a5Smrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 68791f0ac6a5Smrg -objectlist FILE Use a list of object files found in FILE to specify objects 68801f0ac6a5Smrg -precious-files-regex REGEX 68811f0ac6a5Smrg don't remove output files matching REGEX 68821f0ac6a5Smrg -release RELEASE specify package release information 68831f0ac6a5Smrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 68841f0ac6a5Smrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6885e5410a46Smrg -static do not do any dynamic linking of uninstalled libtool libraries 6886e5410a46Smrg -static-libtool-libs 6887e5410a46Smrg do not do any dynamic linking of libtool libraries 68881f0ac6a5Smrg -version-info CURRENT[:REVISION[:AGE]] 6889e5410a46Smrg specify library version info [each variable defaults to 0] 68901f0ac6a5Smrg 68911f0ac6a5SmrgAll other options (arguments beginning with \`-') are ignored. 68921f0ac6a5Smrg 68931f0ac6a5SmrgEvery other argument is treated as a filename. Files ending in \`.la' are 68941f0ac6a5Smrgtreated as uninstalled libtool libraries, other files are standard or library 68951f0ac6a5Smrgobject files. 68961f0ac6a5Smrg 68971f0ac6a5SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 68981f0ac6a5Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 68991f0ac6a5Smrgrequired, except when creating a convenience library. 69001f0ac6a5Smrg 69011f0ac6a5SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 69021f0ac6a5Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 69031f0ac6a5Smrg 69041f0ac6a5SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 69051f0ac6a5Smrgis created, otherwise an executable program is created." 69061f0ac6a5Smrg ;; 69071f0ac6a5Smrg 69081f0ac6a5Smrguninstall) 69091f0ac6a5Smrg $echo \ 69101f0ac6a5Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 69111f0ac6a5Smrg 69121f0ac6a5SmrgRemove libraries from an installation directory. 69131f0ac6a5Smrg 69141f0ac6a5SmrgRM is the name of the program to use to delete files associated with each FILE 69151f0ac6a5Smrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 69161f0ac6a5Smrgto RM. 69171f0ac6a5Smrg 69181f0ac6a5SmrgIf FILE is a libtool library, all the files associated with it are deleted. 69191f0ac6a5SmrgOtherwise, only FILE itself is deleted using RM." 69201f0ac6a5Smrg ;; 69211f0ac6a5Smrg 69221f0ac6a5Smrg*) 69231f0ac6a5Smrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 69241f0ac6a5Smrg $echo "$help" 1>&2 69251f0ac6a5Smrg exit $EXIT_FAILURE 69261f0ac6a5Smrg ;; 69271f0ac6a5Smrgesac 69281f0ac6a5Smrg 69291f0ac6a5Smrg$echo 69301f0ac6a5Smrg$echo "Try \`$modename --help' for more information about other modes." 69311f0ac6a5Smrg 69321f0ac6a5Smrgexit $? 69331f0ac6a5Smrg 69341f0ac6a5Smrg# The TAGs below are defined such that we never get into a situation 69351f0ac6a5Smrg# in which we disable both kinds of libraries. Given conflicting 69361f0ac6a5Smrg# choices, we go for a static library, that is the most portable, 69371f0ac6a5Smrg# since we can't tell whether shared libraries were disabled because 69381f0ac6a5Smrg# the user asked for that or because the platform doesn't support 69391f0ac6a5Smrg# them. This is particularly important on AIX, because we don't 69401f0ac6a5Smrg# support having both static and shared libraries enabled at the same 69411f0ac6a5Smrg# time on that platform, so we default to a shared-only configuration. 69421f0ac6a5Smrg# If a disable-shared tag is given, we'll fallback to a static-only 69431f0ac6a5Smrg# configuration. But we'll never go from static-only to shared-only. 69441f0ac6a5Smrg 69451f0ac6a5Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 69461f0ac6a5Smrgdisable_libs=shared 69471f0ac6a5Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 69481f0ac6a5Smrg 69491f0ac6a5Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 69501f0ac6a5Smrgdisable_libs=static 69511f0ac6a5Smrg# ### END LIBTOOL TAG CONFIG: disable-static 69521f0ac6a5Smrg 69531f0ac6a5Smrg# Local Variables: 69541f0ac6a5Smrg# mode:shell-script 69551f0ac6a5Smrg# sh-indentation:2 69561f0ac6a5Smrg# End: 6957