ltmain.sh revision 4b0ead49
14b0ead49Smrg# ltmain.sh - Provide generalized library-building support services.
24b0ead49Smrg# NOTE: Changing this file will not affect anything until you rerun configure.
34b0ead49Smrg#
44b0ead49Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
54b0ead49Smrg# Free Software Foundation, Inc.
64b0ead49Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
74b0ead49Smrg#
84b0ead49Smrg# This program is free software; you can redistribute it and/or modify
94b0ead49Smrg# it under the terms of the GNU General Public License as published by
104b0ead49Smrg# the Free Software Foundation; either version 2 of the License, or
114b0ead49Smrg# (at your option) any later version.
124b0ead49Smrg#
134b0ead49Smrg# This program is distributed in the hope that it will be useful, but
144b0ead49Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
154b0ead49Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
164b0ead49Smrg# General Public License for more details.
174b0ead49Smrg#
184b0ead49Smrg# You should have received a copy of the GNU General Public License
194b0ead49Smrg# along with this program; if not, write to the Free Software
204b0ead49Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
214b0ead49Smrg#
224b0ead49Smrg# As a special exception to the GNU General Public License, if you
234b0ead49Smrg# distribute this file as part of a program that contains a
244b0ead49Smrg# configuration script generated by Autoconf, you may include it under
254b0ead49Smrg# the same distribution terms that you use for the rest of that program.
264b0ead49Smrg
274b0ead49Smrgbasename="s,^.*/,,g"
284b0ead49Smrg
294b0ead49Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
304b0ead49Smrg# is ksh but when the shell is invoked as "sh" and the current value of
314b0ead49Smrg# the _XPG environment variable is not equal to 1 (one), the special
324b0ead49Smrg# positional parameter $0, within a function call, is the name of the
334b0ead49Smrg# function.
344b0ead49Smrgprogpath="$0"
354b0ead49Smrg
364b0ead49Smrg# The name of this program:
374b0ead49Smrgprogname=`echo "$progpath" | $SED $basename`
384b0ead49Smrgmodename="$progname"
394b0ead49Smrg
404b0ead49Smrg# Global variables:
414b0ead49SmrgEXIT_SUCCESS=0
424b0ead49SmrgEXIT_FAILURE=1
434b0ead49Smrg
444b0ead49SmrgPROGRAM=ltmain.sh
454b0ead49SmrgPACKAGE=libtool
464b0ead49SmrgVERSION="1.5.22 Debian 1.5.22-2"
474b0ead49SmrgTIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
484b0ead49Smrg
494b0ead49Smrg# See if we are running on zsh, and set the options which allow our
504b0ead49Smrg# commands through without removal of \ escapes.
514b0ead49Smrgif test -n "${ZSH_VERSION+set}" ; then
524b0ead49Smrg  setopt NO_GLOB_SUBST
534b0ead49Smrgfi
544b0ead49Smrg
554b0ead49Smrg# Check that we have a working $echo.
564b0ead49Smrgif test "X$1" = X--no-reexec; then
574b0ead49Smrg  # Discard the --no-reexec flag, and continue.
584b0ead49Smrg  shift
594b0ead49Smrgelif test "X$1" = X--fallback-echo; then
604b0ead49Smrg  # Avoid inline document here, it may be left over
614b0ead49Smrg  :
624b0ead49Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
634b0ead49Smrg  # Yippee, $echo works!
644b0ead49Smrg  :
654b0ead49Smrgelse
664b0ead49Smrg  # Restart under the correct shell, and then maybe $echo will work.
674b0ead49Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
684b0ead49Smrgfi
694b0ead49Smrg
704b0ead49Smrgif test "X$1" = X--fallback-echo; then
714b0ead49Smrg  # used as fallback echo
724b0ead49Smrg  shift
734b0ead49Smrg  cat <<EOF
744b0ead49Smrg$*
754b0ead49SmrgEOF
764b0ead49Smrg  exit $EXIT_SUCCESS
774b0ead49Smrgfi
784b0ead49Smrg
794b0ead49Smrgdefault_mode=
804b0ead49Smrghelp="Try \`$progname --help' for more information."
814b0ead49Smrgmagic="%%%MAGIC variable%%%"
824b0ead49Smrgmkdir="mkdir"
834b0ead49Smrgmv="mv -f"
844b0ead49Smrgrm="rm -f"
854b0ead49Smrg
864b0ead49Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
874b0ead49Smrg# metacharacters that are still active within double-quoted strings.
884b0ead49SmrgXsed="${SED}"' -e 1s/^X//'
894b0ead49Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
904b0ead49Smrg# test EBCDIC or ASCII
914b0ead49Smrgcase `echo X|tr X '\101'` in
924b0ead49Smrg A) # ASCII based system
934b0ead49Smrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
944b0ead49Smrg  SP2NL='tr \040 \012'
954b0ead49Smrg  NL2SP='tr \015\012 \040\040'
964b0ead49Smrg  ;;
974b0ead49Smrg *) # EBCDIC based system
984b0ead49Smrg  SP2NL='tr \100 \n'
994b0ead49Smrg  NL2SP='tr \r\n \100\100'
1004b0ead49Smrg  ;;
1014b0ead49Smrgesac
1024b0ead49Smrg
1034b0ead49Smrg# NLS nuisances.
1044b0ead49Smrg# Only set LANG and LC_ALL to C if already set.
1054b0ead49Smrg# These must not be set unconditionally because not all systems understand
1064b0ead49Smrg# e.g. LANG=C (notably SCO).
1074b0ead49Smrg# We save the old values to restore during execute mode.
1084b0ead49Smrgif test "${LC_ALL+set}" = set; then
1094b0ead49Smrg  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
1104b0ead49Smrgfi
1114b0ead49Smrgif test "${LANG+set}" = set; then
1124b0ead49Smrg  save_LANG="$LANG"; LANG=C; export LANG
1134b0ead49Smrgfi
1144b0ead49Smrg
1154b0ead49Smrg# Make sure IFS has a sensible default
1164b0ead49Smrglt_nl='
1174b0ead49Smrg'
1184b0ead49SmrgIFS=" 	$lt_nl"
1194b0ead49Smrg
1204b0ead49Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1214b0ead49Smrg  $echo "$modename: not configured to build any kind of library" 1>&2
1224b0ead49Smrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
1234b0ead49Smrg  exit $EXIT_FAILURE
1244b0ead49Smrgfi
1254b0ead49Smrg
1264b0ead49Smrg# Global variables.
1274b0ead49Smrgmode=$default_mode
1284b0ead49Smrgnonopt=
1294b0ead49Smrgprev=
1304b0ead49Smrgprevopt=
1314b0ead49Smrgrun=
1324b0ead49Smrgshow="$echo"
1334b0ead49Smrgshow_help=
1344b0ead49Smrgexecute_dlfiles=
1354b0ead49Smrgduplicate_deps=no
1364b0ead49Smrgpreserve_args=
1374b0ead49Smrglo2o="s/\\.lo\$/.${objext}/"
1384b0ead49Smrgo2lo="s/\\.${objext}\$/.lo/"
1394b0ead49Smrg
1404b0ead49Smrg#####################################
1414b0ead49Smrg# Shell function definitions:
1424b0ead49Smrg# This seems to be the best place for them
1434b0ead49Smrg
1444b0ead49Smrg# func_mktempdir [string]
1454b0ead49Smrg# Make a temporary directory that won't clash with other running
1464b0ead49Smrg# libtool processes, and avoids race conditions if possible.  If
1474b0ead49Smrg# given, STRING is the basename for that directory.
1484b0ead49Smrgfunc_mktempdir ()
1494b0ead49Smrg{
1504b0ead49Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
1514b0ead49Smrg
1524b0ead49Smrg    if test "$run" = ":"; then
1534b0ead49Smrg      # Return a directory name, but don't create it in dry-run mode
1544b0ead49Smrg      my_tmpdir="${my_template}-$$"
1554b0ead49Smrg    else
1564b0ead49Smrg
1574b0ead49Smrg      # If mktemp works, use that first and foremost
1584b0ead49Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
1594b0ead49Smrg
1604b0ead49Smrg      if test ! -d "$my_tmpdir"; then
1614b0ead49Smrg	# Failing that, at least try and use $RANDOM to avoid a race
1624b0ead49Smrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
1634b0ead49Smrg
1644b0ead49Smrg	save_mktempdir_umask=`umask`
1654b0ead49Smrg	umask 0077
1664b0ead49Smrg	$mkdir "$my_tmpdir"
1674b0ead49Smrg	umask $save_mktempdir_umask
1684b0ead49Smrg      fi
1694b0ead49Smrg
1704b0ead49Smrg      # If we're not in dry-run mode, bomb out on failure
1714b0ead49Smrg      test -d "$my_tmpdir" || {
1724b0ead49Smrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
1734b0ead49Smrg	exit $EXIT_FAILURE
1744b0ead49Smrg      }
1754b0ead49Smrg    fi
1764b0ead49Smrg
1774b0ead49Smrg    $echo "X$my_tmpdir" | $Xsed
1784b0ead49Smrg}
1794b0ead49Smrg
1804b0ead49Smrg
1814b0ead49Smrg# func_win32_libid arg
1824b0ead49Smrg# return the library type of file 'arg'
1834b0ead49Smrg#
1844b0ead49Smrg# Need a lot of goo to handle *both* DLLs and import libs
1854b0ead49Smrg# Has to be a shell function in order to 'eat' the argument
1864b0ead49Smrg# that is supplied when $file_magic_command is called.
1874b0ead49Smrgfunc_win32_libid ()
1884b0ead49Smrg{
1894b0ead49Smrg  win32_libid_type="unknown"
1904b0ead49Smrg  win32_fileres=`file -L $1 2>/dev/null`
1914b0ead49Smrg  case $win32_fileres in
1924b0ead49Smrg  *ar\ archive\ import\ library*) # definitely import
1934b0ead49Smrg    win32_libid_type="x86 archive import"
1944b0ead49Smrg    ;;
1954b0ead49Smrg  *ar\ archive*) # could be an import, or static
1964b0ead49Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
1974b0ead49Smrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
1984b0ead49Smrg      win32_nmres=`eval $NM -f posix -A $1 | \
1994b0ead49Smrg	$SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
2004b0ead49Smrg      case $win32_nmres in
2014b0ead49Smrg      import*)  win32_libid_type="x86 archive import";;
2024b0ead49Smrg      *)        win32_libid_type="x86 archive static";;
2034b0ead49Smrg      esac
2044b0ead49Smrg    fi
2054b0ead49Smrg    ;;
2064b0ead49Smrg  *DLL*)
2074b0ead49Smrg    win32_libid_type="x86 DLL"
2084b0ead49Smrg    ;;
2094b0ead49Smrg  *executable*) # but shell scripts are "executable" too...
2104b0ead49Smrg    case $win32_fileres in
2114b0ead49Smrg    *MS\ Windows\ PE\ Intel*)
2124b0ead49Smrg      win32_libid_type="x86 DLL"
2134b0ead49Smrg      ;;
2144b0ead49Smrg    esac
2154b0ead49Smrg    ;;
2164b0ead49Smrg  esac
2174b0ead49Smrg  $echo $win32_libid_type
2184b0ead49Smrg}
2194b0ead49Smrg
2204b0ead49Smrg
2214b0ead49Smrg# func_infer_tag arg
2224b0ead49Smrg# Infer tagged configuration to use if any are available and
2234b0ead49Smrg# if one wasn't chosen via the "--tag" command line option.
2244b0ead49Smrg# Only attempt this if the compiler in the base compile
2254b0ead49Smrg# command doesn't match the default compiler.
2264b0ead49Smrg# arg is usually of the form 'gcc ...'
2274b0ead49Smrgfunc_infer_tag ()
2284b0ead49Smrg{
2294b0ead49Smrg    if test -n "$available_tags" && test -z "$tagname"; then
2304b0ead49Smrg      CC_quoted=
2314b0ead49Smrg      for arg in $CC; do
2324b0ead49Smrg	case $arg in
2334b0ead49Smrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
2344b0ead49Smrg	  arg="\"$arg\""
2354b0ead49Smrg	  ;;
2364b0ead49Smrg	esac
2374b0ead49Smrg	CC_quoted="$CC_quoted $arg"
2384b0ead49Smrg      done
2394b0ead49Smrg      case $@ in
2404b0ead49Smrg      # Blanks in the command may have been stripped by the calling shell,
2414b0ead49Smrg      # but not from the CC environment variable when configure was run.
2424b0ead49Smrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
2434b0ead49Smrg      # Blanks at the start of $base_compile will cause this to fail
2444b0ead49Smrg      # if we don't check for them as well.
2454b0ead49Smrg      *)
2464b0ead49Smrg	for z in $available_tags; do
2474b0ead49Smrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
2484b0ead49Smrg	    # Evaluate the configuration.
2494b0ead49Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
2504b0ead49Smrg	    CC_quoted=
2514b0ead49Smrg	    for arg in $CC; do
2524b0ead49Smrg	    # Double-quote args containing other shell metacharacters.
2534b0ead49Smrg	    case $arg in
2544b0ead49Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
2554b0ead49Smrg	      arg="\"$arg\""
2564b0ead49Smrg	      ;;
2574b0ead49Smrg	    esac
2584b0ead49Smrg	    CC_quoted="$CC_quoted $arg"
2594b0ead49Smrg	  done
2604b0ead49Smrg	    case "$@ " in
2614b0ead49Smrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
2624b0ead49Smrg	      # The compiler in the base compile command matches
2634b0ead49Smrg	      # the one in the tagged configuration.
2644b0ead49Smrg	      # Assume this is the tagged configuration we want.
2654b0ead49Smrg	      tagname=$z
2664b0ead49Smrg	      break
2674b0ead49Smrg	      ;;
2684b0ead49Smrg	    esac
2694b0ead49Smrg	  fi
2704b0ead49Smrg	done
2714b0ead49Smrg	# If $tagname still isn't set, then no tagged configuration
2724b0ead49Smrg	# was found and let the user know that the "--tag" command
2734b0ead49Smrg	# line option must be used.
2744b0ead49Smrg	if test -z "$tagname"; then
2754b0ead49Smrg	  $echo "$modename: unable to infer tagged configuration"
2764b0ead49Smrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
2774b0ead49Smrg	  exit $EXIT_FAILURE
2784b0ead49Smrg#        else
2794b0ead49Smrg#          $echo "$modename: using $tagname tagged configuration"
2804b0ead49Smrg	fi
2814b0ead49Smrg	;;
2824b0ead49Smrg      esac
2834b0ead49Smrg    fi
2844b0ead49Smrg}
2854b0ead49Smrg
2864b0ead49Smrg
2874b0ead49Smrg# func_extract_an_archive dir oldlib
2884b0ead49Smrgfunc_extract_an_archive ()
2894b0ead49Smrg{
2904b0ead49Smrg    f_ex_an_ar_dir="$1"; shift
2914b0ead49Smrg    f_ex_an_ar_oldlib="$1"
2924b0ead49Smrg
2934b0ead49Smrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
2944b0ead49Smrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
2954b0ead49Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2964b0ead49Smrg     :
2974b0ead49Smrg    else
2984b0ead49Smrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
2994b0ead49Smrg      exit $EXIT_FAILURE
3004b0ead49Smrg    fi
3014b0ead49Smrg}
3024b0ead49Smrg
3034b0ead49Smrg# func_extract_archives gentop oldlib ...
3044b0ead49Smrgfunc_extract_archives ()
3054b0ead49Smrg{
3064b0ead49Smrg    my_gentop="$1"; shift
3074b0ead49Smrg    my_oldlibs=${1+"$@"}
3084b0ead49Smrg    my_oldobjs=""
3094b0ead49Smrg    my_xlib=""
3104b0ead49Smrg    my_xabs=""
3114b0ead49Smrg    my_xdir=""
3124b0ead49Smrg    my_status=""
3134b0ead49Smrg
3144b0ead49Smrg    $show "${rm}r $my_gentop"
3154b0ead49Smrg    $run ${rm}r "$my_gentop"
3164b0ead49Smrg    $show "$mkdir $my_gentop"
3174b0ead49Smrg    $run $mkdir "$my_gentop"
3184b0ead49Smrg    my_status=$?
3194b0ead49Smrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
3204b0ead49Smrg      exit $my_status
3214b0ead49Smrg    fi
3224b0ead49Smrg
3234b0ead49Smrg    for my_xlib in $my_oldlibs; do
3244b0ead49Smrg      # Extract the objects.
3254b0ead49Smrg      case $my_xlib in
3264b0ead49Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3274b0ead49Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
3284b0ead49Smrg      esac
3294b0ead49Smrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
3304b0ead49Smrg      my_xdir="$my_gentop/$my_xlib"
3314b0ead49Smrg
3324b0ead49Smrg      $show "${rm}r $my_xdir"
3334b0ead49Smrg      $run ${rm}r "$my_xdir"
3344b0ead49Smrg      $show "$mkdir $my_xdir"
3354b0ead49Smrg      $run $mkdir "$my_xdir"
3364b0ead49Smrg      exit_status=$?
3374b0ead49Smrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
3384b0ead49Smrg	exit $exit_status
3394b0ead49Smrg      fi
3404b0ead49Smrg      case $host in
3414b0ead49Smrg      *-darwin*)
3424b0ead49Smrg	$show "Extracting $my_xabs"
3434b0ead49Smrg	# Do not bother doing anything if just a dry run
3444b0ead49Smrg	if test -z "$run"; then
3454b0ead49Smrg	  darwin_orig_dir=`pwd`
3464b0ead49Smrg	  cd $my_xdir || exit $?
3474b0ead49Smrg	  darwin_archive=$my_xabs
3484b0ead49Smrg	  darwin_curdir=`pwd`
3494b0ead49Smrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
3504b0ead49Smrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
3514b0ead49Smrg	  if test -n "$darwin_arches"; then 
3524b0ead49Smrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
3534b0ead49Smrg	    darwin_arch=
3544b0ead49Smrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
3554b0ead49Smrg	    for darwin_arch in  $darwin_arches ; do
3564b0ead49Smrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3574b0ead49Smrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3584b0ead49Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3594b0ead49Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3604b0ead49Smrg	      cd "$darwin_curdir"
3614b0ead49Smrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3624b0ead49Smrg	    done # $darwin_arches
3634b0ead49Smrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
3644b0ead49Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
3654b0ead49Smrg	    darwin_file=
3664b0ead49Smrg	    darwin_files=
3674b0ead49Smrg	    for darwin_file in $darwin_filelist; do
3684b0ead49Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
3694b0ead49Smrg	      lipo -create -output "$darwin_file" $darwin_files
3704b0ead49Smrg	    done # $darwin_filelist
3714b0ead49Smrg	    ${rm}r unfat-$$
3724b0ead49Smrg	    cd "$darwin_orig_dir"
3734b0ead49Smrg	  else
3744b0ead49Smrg	    cd "$darwin_orig_dir"
3754b0ead49Smrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
3764b0ead49Smrg	  fi # $darwin_arches
3774b0ead49Smrg	fi # $run
3784b0ead49Smrg	;;
3794b0ead49Smrg      *)
3804b0ead49Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
3814b0ead49Smrg        ;;
3824b0ead49Smrg      esac
3834b0ead49Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3844b0ead49Smrg    done
3854b0ead49Smrg    func_extract_archives_result="$my_oldobjs"
3864b0ead49Smrg}
3874b0ead49Smrg# End of Shell function definitions
3884b0ead49Smrg#####################################
3894b0ead49Smrg
3904b0ead49Smrg# Darwin sucks
3914b0ead49Smrgeval std_shrext=\"$shrext_cmds\"
3924b0ead49Smrg
3934b0ead49Smrgdisable_libs=no
3944b0ead49Smrg
3954b0ead49Smrg# Parse our command line options once, thoroughly.
3964b0ead49Smrgwhile test "$#" -gt 0
3974b0ead49Smrgdo
3984b0ead49Smrg  arg="$1"
3994b0ead49Smrg  shift
4004b0ead49Smrg
4014b0ead49Smrg  case $arg in
4024b0ead49Smrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
4034b0ead49Smrg  *) optarg= ;;
4044b0ead49Smrg  esac
4054b0ead49Smrg
4064b0ead49Smrg  # If the previous option needs an argument, assign it.
4074b0ead49Smrg  if test -n "$prev"; then
4084b0ead49Smrg    case $prev in
4094b0ead49Smrg    execute_dlfiles)
4104b0ead49Smrg      execute_dlfiles="$execute_dlfiles $arg"
4114b0ead49Smrg      ;;
4124b0ead49Smrg    tag)
4134b0ead49Smrg      tagname="$arg"
4144b0ead49Smrg      preserve_args="${preserve_args}=$arg"
4154b0ead49Smrg
4164b0ead49Smrg      # Check whether tagname contains only valid characters
4174b0ead49Smrg      case $tagname in
4184b0ead49Smrg      *[!-_A-Za-z0-9,/]*)
4194b0ead49Smrg	$echo "$progname: invalid tag name: $tagname" 1>&2
4204b0ead49Smrg	exit $EXIT_FAILURE
4214b0ead49Smrg	;;
4224b0ead49Smrg      esac
4234b0ead49Smrg
4244b0ead49Smrg      case $tagname in
4254b0ead49Smrg      CC)
4264b0ead49Smrg	# Don't test for the "default" C tag, as we know, it's there, but
4274b0ead49Smrg	# not specially marked.
4284b0ead49Smrg	;;
4294b0ead49Smrg      *)
4304b0ead49Smrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
4314b0ead49Smrg	  taglist="$taglist $tagname"
4324b0ead49Smrg	  # Evaluate the configuration.
4334b0ead49Smrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
4344b0ead49Smrg	else
4354b0ead49Smrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
4364b0ead49Smrg	fi
4374b0ead49Smrg	;;
4384b0ead49Smrg      esac
4394b0ead49Smrg      ;;
4404b0ead49Smrg    *)
4414b0ead49Smrg      eval "$prev=\$arg"
4424b0ead49Smrg      ;;
4434b0ead49Smrg    esac
4444b0ead49Smrg
4454b0ead49Smrg    prev=
4464b0ead49Smrg    prevopt=
4474b0ead49Smrg    continue
4484b0ead49Smrg  fi
4494b0ead49Smrg
4504b0ead49Smrg  # Have we seen a non-optional argument yet?
4514b0ead49Smrg  case $arg in
4524b0ead49Smrg  --help)
4534b0ead49Smrg    show_help=yes
4544b0ead49Smrg    ;;
4554b0ead49Smrg
4564b0ead49Smrg  --version)
4574b0ead49Smrg    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
4584b0ead49Smrg    $echo
4594b0ead49Smrg    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
4604b0ead49Smrg    $echo "This is free software; see the source for copying conditions.  There is NO"
4614b0ead49Smrg    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
4624b0ead49Smrg    exit $?
4634b0ead49Smrg    ;;
4644b0ead49Smrg
4654b0ead49Smrg  --config)
4664b0ead49Smrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
4674b0ead49Smrg    # Now print the configurations for the tags.
4684b0ead49Smrg    for tagname in $taglist; do
4694b0ead49Smrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
4704b0ead49Smrg    done
4714b0ead49Smrg    exit $?
4724b0ead49Smrg    ;;
4734b0ead49Smrg
4744b0ead49Smrg  --debug)
4754b0ead49Smrg    $echo "$progname: enabling shell trace mode"
4764b0ead49Smrg    set -x
4774b0ead49Smrg    preserve_args="$preserve_args $arg"
4784b0ead49Smrg    ;;
4794b0ead49Smrg
4804b0ead49Smrg  --dry-run | -n)
4814b0ead49Smrg    run=:
4824b0ead49Smrg    ;;
4834b0ead49Smrg
4844b0ead49Smrg  --features)
4854b0ead49Smrg    $echo "host: $host"
4864b0ead49Smrg    if test "$build_libtool_libs" = yes; then
4874b0ead49Smrg      $echo "enable shared libraries"
4884b0ead49Smrg    else
4894b0ead49Smrg      $echo "disable shared libraries"
4904b0ead49Smrg    fi
4914b0ead49Smrg    if test "$build_old_libs" = yes; then
4924b0ead49Smrg      $echo "enable static libraries"
4934b0ead49Smrg    else
4944b0ead49Smrg      $echo "disable static libraries"
4954b0ead49Smrg    fi
4964b0ead49Smrg    exit $?
4974b0ead49Smrg    ;;
4984b0ead49Smrg
4994b0ead49Smrg  --finish) mode="finish" ;;
5004b0ead49Smrg
5014b0ead49Smrg  --mode) prevopt="--mode" prev=mode ;;
5024b0ead49Smrg  --mode=*) mode="$optarg" ;;
5034b0ead49Smrg
5044b0ead49Smrg  --preserve-dup-deps) duplicate_deps="yes" ;;
5054b0ead49Smrg
5064b0ead49Smrg  --quiet | --silent)
5074b0ead49Smrg    show=:
5084b0ead49Smrg    preserve_args="$preserve_args $arg"
5094b0ead49Smrg    ;;
5104b0ead49Smrg
5114b0ead49Smrg  --tag)
5124b0ead49Smrg    prevopt="--tag"
5134b0ead49Smrg    prev=tag
5144b0ead49Smrg    preserve_args="$preserve_args --tag"
5154b0ead49Smrg    ;;
5164b0ead49Smrg  --tag=*)
5174b0ead49Smrg    set tag "$optarg" ${1+"$@"}
5184b0ead49Smrg    shift
5194b0ead49Smrg    prev=tag
5204b0ead49Smrg    preserve_args="$preserve_args --tag"
5214b0ead49Smrg    ;;
5224b0ead49Smrg
5234b0ead49Smrg  -dlopen)
5244b0ead49Smrg    prevopt="-dlopen"
5254b0ead49Smrg    prev=execute_dlfiles
5264b0ead49Smrg    ;;
5274b0ead49Smrg
5284b0ead49Smrg  -*)
5294b0ead49Smrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
5304b0ead49Smrg    $echo "$help" 1>&2
5314b0ead49Smrg    exit $EXIT_FAILURE
5324b0ead49Smrg    ;;
5334b0ead49Smrg
5344b0ead49Smrg  *)
5354b0ead49Smrg    nonopt="$arg"
5364b0ead49Smrg    break
5374b0ead49Smrg    ;;
5384b0ead49Smrg  esac
5394b0ead49Smrgdone
5404b0ead49Smrg
5414b0ead49Smrgif test -n "$prevopt"; then
5424b0ead49Smrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
5434b0ead49Smrg  $echo "$help" 1>&2
5444b0ead49Smrg  exit $EXIT_FAILURE
5454b0ead49Smrgfi
5464b0ead49Smrg
5474b0ead49Smrgcase $disable_libs in
5484b0ead49Smrgno) 
5494b0ead49Smrg  ;;
5504b0ead49Smrgshared)
5514b0ead49Smrg  build_libtool_libs=no
5524b0ead49Smrg  build_old_libs=yes
5534b0ead49Smrg  ;;
5544b0ead49Smrgstatic)
5554b0ead49Smrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
5564b0ead49Smrg  ;;
5574b0ead49Smrgesac
5584b0ead49Smrg
5594b0ead49Smrg# If this variable is set in any of the actions, the command in it
5604b0ead49Smrg# will be execed at the end.  This prevents here-documents from being
5614b0ead49Smrg# left over by shells.
5624b0ead49Smrgexec_cmd=
5634b0ead49Smrg
5644b0ead49Smrgif test -z "$show_help"; then
5654b0ead49Smrg
5664b0ead49Smrg  # Infer the operation mode.
5674b0ead49Smrg  if test -z "$mode"; then
5684b0ead49Smrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
5694b0ead49Smrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
5704b0ead49Smrg    case $nonopt in
5714b0ead49Smrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
5724b0ead49Smrg      mode=link
5734b0ead49Smrg      for arg
5744b0ead49Smrg      do
5754b0ead49Smrg	case $arg in
5764b0ead49Smrg	-c)
5774b0ead49Smrg	   mode=compile
5784b0ead49Smrg	   break
5794b0ead49Smrg	   ;;
5804b0ead49Smrg	esac
5814b0ead49Smrg      done
5824b0ead49Smrg      ;;
5834b0ead49Smrg    *db | *dbx | *strace | *truss)
5844b0ead49Smrg      mode=execute
5854b0ead49Smrg      ;;
5864b0ead49Smrg    *install*|cp|mv)
5874b0ead49Smrg      mode=install
5884b0ead49Smrg      ;;
5894b0ead49Smrg    *rm)
5904b0ead49Smrg      mode=uninstall
5914b0ead49Smrg      ;;
5924b0ead49Smrg    *)
5934b0ead49Smrg      # If we have no mode, but dlfiles were specified, then do execute mode.
5944b0ead49Smrg      test -n "$execute_dlfiles" && mode=execute
5954b0ead49Smrg
5964b0ead49Smrg      # Just use the default operation mode.
5974b0ead49Smrg      if test -z "$mode"; then
5984b0ead49Smrg	if test -n "$nonopt"; then
5994b0ead49Smrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
6004b0ead49Smrg	else
6014b0ead49Smrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
6024b0ead49Smrg	fi
6034b0ead49Smrg      fi
6044b0ead49Smrg      ;;
6054b0ead49Smrg    esac
6064b0ead49Smrg  fi
6074b0ead49Smrg
6084b0ead49Smrg  # Only execute mode is allowed to have -dlopen flags.
6094b0ead49Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
6104b0ead49Smrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
6114b0ead49Smrg    $echo "$help" 1>&2
6124b0ead49Smrg    exit $EXIT_FAILURE
6134b0ead49Smrg  fi
6144b0ead49Smrg
6154b0ead49Smrg  # Change the help message to a mode-specific one.
6164b0ead49Smrg  generic_help="$help"
6174b0ead49Smrg  help="Try \`$modename --help --mode=$mode' for more information."
6184b0ead49Smrg
6194b0ead49Smrg  # These modes are in order of execution frequency so that they run quickly.
6204b0ead49Smrg  case $mode in
6214b0ead49Smrg  # libtool compile mode
6224b0ead49Smrg  compile)
6234b0ead49Smrg    modename="$modename: compile"
6244b0ead49Smrg    # Get the compilation command and the source file.
6254b0ead49Smrg    base_compile=
6264b0ead49Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
6274b0ead49Smrg    suppress_opt=yes
6284b0ead49Smrg    suppress_output=
6294b0ead49Smrg    arg_mode=normal
6304b0ead49Smrg    libobj=
6314b0ead49Smrg    later=
6324b0ead49Smrg
6334b0ead49Smrg    for arg
6344b0ead49Smrg    do
6354b0ead49Smrg      case $arg_mode in
6364b0ead49Smrg      arg  )
6374b0ead49Smrg	# do not "continue".  Instead, add this to base_compile
6384b0ead49Smrg	lastarg="$arg"
6394b0ead49Smrg	arg_mode=normal
6404b0ead49Smrg	;;
6414b0ead49Smrg
6424b0ead49Smrg      target )
6434b0ead49Smrg	libobj="$arg"
6444b0ead49Smrg	arg_mode=normal
6454b0ead49Smrg	continue
6464b0ead49Smrg	;;
6474b0ead49Smrg
6484b0ead49Smrg      normal )
6494b0ead49Smrg	# Accept any command-line options.
6504b0ead49Smrg	case $arg in
6514b0ead49Smrg	-o)
6524b0ead49Smrg	  if test -n "$libobj" ; then
6534b0ead49Smrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
6544b0ead49Smrg	    exit $EXIT_FAILURE
6554b0ead49Smrg	  fi
6564b0ead49Smrg	  arg_mode=target
6574b0ead49Smrg	  continue
6584b0ead49Smrg	  ;;
6594b0ead49Smrg
6604b0ead49Smrg	-static | -prefer-pic | -prefer-non-pic)
6614b0ead49Smrg	  later="$later $arg"
6624b0ead49Smrg	  continue
6634b0ead49Smrg	  ;;
6644b0ead49Smrg
6654b0ead49Smrg	-no-suppress)
6664b0ead49Smrg	  suppress_opt=no
6674b0ead49Smrg	  continue
6684b0ead49Smrg	  ;;
6694b0ead49Smrg
6704b0ead49Smrg	-Xcompiler)
6714b0ead49Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
6724b0ead49Smrg	  continue      #  The current "srcfile" will either be retained or
6734b0ead49Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
6744b0ead49Smrg
6754b0ead49Smrg	-Wc,*)
6764b0ead49Smrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
6774b0ead49Smrg	  lastarg=
6784b0ead49Smrg	  save_ifs="$IFS"; IFS=','
6794b0ead49Smrg 	  for arg in $args; do
6804b0ead49Smrg	    IFS="$save_ifs"
6814b0ead49Smrg
6824b0ead49Smrg	    # Double-quote args containing other shell metacharacters.
6834b0ead49Smrg	    # Many Bourne shells cannot handle close brackets correctly
6844b0ead49Smrg	    # in scan sets, so we specify it separately.
6854b0ead49Smrg	    case $arg in
6864b0ead49Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6874b0ead49Smrg	      arg="\"$arg\""
6884b0ead49Smrg	      ;;
6894b0ead49Smrg	    esac
6904b0ead49Smrg	    lastarg="$lastarg $arg"
6914b0ead49Smrg	  done
6924b0ead49Smrg	  IFS="$save_ifs"
6934b0ead49Smrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
6944b0ead49Smrg
6954b0ead49Smrg	  # Add the arguments to base_compile.
6964b0ead49Smrg	  base_compile="$base_compile $lastarg"
6974b0ead49Smrg	  continue
6984b0ead49Smrg	  ;;
6994b0ead49Smrg
7004b0ead49Smrg	* )
7014b0ead49Smrg	  # Accept the current argument as the source file.
7024b0ead49Smrg	  # The previous "srcfile" becomes the current argument.
7034b0ead49Smrg	  #
7044b0ead49Smrg	  lastarg="$srcfile"
7054b0ead49Smrg	  srcfile="$arg"
7064b0ead49Smrg	  ;;
7074b0ead49Smrg	esac  #  case $arg
7084b0ead49Smrg	;;
7094b0ead49Smrg      esac    #  case $arg_mode
7104b0ead49Smrg
7114b0ead49Smrg      # Aesthetically quote the previous argument.
7124b0ead49Smrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
7134b0ead49Smrg
7144b0ead49Smrg      case $lastarg in
7154b0ead49Smrg      # Double-quote args containing other shell metacharacters.
7164b0ead49Smrg      # Many Bourne shells cannot handle close brackets correctly
7174b0ead49Smrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
7184b0ead49Smrg      # in scan sets (worked around with variable expansion),
7194b0ead49Smrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
7204b0ead49Smrg      # at all, so we specify them separately.
7214b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
7224b0ead49Smrg	lastarg="\"$lastarg\""
7234b0ead49Smrg	;;
7244b0ead49Smrg      esac
7254b0ead49Smrg
7264b0ead49Smrg      base_compile="$base_compile $lastarg"
7274b0ead49Smrg    done # for arg
7284b0ead49Smrg
7294b0ead49Smrg    case $arg_mode in
7304b0ead49Smrg    arg)
7314b0ead49Smrg      $echo "$modename: you must specify an argument for -Xcompile"
7324b0ead49Smrg      exit $EXIT_FAILURE
7334b0ead49Smrg      ;;
7344b0ead49Smrg    target)
7354b0ead49Smrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
7364b0ead49Smrg      exit $EXIT_FAILURE
7374b0ead49Smrg      ;;
7384b0ead49Smrg    *)
7394b0ead49Smrg      # Get the name of the library object.
7404b0ead49Smrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
7414b0ead49Smrg      ;;
7424b0ead49Smrg    esac
7434b0ead49Smrg
7444b0ead49Smrg    # Recognize several different file suffixes.
7454b0ead49Smrg    # If the user specifies -o file.o, it is replaced with file.lo
7464b0ead49Smrg    xform='[cCFSifmso]'
7474b0ead49Smrg    case $libobj in
7484b0ead49Smrg    *.ada) xform=ada ;;
7494b0ead49Smrg    *.adb) xform=adb ;;
7504b0ead49Smrg    *.ads) xform=ads ;;
7514b0ead49Smrg    *.asm) xform=asm ;;
7524b0ead49Smrg    *.c++) xform=c++ ;;
7534b0ead49Smrg    *.cc) xform=cc ;;
7544b0ead49Smrg    *.ii) xform=ii ;;
7554b0ead49Smrg    *.class) xform=class ;;
7564b0ead49Smrg    *.cpp) xform=cpp ;;
7574b0ead49Smrg    *.cxx) xform=cxx ;;
7584b0ead49Smrg    *.f90) xform=f90 ;;
7594b0ead49Smrg    *.for) xform=for ;;
7604b0ead49Smrg    *.java) xform=java ;;
7614b0ead49Smrg    esac
7624b0ead49Smrg
7634b0ead49Smrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
7644b0ead49Smrg
7654b0ead49Smrg    case $libobj in
7664b0ead49Smrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
7674b0ead49Smrg    *)
7684b0ead49Smrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
7694b0ead49Smrg      exit $EXIT_FAILURE
7704b0ead49Smrg      ;;
7714b0ead49Smrg    esac
7724b0ead49Smrg
7734b0ead49Smrg    func_infer_tag $base_compile
7744b0ead49Smrg
7754b0ead49Smrg    for arg in $later; do
7764b0ead49Smrg      case $arg in
7774b0ead49Smrg      -static)
7784b0ead49Smrg	build_old_libs=yes
7794b0ead49Smrg	continue
7804b0ead49Smrg	;;
7814b0ead49Smrg
7824b0ead49Smrg      -prefer-pic)
7834b0ead49Smrg	pic_mode=yes
7844b0ead49Smrg	continue
7854b0ead49Smrg	;;
7864b0ead49Smrg
7874b0ead49Smrg      -prefer-non-pic)
7884b0ead49Smrg	pic_mode=no
7894b0ead49Smrg	continue
7904b0ead49Smrg	;;
7914b0ead49Smrg      esac
7924b0ead49Smrg    done
7934b0ead49Smrg
7944b0ead49Smrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
7954b0ead49Smrg    case $qlibobj in
7964b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
7974b0ead49Smrg	qlibobj="\"$qlibobj\"" ;;
7984b0ead49Smrg    esac
7994b0ead49Smrg    test "X$libobj" != "X$qlibobj" \
8004b0ead49Smrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
8014b0ead49Smrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
8024b0ead49Smrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
8034b0ead49Smrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
8044b0ead49Smrg    if test "X$xdir" = "X$obj"; then
8054b0ead49Smrg      xdir=
8064b0ead49Smrg    else
8074b0ead49Smrg      xdir=$xdir/
8084b0ead49Smrg    fi
8094b0ead49Smrg    lobj=${xdir}$objdir/$objname
8104b0ead49Smrg
8114b0ead49Smrg    if test -z "$base_compile"; then
8124b0ead49Smrg      $echo "$modename: you must specify a compilation command" 1>&2
8134b0ead49Smrg      $echo "$help" 1>&2
8144b0ead49Smrg      exit $EXIT_FAILURE
8154b0ead49Smrg    fi
8164b0ead49Smrg
8174b0ead49Smrg    # Delete any leftover library objects.
8184b0ead49Smrg    if test "$build_old_libs" = yes; then
8194b0ead49Smrg      removelist="$obj $lobj $libobj ${libobj}T"
8204b0ead49Smrg    else
8214b0ead49Smrg      removelist="$lobj $libobj ${libobj}T"
8224b0ead49Smrg    fi
8234b0ead49Smrg
8244b0ead49Smrg    $run $rm $removelist
8254b0ead49Smrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
8264b0ead49Smrg
8274b0ead49Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
8284b0ead49Smrg    case $host_os in
8294b0ead49Smrg    cygwin* | mingw* | pw32* | os2*)
8304b0ead49Smrg      pic_mode=default
8314b0ead49Smrg      ;;
8324b0ead49Smrg    esac
8334b0ead49Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
8344b0ead49Smrg      # non-PIC code in shared libraries is not supported
8354b0ead49Smrg      pic_mode=default
8364b0ead49Smrg    fi
8374b0ead49Smrg
8384b0ead49Smrg    # Calculate the filename of the output object if compiler does
8394b0ead49Smrg    # not support -o with -c
8404b0ead49Smrg    if test "$compiler_c_o" = no; then
8414b0ead49Smrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
8424b0ead49Smrg      lockfile="$output_obj.lock"
8434b0ead49Smrg      removelist="$removelist $output_obj $lockfile"
8444b0ead49Smrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
8454b0ead49Smrg    else
8464b0ead49Smrg      output_obj=
8474b0ead49Smrg      need_locks=no
8484b0ead49Smrg      lockfile=
8494b0ead49Smrg    fi
8504b0ead49Smrg
8514b0ead49Smrg    # Lock this critical section if it is needed
8524b0ead49Smrg    # We use this script file to make the link, it avoids creating a new file
8534b0ead49Smrg    if test "$need_locks" = yes; then
8544b0ead49Smrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
8554b0ead49Smrg	$show "Waiting for $lockfile to be removed"
8564b0ead49Smrg	sleep 2
8574b0ead49Smrg      done
8584b0ead49Smrg    elif test "$need_locks" = warn; then
8594b0ead49Smrg      if test -f "$lockfile"; then
8604b0ead49Smrg	$echo "\
8614b0ead49Smrg*** ERROR, $lockfile exists and contains:
8624b0ead49Smrg`cat $lockfile 2>/dev/null`
8634b0ead49Smrg
8644b0ead49SmrgThis indicates that another process is trying to use the same
8654b0ead49Smrgtemporary object file, and libtool could not work around it because
8664b0ead49Smrgyour compiler does not support \`-c' and \`-o' together.  If you
8674b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better
8684b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better
8694b0ead49Smrgcompiler."
8704b0ead49Smrg
8714b0ead49Smrg	$run $rm $removelist
8724b0ead49Smrg	exit $EXIT_FAILURE
8734b0ead49Smrg      fi
8744b0ead49Smrg      $echo "$srcfile" > "$lockfile"
8754b0ead49Smrg    fi
8764b0ead49Smrg
8774b0ead49Smrg    if test -n "$fix_srcfile_path"; then
8784b0ead49Smrg      eval srcfile=\"$fix_srcfile_path\"
8794b0ead49Smrg    fi
8804b0ead49Smrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
8814b0ead49Smrg    case $qsrcfile in
8824b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
8834b0ead49Smrg      qsrcfile="\"$qsrcfile\"" ;;
8844b0ead49Smrg    esac
8854b0ead49Smrg
8864b0ead49Smrg    $run $rm "$libobj" "${libobj}T"
8874b0ead49Smrg
8884b0ead49Smrg    # Create a libtool object file (analogous to a ".la" file),
8894b0ead49Smrg    # but don't create it if we're doing a dry run.
8904b0ead49Smrg    test -z "$run" && cat > ${libobj}T <<EOF
8914b0ead49Smrg# $libobj - a libtool object file
8924b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
8934b0ead49Smrg#
8944b0ead49Smrg# Please DO NOT delete this file!
8954b0ead49Smrg# It is necessary for linking the library.
8964b0ead49Smrg
8974b0ead49Smrg# Name of the PIC object.
8984b0ead49SmrgEOF
8994b0ead49Smrg
9004b0ead49Smrg    # Only build a PIC object if we are building libtool libraries.
9014b0ead49Smrg    if test "$build_libtool_libs" = yes; then
9024b0ead49Smrg      # Without this assignment, base_compile gets emptied.
9034b0ead49Smrg      fbsd_hideous_sh_bug=$base_compile
9044b0ead49Smrg
9054b0ead49Smrg      if test "$pic_mode" != no; then
9064b0ead49Smrg	command="$base_compile $qsrcfile $pic_flag"
9074b0ead49Smrg      else
9084b0ead49Smrg	# Don't build PIC code
9094b0ead49Smrg	command="$base_compile $qsrcfile"
9104b0ead49Smrg      fi
9114b0ead49Smrg
9124b0ead49Smrg      if test ! -d "${xdir}$objdir"; then
9134b0ead49Smrg	$show "$mkdir ${xdir}$objdir"
9144b0ead49Smrg	$run $mkdir ${xdir}$objdir
9154b0ead49Smrg	exit_status=$?
9164b0ead49Smrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
9174b0ead49Smrg	  exit $exit_status
9184b0ead49Smrg	fi
9194b0ead49Smrg      fi
9204b0ead49Smrg
9214b0ead49Smrg      if test -z "$output_obj"; then
9224b0ead49Smrg	# Place PIC objects in $objdir
9234b0ead49Smrg	command="$command -o $lobj"
9244b0ead49Smrg      fi
9254b0ead49Smrg
9264b0ead49Smrg      $run $rm "$lobj" "$output_obj"
9274b0ead49Smrg
9284b0ead49Smrg      $show "$command"
9294b0ead49Smrg      if $run eval "$command"; then :
9304b0ead49Smrg      else
9314b0ead49Smrg	test -n "$output_obj" && $run $rm $removelist
9324b0ead49Smrg	exit $EXIT_FAILURE
9334b0ead49Smrg      fi
9344b0ead49Smrg
9354b0ead49Smrg      if test "$need_locks" = warn &&
9364b0ead49Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
9374b0ead49Smrg	$echo "\
9384b0ead49Smrg*** ERROR, $lockfile contains:
9394b0ead49Smrg`cat $lockfile 2>/dev/null`
9404b0ead49Smrg
9414b0ead49Smrgbut it should contain:
9424b0ead49Smrg$srcfile
9434b0ead49Smrg
9444b0ead49SmrgThis indicates that another process is trying to use the same
9454b0ead49Smrgtemporary object file, and libtool could not work around it because
9464b0ead49Smrgyour compiler does not support \`-c' and \`-o' together.  If you
9474b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better
9484b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better
9494b0ead49Smrgcompiler."
9504b0ead49Smrg
9514b0ead49Smrg	$run $rm $removelist
9524b0ead49Smrg	exit $EXIT_FAILURE
9534b0ead49Smrg      fi
9544b0ead49Smrg
9554b0ead49Smrg      # Just move the object if needed, then go on to compile the next one
9564b0ead49Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
9574b0ead49Smrg	$show "$mv $output_obj $lobj"
9584b0ead49Smrg	if $run $mv $output_obj $lobj; then :
9594b0ead49Smrg	else
9604b0ead49Smrg	  error=$?
9614b0ead49Smrg	  $run $rm $removelist
9624b0ead49Smrg	  exit $error
9634b0ead49Smrg	fi
9644b0ead49Smrg      fi
9654b0ead49Smrg
9664b0ead49Smrg      # Append the name of the PIC object to the libtool object file.
9674b0ead49Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
9684b0ead49Smrgpic_object='$objdir/$objname'
9694b0ead49Smrg
9704b0ead49SmrgEOF
9714b0ead49Smrg
9724b0ead49Smrg      # Allow error messages only from the first compilation.
9734b0ead49Smrg      if test "$suppress_opt" = yes; then
9744b0ead49Smrg        suppress_output=' >/dev/null 2>&1'
9754b0ead49Smrg      fi
9764b0ead49Smrg    else
9774b0ead49Smrg      # No PIC object so indicate it doesn't exist in the libtool
9784b0ead49Smrg      # object file.
9794b0ead49Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
9804b0ead49Smrgpic_object=none
9814b0ead49Smrg
9824b0ead49SmrgEOF
9834b0ead49Smrg    fi
9844b0ead49Smrg
9854b0ead49Smrg    # Only build a position-dependent object if we build old libraries.
9864b0ead49Smrg    if test "$build_old_libs" = yes; then
9874b0ead49Smrg      if test "$pic_mode" != yes; then
9884b0ead49Smrg	# Don't build PIC code
9894b0ead49Smrg	command="$base_compile $qsrcfile"
9904b0ead49Smrg      else
9914b0ead49Smrg	command="$base_compile $qsrcfile $pic_flag"
9924b0ead49Smrg      fi
9934b0ead49Smrg      if test "$compiler_c_o" = yes; then
9944b0ead49Smrg	command="$command -o $obj"
9954b0ead49Smrg      fi
9964b0ead49Smrg
9974b0ead49Smrg      # Suppress compiler output if we already did a PIC compilation.
9984b0ead49Smrg      command="$command$suppress_output"
9994b0ead49Smrg      $run $rm "$obj" "$output_obj"
10004b0ead49Smrg      $show "$command"
10014b0ead49Smrg      if $run eval "$command"; then :
10024b0ead49Smrg      else
10034b0ead49Smrg	$run $rm $removelist
10044b0ead49Smrg	exit $EXIT_FAILURE
10054b0ead49Smrg      fi
10064b0ead49Smrg
10074b0ead49Smrg      if test "$need_locks" = warn &&
10084b0ead49Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
10094b0ead49Smrg	$echo "\
10104b0ead49Smrg*** ERROR, $lockfile contains:
10114b0ead49Smrg`cat $lockfile 2>/dev/null`
10124b0ead49Smrg
10134b0ead49Smrgbut it should contain:
10144b0ead49Smrg$srcfile
10154b0ead49Smrg
10164b0ead49SmrgThis indicates that another process is trying to use the same
10174b0ead49Smrgtemporary object file, and libtool could not work around it because
10184b0ead49Smrgyour compiler does not support \`-c' and \`-o' together.  If you
10194b0ead49Smrgrepeat this compilation, it may succeed, by chance, but you had better
10204b0ead49Smrgavoid parallel builds (make -j) in this platform, or get a better
10214b0ead49Smrgcompiler."
10224b0ead49Smrg
10234b0ead49Smrg	$run $rm $removelist
10244b0ead49Smrg	exit $EXIT_FAILURE
10254b0ead49Smrg      fi
10264b0ead49Smrg
10274b0ead49Smrg      # Just move the object if needed
10284b0ead49Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
10294b0ead49Smrg	$show "$mv $output_obj $obj"
10304b0ead49Smrg	if $run $mv $output_obj $obj; then :
10314b0ead49Smrg	else
10324b0ead49Smrg	  error=$?
10334b0ead49Smrg	  $run $rm $removelist
10344b0ead49Smrg	  exit $error
10354b0ead49Smrg	fi
10364b0ead49Smrg      fi
10374b0ead49Smrg
10384b0ead49Smrg      # Append the name of the non-PIC object the libtool object file.
10394b0ead49Smrg      # Only append if the libtool object file exists.
10404b0ead49Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
10414b0ead49Smrg# Name of the non-PIC object.
10424b0ead49Smrgnon_pic_object='$objname'
10434b0ead49Smrg
10444b0ead49SmrgEOF
10454b0ead49Smrg    else
10464b0ead49Smrg      # Append the name of the non-PIC object the libtool object file.
10474b0ead49Smrg      # Only append if the libtool object file exists.
10484b0ead49Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
10494b0ead49Smrg# Name of the non-PIC object.
10504b0ead49Smrgnon_pic_object=none
10514b0ead49Smrg
10524b0ead49SmrgEOF
10534b0ead49Smrg    fi
10544b0ead49Smrg
10554b0ead49Smrg    $run $mv "${libobj}T" "${libobj}"
10564b0ead49Smrg
10574b0ead49Smrg    # Unlock the critical section if it was locked
10584b0ead49Smrg    if test "$need_locks" != no; then
10594b0ead49Smrg      $run $rm "$lockfile"
10604b0ead49Smrg    fi
10614b0ead49Smrg
10624b0ead49Smrg    exit $EXIT_SUCCESS
10634b0ead49Smrg    ;;
10644b0ead49Smrg
10654b0ead49Smrg  # libtool link mode
10664b0ead49Smrg  link | relink)
10674b0ead49Smrg    modename="$modename: link"
10684b0ead49Smrg    case $host in
10694b0ead49Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
10704b0ead49Smrg      # It is impossible to link a dll without this setting, and
10714b0ead49Smrg      # we shouldn't force the makefile maintainer to figure out
10724b0ead49Smrg      # which system we are compiling for in order to pass an extra
10734b0ead49Smrg      # flag for every libtool invocation.
10744b0ead49Smrg      # allow_undefined=no
10754b0ead49Smrg
10764b0ead49Smrg      # FIXME: Unfortunately, there are problems with the above when trying
10774b0ead49Smrg      # to make a dll which has undefined symbols, in which case not
10784b0ead49Smrg      # even a static library is built.  For now, we need to specify
10794b0ead49Smrg      # -no-undefined on the libtool link line when we can be certain
10804b0ead49Smrg      # that all symbols are satisfied, otherwise we get a static library.
10814b0ead49Smrg      allow_undefined=yes
10824b0ead49Smrg      ;;
10834b0ead49Smrg    *)
10844b0ead49Smrg      allow_undefined=yes
10854b0ead49Smrg      ;;
10864b0ead49Smrg    esac
10874b0ead49Smrg    libtool_args="$nonopt"
10884b0ead49Smrg    base_compile="$nonopt $@"
10894b0ead49Smrg    compile_command="$nonopt"
10904b0ead49Smrg    finalize_command="$nonopt"
10914b0ead49Smrg
10924b0ead49Smrg    compile_rpath=
10934b0ead49Smrg    finalize_rpath=
10944b0ead49Smrg    compile_shlibpath=
10954b0ead49Smrg    finalize_shlibpath=
10964b0ead49Smrg    convenience=
10974b0ead49Smrg    old_convenience=
10984b0ead49Smrg    deplibs=
10994b0ead49Smrg    old_deplibs=
11004b0ead49Smrg    compiler_flags=
11014b0ead49Smrg    linker_flags=
11024b0ead49Smrg    dllsearchpath=
11034b0ead49Smrg    lib_search_path=`pwd`
11044b0ead49Smrg    inst_prefix_dir=
11054b0ead49Smrg
11064b0ead49Smrg    avoid_version=no
11074b0ead49Smrg    dlfiles=
11084b0ead49Smrg    dlprefiles=
11094b0ead49Smrg    dlself=no
11104b0ead49Smrg    export_dynamic=no
11114b0ead49Smrg    export_symbols=
11124b0ead49Smrg    export_symbols_regex=
11134b0ead49Smrg    generated=
11144b0ead49Smrg    libobjs=
11154b0ead49Smrg    ltlibs=
11164b0ead49Smrg    module=no
11174b0ead49Smrg    no_install=no
11184b0ead49Smrg    objs=
11194b0ead49Smrg    non_pic_objects=
11204b0ead49Smrg    notinst_path= # paths that contain not-installed libtool libraries
11214b0ead49Smrg    precious_files_regex=
11224b0ead49Smrg    prefer_static_libs=no
11234b0ead49Smrg    preload=no
11244b0ead49Smrg    prev=
11254b0ead49Smrg    prevarg=
11264b0ead49Smrg    release=
11274b0ead49Smrg    rpath=
11284b0ead49Smrg    xrpath=
11294b0ead49Smrg    perm_rpath=
11304b0ead49Smrg    temp_rpath=
11314b0ead49Smrg    thread_safe=no
11324b0ead49Smrg    vinfo=
11334b0ead49Smrg    vinfo_number=no
11344b0ead49Smrg
11354b0ead49Smrg    func_infer_tag $base_compile
11364b0ead49Smrg
11374b0ead49Smrg    # We need to know -static, to get the right output filenames.
11384b0ead49Smrg    for arg
11394b0ead49Smrg    do
11404b0ead49Smrg      case $arg in
11414b0ead49Smrg      -all-static | -static)
11424b0ead49Smrg	if test "X$arg" = "X-all-static"; then
11434b0ead49Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
11444b0ead49Smrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
11454b0ead49Smrg	  fi
11464b0ead49Smrg	  if test -n "$link_static_flag"; then
11474b0ead49Smrg	    dlopen_self=$dlopen_self_static
11484b0ead49Smrg	  fi
11494b0ead49Smrg	  prefer_static_libs=yes
11504b0ead49Smrg	else
11514b0ead49Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
11524b0ead49Smrg	    dlopen_self=$dlopen_self_static
11534b0ead49Smrg	  fi
11544b0ead49Smrg	  prefer_static_libs=built
11554b0ead49Smrg	fi
11564b0ead49Smrg	build_libtool_libs=no
11574b0ead49Smrg	build_old_libs=yes
11584b0ead49Smrg	break
11594b0ead49Smrg	;;
11604b0ead49Smrg      esac
11614b0ead49Smrg    done
11624b0ead49Smrg
11634b0ead49Smrg    # See if our shared archives depend on static archives.
11644b0ead49Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
11654b0ead49Smrg
11664b0ead49Smrg    # Go through the arguments, transforming them on the way.
11674b0ead49Smrg    while test "$#" -gt 0; do
11684b0ead49Smrg      arg="$1"
11694b0ead49Smrg      shift
11704b0ead49Smrg      case $arg in
11714b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
11724b0ead49Smrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
11734b0ead49Smrg	;;
11744b0ead49Smrg      *) qarg=$arg ;;
11754b0ead49Smrg      esac
11764b0ead49Smrg      libtool_args="$libtool_args $qarg"
11774b0ead49Smrg
11784b0ead49Smrg      # If the previous option needs an argument, assign it.
11794b0ead49Smrg      if test -n "$prev"; then
11804b0ead49Smrg	case $prev in
11814b0ead49Smrg	output)
11824b0ead49Smrg	  compile_command="$compile_command @OUTPUT@"
11834b0ead49Smrg	  finalize_command="$finalize_command @OUTPUT@"
11844b0ead49Smrg	  ;;
11854b0ead49Smrg	esac
11864b0ead49Smrg
11874b0ead49Smrg	case $prev in
11884b0ead49Smrg	dlfiles|dlprefiles)
11894b0ead49Smrg	  if test "$preload" = no; then
11904b0ead49Smrg	    # Add the symbol object into the linking commands.
11914b0ead49Smrg	    compile_command="$compile_command @SYMFILE@"
11924b0ead49Smrg	    finalize_command="$finalize_command @SYMFILE@"
11934b0ead49Smrg	    preload=yes
11944b0ead49Smrg	  fi
11954b0ead49Smrg	  case $arg in
11964b0ead49Smrg	  *.la | *.lo) ;;  # We handle these cases below.
11974b0ead49Smrg	  force)
11984b0ead49Smrg	    if test "$dlself" = no; then
11994b0ead49Smrg	      dlself=needless
12004b0ead49Smrg	      export_dynamic=yes
12014b0ead49Smrg	    fi
12024b0ead49Smrg	    prev=
12034b0ead49Smrg	    continue
12044b0ead49Smrg	    ;;
12054b0ead49Smrg	  self)
12064b0ead49Smrg	    if test "$prev" = dlprefiles; then
12074b0ead49Smrg	      dlself=yes
12084b0ead49Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
12094b0ead49Smrg	      dlself=yes
12104b0ead49Smrg	    else
12114b0ead49Smrg	      dlself=needless
12124b0ead49Smrg	      export_dynamic=yes
12134b0ead49Smrg	    fi
12144b0ead49Smrg	    prev=
12154b0ead49Smrg	    continue
12164b0ead49Smrg	    ;;
12174b0ead49Smrg	  *)
12184b0ead49Smrg	    if test "$prev" = dlfiles; then
12194b0ead49Smrg	      dlfiles="$dlfiles $arg"
12204b0ead49Smrg	    else
12214b0ead49Smrg	      dlprefiles="$dlprefiles $arg"
12224b0ead49Smrg	    fi
12234b0ead49Smrg	    prev=
12244b0ead49Smrg	    continue
12254b0ead49Smrg	    ;;
12264b0ead49Smrg	  esac
12274b0ead49Smrg	  ;;
12284b0ead49Smrg	expsyms)
12294b0ead49Smrg	  export_symbols="$arg"
12304b0ead49Smrg	  if test ! -f "$arg"; then
12314b0ead49Smrg	    $echo "$modename: symbol file \`$arg' does not exist"
12324b0ead49Smrg	    exit $EXIT_FAILURE
12334b0ead49Smrg	  fi
12344b0ead49Smrg	  prev=
12354b0ead49Smrg	  continue
12364b0ead49Smrg	  ;;
12374b0ead49Smrg	expsyms_regex)
12384b0ead49Smrg	  export_symbols_regex="$arg"
12394b0ead49Smrg	  prev=
12404b0ead49Smrg	  continue
12414b0ead49Smrg	  ;;
12424b0ead49Smrg	inst_prefix)
12434b0ead49Smrg	  inst_prefix_dir="$arg"
12444b0ead49Smrg	  prev=
12454b0ead49Smrg	  continue
12464b0ead49Smrg	  ;;
12474b0ead49Smrg	precious_regex)
12484b0ead49Smrg	  precious_files_regex="$arg"
12494b0ead49Smrg	  prev=
12504b0ead49Smrg	  continue
12514b0ead49Smrg	  ;;
12524b0ead49Smrg	release)
12534b0ead49Smrg	  release="-$arg"
12544b0ead49Smrg	  prev=
12554b0ead49Smrg	  continue
12564b0ead49Smrg	  ;;
12574b0ead49Smrg	objectlist)
12584b0ead49Smrg	  if test -f "$arg"; then
12594b0ead49Smrg	    save_arg=$arg
12604b0ead49Smrg	    moreargs=
12614b0ead49Smrg	    for fil in `cat $save_arg`
12624b0ead49Smrg	    do
12634b0ead49Smrg#	      moreargs="$moreargs $fil"
12644b0ead49Smrg	      arg=$fil
12654b0ead49Smrg	      # A libtool-controlled object.
12664b0ead49Smrg
12674b0ead49Smrg	      # Check to see that this really is a libtool object.
12684b0ead49Smrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
12694b0ead49Smrg		pic_object=
12704b0ead49Smrg		non_pic_object=
12714b0ead49Smrg
12724b0ead49Smrg		# Read the .lo file
12734b0ead49Smrg		# If there is no directory component, then add one.
12744b0ead49Smrg		case $arg in
12754b0ead49Smrg		*/* | *\\*) . $arg ;;
12764b0ead49Smrg		*) . ./$arg ;;
12774b0ead49Smrg		esac
12784b0ead49Smrg
12794b0ead49Smrg		if test -z "$pic_object" || \
12804b0ead49Smrg		   test -z "$non_pic_object" ||
12814b0ead49Smrg		   test "$pic_object" = none && \
12824b0ead49Smrg		   test "$non_pic_object" = none; then
12834b0ead49Smrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
12844b0ead49Smrg		  exit $EXIT_FAILURE
12854b0ead49Smrg		fi
12864b0ead49Smrg
12874b0ead49Smrg		# Extract subdirectory from the argument.
12884b0ead49Smrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
12894b0ead49Smrg		if test "X$xdir" = "X$arg"; then
12904b0ead49Smrg		  xdir=
12914b0ead49Smrg		else
12924b0ead49Smrg		  xdir="$xdir/"
12934b0ead49Smrg		fi
12944b0ead49Smrg
12954b0ead49Smrg		if test "$pic_object" != none; then
12964b0ead49Smrg		  # Prepend the subdirectory the object is found in.
12974b0ead49Smrg		  pic_object="$xdir$pic_object"
12984b0ead49Smrg
12994b0ead49Smrg		  if test "$prev" = dlfiles; then
13004b0ead49Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
13014b0ead49Smrg		      dlfiles="$dlfiles $pic_object"
13024b0ead49Smrg		      prev=
13034b0ead49Smrg		      continue
13044b0ead49Smrg		    else
13054b0ead49Smrg		      # If libtool objects are unsupported, then we need to preload.
13064b0ead49Smrg		      prev=dlprefiles
13074b0ead49Smrg		    fi
13084b0ead49Smrg		  fi
13094b0ead49Smrg
13104b0ead49Smrg		  # CHECK ME:  I think I busted this.  -Ossama
13114b0ead49Smrg		  if test "$prev" = dlprefiles; then
13124b0ead49Smrg		    # Preload the old-style object.
13134b0ead49Smrg		    dlprefiles="$dlprefiles $pic_object"
13144b0ead49Smrg		    prev=
13154b0ead49Smrg		  fi
13164b0ead49Smrg
13174b0ead49Smrg		  # A PIC object.
13184b0ead49Smrg		  libobjs="$libobjs $pic_object"
13194b0ead49Smrg		  arg="$pic_object"
13204b0ead49Smrg		fi
13214b0ead49Smrg
13224b0ead49Smrg		# Non-PIC object.
13234b0ead49Smrg		if test "$non_pic_object" != none; then
13244b0ead49Smrg		  # Prepend the subdirectory the object is found in.
13254b0ead49Smrg		  non_pic_object="$xdir$non_pic_object"
13264b0ead49Smrg
13274b0ead49Smrg		  # A standard non-PIC object
13284b0ead49Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
13294b0ead49Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
13304b0ead49Smrg		    arg="$non_pic_object"
13314b0ead49Smrg		  fi
13324b0ead49Smrg		else
13334b0ead49Smrg		  # If the PIC object exists, use it instead.
13344b0ead49Smrg		  # $xdir was prepended to $pic_object above.
13354b0ead49Smrg		  non_pic_object="$pic_object"
13364b0ead49Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
13374b0ead49Smrg		fi
13384b0ead49Smrg	      else
13394b0ead49Smrg		# Only an error if not doing a dry-run.
13404b0ead49Smrg		if test -z "$run"; then
13414b0ead49Smrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
13424b0ead49Smrg		  exit $EXIT_FAILURE
13434b0ead49Smrg		else
13444b0ead49Smrg		  # Dry-run case.
13454b0ead49Smrg
13464b0ead49Smrg		  # Extract subdirectory from the argument.
13474b0ead49Smrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
13484b0ead49Smrg		  if test "X$xdir" = "X$arg"; then
13494b0ead49Smrg		    xdir=
13504b0ead49Smrg		  else
13514b0ead49Smrg		    xdir="$xdir/"
13524b0ead49Smrg		  fi
13534b0ead49Smrg
13544b0ead49Smrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
13554b0ead49Smrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
13564b0ead49Smrg		  libobjs="$libobjs $pic_object"
13574b0ead49Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
13584b0ead49Smrg		fi
13594b0ead49Smrg	      fi
13604b0ead49Smrg	    done
13614b0ead49Smrg	  else
13624b0ead49Smrg	    $echo "$modename: link input file \`$save_arg' does not exist"
13634b0ead49Smrg	    exit $EXIT_FAILURE
13644b0ead49Smrg	  fi
13654b0ead49Smrg	  arg=$save_arg
13664b0ead49Smrg	  prev=
13674b0ead49Smrg	  continue
13684b0ead49Smrg	  ;;
13694b0ead49Smrg	rpath | xrpath)
13704b0ead49Smrg	  # We need an absolute path.
13714b0ead49Smrg	  case $arg in
13724b0ead49Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
13734b0ead49Smrg	  *)
13744b0ead49Smrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
13754b0ead49Smrg	    exit $EXIT_FAILURE
13764b0ead49Smrg	    ;;
13774b0ead49Smrg	  esac
13784b0ead49Smrg	  if test "$prev" = rpath; then
13794b0ead49Smrg	    case "$rpath " in
13804b0ead49Smrg	    *" $arg "*) ;;
13814b0ead49Smrg	    *) rpath="$rpath $arg" ;;
13824b0ead49Smrg	    esac
13834b0ead49Smrg	  else
13844b0ead49Smrg	    case "$xrpath " in
13854b0ead49Smrg	    *" $arg "*) ;;
13864b0ead49Smrg	    *) xrpath="$xrpath $arg" ;;
13874b0ead49Smrg	    esac
13884b0ead49Smrg	  fi
13894b0ead49Smrg	  prev=
13904b0ead49Smrg	  continue
13914b0ead49Smrg	  ;;
13924b0ead49Smrg	xcompiler)
13934b0ead49Smrg	  compiler_flags="$compiler_flags $qarg"
13944b0ead49Smrg	  prev=
13954b0ead49Smrg	  compile_command="$compile_command $qarg"
13964b0ead49Smrg	  finalize_command="$finalize_command $qarg"
13974b0ead49Smrg	  continue
13984b0ead49Smrg	  ;;
13994b0ead49Smrg	xlinker)
14004b0ead49Smrg	  linker_flags="$linker_flags $qarg"
14014b0ead49Smrg	  compiler_flags="$compiler_flags $wl$qarg"
14024b0ead49Smrg	  prev=
14034b0ead49Smrg	  compile_command="$compile_command $wl$qarg"
14044b0ead49Smrg	  finalize_command="$finalize_command $wl$qarg"
14054b0ead49Smrg	  continue
14064b0ead49Smrg	  ;;
14074b0ead49Smrg	xcclinker)
14084b0ead49Smrg	  linker_flags="$linker_flags $qarg"
14094b0ead49Smrg	  compiler_flags="$compiler_flags $qarg"
14104b0ead49Smrg	  prev=
14114b0ead49Smrg	  compile_command="$compile_command $qarg"
14124b0ead49Smrg	  finalize_command="$finalize_command $qarg"
14134b0ead49Smrg	  continue
14144b0ead49Smrg	  ;;
14154b0ead49Smrg	shrext)
14164b0ead49Smrg  	  shrext_cmds="$arg"
14174b0ead49Smrg	  prev=
14184b0ead49Smrg	  continue
14194b0ead49Smrg	  ;;
14204b0ead49Smrg	darwin_framework|darwin_framework_skip)
14214b0ead49Smrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
14224b0ead49Smrg	  compile_command="$compile_command $arg"
14234b0ead49Smrg	  finalize_command="$finalize_command $arg"
14244b0ead49Smrg	  prev=
14254b0ead49Smrg	  continue
14264b0ead49Smrg	  ;;
14274b0ead49Smrg	*)
14284b0ead49Smrg	  eval "$prev=\"\$arg\""
14294b0ead49Smrg	  prev=
14304b0ead49Smrg	  continue
14314b0ead49Smrg	  ;;
14324b0ead49Smrg	esac
14334b0ead49Smrg      fi # test -n "$prev"
14344b0ead49Smrg
14354b0ead49Smrg      prevarg="$arg"
14364b0ead49Smrg
14374b0ead49Smrg      case $arg in
14384b0ead49Smrg      -all-static)
14394b0ead49Smrg	if test -n "$link_static_flag"; then
14404b0ead49Smrg	  compile_command="$compile_command $link_static_flag"
14414b0ead49Smrg	  finalize_command="$finalize_command $link_static_flag"
14424b0ead49Smrg	fi
14434b0ead49Smrg	continue
14444b0ead49Smrg	;;
14454b0ead49Smrg
14464b0ead49Smrg      -allow-undefined)
14474b0ead49Smrg	# FIXME: remove this flag sometime in the future.
14484b0ead49Smrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
14494b0ead49Smrg	continue
14504b0ead49Smrg	;;
14514b0ead49Smrg
14524b0ead49Smrg      -avoid-version)
14534b0ead49Smrg	avoid_version=yes
14544b0ead49Smrg	continue
14554b0ead49Smrg	;;
14564b0ead49Smrg
14574b0ead49Smrg      -dlopen)
14584b0ead49Smrg	prev=dlfiles
14594b0ead49Smrg	continue
14604b0ead49Smrg	;;
14614b0ead49Smrg
14624b0ead49Smrg      -dlpreopen)
14634b0ead49Smrg	prev=dlprefiles
14644b0ead49Smrg	continue
14654b0ead49Smrg	;;
14664b0ead49Smrg
14674b0ead49Smrg      -export-dynamic)
14684b0ead49Smrg	export_dynamic=yes
14694b0ead49Smrg	continue
14704b0ead49Smrg	;;
14714b0ead49Smrg
14724b0ead49Smrg      -export-symbols | -export-symbols-regex)
14734b0ead49Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
14744b0ead49Smrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
14754b0ead49Smrg	  exit $EXIT_FAILURE
14764b0ead49Smrg	fi
14774b0ead49Smrg	if test "X$arg" = "X-export-symbols"; then
14784b0ead49Smrg	  prev=expsyms
14794b0ead49Smrg	else
14804b0ead49Smrg	  prev=expsyms_regex
14814b0ead49Smrg	fi
14824b0ead49Smrg	continue
14834b0ead49Smrg	;;
14844b0ead49Smrg
14854b0ead49Smrg      -framework|-arch|-isysroot)
14864b0ead49Smrg	case " $CC " in
14874b0ead49Smrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
14884b0ead49Smrg		prev=darwin_framework_skip ;;
14894b0ead49Smrg	  *) compiler_flags="$compiler_flags $arg"
14904b0ead49Smrg	     prev=darwin_framework ;;
14914b0ead49Smrg	esac
14924b0ead49Smrg	compile_command="$compile_command $arg"
14934b0ead49Smrg	finalize_command="$finalize_command $arg"
14944b0ead49Smrg	continue
14954b0ead49Smrg	;;
14964b0ead49Smrg
14974b0ead49Smrg      -inst-prefix-dir)
14984b0ead49Smrg	prev=inst_prefix
14994b0ead49Smrg	continue
15004b0ead49Smrg	;;
15014b0ead49Smrg
15024b0ead49Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
15034b0ead49Smrg      # so, if we see these flags be careful not to treat them like -L
15044b0ead49Smrg      -L[A-Z][A-Z]*:*)
15054b0ead49Smrg	case $with_gcc/$host in
15064b0ead49Smrg	no/*-*-irix* | /*-*-irix*)
15074b0ead49Smrg	  compile_command="$compile_command $arg"
15084b0ead49Smrg	  finalize_command="$finalize_command $arg"
15094b0ead49Smrg	  ;;
15104b0ead49Smrg	esac
15114b0ead49Smrg	continue
15124b0ead49Smrg	;;
15134b0ead49Smrg
15144b0ead49Smrg      -L*)
15154b0ead49Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
15164b0ead49Smrg	# We need an absolute path.
15174b0ead49Smrg	case $dir in
15184b0ead49Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
15194b0ead49Smrg	*)
15204b0ead49Smrg	  absdir=`cd "$dir" && pwd`
15214b0ead49Smrg	  if test -z "$absdir"; then
15224b0ead49Smrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
15234b0ead49Smrg	    absdir="$dir"
15244b0ead49Smrg	    notinst_path="$notinst_path $dir"
15254b0ead49Smrg	  fi
15264b0ead49Smrg	  dir="$absdir"
15274b0ead49Smrg	  ;;
15284b0ead49Smrg	esac
15294b0ead49Smrg	case "$deplibs " in
15304b0ead49Smrg	*" -L$dir "*) ;;
15314b0ead49Smrg	*)
15324b0ead49Smrg	  deplibs="$deplibs -L$dir"
15334b0ead49Smrg	  lib_search_path="$lib_search_path $dir"
15344b0ead49Smrg	  ;;
15354b0ead49Smrg	esac
15364b0ead49Smrg	case $host in
15374b0ead49Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
15384b0ead49Smrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
15394b0ead49Smrg	  case :$dllsearchpath: in
15404b0ead49Smrg	  *":$dir:"*) ;;
15414b0ead49Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
15424b0ead49Smrg	  esac
15434b0ead49Smrg	  case :$dllsearchpath: in
15444b0ead49Smrg	  *":$testbindir:"*) ;;
15454b0ead49Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
15464b0ead49Smrg	  esac
15474b0ead49Smrg	  ;;
15484b0ead49Smrg	esac
15494b0ead49Smrg	continue
15504b0ead49Smrg	;;
15514b0ead49Smrg
15524b0ead49Smrg      -l*)
15534b0ead49Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
15544b0ead49Smrg	  case $host in
15554b0ead49Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
15564b0ead49Smrg	    # These systems don't actually have a C or math library (as such)
15574b0ead49Smrg	    continue
15584b0ead49Smrg	    ;;
15594b0ead49Smrg	  *-*-os2*)
15604b0ead49Smrg	    # These systems don't actually have a C library (as such)
15614b0ead49Smrg	    test "X$arg" = "X-lc" && continue
15624b0ead49Smrg	    ;;
15634b0ead49Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
15644b0ead49Smrg	    # Do not include libc due to us having libc/libc_r.
15654b0ead49Smrg	    test "X$arg" = "X-lc" && continue
15664b0ead49Smrg	    ;;
15674b0ead49Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
15684b0ead49Smrg	    # Rhapsody C and math libraries are in the System framework
15694b0ead49Smrg	    deplibs="$deplibs -framework System"
15704b0ead49Smrg	    continue
15714b0ead49Smrg	    ;;
15724b0ead49Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
15734b0ead49Smrg	    # Causes problems with __ctype
15744b0ead49Smrg	    test "X$arg" = "X-lc" && continue
15754b0ead49Smrg	    ;;
15764b0ead49Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
15774b0ead49Smrg	    # Compiler inserts libc in the correct place for threads to work
15784b0ead49Smrg	    test "X$arg" = "X-lc" && continue
15794b0ead49Smrg	    ;;
15804b0ead49Smrg	  esac
15814b0ead49Smrg	elif test "X$arg" = "X-lc_r"; then
15824b0ead49Smrg	 case $host in
15834b0ead49Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
15844b0ead49Smrg	   # Do not include libc_r directly, use -pthread flag.
15854b0ead49Smrg	   continue
15864b0ead49Smrg	   ;;
15874b0ead49Smrg	 esac
15884b0ead49Smrg	fi
15894b0ead49Smrg	deplibs="$deplibs $arg"
15904b0ead49Smrg	continue
15914b0ead49Smrg	;;
15924b0ead49Smrg
15934b0ead49Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
15944b0ead49Smrg      # classes, name mangling, and exception handling.
15954b0ead49Smrg      -model)
15964b0ead49Smrg	compile_command="$compile_command $arg"
15974b0ead49Smrg	compiler_flags="$compiler_flags $arg"
15984b0ead49Smrg	finalize_command="$finalize_command $arg"
15994b0ead49Smrg	prev=xcompiler
16004b0ead49Smrg	continue
16014b0ead49Smrg	;;
16024b0ead49Smrg
16034b0ead49Smrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
16044b0ead49Smrg	compiler_flags="$compiler_flags $arg"
16054b0ead49Smrg	compile_command="$compile_command $arg"
16064b0ead49Smrg	finalize_command="$finalize_command $arg"
16074b0ead49Smrg	continue
16084b0ead49Smrg	;;
16094b0ead49Smrg
16104b0ead49Smrg      -module)
16114b0ead49Smrg	module=yes
16124b0ead49Smrg	continue
16134b0ead49Smrg	;;
16144b0ead49Smrg
16154b0ead49Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
16164b0ead49Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
16174b0ead49Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
16184b0ead49Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
16194b0ead49Smrg      # -q* pass through compiler args for the IBM compiler
16204b0ead49Smrg      # -m* pass through architecture-specific compiler args for GCC
16214b0ead49Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
16224b0ead49Smrg      # compiler args for GCC
16234b0ead49Smrg      # -pg pass through profiling flag for GCC
16244b0ead49Smrg      # @file GCC response files
16254b0ead49Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
16264b0ead49Smrg      -t[45]*|-txscale*|@*)
16274b0ead49Smrg
16284b0ead49Smrg	# Unknown arguments in both finalize_command and compile_command need
16294b0ead49Smrg	# to be aesthetically quoted because they are evaled later.
16304b0ead49Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
16314b0ead49Smrg	case $arg in
16324b0ead49Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
16334b0ead49Smrg	  arg="\"$arg\""
16344b0ead49Smrg	  ;;
16354b0ead49Smrg	esac
16364b0ead49Smrg        compile_command="$compile_command $arg"
16374b0ead49Smrg        finalize_command="$finalize_command $arg"
16384b0ead49Smrg        compiler_flags="$compiler_flags $arg"
16394b0ead49Smrg        continue
16404b0ead49Smrg        ;;
16414b0ead49Smrg
16424b0ead49Smrg      -shrext)
16434b0ead49Smrg	prev=shrext
16444b0ead49Smrg	continue
16454b0ead49Smrg	;;
16464b0ead49Smrg
16474b0ead49Smrg      -no-fast-install)
16484b0ead49Smrg	fast_install=no
16494b0ead49Smrg	continue
16504b0ead49Smrg	;;
16514b0ead49Smrg
16524b0ead49Smrg      -no-install)
16534b0ead49Smrg	case $host in
16544b0ead49Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
16554b0ead49Smrg	  # The PATH hackery in wrapper scripts is required on Windows
16564b0ead49Smrg	  # in order for the loader to find any dlls it needs.
16574b0ead49Smrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
16584b0ead49Smrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
16594b0ead49Smrg	  fast_install=no
16604b0ead49Smrg	  ;;
16614b0ead49Smrg	*) no_install=yes ;;
16624b0ead49Smrg	esac
16634b0ead49Smrg	continue
16644b0ead49Smrg	;;
16654b0ead49Smrg
16664b0ead49Smrg      -no-undefined)
16674b0ead49Smrg	allow_undefined=no
16684b0ead49Smrg	continue
16694b0ead49Smrg	;;
16704b0ead49Smrg
16714b0ead49Smrg      -objectlist)
16724b0ead49Smrg	prev=objectlist
16734b0ead49Smrg	continue
16744b0ead49Smrg	;;
16754b0ead49Smrg
16764b0ead49Smrg      -o) prev=output ;;
16774b0ead49Smrg
16784b0ead49Smrg      -precious-files-regex)
16794b0ead49Smrg	prev=precious_regex
16804b0ead49Smrg	continue
16814b0ead49Smrg	;;
16824b0ead49Smrg
16834b0ead49Smrg      -release)
16844b0ead49Smrg	prev=release
16854b0ead49Smrg	continue
16864b0ead49Smrg	;;
16874b0ead49Smrg
16884b0ead49Smrg      -rpath)
16894b0ead49Smrg	prev=rpath
16904b0ead49Smrg	continue
16914b0ead49Smrg	;;
16924b0ead49Smrg
16934b0ead49Smrg      -R)
16944b0ead49Smrg	prev=xrpath
16954b0ead49Smrg	continue
16964b0ead49Smrg	;;
16974b0ead49Smrg
16984b0ead49Smrg      -R*)
16994b0ead49Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
17004b0ead49Smrg	# We need an absolute path.
17014b0ead49Smrg	case $dir in
17024b0ead49Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
17034b0ead49Smrg	*)
17044b0ead49Smrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
17054b0ead49Smrg	  exit $EXIT_FAILURE
17064b0ead49Smrg	  ;;
17074b0ead49Smrg	esac
17084b0ead49Smrg	case "$xrpath " in
17094b0ead49Smrg	*" $dir "*) ;;
17104b0ead49Smrg	*) xrpath="$xrpath $dir" ;;
17114b0ead49Smrg	esac
17124b0ead49Smrg	continue
17134b0ead49Smrg	;;
17144b0ead49Smrg
17154b0ead49Smrg      -static)
17164b0ead49Smrg	# The effects of -static are defined in a previous loop.
17174b0ead49Smrg	# We used to do the same as -all-static on platforms that
17184b0ead49Smrg	# didn't have a PIC flag, but the assumption that the effects
17194b0ead49Smrg	# would be equivalent was wrong.  It would break on at least
17204b0ead49Smrg	# Digital Unix and AIX.
17214b0ead49Smrg	continue
17224b0ead49Smrg	;;
17234b0ead49Smrg
17244b0ead49Smrg      -thread-safe)
17254b0ead49Smrg	thread_safe=yes
17264b0ead49Smrg	continue
17274b0ead49Smrg	;;
17284b0ead49Smrg
17294b0ead49Smrg      -version-info)
17304b0ead49Smrg	prev=vinfo
17314b0ead49Smrg	continue
17324b0ead49Smrg	;;
17334b0ead49Smrg      -version-number)
17344b0ead49Smrg	prev=vinfo
17354b0ead49Smrg	vinfo_number=yes
17364b0ead49Smrg	continue
17374b0ead49Smrg	;;
17384b0ead49Smrg
17394b0ead49Smrg      -Wc,*)
17404b0ead49Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
17414b0ead49Smrg	arg=
17424b0ead49Smrg	save_ifs="$IFS"; IFS=','
17434b0ead49Smrg	for flag in $args; do
17444b0ead49Smrg	  IFS="$save_ifs"
17454b0ead49Smrg	  case $flag in
17464b0ead49Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
17474b0ead49Smrg	    flag="\"$flag\""
17484b0ead49Smrg	    ;;
17494b0ead49Smrg	  esac
17504b0ead49Smrg	  arg="$arg $wl$flag"
17514b0ead49Smrg	  compiler_flags="$compiler_flags $flag"
17524b0ead49Smrg	done
17534b0ead49Smrg	IFS="$save_ifs"
17544b0ead49Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
17554b0ead49Smrg	;;
17564b0ead49Smrg
17574b0ead49Smrg      -Wl,*)
17584b0ead49Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
17594b0ead49Smrg	arg=
17604b0ead49Smrg	save_ifs="$IFS"; IFS=','
17614b0ead49Smrg	for flag in $args; do
17624b0ead49Smrg	  IFS="$save_ifs"
17634b0ead49Smrg	  case $flag in
17644b0ead49Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
17654b0ead49Smrg	    flag="\"$flag\""
17664b0ead49Smrg	    ;;
17674b0ead49Smrg	  esac
17684b0ead49Smrg	  arg="$arg $wl$flag"
17694b0ead49Smrg	  compiler_flags="$compiler_flags $wl$flag"
17704b0ead49Smrg	  linker_flags="$linker_flags $flag"
17714b0ead49Smrg	done
17724b0ead49Smrg	IFS="$save_ifs"
17734b0ead49Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
17744b0ead49Smrg	;;
17754b0ead49Smrg
17764b0ead49Smrg      -Xcompiler)
17774b0ead49Smrg	prev=xcompiler
17784b0ead49Smrg	continue
17794b0ead49Smrg	;;
17804b0ead49Smrg
17814b0ead49Smrg      -Xlinker)
17824b0ead49Smrg	prev=xlinker
17834b0ead49Smrg	continue
17844b0ead49Smrg	;;
17854b0ead49Smrg
17864b0ead49Smrg      -XCClinker)
17874b0ead49Smrg	prev=xcclinker
17884b0ead49Smrg	continue
17894b0ead49Smrg	;;
17904b0ead49Smrg
17914b0ead49Smrg      # Some other compiler flag.
17924b0ead49Smrg      -* | +*)
17934b0ead49Smrg	# Unknown arguments in both finalize_command and compile_command need
17944b0ead49Smrg	# to be aesthetically quoted because they are evaled later.
17954b0ead49Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
17964b0ead49Smrg	case $arg in
17974b0ead49Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
17984b0ead49Smrg	  arg="\"$arg\""
17994b0ead49Smrg	  ;;
18004b0ead49Smrg	esac
18014b0ead49Smrg	;;
18024b0ead49Smrg
18034b0ead49Smrg      *.$objext)
18044b0ead49Smrg	# A standard object.
18054b0ead49Smrg	objs="$objs $arg"
18064b0ead49Smrg	;;
18074b0ead49Smrg
18084b0ead49Smrg      *.lo)
18094b0ead49Smrg	# A libtool-controlled object.
18104b0ead49Smrg
18114b0ead49Smrg	# Check to see that this really is a libtool object.
18124b0ead49Smrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
18134b0ead49Smrg	  pic_object=
18144b0ead49Smrg	  non_pic_object=
18154b0ead49Smrg
18164b0ead49Smrg	  # Read the .lo file
18174b0ead49Smrg	  # If there is no directory component, then add one.
18184b0ead49Smrg	  case $arg in
18194b0ead49Smrg	  */* | *\\*) . $arg ;;
18204b0ead49Smrg	  *) . ./$arg ;;
18214b0ead49Smrg	  esac
18224b0ead49Smrg
18234b0ead49Smrg	  if test -z "$pic_object" || \
18244b0ead49Smrg	     test -z "$non_pic_object" ||
18254b0ead49Smrg	     test "$pic_object" = none && \
18264b0ead49Smrg	     test "$non_pic_object" = none; then
18274b0ead49Smrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
18284b0ead49Smrg	    exit $EXIT_FAILURE
18294b0ead49Smrg	  fi
18304b0ead49Smrg
18314b0ead49Smrg	  # Extract subdirectory from the argument.
18324b0ead49Smrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
18334b0ead49Smrg	  if test "X$xdir" = "X$arg"; then
18344b0ead49Smrg	    xdir=
18354b0ead49Smrg 	  else
18364b0ead49Smrg	    xdir="$xdir/"
18374b0ead49Smrg	  fi
18384b0ead49Smrg
18394b0ead49Smrg	  if test "$pic_object" != none; then
18404b0ead49Smrg	    # Prepend the subdirectory the object is found in.
18414b0ead49Smrg	    pic_object="$xdir$pic_object"
18424b0ead49Smrg
18434b0ead49Smrg	    if test "$prev" = dlfiles; then
18444b0ead49Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
18454b0ead49Smrg		dlfiles="$dlfiles $pic_object"
18464b0ead49Smrg		prev=
18474b0ead49Smrg		continue
18484b0ead49Smrg	      else
18494b0ead49Smrg		# If libtool objects are unsupported, then we need to preload.
18504b0ead49Smrg		prev=dlprefiles
18514b0ead49Smrg	      fi
18524b0ead49Smrg	    fi
18534b0ead49Smrg
18544b0ead49Smrg	    # CHECK ME:  I think I busted this.  -Ossama
18554b0ead49Smrg	    if test "$prev" = dlprefiles; then
18564b0ead49Smrg	      # Preload the old-style object.
18574b0ead49Smrg	      dlprefiles="$dlprefiles $pic_object"
18584b0ead49Smrg	      prev=
18594b0ead49Smrg	    fi
18604b0ead49Smrg
18614b0ead49Smrg	    # A PIC object.
18624b0ead49Smrg	    libobjs="$libobjs $pic_object"
18634b0ead49Smrg	    arg="$pic_object"
18644b0ead49Smrg	  fi
18654b0ead49Smrg
18664b0ead49Smrg	  # Non-PIC object.
18674b0ead49Smrg	  if test "$non_pic_object" != none; then
18684b0ead49Smrg	    # Prepend the subdirectory the object is found in.
18694b0ead49Smrg	    non_pic_object="$xdir$non_pic_object"
18704b0ead49Smrg
18714b0ead49Smrg	    # A standard non-PIC object
18724b0ead49Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
18734b0ead49Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
18744b0ead49Smrg	      arg="$non_pic_object"
18754b0ead49Smrg	    fi
18764b0ead49Smrg	  else
18774b0ead49Smrg	    # If the PIC object exists, use it instead.
18784b0ead49Smrg	    # $xdir was prepended to $pic_object above.
18794b0ead49Smrg	    non_pic_object="$pic_object"
18804b0ead49Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
18814b0ead49Smrg	  fi
18824b0ead49Smrg	else
18834b0ead49Smrg	  # Only an error if not doing a dry-run.
18844b0ead49Smrg	  if test -z "$run"; then
18854b0ead49Smrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
18864b0ead49Smrg	    exit $EXIT_FAILURE
18874b0ead49Smrg	  else
18884b0ead49Smrg	    # Dry-run case.
18894b0ead49Smrg
18904b0ead49Smrg	    # Extract subdirectory from the argument.
18914b0ead49Smrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
18924b0ead49Smrg	    if test "X$xdir" = "X$arg"; then
18934b0ead49Smrg	      xdir=
18944b0ead49Smrg	    else
18954b0ead49Smrg	      xdir="$xdir/"
18964b0ead49Smrg	    fi
18974b0ead49Smrg
18984b0ead49Smrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
18994b0ead49Smrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
19004b0ead49Smrg	    libobjs="$libobjs $pic_object"
19014b0ead49Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
19024b0ead49Smrg	  fi
19034b0ead49Smrg	fi
19044b0ead49Smrg	;;
19054b0ead49Smrg
19064b0ead49Smrg      *.$libext)
19074b0ead49Smrg	# An archive.
19084b0ead49Smrg	deplibs="$deplibs $arg"
19094b0ead49Smrg	old_deplibs="$old_deplibs $arg"
19104b0ead49Smrg	continue
19114b0ead49Smrg	;;
19124b0ead49Smrg
19134b0ead49Smrg      *.la)
19144b0ead49Smrg	# A libtool-controlled library.
19154b0ead49Smrg
19164b0ead49Smrg	if test "$prev" = dlfiles; then
19174b0ead49Smrg	  # This library was specified with -dlopen.
19184b0ead49Smrg	  dlfiles="$dlfiles $arg"
19194b0ead49Smrg	  prev=
19204b0ead49Smrg	elif test "$prev" = dlprefiles; then
19214b0ead49Smrg	  # The library was specified with -dlpreopen.
19224b0ead49Smrg	  dlprefiles="$dlprefiles $arg"
19234b0ead49Smrg	  prev=
19244b0ead49Smrg	else
19254b0ead49Smrg	  deplibs="$deplibs $arg"
19264b0ead49Smrg	fi
19274b0ead49Smrg	continue
19284b0ead49Smrg	;;
19294b0ead49Smrg
19304b0ead49Smrg      # Some other compiler argument.
19314b0ead49Smrg      *)
19324b0ead49Smrg	# Unknown arguments in both finalize_command and compile_command need
19334b0ead49Smrg	# to be aesthetically quoted because they are evaled later.
19344b0ead49Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
19354b0ead49Smrg	case $arg in
19364b0ead49Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
19374b0ead49Smrg	  arg="\"$arg\""
19384b0ead49Smrg	  ;;
19394b0ead49Smrg	esac
19404b0ead49Smrg	;;
19414b0ead49Smrg      esac # arg
19424b0ead49Smrg
19434b0ead49Smrg      # Now actually substitute the argument into the commands.
19444b0ead49Smrg      if test -n "$arg"; then
19454b0ead49Smrg	compile_command="$compile_command $arg"
19464b0ead49Smrg	finalize_command="$finalize_command $arg"
19474b0ead49Smrg      fi
19484b0ead49Smrg    done # argument parsing loop
19494b0ead49Smrg
19504b0ead49Smrg    if test -n "$prev"; then
19514b0ead49Smrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
19524b0ead49Smrg      $echo "$help" 1>&2
19534b0ead49Smrg      exit $EXIT_FAILURE
19544b0ead49Smrg    fi
19554b0ead49Smrg
19564b0ead49Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
19574b0ead49Smrg      eval arg=\"$export_dynamic_flag_spec\"
19584b0ead49Smrg      compile_command="$compile_command $arg"
19594b0ead49Smrg      finalize_command="$finalize_command $arg"
19604b0ead49Smrg    fi
19614b0ead49Smrg
19624b0ead49Smrg    oldlibs=
19634b0ead49Smrg    # calculate the name of the file, without its directory
19644b0ead49Smrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
19654b0ead49Smrg    libobjs_save="$libobjs"
19664b0ead49Smrg
19674b0ead49Smrg    if test -n "$shlibpath_var"; then
19684b0ead49Smrg      # get the directories listed in $shlibpath_var
19694b0ead49Smrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
19704b0ead49Smrg    else
19714b0ead49Smrg      shlib_search_path=
19724b0ead49Smrg    fi
19734b0ead49Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
19744b0ead49Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
19754b0ead49Smrg
19764b0ead49Smrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
19774b0ead49Smrg    if test "X$output_objdir" = "X$output"; then
19784b0ead49Smrg      output_objdir="$objdir"
19794b0ead49Smrg    else
19804b0ead49Smrg      output_objdir="$output_objdir/$objdir"
19814b0ead49Smrg    fi
19824b0ead49Smrg    # Create the object directory.
19834b0ead49Smrg    if test ! -d "$output_objdir"; then
19844b0ead49Smrg      $show "$mkdir $output_objdir"
19854b0ead49Smrg      $run $mkdir $output_objdir
19864b0ead49Smrg      exit_status=$?
19874b0ead49Smrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
19884b0ead49Smrg	exit $exit_status
19894b0ead49Smrg      fi
19904b0ead49Smrg    fi
19914b0ead49Smrg
19924b0ead49Smrg    # Determine the type of output
19934b0ead49Smrg    case $output in
19944b0ead49Smrg    "")
19954b0ead49Smrg      $echo "$modename: you must specify an output file" 1>&2
19964b0ead49Smrg      $echo "$help" 1>&2
19974b0ead49Smrg      exit $EXIT_FAILURE
19984b0ead49Smrg      ;;
19994b0ead49Smrg    *.$libext) linkmode=oldlib ;;
20004b0ead49Smrg    *.lo | *.$objext) linkmode=obj ;;
20014b0ead49Smrg    *.la) linkmode=lib ;;
20024b0ead49Smrg    *) linkmode=prog ;; # Anything else should be a program.
20034b0ead49Smrg    esac
20044b0ead49Smrg
20054b0ead49Smrg    case $host in
20064b0ead49Smrg    *cygwin* | *mingw* | *pw32*)
20074b0ead49Smrg      # don't eliminate duplications in $postdeps and $predeps
20084b0ead49Smrg      duplicate_compiler_generated_deps=yes
20094b0ead49Smrg      ;;
20104b0ead49Smrg    *)
20114b0ead49Smrg      duplicate_compiler_generated_deps=$duplicate_deps
20124b0ead49Smrg      ;;
20134b0ead49Smrg    esac
20144b0ead49Smrg    specialdeplibs=
20154b0ead49Smrg
20164b0ead49Smrg    libs=
20174b0ead49Smrg    # Find all interdependent deplibs by searching for libraries
20184b0ead49Smrg    # that are linked more than once (e.g. -la -lb -la)
20194b0ead49Smrg    for deplib in $deplibs; do
20204b0ead49Smrg      if test "X$duplicate_deps" = "Xyes" ; then
20214b0ead49Smrg	case "$libs " in
20224b0ead49Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
20234b0ead49Smrg	esac
20244b0ead49Smrg      fi
20254b0ead49Smrg      libs="$libs $deplib"
20264b0ead49Smrg    done
20274b0ead49Smrg
20284b0ead49Smrg    if test "$linkmode" = lib; then
20294b0ead49Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
20304b0ead49Smrg
20314b0ead49Smrg      # Compute libraries that are listed more than once in $predeps
20324b0ead49Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
20334b0ead49Smrg      # not to be eliminated).
20344b0ead49Smrg      pre_post_deps=
20354b0ead49Smrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
20364b0ead49Smrg	for pre_post_dep in $predeps $postdeps; do
20374b0ead49Smrg	  case "$pre_post_deps " in
20384b0ead49Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
20394b0ead49Smrg	  esac
20404b0ead49Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
20414b0ead49Smrg	done
20424b0ead49Smrg      fi
20434b0ead49Smrg      pre_post_deps=
20444b0ead49Smrg    fi
20454b0ead49Smrg
20464b0ead49Smrg    deplibs=
20474b0ead49Smrg    newdependency_libs=
20484b0ead49Smrg    newlib_search_path=
20494b0ead49Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
20504b0ead49Smrg    notinst_deplibs= # not-installed libtool libraries
20514b0ead49Smrg    case $linkmode in
20524b0ead49Smrg    lib)
20534b0ead49Smrg	passes="conv link"
20544b0ead49Smrg	for file in $dlfiles $dlprefiles; do
20554b0ead49Smrg	  case $file in
20564b0ead49Smrg	  *.la) ;;
20574b0ead49Smrg	  *)
20584b0ead49Smrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
20594b0ead49Smrg	    exit $EXIT_FAILURE
20604b0ead49Smrg	    ;;
20614b0ead49Smrg	  esac
20624b0ead49Smrg	done
20634b0ead49Smrg	;;
20644b0ead49Smrg    prog)
20654b0ead49Smrg	compile_deplibs=
20664b0ead49Smrg	finalize_deplibs=
20674b0ead49Smrg	alldeplibs=no
20684b0ead49Smrg	newdlfiles=
20694b0ead49Smrg	newdlprefiles=
20704b0ead49Smrg	passes="conv scan dlopen dlpreopen link"
20714b0ead49Smrg	;;
20724b0ead49Smrg    *)  passes="conv"
20734b0ead49Smrg	;;
20744b0ead49Smrg    esac
20754b0ead49Smrg    for pass in $passes; do
20764b0ead49Smrg      if test "$linkmode,$pass" = "lib,link" ||
20774b0ead49Smrg	 test "$linkmode,$pass" = "prog,scan"; then
20784b0ead49Smrg	libs="$deplibs"
20794b0ead49Smrg	deplibs=
20804b0ead49Smrg      fi
20814b0ead49Smrg      if test "$linkmode" = prog; then
20824b0ead49Smrg	case $pass in
20834b0ead49Smrg	dlopen) libs="$dlfiles" ;;
20844b0ead49Smrg	dlpreopen) libs="$dlprefiles" ;;
20854b0ead49Smrg	link)
20864b0ead49Smrg	  libs="$deplibs %DEPLIBS%"
20874b0ead49Smrg	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
20884b0ead49Smrg	  ;;
20894b0ead49Smrg	esac
20904b0ead49Smrg      fi
20914b0ead49Smrg      if test "$pass" = dlopen; then
20924b0ead49Smrg	# Collect dlpreopened libraries
20934b0ead49Smrg	save_deplibs="$deplibs"
20944b0ead49Smrg	deplibs=
20954b0ead49Smrg      fi
20964b0ead49Smrg      for deplib in $libs; do
20974b0ead49Smrg	lib=
20984b0ead49Smrg	found=no
20994b0ead49Smrg	case $deplib in
21004b0ead49Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
21014b0ead49Smrg	  if test "$linkmode,$pass" = "prog,link"; then
21024b0ead49Smrg	    compile_deplibs="$deplib $compile_deplibs"
21034b0ead49Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
21044b0ead49Smrg	  else
21054b0ead49Smrg	    compiler_flags="$compiler_flags $deplib"
21064b0ead49Smrg	  fi
21074b0ead49Smrg	  continue
21084b0ead49Smrg	  ;;
21094b0ead49Smrg	-l*)
21104b0ead49Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
21114b0ead49Smrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
21124b0ead49Smrg	    continue
21134b0ead49Smrg	  fi
21144b0ead49Smrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
21154b0ead49Smrg	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
21164b0ead49Smrg	    for search_ext in .la $std_shrext .so .a; do
21174b0ead49Smrg	      # Search the libtool library
21184b0ead49Smrg	      lib="$searchdir/lib${name}${search_ext}"
21194b0ead49Smrg	      if test -f "$lib"; then
21204b0ead49Smrg		if test "$search_ext" = ".la"; then
21214b0ead49Smrg		  found=yes
21224b0ead49Smrg		else
21234b0ead49Smrg		  found=no
21244b0ead49Smrg		fi
21254b0ead49Smrg		break 2
21264b0ead49Smrg	      fi
21274b0ead49Smrg	    done
21284b0ead49Smrg	  done
21294b0ead49Smrg	  if test "$found" != yes; then
21304b0ead49Smrg	    # deplib doesn't seem to be a libtool library
21314b0ead49Smrg	    if test "$linkmode,$pass" = "prog,link"; then
21324b0ead49Smrg	      compile_deplibs="$deplib $compile_deplibs"
21334b0ead49Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
21344b0ead49Smrg	    else
21354b0ead49Smrg	      deplibs="$deplib $deplibs"
21364b0ead49Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
21374b0ead49Smrg	    fi
21384b0ead49Smrg	    continue
21394b0ead49Smrg	  else # deplib is a libtool library
21404b0ead49Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
21414b0ead49Smrg	    # We need to do some special things here, and not later.
21424b0ead49Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
21434b0ead49Smrg	      case " $predeps $postdeps " in
21444b0ead49Smrg	      *" $deplib "*)
21454b0ead49Smrg		if (${SED} -e '2q' $lib |
21464b0ead49Smrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
21474b0ead49Smrg		  library_names=
21484b0ead49Smrg		  old_library=
21494b0ead49Smrg		  case $lib in
21504b0ead49Smrg		  */* | *\\*) . $lib ;;
21514b0ead49Smrg		  *) . ./$lib ;;
21524b0ead49Smrg		  esac
21534b0ead49Smrg		  for l in $old_library $library_names; do
21544b0ead49Smrg		    ll="$l"
21554b0ead49Smrg		  done
21564b0ead49Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
21574b0ead49Smrg		    found=no
21584b0ead49Smrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
21594b0ead49Smrg		    test "X$ladir" = "X$lib" && ladir="."
21604b0ead49Smrg		    lib=$ladir/$old_library
21614b0ead49Smrg		    if test "$linkmode,$pass" = "prog,link"; then
21624b0ead49Smrg		      compile_deplibs="$deplib $compile_deplibs"
21634b0ead49Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
21644b0ead49Smrg		    else
21654b0ead49Smrg		      deplibs="$deplib $deplibs"
21664b0ead49Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
21674b0ead49Smrg		    fi
21684b0ead49Smrg		    continue
21694b0ead49Smrg		  fi
21704b0ead49Smrg		fi
21714b0ead49Smrg	        ;;
21724b0ead49Smrg	      *) ;;
21734b0ead49Smrg	      esac
21744b0ead49Smrg	    fi
21754b0ead49Smrg	  fi
21764b0ead49Smrg	  ;; # -l
21774b0ead49Smrg	-L*)
21784b0ead49Smrg	  case $linkmode in
21794b0ead49Smrg	  lib)
21804b0ead49Smrg	    deplibs="$deplib $deplibs"
21814b0ead49Smrg	    test "$pass" = conv && continue
21824b0ead49Smrg	    newdependency_libs="$deplib $newdependency_libs"
21834b0ead49Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
21844b0ead49Smrg	    ;;
21854b0ead49Smrg	  prog)
21864b0ead49Smrg	    if test "$pass" = conv; then
21874b0ead49Smrg	      deplibs="$deplib $deplibs"
21884b0ead49Smrg	      continue
21894b0ead49Smrg	    fi
21904b0ead49Smrg	    if test "$pass" = scan; then
21914b0ead49Smrg	      deplibs="$deplib $deplibs"
21924b0ead49Smrg	    else
21934b0ead49Smrg	      compile_deplibs="$deplib $compile_deplibs"
21944b0ead49Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
21954b0ead49Smrg	    fi
21964b0ead49Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
21974b0ead49Smrg	    ;;
21984b0ead49Smrg	  *)
21994b0ead49Smrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
22004b0ead49Smrg	    ;;
22014b0ead49Smrg	  esac # linkmode
22024b0ead49Smrg	  continue
22034b0ead49Smrg	  ;; # -L
22044b0ead49Smrg	-R*)
22054b0ead49Smrg	  if test "$pass" = link; then
22064b0ead49Smrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
22074b0ead49Smrg	    # Make sure the xrpath contains only unique directories.
22084b0ead49Smrg	    case "$xrpath " in
22094b0ead49Smrg	    *" $dir "*) ;;
22104b0ead49Smrg	    *) xrpath="$xrpath $dir" ;;
22114b0ead49Smrg	    esac
22124b0ead49Smrg	  fi
22134b0ead49Smrg	  deplibs="$deplib $deplibs"
22144b0ead49Smrg	  continue
22154b0ead49Smrg	  ;;
22164b0ead49Smrg	*.la) lib="$deplib" ;;
22174b0ead49Smrg	*.$libext)
22184b0ead49Smrg	  if test "$pass" = conv; then
22194b0ead49Smrg	    deplibs="$deplib $deplibs"
22204b0ead49Smrg	    continue
22214b0ead49Smrg	  fi
22224b0ead49Smrg	  case $linkmode in
22234b0ead49Smrg	  lib)
22244b0ead49Smrg	    valid_a_lib=no
22254b0ead49Smrg	    case $deplibs_check_method in
22264b0ead49Smrg	      match_pattern*)
22274b0ead49Smrg		set dummy $deplibs_check_method
22284b0ead49Smrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
22294b0ead49Smrg		if eval $echo \"$deplib\" 2>/dev/null \
22304b0ead49Smrg		    | $SED 10q \
22314b0ead49Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
22324b0ead49Smrg		  valid_a_lib=yes
22334b0ead49Smrg		fi
22344b0ead49Smrg		;;
22354b0ead49Smrg	      pass_all)
22364b0ead49Smrg		valid_a_lib=yes
22374b0ead49Smrg		;;
22384b0ead49Smrg            esac
22394b0ead49Smrg	    if test "$valid_a_lib" != yes; then
22404b0ead49Smrg	      $echo
22414b0ead49Smrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
22424b0ead49Smrg	      $echo "*** I have the capability to make that library automatically link in when"
22434b0ead49Smrg	      $echo "*** you link to this library.  But I can only do this if you have a"
22444b0ead49Smrg	      $echo "*** shared version of the library, which you do not appear to have"
22454b0ead49Smrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
22464b0ead49Smrg	      $echo "*** that it is just a static archive that I should not used here."
22474b0ead49Smrg	    else
22484b0ead49Smrg	      $echo
22494b0ead49Smrg	      $echo "*** Warning: Linking the shared library $output against the"
22504b0ead49Smrg	      $echo "*** static library $deplib is not portable!"
22514b0ead49Smrg	      deplibs="$deplib $deplibs"
22524b0ead49Smrg	    fi
22534b0ead49Smrg	    continue
22544b0ead49Smrg	    ;;
22554b0ead49Smrg	  prog)
22564b0ead49Smrg	    if test "$pass" != link; then
22574b0ead49Smrg	      deplibs="$deplib $deplibs"
22584b0ead49Smrg	    else
22594b0ead49Smrg	      compile_deplibs="$deplib $compile_deplibs"
22604b0ead49Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
22614b0ead49Smrg	    fi
22624b0ead49Smrg	    continue
22634b0ead49Smrg	    ;;
22644b0ead49Smrg	  esac # linkmode
22654b0ead49Smrg	  ;; # *.$libext
22664b0ead49Smrg	*.lo | *.$objext)
22674b0ead49Smrg	  if test "$pass" = conv; then
22684b0ead49Smrg	    deplibs="$deplib $deplibs"
22694b0ead49Smrg	  elif test "$linkmode" = prog; then
22704b0ead49Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
22714b0ead49Smrg	      # If there is no dlopen support or we're linking statically,
22724b0ead49Smrg	      # we need to preload.
22734b0ead49Smrg	      newdlprefiles="$newdlprefiles $deplib"
22744b0ead49Smrg	      compile_deplibs="$deplib $compile_deplibs"
22754b0ead49Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
22764b0ead49Smrg	    else
22774b0ead49Smrg	      newdlfiles="$newdlfiles $deplib"
22784b0ead49Smrg	    fi
22794b0ead49Smrg	  fi
22804b0ead49Smrg	  continue
22814b0ead49Smrg	  ;;
22824b0ead49Smrg	%DEPLIBS%)
22834b0ead49Smrg	  alldeplibs=yes
22844b0ead49Smrg	  continue
22854b0ead49Smrg	  ;;
22864b0ead49Smrg	esac # case $deplib
22874b0ead49Smrg	if test "$found" = yes || test -f "$lib"; then :
22884b0ead49Smrg	else
22894b0ead49Smrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
22904b0ead49Smrg	  exit $EXIT_FAILURE
22914b0ead49Smrg	fi
22924b0ead49Smrg
22934b0ead49Smrg	# Check to see that this really is a libtool archive.
22944b0ead49Smrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
22954b0ead49Smrg	else
22964b0ead49Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
22974b0ead49Smrg	  exit $EXIT_FAILURE
22984b0ead49Smrg	fi
22994b0ead49Smrg
23004b0ead49Smrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
23014b0ead49Smrg	test "X$ladir" = "X$lib" && ladir="."
23024b0ead49Smrg
23034b0ead49Smrg	dlname=
23044b0ead49Smrg	dlopen=
23054b0ead49Smrg	dlpreopen=
23064b0ead49Smrg	libdir=
23074b0ead49Smrg	library_names=
23084b0ead49Smrg	old_library=
23094b0ead49Smrg	# If the library was installed with an old release of libtool,
23104b0ead49Smrg	# it will not redefine variables installed, or shouldnotlink
23114b0ead49Smrg	installed=yes
23124b0ead49Smrg	shouldnotlink=no
23134b0ead49Smrg	avoidtemprpath=
23144b0ead49Smrg
23154b0ead49Smrg
23164b0ead49Smrg	# Read the .la file
23174b0ead49Smrg	case $lib in
23184b0ead49Smrg	*/* | *\\*) . $lib ;;
23194b0ead49Smrg	*) . ./$lib ;;
23204b0ead49Smrg	esac
23214b0ead49Smrg
23224b0ead49Smrg	if test "$linkmode,$pass" = "lib,link" ||
23234b0ead49Smrg	   test "$linkmode,$pass" = "prog,scan" ||
23244b0ead49Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
23254b0ead49Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
23264b0ead49Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
23274b0ead49Smrg	fi
23284b0ead49Smrg
23294b0ead49Smrg	if test "$pass" = conv; then
23304b0ead49Smrg	  # Only check for convenience libraries
23314b0ead49Smrg	  deplibs="$lib $deplibs"
23324b0ead49Smrg	  if test -z "$libdir"; then
23334b0ead49Smrg	    if test -z "$old_library"; then
23344b0ead49Smrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
23354b0ead49Smrg	      exit $EXIT_FAILURE
23364b0ead49Smrg	    fi
23374b0ead49Smrg	    # It is a libtool convenience library, so add in its objects.
23384b0ead49Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
23394b0ead49Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
23404b0ead49Smrg	    tmp_libs=
23414b0ead49Smrg	    for deplib in $dependency_libs; do
23424b0ead49Smrg	      deplibs="$deplib $deplibs"
23434b0ead49Smrg              if test "X$duplicate_deps" = "Xyes" ; then
23444b0ead49Smrg	        case "$tmp_libs " in
23454b0ead49Smrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
23464b0ead49Smrg	        esac
23474b0ead49Smrg              fi
23484b0ead49Smrg	      tmp_libs="$tmp_libs $deplib"
23494b0ead49Smrg	    done
23504b0ead49Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
23514b0ead49Smrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
23524b0ead49Smrg	    exit $EXIT_FAILURE
23534b0ead49Smrg	  fi
23544b0ead49Smrg	  continue
23554b0ead49Smrg	fi # $pass = conv
23564b0ead49Smrg
23574b0ead49Smrg
23584b0ead49Smrg	# Get the name of the library we link against.
23594b0ead49Smrg	linklib=
23604b0ead49Smrg	for l in $old_library $library_names; do
23614b0ead49Smrg	  linklib="$l"
23624b0ead49Smrg	done
23634b0ead49Smrg	if test -z "$linklib"; then
23644b0ead49Smrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
23654b0ead49Smrg	  exit $EXIT_FAILURE
23664b0ead49Smrg	fi
23674b0ead49Smrg
23684b0ead49Smrg	# This library was specified with -dlopen.
23694b0ead49Smrg	if test "$pass" = dlopen; then
23704b0ead49Smrg	  if test -z "$libdir"; then
23714b0ead49Smrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
23724b0ead49Smrg	    exit $EXIT_FAILURE
23734b0ead49Smrg	  fi
23744b0ead49Smrg	  if test -z "$dlname" ||
23754b0ead49Smrg	     test "$dlopen_support" != yes ||
23764b0ead49Smrg	     test "$build_libtool_libs" = no; then
23774b0ead49Smrg	    # If there is no dlname, no dlopen support or we're linking
23784b0ead49Smrg	    # statically, we need to preload.  We also need to preload any
23794b0ead49Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
23804b0ead49Smrg	    # bomb out in the load deplibs phase.
23814b0ead49Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
23824b0ead49Smrg	  else
23834b0ead49Smrg	    newdlfiles="$newdlfiles $lib"
23844b0ead49Smrg	  fi
23854b0ead49Smrg	  continue
23864b0ead49Smrg	fi # $pass = dlopen
23874b0ead49Smrg
23884b0ead49Smrg	# We need an absolute path.
23894b0ead49Smrg	case $ladir in
23904b0ead49Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
23914b0ead49Smrg	*)
23924b0ead49Smrg	  abs_ladir=`cd "$ladir" && pwd`
23934b0ead49Smrg	  if test -z "$abs_ladir"; then
23944b0ead49Smrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
23954b0ead49Smrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
23964b0ead49Smrg	    abs_ladir="$ladir"
23974b0ead49Smrg	  fi
23984b0ead49Smrg	  ;;
23994b0ead49Smrg	esac
24004b0ead49Smrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
24014b0ead49Smrg
24024b0ead49Smrg	# Find the relevant object directory and library name.
24034b0ead49Smrg	if test "X$installed" = Xyes; then
24044b0ead49Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
24054b0ead49Smrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
24064b0ead49Smrg	    dir="$ladir"
24074b0ead49Smrg	    absdir="$abs_ladir"
24084b0ead49Smrg	    libdir="$abs_ladir"
24094b0ead49Smrg	  else
24104b0ead49Smrg	    dir="$libdir"
24114b0ead49Smrg	    absdir="$libdir"
24124b0ead49Smrg	  fi
24134b0ead49Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
24144b0ead49Smrg	else
24154b0ead49Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
24164b0ead49Smrg	    dir="$ladir"
24174b0ead49Smrg	    absdir="$abs_ladir"
24184b0ead49Smrg	    # Remove this search path later
24194b0ead49Smrg	    notinst_path="$notinst_path $abs_ladir"
24204b0ead49Smrg	  else
24214b0ead49Smrg	    dir="$ladir/$objdir"
24224b0ead49Smrg	    absdir="$abs_ladir/$objdir"
24234b0ead49Smrg	    # Remove this search path later
24244b0ead49Smrg	    notinst_path="$notinst_path $abs_ladir"
24254b0ead49Smrg	  fi
24264b0ead49Smrg	fi # $installed = yes
24274b0ead49Smrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
24284b0ead49Smrg
24294b0ead49Smrg	# This library was specified with -dlpreopen.
24304b0ead49Smrg	if test "$pass" = dlpreopen; then
24314b0ead49Smrg	  if test -z "$libdir"; then
24324b0ead49Smrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
24334b0ead49Smrg	    exit $EXIT_FAILURE
24344b0ead49Smrg	  fi
24354b0ead49Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
24364b0ead49Smrg	  # are required to link).
24374b0ead49Smrg	  if test -n "$old_library"; then
24384b0ead49Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
24394b0ead49Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
24404b0ead49Smrg	  elif test -n "$dlname"; then
24414b0ead49Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
24424b0ead49Smrg	  else
24434b0ead49Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
24444b0ead49Smrg	  fi
24454b0ead49Smrg	fi # $pass = dlpreopen
24464b0ead49Smrg
24474b0ead49Smrg	if test -z "$libdir"; then
24484b0ead49Smrg	  # Link the convenience library
24494b0ead49Smrg	  if test "$linkmode" = lib; then
24504b0ead49Smrg	    deplibs="$dir/$old_library $deplibs"
24514b0ead49Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
24524b0ead49Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
24534b0ead49Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
24544b0ead49Smrg	  else
24554b0ead49Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
24564b0ead49Smrg	  fi
24574b0ead49Smrg	  continue
24584b0ead49Smrg	fi
24594b0ead49Smrg
24604b0ead49Smrg
24614b0ead49Smrg	if test "$linkmode" = prog && test "$pass" != link; then
24624b0ead49Smrg	  newlib_search_path="$newlib_search_path $ladir"
24634b0ead49Smrg	  deplibs="$lib $deplibs"
24644b0ead49Smrg
24654b0ead49Smrg	  linkalldeplibs=no
24664b0ead49Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
24674b0ead49Smrg	     test "$build_libtool_libs" = no; then
24684b0ead49Smrg	    linkalldeplibs=yes
24694b0ead49Smrg	  fi
24704b0ead49Smrg
24714b0ead49Smrg	  tmp_libs=
24724b0ead49Smrg	  for deplib in $dependency_libs; do
24734b0ead49Smrg	    case $deplib in
24744b0ead49Smrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
24754b0ead49Smrg	    esac
24764b0ead49Smrg	    # Need to link against all dependency_libs?
24774b0ead49Smrg	    if test "$linkalldeplibs" = yes; then
24784b0ead49Smrg	      deplibs="$deplib $deplibs"
24794b0ead49Smrg	    else
24804b0ead49Smrg	      # Need to hardcode shared library paths
24814b0ead49Smrg	      # or/and link against static libraries
24824b0ead49Smrg	      newdependency_libs="$deplib $newdependency_libs"
24834b0ead49Smrg	    fi
24844b0ead49Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
24854b0ead49Smrg	      case "$tmp_libs " in
24864b0ead49Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
24874b0ead49Smrg	      esac
24884b0ead49Smrg	    fi
24894b0ead49Smrg	    tmp_libs="$tmp_libs $deplib"
24904b0ead49Smrg	  done # for deplib
24914b0ead49Smrg	  continue
24924b0ead49Smrg	fi # $linkmode = prog...
24934b0ead49Smrg
24944b0ead49Smrg	if test "$linkmode,$pass" = "prog,link"; then
24954b0ead49Smrg	  if test -n "$library_names" &&
24964b0ead49Smrg	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
24974b0ead49Smrg	    # We need to hardcode the library path
24984b0ead49Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
24994b0ead49Smrg	      # Make sure the rpath contains only unique directories.
25004b0ead49Smrg	      case "$temp_rpath " in
25014b0ead49Smrg	      *" $dir "*) ;;
25024b0ead49Smrg	      *" $absdir "*) ;;
25034b0ead49Smrg	      *) temp_rpath="$temp_rpath $absdir" ;;
25044b0ead49Smrg	      esac
25054b0ead49Smrg	    fi
25064b0ead49Smrg
25074b0ead49Smrg	    # Hardcode the library path.
25084b0ead49Smrg	    # Skip directories that are in the system default run-time
25094b0ead49Smrg	    # search path.
25104b0ead49Smrg	    case " $sys_lib_dlsearch_path " in
25114b0ead49Smrg	    *" $absdir "*) ;;
25124b0ead49Smrg	    *)
25134b0ead49Smrg	      case "$compile_rpath " in
25144b0ead49Smrg	      *" $absdir "*) ;;
25154b0ead49Smrg	      *) compile_rpath="$compile_rpath $absdir"
25164b0ead49Smrg	      esac
25174b0ead49Smrg	      ;;
25184b0ead49Smrg	    esac
25194b0ead49Smrg	    case " $sys_lib_dlsearch_path " in
25204b0ead49Smrg	    *" $libdir "*) ;;
25214b0ead49Smrg	    *)
25224b0ead49Smrg	      case "$finalize_rpath " in
25234b0ead49Smrg	      *" $libdir "*) ;;
25244b0ead49Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
25254b0ead49Smrg	      esac
25264b0ead49Smrg	      ;;
25274b0ead49Smrg	    esac
25284b0ead49Smrg	  fi # $linkmode,$pass = prog,link...
25294b0ead49Smrg
25304b0ead49Smrg	  if test "$alldeplibs" = yes &&
25314b0ead49Smrg	     { test "$deplibs_check_method" = pass_all ||
25324b0ead49Smrg	       { test "$build_libtool_libs" = yes &&
25334b0ead49Smrg		 test -n "$library_names"; }; }; then
25344b0ead49Smrg	    # We only need to search for static libraries
25354b0ead49Smrg	    continue
25364b0ead49Smrg	  fi
25374b0ead49Smrg	fi
25384b0ead49Smrg
25394b0ead49Smrg	link_static=no # Whether the deplib will be linked statically
25404b0ead49Smrg	use_static_libs=$prefer_static_libs
25414b0ead49Smrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
25424b0ead49Smrg	  use_static_libs=no
25434b0ead49Smrg	fi
25444b0ead49Smrg	if test -n "$library_names" &&
25454b0ead49Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
25464b0ead49Smrg	  if test "$installed" = no; then
25474b0ead49Smrg	    notinst_deplibs="$notinst_deplibs $lib"
25484b0ead49Smrg	    need_relink=yes
25494b0ead49Smrg	  fi
25504b0ead49Smrg	  # This is a shared library
25514b0ead49Smrg
25524b0ead49Smrg	  # Warn about portability, can't link against -module's on
25534b0ead49Smrg	  # some systems (darwin)
25544b0ead49Smrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
25554b0ead49Smrg	    $echo
25564b0ead49Smrg	    if test "$linkmode" = prog; then
25574b0ead49Smrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
25584b0ead49Smrg	    else
25594b0ead49Smrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
25604b0ead49Smrg	    fi
25614b0ead49Smrg	    $echo "*** $linklib is not portable!"
25624b0ead49Smrg	  fi
25634b0ead49Smrg	  if test "$linkmode" = lib &&
25644b0ead49Smrg	     test "$hardcode_into_libs" = yes; then
25654b0ead49Smrg	    # Hardcode the library path.
25664b0ead49Smrg	    # Skip directories that are in the system default run-time
25674b0ead49Smrg	    # search path.
25684b0ead49Smrg	    case " $sys_lib_dlsearch_path " in
25694b0ead49Smrg	    *" $absdir "*) ;;
25704b0ead49Smrg	    *)
25714b0ead49Smrg	      case "$compile_rpath " in
25724b0ead49Smrg	      *" $absdir "*) ;;
25734b0ead49Smrg	      *) compile_rpath="$compile_rpath $absdir"
25744b0ead49Smrg	      esac
25754b0ead49Smrg	      ;;
25764b0ead49Smrg	    esac
25774b0ead49Smrg	    case " $sys_lib_dlsearch_path " in
25784b0ead49Smrg	    *" $libdir "*) ;;
25794b0ead49Smrg	    *)
25804b0ead49Smrg	      case "$finalize_rpath " in
25814b0ead49Smrg	      *" $libdir "*) ;;
25824b0ead49Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
25834b0ead49Smrg	      esac
25844b0ead49Smrg	      ;;
25854b0ead49Smrg	    esac
25864b0ead49Smrg	  fi
25874b0ead49Smrg
25884b0ead49Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
25894b0ead49Smrg	    # figure out the soname
25904b0ead49Smrg	    set dummy $library_names
25914b0ead49Smrg	    realname="$2"
25924b0ead49Smrg	    shift; shift
25934b0ead49Smrg	    libname=`eval \\$echo \"$libname_spec\"`
25944b0ead49Smrg	    # use dlname if we got it. it's perfectly good, no?
25954b0ead49Smrg	    if test -n "$dlname"; then
25964b0ead49Smrg	      soname="$dlname"
25974b0ead49Smrg	    elif test -n "$soname_spec"; then
25984b0ead49Smrg	      # bleh windows
25994b0ead49Smrg	      case $host in
26004b0ead49Smrg	      *cygwin* | mingw*)
26014b0ead49Smrg		major=`expr $current - $age`
26024b0ead49Smrg		versuffix="-$major"
26034b0ead49Smrg		;;
26044b0ead49Smrg	      esac
26054b0ead49Smrg	      eval soname=\"$soname_spec\"
26064b0ead49Smrg	    else
26074b0ead49Smrg	      soname="$realname"
26084b0ead49Smrg	    fi
26094b0ead49Smrg
26104b0ead49Smrg	    # Make a new name for the extract_expsyms_cmds to use
26114b0ead49Smrg	    soroot="$soname"
26124b0ead49Smrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
26134b0ead49Smrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
26144b0ead49Smrg
26154b0ead49Smrg	    # If the library has no export list, then create one now
26164b0ead49Smrg	    if test -f "$output_objdir/$soname-def"; then :
26174b0ead49Smrg	    else
26184b0ead49Smrg	      $show "extracting exported symbol list from \`$soname'"
26194b0ead49Smrg	      save_ifs="$IFS"; IFS='~'
26204b0ead49Smrg	      cmds=$extract_expsyms_cmds
26214b0ead49Smrg	      for cmd in $cmds; do
26224b0ead49Smrg		IFS="$save_ifs"
26234b0ead49Smrg		eval cmd=\"$cmd\"
26244b0ead49Smrg		$show "$cmd"
26254b0ead49Smrg		$run eval "$cmd" || exit $?
26264b0ead49Smrg	      done
26274b0ead49Smrg	      IFS="$save_ifs"
26284b0ead49Smrg	    fi
26294b0ead49Smrg
26304b0ead49Smrg	    # Create $newlib
26314b0ead49Smrg	    if test -f "$output_objdir/$newlib"; then :; else
26324b0ead49Smrg	      $show "generating import library for \`$soname'"
26334b0ead49Smrg	      save_ifs="$IFS"; IFS='~'
26344b0ead49Smrg	      cmds=$old_archive_from_expsyms_cmds
26354b0ead49Smrg	      for cmd in $cmds; do
26364b0ead49Smrg		IFS="$save_ifs"
26374b0ead49Smrg		eval cmd=\"$cmd\"
26384b0ead49Smrg		$show "$cmd"
26394b0ead49Smrg		$run eval "$cmd" || exit $?
26404b0ead49Smrg	      done
26414b0ead49Smrg	      IFS="$save_ifs"
26424b0ead49Smrg	    fi
26434b0ead49Smrg	    # make sure the library variables are pointing to the new library
26444b0ead49Smrg	    dir=$output_objdir
26454b0ead49Smrg	    linklib=$newlib
26464b0ead49Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
26474b0ead49Smrg
26484b0ead49Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
26494b0ead49Smrg	    add_shlibpath=
26504b0ead49Smrg	    add_dir=
26514b0ead49Smrg	    add=
26524b0ead49Smrg	    lib_linked=yes
26534b0ead49Smrg	    case $hardcode_action in
26544b0ead49Smrg	    immediate | unsupported)
26554b0ead49Smrg	      if test "$hardcode_direct" = no; then
26564b0ead49Smrg		add="$dir/$linklib"
26574b0ead49Smrg		case $host in
26584b0ead49Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
26594b0ead49Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
26604b0ead49Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
26614b0ead49Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
26624b0ead49Smrg		  *-*-darwin* )
26634b0ead49Smrg		    # if the lib is a module then we can not link against
26644b0ead49Smrg		    # it, someone is ignoring the new warnings I added
26654b0ead49Smrg		    if /usr/bin/file -L $add 2> /dev/null |
26664b0ead49Smrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
26674b0ead49Smrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
26684b0ead49Smrg		      if test -z "$old_library" ; then
26694b0ead49Smrg		        $echo
26704b0ead49Smrg		        $echo "** And there doesn't seem to be a static archive available"
26714b0ead49Smrg		        $echo "** The link will probably fail, sorry"
26724b0ead49Smrg		      else
26734b0ead49Smrg		        add="$dir/$old_library"
26744b0ead49Smrg		      fi
26754b0ead49Smrg		    fi
26764b0ead49Smrg		esac
26774b0ead49Smrg	      elif test "$hardcode_minus_L" = no; then
26784b0ead49Smrg		case $host in
26794b0ead49Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
26804b0ead49Smrg		esac
26814b0ead49Smrg		add_dir="-L$dir"
26824b0ead49Smrg		add="-l$name"
26834b0ead49Smrg	      elif test "$hardcode_shlibpath_var" = no; then
26844b0ead49Smrg		add_shlibpath="$dir"
26854b0ead49Smrg		add="-l$name"
26864b0ead49Smrg	      else
26874b0ead49Smrg		lib_linked=no
26884b0ead49Smrg	      fi
26894b0ead49Smrg	      ;;
26904b0ead49Smrg	    relink)
26914b0ead49Smrg	      if test "$hardcode_direct" = yes; then
26924b0ead49Smrg		add="$dir/$linklib"
26934b0ead49Smrg	      elif test "$hardcode_minus_L" = yes; then
26944b0ead49Smrg		add_dir="-L$dir"
26954b0ead49Smrg		# Try looking first in the location we're being installed to.
26964b0ead49Smrg		if test -n "$inst_prefix_dir"; then
26974b0ead49Smrg		  case $libdir in
26984b0ead49Smrg		    [\\/]*)
26994b0ead49Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
27004b0ead49Smrg		      ;;
27014b0ead49Smrg		  esac
27024b0ead49Smrg		fi
27034b0ead49Smrg		add="-l$name"
27044b0ead49Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
27054b0ead49Smrg		add_shlibpath="$dir"
27064b0ead49Smrg		add="-l$name"
27074b0ead49Smrg	      else
27084b0ead49Smrg		lib_linked=no
27094b0ead49Smrg	      fi
27104b0ead49Smrg	      ;;
27114b0ead49Smrg	    *) lib_linked=no ;;
27124b0ead49Smrg	    esac
27134b0ead49Smrg
27144b0ead49Smrg	    if test "$lib_linked" != yes; then
27154b0ead49Smrg	      $echo "$modename: configuration error: unsupported hardcode properties"
27164b0ead49Smrg	      exit $EXIT_FAILURE
27174b0ead49Smrg	    fi
27184b0ead49Smrg
27194b0ead49Smrg	    if test -n "$add_shlibpath"; then
27204b0ead49Smrg	      case :$compile_shlibpath: in
27214b0ead49Smrg	      *":$add_shlibpath:"*) ;;
27224b0ead49Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
27234b0ead49Smrg	      esac
27244b0ead49Smrg	    fi
27254b0ead49Smrg	    if test "$linkmode" = prog; then
27264b0ead49Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
27274b0ead49Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
27284b0ead49Smrg	    else
27294b0ead49Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
27304b0ead49Smrg	      test -n "$add" && deplibs="$add $deplibs"
27314b0ead49Smrg	      if test "$hardcode_direct" != yes && \
27324b0ead49Smrg		 test "$hardcode_minus_L" != yes && \
27334b0ead49Smrg		 test "$hardcode_shlibpath_var" = yes; then
27344b0ead49Smrg		case :$finalize_shlibpath: in
27354b0ead49Smrg		*":$libdir:"*) ;;
27364b0ead49Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
27374b0ead49Smrg		esac
27384b0ead49Smrg	      fi
27394b0ead49Smrg	    fi
27404b0ead49Smrg	  fi
27414b0ead49Smrg
27424b0ead49Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
27434b0ead49Smrg	    add_shlibpath=
27444b0ead49Smrg	    add_dir=
27454b0ead49Smrg	    add=
27464b0ead49Smrg	    # Finalize command for both is simple: just hardcode it.
27474b0ead49Smrg	    if test "$hardcode_direct" = yes; then
27484b0ead49Smrg	      add="$libdir/$linklib"
27494b0ead49Smrg	    elif test "$hardcode_minus_L" = yes; then
27504b0ead49Smrg	      add_dir="-L$libdir"
27514b0ead49Smrg	      add="-l$name"
27524b0ead49Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
27534b0ead49Smrg	      case :$finalize_shlibpath: in
27544b0ead49Smrg	      *":$libdir:"*) ;;
27554b0ead49Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
27564b0ead49Smrg	      esac
27574b0ead49Smrg	      add="-l$name"
27584b0ead49Smrg	    elif test "$hardcode_automatic" = yes; then
27594b0ead49Smrg	      if test -n "$inst_prefix_dir" &&
27604b0ead49Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
27614b0ead49Smrg	        add="$inst_prefix_dir$libdir/$linklib"
27624b0ead49Smrg	      else
27634b0ead49Smrg	        add="$libdir/$linklib"
27644b0ead49Smrg	      fi
27654b0ead49Smrg	    else
27664b0ead49Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
27674b0ead49Smrg	      add_dir="-L$libdir"
27684b0ead49Smrg	      # Try looking first in the location we're being installed to.
27694b0ead49Smrg	      if test -n "$inst_prefix_dir"; then
27704b0ead49Smrg		case $libdir in
27714b0ead49Smrg		  [\\/]*)
27724b0ead49Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
27734b0ead49Smrg		    ;;
27744b0ead49Smrg		esac
27754b0ead49Smrg	      fi
27764b0ead49Smrg	      add="-l$name"
27774b0ead49Smrg	    fi
27784b0ead49Smrg
27794b0ead49Smrg	    if test "$linkmode" = prog; then
27804b0ead49Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
27814b0ead49Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
27824b0ead49Smrg	    else
27834b0ead49Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
27844b0ead49Smrg	      test -n "$add" && deplibs="$add $deplibs"
27854b0ead49Smrg	    fi
27864b0ead49Smrg	  fi
27874b0ead49Smrg	elif test "$linkmode" = prog; then
27884b0ead49Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
27894b0ead49Smrg	  # is not unsupported.  This is valid on all known static and
27904b0ead49Smrg	  # shared platforms.
27914b0ead49Smrg	  if test "$hardcode_direct" != unsupported; then
27924b0ead49Smrg	    test -n "$old_library" && linklib="$old_library"
27934b0ead49Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
27944b0ead49Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
27954b0ead49Smrg	  else
27964b0ead49Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
27974b0ead49Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
27984b0ead49Smrg	  fi
27994b0ead49Smrg	elif test "$build_libtool_libs" = yes; then
28004b0ead49Smrg	  # Not a shared library
28014b0ead49Smrg	  if test "$deplibs_check_method" != pass_all; then
28024b0ead49Smrg	    # We're trying link a shared library against a static one
28034b0ead49Smrg	    # but the system doesn't support it.
28044b0ead49Smrg
28054b0ead49Smrg	    # Just print a warning and add the library to dependency_libs so
28064b0ead49Smrg	    # that the program can be linked against the static library.
28074b0ead49Smrg	    $echo
28084b0ead49Smrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
28094b0ead49Smrg	    $echo "*** I have the capability to make that library automatically link in when"
28104b0ead49Smrg	    $echo "*** you link to this library.  But I can only do this if you have a"
28114b0ead49Smrg	    $echo "*** shared version of the library, which you do not appear to have."
28124b0ead49Smrg	    if test "$module" = yes; then
28134b0ead49Smrg	      $echo "*** But as you try to build a module library, libtool will still create "
28144b0ead49Smrg	      $echo "*** a static module, that should work as long as the dlopening application"
28154b0ead49Smrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
28164b0ead49Smrg	      if test -z "$global_symbol_pipe"; then
28174b0ead49Smrg		$echo
28184b0ead49Smrg		$echo "*** However, this would only work if libtool was able to extract symbol"
28194b0ead49Smrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
28204b0ead49Smrg		$echo "*** not find such a program.  So, this module is probably useless."
28214b0ead49Smrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
28224b0ead49Smrg	      fi
28234b0ead49Smrg	      if test "$build_old_libs" = no; then
28244b0ead49Smrg		build_libtool_libs=module
28254b0ead49Smrg		build_old_libs=yes
28264b0ead49Smrg	      else
28274b0ead49Smrg		build_libtool_libs=no
28284b0ead49Smrg	      fi
28294b0ead49Smrg	    fi
28304b0ead49Smrg	  else
28314b0ead49Smrg	    deplibs="$dir/$old_library $deplibs"
28324b0ead49Smrg	    link_static=yes
28334b0ead49Smrg	  fi
28344b0ead49Smrg	fi # link shared/static library?
28354b0ead49Smrg
28364b0ead49Smrg	if test "$linkmode" = lib; then
28374b0ead49Smrg	  if test -n "$dependency_libs" &&
28384b0ead49Smrg	     { test "$hardcode_into_libs" != yes ||
28394b0ead49Smrg	       test "$build_old_libs" = yes ||
28404b0ead49Smrg	       test "$link_static" = yes; }; then
28414b0ead49Smrg	    # Extract -R from dependency_libs
28424b0ead49Smrg	    temp_deplibs=
28434b0ead49Smrg	    for libdir in $dependency_libs; do
28444b0ead49Smrg	      case $libdir in
28454b0ead49Smrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
28464b0ead49Smrg		   case " $xrpath " in
28474b0ead49Smrg		   *" $temp_xrpath "*) ;;
28484b0ead49Smrg		   *) xrpath="$xrpath $temp_xrpath";;
28494b0ead49Smrg		   esac;;
28504b0ead49Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
28514b0ead49Smrg	      esac
28524b0ead49Smrg	    done
28534b0ead49Smrg	    dependency_libs="$temp_deplibs"
28544b0ead49Smrg	  fi
28554b0ead49Smrg
28564b0ead49Smrg	  newlib_search_path="$newlib_search_path $absdir"
28574b0ead49Smrg	  # Link against this library
28584b0ead49Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
28594b0ead49Smrg	  # ... and its dependency_libs
28604b0ead49Smrg	  tmp_libs=
28614b0ead49Smrg	  for deplib in $dependency_libs; do
28624b0ead49Smrg	    newdependency_libs="$deplib $newdependency_libs"
28634b0ead49Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
28644b0ead49Smrg	      case "$tmp_libs " in
28654b0ead49Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
28664b0ead49Smrg	      esac
28674b0ead49Smrg	    fi
28684b0ead49Smrg	    tmp_libs="$tmp_libs $deplib"
28694b0ead49Smrg	  done
28704b0ead49Smrg
28714b0ead49Smrg	  if test "$link_all_deplibs" != no; then
28724b0ead49Smrg	    # Add the search paths of all dependency libraries
28734b0ead49Smrg	    for deplib in $dependency_libs; do
28744b0ead49Smrg	      case $deplib in
28754b0ead49Smrg	      -L*) path="$deplib" ;;
28764b0ead49Smrg	      *.la)
28774b0ead49Smrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
28784b0ead49Smrg		test "X$dir" = "X$deplib" && dir="."
28794b0ead49Smrg		# We need an absolute path.
28804b0ead49Smrg		case $dir in
28814b0ead49Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
28824b0ead49Smrg		*)
28834b0ead49Smrg		  absdir=`cd "$dir" && pwd`
28844b0ead49Smrg		  if test -z "$absdir"; then
28854b0ead49Smrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
28864b0ead49Smrg		    absdir="$dir"
28874b0ead49Smrg		  fi
28884b0ead49Smrg		  ;;
28894b0ead49Smrg		esac
28904b0ead49Smrg		if grep "^installed=no" $deplib > /dev/null; then
28914b0ead49Smrg		  path="$absdir/$objdir"
28924b0ead49Smrg		else
28934b0ead49Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
28944b0ead49Smrg		  if test -z "$libdir"; then
28954b0ead49Smrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
28964b0ead49Smrg		    exit $EXIT_FAILURE
28974b0ead49Smrg		  fi
28984b0ead49Smrg		  if test "$absdir" != "$libdir"; then
28994b0ead49Smrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
29004b0ead49Smrg		  fi
29014b0ead49Smrg		  path="$absdir"
29024b0ead49Smrg		fi
29034b0ead49Smrg		depdepl=
29044b0ead49Smrg		case $host in
29054b0ead49Smrg		*-*-darwin*)
29064b0ead49Smrg		  # we do not want to link against static libs,
29074b0ead49Smrg		  # but need to link against shared
29084b0ead49Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
29094b0ead49Smrg		  if test -n "$deplibrary_names" ; then
29104b0ead49Smrg		    for tmp in $deplibrary_names ; do
29114b0ead49Smrg		      depdepl=$tmp
29124b0ead49Smrg		    done
29134b0ead49Smrg		    if test -f "$path/$depdepl" ; then
29144b0ead49Smrg		      depdepl="$path/$depdepl"
29154b0ead49Smrg		    fi
29164b0ead49Smrg		    # do not add paths which are already there
29174b0ead49Smrg		    case " $newlib_search_path " in
29184b0ead49Smrg		    *" $path "*) ;;
29194b0ead49Smrg		    *) newlib_search_path="$newlib_search_path $path";;
29204b0ead49Smrg		    esac
29214b0ead49Smrg		  fi
29224b0ead49Smrg		  path=""
29234b0ead49Smrg		  ;;
29244b0ead49Smrg		*)
29254b0ead49Smrg		  path="-L$path"
29264b0ead49Smrg		  ;;
29274b0ead49Smrg		esac
29284b0ead49Smrg		;;
29294b0ead49Smrg	      -l*)
29304b0ead49Smrg		case $host in
29314b0ead49Smrg		*-*-darwin*)
29324b0ead49Smrg		  # Again, we only want to link against shared libraries
29334b0ead49Smrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
29344b0ead49Smrg		  for tmp in $newlib_search_path ; do
29354b0ead49Smrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
29364b0ead49Smrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
29374b0ead49Smrg		      break
29384b0ead49Smrg		    fi
29394b0ead49Smrg		  done
29404b0ead49Smrg		  path=""
29414b0ead49Smrg		  ;;
29424b0ead49Smrg		*) continue ;;
29434b0ead49Smrg		esac
29444b0ead49Smrg		;;
29454b0ead49Smrg	      *) continue ;;
29464b0ead49Smrg	      esac
29474b0ead49Smrg	      case " $deplibs " in
29484b0ead49Smrg	      *" $path "*) ;;
29494b0ead49Smrg	      *) deplibs="$path $deplibs" ;;
29504b0ead49Smrg	      esac
29514b0ead49Smrg	      case " $deplibs " in
29524b0ead49Smrg	      *" $depdepl "*) ;;
29534b0ead49Smrg	      *) deplibs="$depdepl $deplibs" ;;
29544b0ead49Smrg	      esac
29554b0ead49Smrg	    done
29564b0ead49Smrg	  fi # link_all_deplibs != no
29574b0ead49Smrg	fi # linkmode = lib
29584b0ead49Smrg      done # for deplib in $libs
29594b0ead49Smrg      dependency_libs="$newdependency_libs"
29604b0ead49Smrg      if test "$pass" = dlpreopen; then
29614b0ead49Smrg	# Link the dlpreopened libraries before other libraries
29624b0ead49Smrg	for deplib in $save_deplibs; do
29634b0ead49Smrg	  deplibs="$deplib $deplibs"
29644b0ead49Smrg	done
29654b0ead49Smrg      fi
29664b0ead49Smrg      if test "$pass" != dlopen; then
29674b0ead49Smrg	if test "$pass" != conv; then
29684b0ead49Smrg	  # Make sure lib_search_path contains only unique directories.
29694b0ead49Smrg	  lib_search_path=
29704b0ead49Smrg	  for dir in $newlib_search_path; do
29714b0ead49Smrg	    case "$lib_search_path " in
29724b0ead49Smrg	    *" $dir "*) ;;
29734b0ead49Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
29744b0ead49Smrg	    esac
29754b0ead49Smrg	  done
29764b0ead49Smrg	  newlib_search_path=
29774b0ead49Smrg	fi
29784b0ead49Smrg
29794b0ead49Smrg	if test "$linkmode,$pass" != "prog,link"; then
29804b0ead49Smrg	  vars="deplibs"
29814b0ead49Smrg	else
29824b0ead49Smrg	  vars="compile_deplibs finalize_deplibs"
29834b0ead49Smrg	fi
29844b0ead49Smrg	for var in $vars dependency_libs; do
29854b0ead49Smrg	  # Add libraries to $var in reverse order
29864b0ead49Smrg	  eval tmp_libs=\"\$$var\"
29874b0ead49Smrg	  new_libs=
29884b0ead49Smrg	  for deplib in $tmp_libs; do
29894b0ead49Smrg	    # FIXME: Pedantically, this is the right thing to do, so
29904b0ead49Smrg	    #        that some nasty dependency loop isn't accidentally
29914b0ead49Smrg	    #        broken:
29924b0ead49Smrg	    #new_libs="$deplib $new_libs"
29934b0ead49Smrg	    # Pragmatically, this seems to cause very few problems in
29944b0ead49Smrg	    # practice:
29954b0ead49Smrg	    case $deplib in
29964b0ead49Smrg	    -L*) new_libs="$deplib $new_libs" ;;
29974b0ead49Smrg	    -R*) ;;
29984b0ead49Smrg	    *)
29994b0ead49Smrg	      # And here is the reason: when a library appears more
30004b0ead49Smrg	      # than once as an explicit dependence of a library, or
30014b0ead49Smrg	      # is implicitly linked in more than once by the
30024b0ead49Smrg	      # compiler, it is considered special, and multiple
30034b0ead49Smrg	      # occurrences thereof are not removed.  Compare this
30044b0ead49Smrg	      # with having the same library being listed as a
30054b0ead49Smrg	      # dependency of multiple other libraries: in this case,
30064b0ead49Smrg	      # we know (pedantically, we assume) the library does not
30074b0ead49Smrg	      # need to be listed more than once, so we keep only the
30084b0ead49Smrg	      # last copy.  This is not always right, but it is rare
30094b0ead49Smrg	      # enough that we require users that really mean to play
30104b0ead49Smrg	      # such unportable linking tricks to link the library
30114b0ead49Smrg	      # using -Wl,-lname, so that libtool does not consider it
30124b0ead49Smrg	      # for duplicate removal.
30134b0ead49Smrg	      case " $specialdeplibs " in
30144b0ead49Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
30154b0ead49Smrg	      *)
30164b0ead49Smrg		case " $new_libs " in
30174b0ead49Smrg		*" $deplib "*) ;;
30184b0ead49Smrg		*) new_libs="$deplib $new_libs" ;;
30194b0ead49Smrg		esac
30204b0ead49Smrg		;;
30214b0ead49Smrg	      esac
30224b0ead49Smrg	      ;;
30234b0ead49Smrg	    esac
30244b0ead49Smrg	  done
30254b0ead49Smrg	  tmp_libs=
30264b0ead49Smrg	  for deplib in $new_libs; do
30274b0ead49Smrg	    case $deplib in
30284b0ead49Smrg	    -L*)
30294b0ead49Smrg	      case " $tmp_libs " in
30304b0ead49Smrg	      *" $deplib "*) ;;
30314b0ead49Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
30324b0ead49Smrg	      esac
30334b0ead49Smrg	      ;;
30344b0ead49Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
30354b0ead49Smrg	    esac
30364b0ead49Smrg	  done
30374b0ead49Smrg	  eval $var=\"$tmp_libs\"
30384b0ead49Smrg	done # for var
30394b0ead49Smrg      fi
30404b0ead49Smrg      # Last step: remove runtime libs from dependency_libs
30414b0ead49Smrg      # (they stay in deplibs)
30424b0ead49Smrg      tmp_libs=
30434b0ead49Smrg      for i in $dependency_libs ; do
30444b0ead49Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
30454b0ead49Smrg	*" $i "*)
30464b0ead49Smrg	  i=""
30474b0ead49Smrg	  ;;
30484b0ead49Smrg	esac
30494b0ead49Smrg	if test -n "$i" ; then
30504b0ead49Smrg	  tmp_libs="$tmp_libs $i"
30514b0ead49Smrg	fi
30524b0ead49Smrg      done
30534b0ead49Smrg      dependency_libs=$tmp_libs
30544b0ead49Smrg    done # for pass
30554b0ead49Smrg    if test "$linkmode" = prog; then
30564b0ead49Smrg      dlfiles="$newdlfiles"
30574b0ead49Smrg      dlprefiles="$newdlprefiles"
30584b0ead49Smrg    fi
30594b0ead49Smrg
30604b0ead49Smrg    case $linkmode in
30614b0ead49Smrg    oldlib)
30624b0ead49Smrg      if test -n "$deplibs"; then
30634b0ead49Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
30644b0ead49Smrg      fi
30654b0ead49Smrg
30664b0ead49Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
30674b0ead49Smrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
30684b0ead49Smrg      fi
30694b0ead49Smrg
30704b0ead49Smrg      if test -n "$rpath"; then
30714b0ead49Smrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
30724b0ead49Smrg      fi
30734b0ead49Smrg
30744b0ead49Smrg      if test -n "$xrpath"; then
30754b0ead49Smrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
30764b0ead49Smrg      fi
30774b0ead49Smrg
30784b0ead49Smrg      if test -n "$vinfo"; then
30794b0ead49Smrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
30804b0ead49Smrg      fi
30814b0ead49Smrg
30824b0ead49Smrg      if test -n "$release"; then
30834b0ead49Smrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
30844b0ead49Smrg      fi
30854b0ead49Smrg
30864b0ead49Smrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
30874b0ead49Smrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
30884b0ead49Smrg      fi
30894b0ead49Smrg
30904b0ead49Smrg      # Now set the variables for building old libraries.
30914b0ead49Smrg      build_libtool_libs=no
30924b0ead49Smrg      oldlibs="$output"
30934b0ead49Smrg      objs="$objs$old_deplibs"
30944b0ead49Smrg      ;;
30954b0ead49Smrg
30964b0ead49Smrg    lib)
30974b0ead49Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
30984b0ead49Smrg      case $outputname in
30994b0ead49Smrg      lib*)
31004b0ead49Smrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
31014b0ead49Smrg	eval shared_ext=\"$shrext_cmds\"
31024b0ead49Smrg	eval libname=\"$libname_spec\"
31034b0ead49Smrg	;;
31044b0ead49Smrg      *)
31054b0ead49Smrg	if test "$module" = no; then
31064b0ead49Smrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
31074b0ead49Smrg	  $echo "$help" 1>&2
31084b0ead49Smrg	  exit $EXIT_FAILURE
31094b0ead49Smrg	fi
31104b0ead49Smrg	if test "$need_lib_prefix" != no; then
31114b0ead49Smrg	  # Add the "lib" prefix for modules if required
31124b0ead49Smrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
31134b0ead49Smrg	  eval shared_ext=\"$shrext_cmds\"
31144b0ead49Smrg	  eval libname=\"$libname_spec\"
31154b0ead49Smrg	else
31164b0ead49Smrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
31174b0ead49Smrg	fi
31184b0ead49Smrg	;;
31194b0ead49Smrg      esac
31204b0ead49Smrg
31214b0ead49Smrg      if test -n "$objs"; then
31224b0ead49Smrg	if test "$deplibs_check_method" != pass_all; then
31234b0ead49Smrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
31244b0ead49Smrg	  exit $EXIT_FAILURE
31254b0ead49Smrg	else
31264b0ead49Smrg	  $echo
31274b0ead49Smrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
31284b0ead49Smrg	  $echo "*** objects $objs is not portable!"
31294b0ead49Smrg	  libobjs="$libobjs $objs"
31304b0ead49Smrg	fi
31314b0ead49Smrg      fi
31324b0ead49Smrg
31334b0ead49Smrg      if test "$dlself" != no; then
31344b0ead49Smrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
31354b0ead49Smrg      fi
31364b0ead49Smrg
31374b0ead49Smrg      set dummy $rpath
31384b0ead49Smrg      if test "$#" -gt 2; then
31394b0ead49Smrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
31404b0ead49Smrg      fi
31414b0ead49Smrg      install_libdir="$2"
31424b0ead49Smrg
31434b0ead49Smrg      oldlibs=
31444b0ead49Smrg      if test -z "$rpath"; then
31454b0ead49Smrg	if test "$build_libtool_libs" = yes; then
31464b0ead49Smrg	  # Building a libtool convenience library.
31474b0ead49Smrg	  # Some compilers have problems with a `.al' extension so
31484b0ead49Smrg	  # convenience libraries should have the same extension an
31494b0ead49Smrg	  # archive normally would.
31504b0ead49Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
31514b0ead49Smrg	  build_libtool_libs=convenience
31524b0ead49Smrg	  build_old_libs=yes
31534b0ead49Smrg	fi
31544b0ead49Smrg
31554b0ead49Smrg	if test -n "$vinfo"; then
31564b0ead49Smrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
31574b0ead49Smrg	fi
31584b0ead49Smrg
31594b0ead49Smrg	if test -n "$release"; then
31604b0ead49Smrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
31614b0ead49Smrg	fi
31624b0ead49Smrg      else
31634b0ead49Smrg
31644b0ead49Smrg	# Parse the version information argument.
31654b0ead49Smrg	save_ifs="$IFS"; IFS=':'
31664b0ead49Smrg	set dummy $vinfo 0 0 0
31674b0ead49Smrg	IFS="$save_ifs"
31684b0ead49Smrg
31694b0ead49Smrg	if test -n "$8"; then
31704b0ead49Smrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
31714b0ead49Smrg	  $echo "$help" 1>&2
31724b0ead49Smrg	  exit $EXIT_FAILURE
31734b0ead49Smrg	fi
31744b0ead49Smrg
31754b0ead49Smrg	# convert absolute version numbers to libtool ages
31764b0ead49Smrg	# this retains compatibility with .la files and attempts
31774b0ead49Smrg	# to make the code below a bit more comprehensible
31784b0ead49Smrg
31794b0ead49Smrg	case $vinfo_number in
31804b0ead49Smrg	yes)
31814b0ead49Smrg	  number_major="$2"
31824b0ead49Smrg	  number_minor="$3"
31834b0ead49Smrg	  number_revision="$4"
31844b0ead49Smrg	  #
31854b0ead49Smrg	  # There are really only two kinds -- those that
31864b0ead49Smrg	  # use the current revision as the major version
31874b0ead49Smrg	  # and those that subtract age and use age as
31884b0ead49Smrg	  # a minor version.  But, then there is irix
31894b0ead49Smrg	  # which has an extra 1 added just for fun
31904b0ead49Smrg	  #
31914b0ead49Smrg	  case $version_type in
31924b0ead49Smrg	  darwin|linux|osf|windows)
31934b0ead49Smrg	    current=`expr $number_major + $number_minor`
31944b0ead49Smrg	    age="$number_minor"
31954b0ead49Smrg	    revision="$number_revision"
31964b0ead49Smrg	    ;;
31974b0ead49Smrg	  freebsd-aout|freebsd-elf|sunos)
31984b0ead49Smrg	    current="$number_major"
31994b0ead49Smrg	    revision="$number_minor"
32004b0ead49Smrg	    age="0"
32014b0ead49Smrg	    ;;
32024b0ead49Smrg	  irix|nonstopux)
32034b0ead49Smrg	    current=`expr $number_major + $number_minor - 1`
32044b0ead49Smrg	    age="$number_minor"
32054b0ead49Smrg	    revision="$number_minor"
32064b0ead49Smrg	    ;;
32074b0ead49Smrg	  *)
32084b0ead49Smrg	    $echo "$modename: unknown library version type \`$version_type'" 1>&2
32094b0ead49Smrg	    $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
32104b0ead49Smrg	    exit $EXIT_FAILURE
32114b0ead49Smrg	    ;;
32124b0ead49Smrg	  esac
32134b0ead49Smrg	  ;;
32144b0ead49Smrg	no)
32154b0ead49Smrg	  current="$2"
32164b0ead49Smrg	  revision="$3"
32174b0ead49Smrg	  age="$4"
32184b0ead49Smrg	  ;;
32194b0ead49Smrg	esac
32204b0ead49Smrg
32214b0ead49Smrg	# Check that each of the things are valid numbers.
32224b0ead49Smrg	case $current in
32234b0ead49Smrg	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]) ;;
32244b0ead49Smrg	*)
32254b0ead49Smrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
32264b0ead49Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
32274b0ead49Smrg	  exit $EXIT_FAILURE
32284b0ead49Smrg	  ;;
32294b0ead49Smrg	esac
32304b0ead49Smrg
32314b0ead49Smrg	case $revision in
32324b0ead49Smrg	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]) ;;
32334b0ead49Smrg	*)
32344b0ead49Smrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
32354b0ead49Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
32364b0ead49Smrg	  exit $EXIT_FAILURE
32374b0ead49Smrg	  ;;
32384b0ead49Smrg	esac
32394b0ead49Smrg
32404b0ead49Smrg	case $age in
32414b0ead49Smrg	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]) ;;
32424b0ead49Smrg	*)
32434b0ead49Smrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
32444b0ead49Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
32454b0ead49Smrg	  exit $EXIT_FAILURE
32464b0ead49Smrg	  ;;
32474b0ead49Smrg	esac
32484b0ead49Smrg
32494b0ead49Smrg	if test "$age" -gt "$current"; then
32504b0ead49Smrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
32514b0ead49Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
32524b0ead49Smrg	  exit $EXIT_FAILURE
32534b0ead49Smrg	fi
32544b0ead49Smrg
32554b0ead49Smrg	# Calculate the version variables.
32564b0ead49Smrg	major=
32574b0ead49Smrg	versuffix=
32584b0ead49Smrg	verstring=
32594b0ead49Smrg	case $version_type in
32604b0ead49Smrg	none) ;;
32614b0ead49Smrg
32624b0ead49Smrg	darwin)
32634b0ead49Smrg	  # Like Linux, but with the current version available in
32644b0ead49Smrg	  # verstring for coding it into the library header
32654b0ead49Smrg	  major=.`expr $current - $age`
32664b0ead49Smrg	  versuffix="$major.$age.$revision"
32674b0ead49Smrg	  # Darwin ld doesn't like 0 for these options...
32684b0ead49Smrg	  minor_current=`expr $current + 1`
32694b0ead49Smrg	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
32704b0ead49Smrg	  ;;
32714b0ead49Smrg
32724b0ead49Smrg	freebsd-aout)
32734b0ead49Smrg	  major=".$current"
32744b0ead49Smrg	  versuffix=".$current.$revision";
32754b0ead49Smrg	  ;;
32764b0ead49Smrg
32774b0ead49Smrg	freebsd-elf)
32784b0ead49Smrg	  major=".$current"
32794b0ead49Smrg	  versuffix=".$current";
32804b0ead49Smrg	  ;;
32814b0ead49Smrg
32824b0ead49Smrg	irix | nonstopux)
32834b0ead49Smrg	  major=`expr $current - $age + 1`
32844b0ead49Smrg
32854b0ead49Smrg	  case $version_type in
32864b0ead49Smrg	    nonstopux) verstring_prefix=nonstopux ;;
32874b0ead49Smrg	    *)         verstring_prefix=sgi ;;
32884b0ead49Smrg	  esac
32894b0ead49Smrg	  verstring="$verstring_prefix$major.$revision"
32904b0ead49Smrg
32914b0ead49Smrg	  # Add in all the interfaces that we are compatible with.
32924b0ead49Smrg	  loop=$revision
32934b0ead49Smrg	  while test "$loop" -ne 0; do
32944b0ead49Smrg	    iface=`expr $revision - $loop`
32954b0ead49Smrg	    loop=`expr $loop - 1`
32964b0ead49Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
32974b0ead49Smrg	  done
32984b0ead49Smrg
32994b0ead49Smrg	  # Before this point, $major must not contain `.'.
33004b0ead49Smrg	  major=.$major
33014b0ead49Smrg	  versuffix="$major.$revision"
33024b0ead49Smrg	  ;;
33034b0ead49Smrg
33044b0ead49Smrg	linux)
33054b0ead49Smrg	  major=.`expr $current - $age`
33064b0ead49Smrg	  versuffix="$major.$age.$revision"
33074b0ead49Smrg	  ;;
33084b0ead49Smrg
33094b0ead49Smrg	osf)
33104b0ead49Smrg	  major=.`expr $current - $age`
33114b0ead49Smrg	  versuffix=".$current.$age.$revision"
33124b0ead49Smrg	  verstring="$current.$age.$revision"
33134b0ead49Smrg
33144b0ead49Smrg	  # Add in all the interfaces that we are compatible with.
33154b0ead49Smrg	  loop=$age
33164b0ead49Smrg	  while test "$loop" -ne 0; do
33174b0ead49Smrg	    iface=`expr $current - $loop`
33184b0ead49Smrg	    loop=`expr $loop - 1`
33194b0ead49Smrg	    verstring="$verstring:${iface}.0"
33204b0ead49Smrg	  done
33214b0ead49Smrg
33224b0ead49Smrg	  # Make executables depend on our current version.
33234b0ead49Smrg	  verstring="$verstring:${current}.0"
33244b0ead49Smrg	  ;;
33254b0ead49Smrg
33264b0ead49Smrg	sunos)
33274b0ead49Smrg	  major=".$current"
33284b0ead49Smrg	  versuffix=".$current.$revision"
33294b0ead49Smrg	  ;;
33304b0ead49Smrg
33314b0ead49Smrg	windows)
33324b0ead49Smrg	  # Use '-' rather than '.', since we only want one
33334b0ead49Smrg	  # extension on DOS 8.3 filesystems.
33344b0ead49Smrg	  major=`expr $current - $age`
33354b0ead49Smrg	  versuffix="-$major"
33364b0ead49Smrg	  ;;
33374b0ead49Smrg
33384b0ead49Smrg	*)
33394b0ead49Smrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
33404b0ead49Smrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
33414b0ead49Smrg	  exit $EXIT_FAILURE
33424b0ead49Smrg	  ;;
33434b0ead49Smrg	esac
33444b0ead49Smrg
33454b0ead49Smrg	# Clear the version info if we defaulted, and they specified a release.
33464b0ead49Smrg	if test -z "$vinfo" && test -n "$release"; then
33474b0ead49Smrg	  major=
33484b0ead49Smrg	  case $version_type in
33494b0ead49Smrg	  darwin)
33504b0ead49Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
33514b0ead49Smrg	    # problems, so we reset it completely
33524b0ead49Smrg	    verstring=
33534b0ead49Smrg	    ;;
33544b0ead49Smrg	  *)
33554b0ead49Smrg	    verstring="0.0"
33564b0ead49Smrg	    ;;
33574b0ead49Smrg	  esac
33584b0ead49Smrg	  if test "$need_version" = no; then
33594b0ead49Smrg	    versuffix=
33604b0ead49Smrg	  else
33614b0ead49Smrg	    versuffix=".0.0"
33624b0ead49Smrg	  fi
33634b0ead49Smrg	fi
33644b0ead49Smrg
33654b0ead49Smrg	# Remove version info from name if versioning should be avoided
33664b0ead49Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
33674b0ead49Smrg	  major=
33684b0ead49Smrg	  versuffix=
33694b0ead49Smrg	  verstring=""
33704b0ead49Smrg	fi
33714b0ead49Smrg
33724b0ead49Smrg	# Check to see if the archive will have undefined symbols.
33734b0ead49Smrg	if test "$allow_undefined" = yes; then
33744b0ead49Smrg	  if test "$allow_undefined_flag" = unsupported; then
33754b0ead49Smrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
33764b0ead49Smrg	    build_libtool_libs=no
33774b0ead49Smrg	    build_old_libs=yes
33784b0ead49Smrg	  fi
33794b0ead49Smrg	else
33804b0ead49Smrg	  # Don't allow undefined symbols.
33814b0ead49Smrg	  allow_undefined_flag="$no_undefined_flag"
33824b0ead49Smrg	fi
33834b0ead49Smrg      fi
33844b0ead49Smrg
33854b0ead49Smrg      if test "$mode" != relink; then
33864b0ead49Smrg	# Remove our outputs, but don't remove object files since they
33874b0ead49Smrg	# may have been created when compiling PIC objects.
33884b0ead49Smrg	removelist=
33894b0ead49Smrg	tempremovelist=`$echo "$output_objdir/*"`
33904b0ead49Smrg	for p in $tempremovelist; do
33914b0ead49Smrg	  case $p in
33924b0ead49Smrg	    *.$objext)
33934b0ead49Smrg	       ;;
33944b0ead49Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
33954b0ead49Smrg	       if test "X$precious_files_regex" != "X"; then
33964b0ead49Smrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
33974b0ead49Smrg	         then
33984b0ead49Smrg		   continue
33994b0ead49Smrg		 fi
34004b0ead49Smrg	       fi
34014b0ead49Smrg	       removelist="$removelist $p"
34024b0ead49Smrg	       ;;
34034b0ead49Smrg	    *) ;;
34044b0ead49Smrg	  esac
34054b0ead49Smrg	done
34064b0ead49Smrg	if test -n "$removelist"; then
34074b0ead49Smrg	  $show "${rm}r $removelist"
34084b0ead49Smrg	  $run ${rm}r $removelist
34094b0ead49Smrg	fi
34104b0ead49Smrg      fi
34114b0ead49Smrg
34124b0ead49Smrg      # Now set the variables for building old libraries.
34134b0ead49Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
34144b0ead49Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
34154b0ead49Smrg
34164b0ead49Smrg	# Transform .lo files to .o files.
34174b0ead49Smrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
34184b0ead49Smrg      fi
34194b0ead49Smrg
34204b0ead49Smrg      # Eliminate all temporary directories.
34214b0ead49Smrg      for path in $notinst_path; do
34224b0ead49Smrg	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
34234b0ead49Smrg	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
34244b0ead49Smrg	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
34254b0ead49Smrg      done
34264b0ead49Smrg
34274b0ead49Smrg      if test -n "$xrpath"; then
34284b0ead49Smrg	# If the user specified any rpath flags, then add them.
34294b0ead49Smrg	temp_xrpath=
34304b0ead49Smrg	for libdir in $xrpath; do
34314b0ead49Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
34324b0ead49Smrg	  case "$finalize_rpath " in
34334b0ead49Smrg	  *" $libdir "*) ;;
34344b0ead49Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
34354b0ead49Smrg	  esac
34364b0ead49Smrg	done
34374b0ead49Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
34384b0ead49Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
34394b0ead49Smrg	fi
34404b0ead49Smrg      fi
34414b0ead49Smrg
34424b0ead49Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
34434b0ead49Smrg      old_dlfiles="$dlfiles"
34444b0ead49Smrg      dlfiles=
34454b0ead49Smrg      for lib in $old_dlfiles; do
34464b0ead49Smrg	case " $dlprefiles $dlfiles " in
34474b0ead49Smrg	*" $lib "*) ;;
34484b0ead49Smrg	*) dlfiles="$dlfiles $lib" ;;
34494b0ead49Smrg	esac
34504b0ead49Smrg      done
34514b0ead49Smrg
34524b0ead49Smrg      # Make sure dlprefiles contains only unique files
34534b0ead49Smrg      old_dlprefiles="$dlprefiles"
34544b0ead49Smrg      dlprefiles=
34554b0ead49Smrg      for lib in $old_dlprefiles; do
34564b0ead49Smrg	case "$dlprefiles " in
34574b0ead49Smrg	*" $lib "*) ;;
34584b0ead49Smrg	*) dlprefiles="$dlprefiles $lib" ;;
34594b0ead49Smrg	esac
34604b0ead49Smrg      done
34614b0ead49Smrg
34624b0ead49Smrg      if test "$build_libtool_libs" = yes; then
34634b0ead49Smrg	if test -n "$rpath"; then
34644b0ead49Smrg	  case $host in
34654b0ead49Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
34664b0ead49Smrg	    # these systems don't actually have a c library (as such)!
34674b0ead49Smrg	    ;;
34684b0ead49Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
34694b0ead49Smrg	    # Rhapsody C library is in the System framework
34704b0ead49Smrg	    deplibs="$deplibs -framework System"
34714b0ead49Smrg	    ;;
34724b0ead49Smrg	  *-*-netbsd*)
34734b0ead49Smrg	    # Don't link with libc until the a.out ld.so is fixed.
34744b0ead49Smrg	    ;;
34754b0ead49Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
34764b0ead49Smrg	    # Do not include libc due to us having libc/libc_r.
34774b0ead49Smrg	    ;;
34784b0ead49Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
34794b0ead49Smrg	    # Causes problems with __ctype
34804b0ead49Smrg	    ;;
34814b0ead49Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
34824b0ead49Smrg	    # Compiler inserts libc in the correct place for threads to work
34834b0ead49Smrg	    ;;
34844b0ead49Smrg 	  *)
34854b0ead49Smrg	    # Add libc to deplibs on all other systems if necessary.
34864b0ead49Smrg	    if test "$build_libtool_need_lc" = "yes"; then
34874b0ead49Smrg	      deplibs="$deplibs -lc"
34884b0ead49Smrg	    fi
34894b0ead49Smrg	    ;;
34904b0ead49Smrg	  esac
34914b0ead49Smrg	fi
34924b0ead49Smrg
34934b0ead49Smrg	# Transform deplibs into only deplibs that can be linked in shared.
34944b0ead49Smrg	name_save=$name
34954b0ead49Smrg	libname_save=$libname
34964b0ead49Smrg	release_save=$release
34974b0ead49Smrg	versuffix_save=$versuffix
34984b0ead49Smrg	major_save=$major
34994b0ead49Smrg	# I'm not sure if I'm treating the release correctly.  I think
35004b0ead49Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
35014b0ead49Smrg	# add it in twice.  Is that correct?
35024b0ead49Smrg	release=""
35034b0ead49Smrg	versuffix=""
35044b0ead49Smrg	major=""
35054b0ead49Smrg	newdeplibs=
35064b0ead49Smrg	droppeddeps=no
35074b0ead49Smrg	case $deplibs_check_method in
35084b0ead49Smrg	pass_all)
35094b0ead49Smrg	  # Don't check for shared/static.  Everything works.
35104b0ead49Smrg	  # This might be a little naive.  We might want to check
35114b0ead49Smrg	  # whether the library exists or not.  But this is on
35124b0ead49Smrg	  # osf3 & osf4 and I'm not really sure... Just
35134b0ead49Smrg	  # implementing what was already the behavior.
35144b0ead49Smrg	  newdeplibs=$deplibs
35154b0ead49Smrg	  ;;
35164b0ead49Smrg	test_compile)
35174b0ead49Smrg	  # This code stresses the "libraries are programs" paradigm to its
35184b0ead49Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
35194b0ead49Smrg	  # against the deplibs as a proxy for the library.  Then we can check
35204b0ead49Smrg	  # whether they linked in statically or dynamically with ldd.
35214b0ead49Smrg	  $rm conftest.c
35224b0ead49Smrg	  cat > conftest.c <<EOF
35234b0ead49Smrg	  int main() { return 0; }
35244b0ead49SmrgEOF
35254b0ead49Smrg	  $rm conftest
35264b0ead49Smrg	  $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
35274b0ead49Smrg	  if test "$?" -eq 0 ; then
35284b0ead49Smrg	    ldd_output=`ldd conftest`
35294b0ead49Smrg	    for i in $deplibs; do
35304b0ead49Smrg	      name=`expr $i : '-l\(.*\)'`
35314b0ead49Smrg	      # If $name is empty we are operating on a -L argument.
35324b0ead49Smrg              if test "$name" != "" && test "$name" -ne "0"; then
35334b0ead49Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
35344b0ead49Smrg		  case " $predeps $postdeps " in
35354b0ead49Smrg		  *" $i "*)
35364b0ead49Smrg		    newdeplibs="$newdeplibs $i"
35374b0ead49Smrg		    i=""
35384b0ead49Smrg		    ;;
35394b0ead49Smrg		  esac
35404b0ead49Smrg	        fi
35414b0ead49Smrg		if test -n "$i" ; then
35424b0ead49Smrg		  libname=`eval \\$echo \"$libname_spec\"`
35434b0ead49Smrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
35444b0ead49Smrg		  set dummy $deplib_matches
35454b0ead49Smrg		  deplib_match=$2
35464b0ead49Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
35474b0ead49Smrg		    newdeplibs="$newdeplibs $i"
35484b0ead49Smrg		  else
35494b0ead49Smrg		    droppeddeps=yes
35504b0ead49Smrg		    $echo
35514b0ead49Smrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
35524b0ead49Smrg		    $echo "*** I have the capability to make that library automatically link in when"
35534b0ead49Smrg		    $echo "*** you link to this library.  But I can only do this if you have a"
35544b0ead49Smrg		    $echo "*** shared version of the library, which I believe you do not have"
35554b0ead49Smrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
35564b0ead49Smrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
35574b0ead49Smrg		  fi
35584b0ead49Smrg		fi
35594b0ead49Smrg	      else
35604b0ead49Smrg		newdeplibs="$newdeplibs $i"
35614b0ead49Smrg	      fi
35624b0ead49Smrg	    done
35634b0ead49Smrg	  else
35644b0ead49Smrg	    # Error occurred in the first compile.  Let's try to salvage
35654b0ead49Smrg	    # the situation: Compile a separate program for each library.
35664b0ead49Smrg	    for i in $deplibs; do
35674b0ead49Smrg	      name=`expr $i : '-l\(.*\)'`
35684b0ead49Smrg	      # If $name is empty we are operating on a -L argument.
35694b0ead49Smrg              if test "$name" != "" && test "$name" != "0"; then
35704b0ead49Smrg		$rm conftest
35714b0ead49Smrg		$LTCC $LTCFLAGS -o conftest conftest.c $i
35724b0ead49Smrg		# Did it work?
35734b0ead49Smrg		if test "$?" -eq 0 ; then
35744b0ead49Smrg		  ldd_output=`ldd conftest`
35754b0ead49Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
35764b0ead49Smrg		    case " $predeps $postdeps " in
35774b0ead49Smrg		    *" $i "*)
35784b0ead49Smrg		      newdeplibs="$newdeplibs $i"
35794b0ead49Smrg		      i=""
35804b0ead49Smrg		      ;;
35814b0ead49Smrg		    esac
35824b0ead49Smrg		  fi
35834b0ead49Smrg		  if test -n "$i" ; then
35844b0ead49Smrg		    libname=`eval \\$echo \"$libname_spec\"`
35854b0ead49Smrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
35864b0ead49Smrg		    set dummy $deplib_matches
35874b0ead49Smrg		    deplib_match=$2
35884b0ead49Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
35894b0ead49Smrg		      newdeplibs="$newdeplibs $i"
35904b0ead49Smrg		    else
35914b0ead49Smrg		      droppeddeps=yes
35924b0ead49Smrg		      $echo
35934b0ead49Smrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
35944b0ead49Smrg		      $echo "*** I have the capability to make that library automatically link in when"
35954b0ead49Smrg		      $echo "*** you link to this library.  But I can only do this if you have a"
35964b0ead49Smrg		      $echo "*** shared version of the library, which you do not appear to have"
35974b0ead49Smrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
35984b0ead49Smrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
35994b0ead49Smrg		    fi
36004b0ead49Smrg		  fi
36014b0ead49Smrg		else
36024b0ead49Smrg		  droppeddeps=yes
36034b0ead49Smrg		  $echo
36044b0ead49Smrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
36054b0ead49Smrg		  $echo "***  make it link in!  You will probably need to install it or some"
36064b0ead49Smrg		  $echo "*** library that it depends on before this library will be fully"
36074b0ead49Smrg		  $echo "*** functional.  Installing it before continuing would be even better."
36084b0ead49Smrg		fi
36094b0ead49Smrg	      else
36104b0ead49Smrg		newdeplibs="$newdeplibs $i"
36114b0ead49Smrg	      fi
36124b0ead49Smrg	    done
36134b0ead49Smrg	  fi
36144b0ead49Smrg	  ;;
36154b0ead49Smrg	file_magic*)
36164b0ead49Smrg	  set dummy $deplibs_check_method
36174b0ead49Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
36184b0ead49Smrg	  for a_deplib in $deplibs; do
36194b0ead49Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
36204b0ead49Smrg	    # If $name is empty we are operating on a -L argument.
36214b0ead49Smrg            if test "$name" != "" && test  "$name" != "0"; then
36224b0ead49Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
36234b0ead49Smrg		case " $predeps $postdeps " in
36244b0ead49Smrg		*" $a_deplib "*)
36254b0ead49Smrg		  newdeplibs="$newdeplibs $a_deplib"
36264b0ead49Smrg		  a_deplib=""
36274b0ead49Smrg		  ;;
36284b0ead49Smrg		esac
36294b0ead49Smrg	      fi
36304b0ead49Smrg	      if test -n "$a_deplib" ; then
36314b0ead49Smrg		libname=`eval \\$echo \"$libname_spec\"`
36324b0ead49Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
36334b0ead49Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
36344b0ead49Smrg		  for potent_lib in $potential_libs; do
36354b0ead49Smrg		      # Follow soft links.
36364b0ead49Smrg		      if ls -lLd "$potent_lib" 2>/dev/null \
36374b0ead49Smrg			 | grep " -> " >/dev/null; then
36384b0ead49Smrg			continue
36394b0ead49Smrg		      fi
36404b0ead49Smrg		      # The statement above tries to avoid entering an
36414b0ead49Smrg		      # endless loop below, in case of cyclic links.
36424b0ead49Smrg		      # We might still enter an endless loop, since a link
36434b0ead49Smrg		      # loop can be closed while we follow links,
36444b0ead49Smrg		      # but so what?
36454b0ead49Smrg		      potlib="$potent_lib"
36464b0ead49Smrg		      while test -h "$potlib" 2>/dev/null; do
36474b0ead49Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
36484b0ead49Smrg			case $potliblink in
36494b0ead49Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
36504b0ead49Smrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
36514b0ead49Smrg			esac
36524b0ead49Smrg		      done
36534b0ead49Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
36544b0ead49Smrg			 | ${SED} 10q \
36554b0ead49Smrg			 | $EGREP "$file_magic_regex" > /dev/null; then
36564b0ead49Smrg			newdeplibs="$newdeplibs $a_deplib"
36574b0ead49Smrg			a_deplib=""
36584b0ead49Smrg			break 2
36594b0ead49Smrg		      fi
36604b0ead49Smrg		  done
36614b0ead49Smrg		done
36624b0ead49Smrg	      fi
36634b0ead49Smrg	      if test -n "$a_deplib" ; then
36644b0ead49Smrg		droppeddeps=yes
36654b0ead49Smrg		$echo
36664b0ead49Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
36674b0ead49Smrg		$echo "*** I have the capability to make that library automatically link in when"
36684b0ead49Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
36694b0ead49Smrg		$echo "*** shared version of the library, which you do not appear to have"
36704b0ead49Smrg		$echo "*** because I did check the linker path looking for a file starting"
36714b0ead49Smrg		if test -z "$potlib" ; then
36724b0ead49Smrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
36734b0ead49Smrg		else
36744b0ead49Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
36754b0ead49Smrg		  $echo "*** using a file magic. Last file checked: $potlib"
36764b0ead49Smrg		fi
36774b0ead49Smrg	      fi
36784b0ead49Smrg	    else
36794b0ead49Smrg	      # Add a -L argument.
36804b0ead49Smrg	      newdeplibs="$newdeplibs $a_deplib"
36814b0ead49Smrg	    fi
36824b0ead49Smrg	  done # Gone through all deplibs.
36834b0ead49Smrg	  ;;
36844b0ead49Smrg	match_pattern*)
36854b0ead49Smrg	  set dummy $deplibs_check_method
36864b0ead49Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
36874b0ead49Smrg	  for a_deplib in $deplibs; do
36884b0ead49Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
36894b0ead49Smrg	    # If $name is empty we are operating on a -L argument.
36904b0ead49Smrg	    if test -n "$name" && test "$name" != "0"; then
36914b0ead49Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
36924b0ead49Smrg		case " $predeps $postdeps " in
36934b0ead49Smrg		*" $a_deplib "*)
36944b0ead49Smrg		  newdeplibs="$newdeplibs $a_deplib"
36954b0ead49Smrg		  a_deplib=""
36964b0ead49Smrg		  ;;
36974b0ead49Smrg		esac
36984b0ead49Smrg	      fi
36994b0ead49Smrg	      if test -n "$a_deplib" ; then
37004b0ead49Smrg		libname=`eval \\$echo \"$libname_spec\"`
37014b0ead49Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
37024b0ead49Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
37034b0ead49Smrg		  for potent_lib in $potential_libs; do
37044b0ead49Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
37054b0ead49Smrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
37064b0ead49Smrg		        | ${SED} 10q \
37074b0ead49Smrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
37084b0ead49Smrg		      newdeplibs="$newdeplibs $a_deplib"
37094b0ead49Smrg		      a_deplib=""
37104b0ead49Smrg		      break 2
37114b0ead49Smrg		    fi
37124b0ead49Smrg		  done
37134b0ead49Smrg		done
37144b0ead49Smrg	      fi
37154b0ead49Smrg	      if test -n "$a_deplib" ; then
37164b0ead49Smrg		droppeddeps=yes
37174b0ead49Smrg		$echo
37184b0ead49Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
37194b0ead49Smrg		$echo "*** I have the capability to make that library automatically link in when"
37204b0ead49Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
37214b0ead49Smrg		$echo "*** shared version of the library, which you do not appear to have"
37224b0ead49Smrg		$echo "*** because I did check the linker path looking for a file starting"
37234b0ead49Smrg		if test -z "$potlib" ; then
37244b0ead49Smrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
37254b0ead49Smrg		else
37264b0ead49Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
37274b0ead49Smrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
37284b0ead49Smrg		fi
37294b0ead49Smrg	      fi
37304b0ead49Smrg	    else
37314b0ead49Smrg	      # Add a -L argument.
37324b0ead49Smrg	      newdeplibs="$newdeplibs $a_deplib"
37334b0ead49Smrg	    fi
37344b0ead49Smrg	  done # Gone through all deplibs.
37354b0ead49Smrg	  ;;
37364b0ead49Smrg	none | unknown | *)
37374b0ead49Smrg	  newdeplibs=""
37384b0ead49Smrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
37394b0ead49Smrg	    -e 's/ -[LR][^ ]*//g'`
37404b0ead49Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
37414b0ead49Smrg	    for i in $predeps $postdeps ; do
37424b0ead49Smrg	      # can't use Xsed below, because $i might contain '/'
37434b0ead49Smrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
37444b0ead49Smrg	    done
37454b0ead49Smrg	  fi
37464b0ead49Smrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
37474b0ead49Smrg	    | grep . >/dev/null; then
37484b0ead49Smrg	    $echo
37494b0ead49Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
37504b0ead49Smrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
37514b0ead49Smrg	    else
37524b0ead49Smrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
37534b0ead49Smrg	    fi
37544b0ead49Smrg	    $echo "*** All declared inter-library dependencies are being dropped."
37554b0ead49Smrg	    droppeddeps=yes
37564b0ead49Smrg	  fi
37574b0ead49Smrg	  ;;
37584b0ead49Smrg	esac
37594b0ead49Smrg	versuffix=$versuffix_save
37604b0ead49Smrg	major=$major_save
37614b0ead49Smrg	release=$release_save
37624b0ead49Smrg	libname=$libname_save
37634b0ead49Smrg	name=$name_save
37644b0ead49Smrg
37654b0ead49Smrg	case $host in
37664b0ead49Smrg	*-*-rhapsody* | *-*-darwin1.[012])
37674b0ead49Smrg	  # On Rhapsody replace the C library is the System framework
37684b0ead49Smrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
37694b0ead49Smrg	  ;;
37704b0ead49Smrg	esac
37714b0ead49Smrg
37724b0ead49Smrg	if test "$droppeddeps" = yes; then
37734b0ead49Smrg	  if test "$module" = yes; then
37744b0ead49Smrg	    $echo
37754b0ead49Smrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
37764b0ead49Smrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
37774b0ead49Smrg	    $echo "*** a static module, that should work as long as the dlopening"
37784b0ead49Smrg	    $echo "*** application is linked with the -dlopen flag."
37794b0ead49Smrg	    if test -z "$global_symbol_pipe"; then
37804b0ead49Smrg	      $echo
37814b0ead49Smrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
37824b0ead49Smrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
37834b0ead49Smrg	      $echo "*** not find such a program.  So, this module is probably useless."
37844b0ead49Smrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
37854b0ead49Smrg	    fi
37864b0ead49Smrg	    if test "$build_old_libs" = no; then
37874b0ead49Smrg	      oldlibs="$output_objdir/$libname.$libext"
37884b0ead49Smrg	      build_libtool_libs=module
37894b0ead49Smrg	      build_old_libs=yes
37904b0ead49Smrg	    else
37914b0ead49Smrg	      build_libtool_libs=no
37924b0ead49Smrg	    fi
37934b0ead49Smrg	  else
37944b0ead49Smrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
37954b0ead49Smrg	    $echo "*** automatically added whenever a program is linked with this library"
37964b0ead49Smrg	    $echo "*** or is declared to -dlopen it."
37974b0ead49Smrg
37984b0ead49Smrg	    if test "$allow_undefined" = no; then
37994b0ead49Smrg	      $echo
38004b0ead49Smrg	      $echo "*** Since this library must not contain undefined symbols,"
38014b0ead49Smrg	      $echo "*** because either the platform does not support them or"
38024b0ead49Smrg	      $echo "*** it was explicitly requested with -no-undefined,"
38034b0ead49Smrg	      $echo "*** libtool will only create a static version of it."
38044b0ead49Smrg	      if test "$build_old_libs" = no; then
38054b0ead49Smrg		oldlibs="$output_objdir/$libname.$libext"
38064b0ead49Smrg		build_libtool_libs=module
38074b0ead49Smrg		build_old_libs=yes
38084b0ead49Smrg	      else
38094b0ead49Smrg		build_libtool_libs=no
38104b0ead49Smrg	      fi
38114b0ead49Smrg	    fi
38124b0ead49Smrg	  fi
38134b0ead49Smrg	fi
38144b0ead49Smrg	# Done checking deplibs!
38154b0ead49Smrg	deplibs=$newdeplibs
38164b0ead49Smrg      fi
38174b0ead49Smrg
38184b0ead49Smrg
38194b0ead49Smrg      # move library search paths that coincide with paths to not yet
38204b0ead49Smrg      # installed libraries to the beginning of the library search list
38214b0ead49Smrg      new_libs=
38224b0ead49Smrg      for path in $notinst_path; do
38234b0ead49Smrg	case " $new_libs " in
38244b0ead49Smrg	*" -L$path/$objdir "*) ;;
38254b0ead49Smrg	*)
38264b0ead49Smrg	  case " $deplibs " in
38274b0ead49Smrg	  *" -L$path/$objdir "*)
38284b0ead49Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
38294b0ead49Smrg	  esac
38304b0ead49Smrg	  ;;
38314b0ead49Smrg	esac
38324b0ead49Smrg      done
38334b0ead49Smrg      for deplib in $deplibs; do
38344b0ead49Smrg	case $deplib in
38354b0ead49Smrg	-L*)
38364b0ead49Smrg	  case " $new_libs " in
38374b0ead49Smrg	  *" $deplib "*) ;;
38384b0ead49Smrg	  *) new_libs="$new_libs $deplib" ;;
38394b0ead49Smrg	  esac
38404b0ead49Smrg	  ;;
38414b0ead49Smrg	*) new_libs="$new_libs $deplib" ;;
38424b0ead49Smrg	esac
38434b0ead49Smrg      done
38444b0ead49Smrg      deplibs="$new_libs"
38454b0ead49Smrg
38464b0ead49Smrg
38474b0ead49Smrg      # All the library-specific variables (install_libdir is set above).
38484b0ead49Smrg      library_names=
38494b0ead49Smrg      old_library=
38504b0ead49Smrg      dlname=
38514b0ead49Smrg
38524b0ead49Smrg      # Test again, we may have decided not to build it any more
38534b0ead49Smrg      if test "$build_libtool_libs" = yes; then
38544b0ead49Smrg	if test "$hardcode_into_libs" = yes; then
38554b0ead49Smrg	  # Hardcode the library paths
38564b0ead49Smrg	  hardcode_libdirs=
38574b0ead49Smrg	  dep_rpath=
38584b0ead49Smrg	  rpath="$finalize_rpath"
38594b0ead49Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
38604b0ead49Smrg	  for libdir in $rpath; do
38614b0ead49Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
38624b0ead49Smrg	      if test -n "$hardcode_libdir_separator"; then
38634b0ead49Smrg		if test -z "$hardcode_libdirs"; then
38644b0ead49Smrg		  hardcode_libdirs="$libdir"
38654b0ead49Smrg		else
38664b0ead49Smrg		  # Just accumulate the unique libdirs.
38674b0ead49Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
38684b0ead49Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
38694b0ead49Smrg		    ;;
38704b0ead49Smrg		  *)
38714b0ead49Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
38724b0ead49Smrg		    ;;
38734b0ead49Smrg		  esac
38744b0ead49Smrg		fi
38754b0ead49Smrg	      else
38764b0ead49Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
38774b0ead49Smrg		dep_rpath="$dep_rpath $flag"
38784b0ead49Smrg	      fi
38794b0ead49Smrg	    elif test -n "$runpath_var"; then
38804b0ead49Smrg	      case "$perm_rpath " in
38814b0ead49Smrg	      *" $libdir "*) ;;
38824b0ead49Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
38834b0ead49Smrg	      esac
38844b0ead49Smrg	    fi
38854b0ead49Smrg	  done
38864b0ead49Smrg	  # Substitute the hardcoded libdirs into the rpath.
38874b0ead49Smrg	  if test -n "$hardcode_libdir_separator" &&
38884b0ead49Smrg	     test -n "$hardcode_libdirs"; then
38894b0ead49Smrg	    libdir="$hardcode_libdirs"
38904b0ead49Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
38914b0ead49Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
38924b0ead49Smrg	    else
38934b0ead49Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
38944b0ead49Smrg	    fi
38954b0ead49Smrg	  fi
38964b0ead49Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
38974b0ead49Smrg	    # We should set the runpath_var.
38984b0ead49Smrg	    rpath=
38994b0ead49Smrg	    for dir in $perm_rpath; do
39004b0ead49Smrg	      rpath="$rpath$dir:"
39014b0ead49Smrg	    done
39024b0ead49Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
39034b0ead49Smrg	  fi
39044b0ead49Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
39054b0ead49Smrg	fi
39064b0ead49Smrg
39074b0ead49Smrg	shlibpath="$finalize_shlibpath"
39084b0ead49Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
39094b0ead49Smrg	if test -n "$shlibpath"; then
39104b0ead49Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
39114b0ead49Smrg	fi
39124b0ead49Smrg
39134b0ead49Smrg	# Get the real and link names of the library.
39144b0ead49Smrg	eval shared_ext=\"$shrext_cmds\"
39154b0ead49Smrg	eval library_names=\"$library_names_spec\"
39164b0ead49Smrg	set dummy $library_names
39174b0ead49Smrg	realname="$2"
39184b0ead49Smrg	shift; shift
39194b0ead49Smrg
39204b0ead49Smrg	if test -n "$soname_spec"; then
39214b0ead49Smrg	  eval soname=\"$soname_spec\"
39224b0ead49Smrg	else
39234b0ead49Smrg	  soname="$realname"
39244b0ead49Smrg	fi
39254b0ead49Smrg	if test -z "$dlname"; then
39264b0ead49Smrg	  dlname=$soname
39274b0ead49Smrg	fi
39284b0ead49Smrg
39294b0ead49Smrg	lib="$output_objdir/$realname"
39304b0ead49Smrg	linknames=
39314b0ead49Smrg	for link
39324b0ead49Smrg	do
39334b0ead49Smrg	  linknames="$linknames $link"
39344b0ead49Smrg	done
39354b0ead49Smrg
39364b0ead49Smrg	# Use standard objects if they are pic
39374b0ead49Smrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
39384b0ead49Smrg
39394b0ead49Smrg	# Prepare the list of exported symbols
39404b0ead49Smrg	if test -z "$export_symbols"; then
39414b0ead49Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
39424b0ead49Smrg	    $show "generating symbol list for \`$libname.la'"
39434b0ead49Smrg	    export_symbols="$output_objdir/$libname.exp"
39444b0ead49Smrg	    $run $rm $export_symbols
39454b0ead49Smrg	    cmds=$export_symbols_cmds
39464b0ead49Smrg	    save_ifs="$IFS"; IFS='~'
39474b0ead49Smrg	    for cmd in $cmds; do
39484b0ead49Smrg	      IFS="$save_ifs"
39494b0ead49Smrg	      eval cmd=\"$cmd\"
39504b0ead49Smrg	      if len=`expr "X$cmd" : ".*"` &&
39514b0ead49Smrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
39524b0ead49Smrg	        $show "$cmd"
39534b0ead49Smrg	        $run eval "$cmd" || exit $?
39544b0ead49Smrg	        skipped_export=false
39554b0ead49Smrg	      else
39564b0ead49Smrg	        # The command line is too long to execute in one step.
39574b0ead49Smrg	        $show "using reloadable object file for export list..."
39584b0ead49Smrg	        skipped_export=:
39594b0ead49Smrg		# Break out early, otherwise skipped_export may be
39604b0ead49Smrg		# set to false by a later but shorter cmd.
39614b0ead49Smrg		break
39624b0ead49Smrg	      fi
39634b0ead49Smrg	    done
39644b0ead49Smrg	    IFS="$save_ifs"
39654b0ead49Smrg	    if test -n "$export_symbols_regex"; then
39664b0ead49Smrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
39674b0ead49Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
39684b0ead49Smrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
39694b0ead49Smrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
39704b0ead49Smrg	    fi
39714b0ead49Smrg	  fi
39724b0ead49Smrg	fi
39734b0ead49Smrg
39744b0ead49Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
39754b0ead49Smrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
39764b0ead49Smrg	fi
39774b0ead49Smrg
39784b0ead49Smrg	tmp_deplibs=
39794b0ead49Smrg	for test_deplib in $deplibs; do
39804b0ead49Smrg		case " $convenience " in
39814b0ead49Smrg		*" $test_deplib "*) ;;
39824b0ead49Smrg		*)
39834b0ead49Smrg			tmp_deplibs="$tmp_deplibs $test_deplib"
39844b0ead49Smrg			;;
39854b0ead49Smrg		esac
39864b0ead49Smrg	done
39874b0ead49Smrg	deplibs="$tmp_deplibs"
39884b0ead49Smrg
39894b0ead49Smrg	if test -n "$convenience"; then
39904b0ead49Smrg	  if test -n "$whole_archive_flag_spec"; then
39914b0ead49Smrg	    save_libobjs=$libobjs
39924b0ead49Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
39934b0ead49Smrg	  else
39944b0ead49Smrg	    gentop="$output_objdir/${outputname}x"
39954b0ead49Smrg	    generated="$generated $gentop"
39964b0ead49Smrg
39974b0ead49Smrg	    func_extract_archives $gentop $convenience
39984b0ead49Smrg	    libobjs="$libobjs $func_extract_archives_result"
39994b0ead49Smrg	  fi
40004b0ead49Smrg	fi
40014b0ead49Smrg	
40024b0ead49Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
40034b0ead49Smrg	  eval flag=\"$thread_safe_flag_spec\"
40044b0ead49Smrg	  linker_flags="$linker_flags $flag"
40054b0ead49Smrg	fi
40064b0ead49Smrg
40074b0ead49Smrg	# Make a backup of the uninstalled library when relinking
40084b0ead49Smrg	if test "$mode" = relink; then
40094b0ead49Smrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
40104b0ead49Smrg	fi
40114b0ead49Smrg
40124b0ead49Smrg	# Do each of the archive commands.
40134b0ead49Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
40144b0ead49Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
40154b0ead49Smrg	    eval test_cmds=\"$module_expsym_cmds\"
40164b0ead49Smrg	    cmds=$module_expsym_cmds
40174b0ead49Smrg	  else
40184b0ead49Smrg	    eval test_cmds=\"$module_cmds\"
40194b0ead49Smrg	    cmds=$module_cmds
40204b0ead49Smrg	  fi
40214b0ead49Smrg	else
40224b0ead49Smrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
40234b0ead49Smrg	  eval test_cmds=\"$archive_expsym_cmds\"
40244b0ead49Smrg	  cmds=$archive_expsym_cmds
40254b0ead49Smrg	else
40264b0ead49Smrg	  eval test_cmds=\"$archive_cmds\"
40274b0ead49Smrg	  cmds=$archive_cmds
40284b0ead49Smrg	  fi
40294b0ead49Smrg	fi
40304b0ead49Smrg
40314b0ead49Smrg	if test "X$skipped_export" != "X:" &&
40324b0ead49Smrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
40334b0ead49Smrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
40344b0ead49Smrg	  :
40354b0ead49Smrg	else
40364b0ead49Smrg	  # The command line is too long to link in one step, link piecewise.
40374b0ead49Smrg	  $echo "creating reloadable object files..."
40384b0ead49Smrg
40394b0ead49Smrg	  # Save the value of $output and $libobjs because we want to
40404b0ead49Smrg	  # use them later.  If we have whole_archive_flag_spec, we
40414b0ead49Smrg	  # want to use save_libobjs as it was before
40424b0ead49Smrg	  # whole_archive_flag_spec was expanded, because we can't
40434b0ead49Smrg	  # assume the linker understands whole_archive_flag_spec.
40444b0ead49Smrg	  # This may have to be revisited, in case too many
40454b0ead49Smrg	  # convenience libraries get linked in and end up exceeding
40464b0ead49Smrg	  # the spec.
40474b0ead49Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
40484b0ead49Smrg	    save_libobjs=$libobjs
40494b0ead49Smrg	  fi
40504b0ead49Smrg	  save_output=$output
40514b0ead49Smrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
40524b0ead49Smrg
40534b0ead49Smrg	  # Clear the reloadable object creation command queue and
40544b0ead49Smrg	  # initialize k to one.
40554b0ead49Smrg	  test_cmds=
40564b0ead49Smrg	  concat_cmds=
40574b0ead49Smrg	  objlist=
40584b0ead49Smrg	  delfiles=
40594b0ead49Smrg	  last_robj=
40604b0ead49Smrg	  k=1
40614b0ead49Smrg	  output=$output_objdir/$output_la-${k}.$objext
40624b0ead49Smrg	  # Loop over the list of objects to be linked.
40634b0ead49Smrg	  for obj in $save_libobjs
40644b0ead49Smrg	  do
40654b0ead49Smrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
40664b0ead49Smrg	    if test "X$objlist" = X ||
40674b0ead49Smrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
40684b0ead49Smrg		 test "$len" -le "$max_cmd_len"; }; then
40694b0ead49Smrg	      objlist="$objlist $obj"
40704b0ead49Smrg	    else
40714b0ead49Smrg	      # The command $test_cmds is almost too long, add a
40724b0ead49Smrg	      # command to the queue.
40734b0ead49Smrg	      if test "$k" -eq 1 ; then
40744b0ead49Smrg		# The first file doesn't have a previous command to add.
40754b0ead49Smrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
40764b0ead49Smrg	      else
40774b0ead49Smrg		# All subsequent reloadable object files will link in
40784b0ead49Smrg		# the last one created.
40794b0ead49Smrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
40804b0ead49Smrg	      fi
40814b0ead49Smrg	      last_robj=$output_objdir/$output_la-${k}.$objext
40824b0ead49Smrg	      k=`expr $k + 1`
40834b0ead49Smrg	      output=$output_objdir/$output_la-${k}.$objext
40844b0ead49Smrg	      objlist=$obj
40854b0ead49Smrg	      len=1
40864b0ead49Smrg	    fi
40874b0ead49Smrg	  done
40884b0ead49Smrg	  # Handle the remaining objects by creating one last
40894b0ead49Smrg	  # reloadable object file.  All subsequent reloadable object
40904b0ead49Smrg	  # files will link in the last one created.
40914b0ead49Smrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
40924b0ead49Smrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
40934b0ead49Smrg
40944b0ead49Smrg	  if ${skipped_export-false}; then
40954b0ead49Smrg	    $show "generating symbol list for \`$libname.la'"
40964b0ead49Smrg	    export_symbols="$output_objdir/$libname.exp"
40974b0ead49Smrg	    $run $rm $export_symbols
40984b0ead49Smrg	    libobjs=$output
40994b0ead49Smrg	    # Append the command to create the export file.
41004b0ead49Smrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
41014b0ead49Smrg          fi
41024b0ead49Smrg
41034b0ead49Smrg	  # Set up a command to remove the reloadable object files
41044b0ead49Smrg	  # after they are used.
41054b0ead49Smrg	  i=0
41064b0ead49Smrg	  while test "$i" -lt "$k"
41074b0ead49Smrg	  do
41084b0ead49Smrg	    i=`expr $i + 1`
41094b0ead49Smrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
41104b0ead49Smrg	  done
41114b0ead49Smrg
41124b0ead49Smrg	  $echo "creating a temporary reloadable object file: $output"
41134b0ead49Smrg
41144b0ead49Smrg	  # Loop through the commands generated above and execute them.
41154b0ead49Smrg	  save_ifs="$IFS"; IFS='~'
41164b0ead49Smrg	  for cmd in $concat_cmds; do
41174b0ead49Smrg	    IFS="$save_ifs"
41184b0ead49Smrg	    $show "$cmd"
41194b0ead49Smrg	    $run eval "$cmd" || exit $?
41204b0ead49Smrg	  done
41214b0ead49Smrg	  IFS="$save_ifs"
41224b0ead49Smrg
41234b0ead49Smrg	  libobjs=$output
41244b0ead49Smrg	  # Restore the value of output.
41254b0ead49Smrg	  output=$save_output
41264b0ead49Smrg
41274b0ead49Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
41284b0ead49Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
41294b0ead49Smrg	  fi
41304b0ead49Smrg	  # Expand the library linking commands again to reset the
41314b0ead49Smrg	  # value of $libobjs for piecewise linking.
41324b0ead49Smrg
41334b0ead49Smrg	  # Do each of the archive commands.
41344b0ead49Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
41354b0ead49Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
41364b0ead49Smrg	      cmds=$module_expsym_cmds
41374b0ead49Smrg	    else
41384b0ead49Smrg	      cmds=$module_cmds
41394b0ead49Smrg	    fi
41404b0ead49Smrg	  else
41414b0ead49Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
41424b0ead49Smrg	    cmds=$archive_expsym_cmds
41434b0ead49Smrg	  else
41444b0ead49Smrg	    cmds=$archive_cmds
41454b0ead49Smrg	    fi
41464b0ead49Smrg	  fi
41474b0ead49Smrg
41484b0ead49Smrg	  # Append the command to remove the reloadable object files
41494b0ead49Smrg	  # to the just-reset $cmds.
41504b0ead49Smrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
41514b0ead49Smrg	fi
41524b0ead49Smrg	save_ifs="$IFS"; IFS='~'
41534b0ead49Smrg	for cmd in $cmds; do
41544b0ead49Smrg	  IFS="$save_ifs"
41554b0ead49Smrg	  eval cmd=\"$cmd\"
41564b0ead49Smrg	  $show "$cmd"
41574b0ead49Smrg	  $run eval "$cmd" || {
41584b0ead49Smrg	    lt_exit=$?
41594b0ead49Smrg
41604b0ead49Smrg	    # Restore the uninstalled library and exit
41614b0ead49Smrg	    if test "$mode" = relink; then
41624b0ead49Smrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
41634b0ead49Smrg	    fi
41644b0ead49Smrg
41654b0ead49Smrg	    exit $lt_exit
41664b0ead49Smrg	  }
41674b0ead49Smrg	done
41684b0ead49Smrg	IFS="$save_ifs"
41694b0ead49Smrg
41704b0ead49Smrg	# Restore the uninstalled library and exit
41714b0ead49Smrg	if test "$mode" = relink; then
41724b0ead49Smrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
41734b0ead49Smrg
41744b0ead49Smrg	  if test -n "$convenience"; then
41754b0ead49Smrg	    if test -z "$whole_archive_flag_spec"; then
41764b0ead49Smrg	      $show "${rm}r $gentop"
41774b0ead49Smrg	      $run ${rm}r "$gentop"
41784b0ead49Smrg	    fi
41794b0ead49Smrg	  fi
41804b0ead49Smrg
41814b0ead49Smrg	  exit $EXIT_SUCCESS
41824b0ead49Smrg	fi
41834b0ead49Smrg
41844b0ead49Smrg	# Create links to the real library.
41854b0ead49Smrg	for linkname in $linknames; do
41864b0ead49Smrg	  if test "$realname" != "$linkname"; then
41874b0ead49Smrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
41884b0ead49Smrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
41894b0ead49Smrg	  fi
41904b0ead49Smrg	done
41914b0ead49Smrg
41924b0ead49Smrg	# If -module or -export-dynamic was specified, set the dlname.
41934b0ead49Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
41944b0ead49Smrg	  # On all known operating systems, these are identical.
41954b0ead49Smrg	  dlname="$soname"
41964b0ead49Smrg	fi
41974b0ead49Smrg      fi
41984b0ead49Smrg      ;;
41994b0ead49Smrg
42004b0ead49Smrg    obj)
42014b0ead49Smrg      if test -n "$deplibs"; then
42024b0ead49Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
42034b0ead49Smrg      fi
42044b0ead49Smrg
42054b0ead49Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
42064b0ead49Smrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
42074b0ead49Smrg      fi
42084b0ead49Smrg
42094b0ead49Smrg      if test -n "$rpath"; then
42104b0ead49Smrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
42114b0ead49Smrg      fi
42124b0ead49Smrg
42134b0ead49Smrg      if test -n "$xrpath"; then
42144b0ead49Smrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
42154b0ead49Smrg      fi
42164b0ead49Smrg
42174b0ead49Smrg      if test -n "$vinfo"; then
42184b0ead49Smrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
42194b0ead49Smrg      fi
42204b0ead49Smrg
42214b0ead49Smrg      if test -n "$release"; then
42224b0ead49Smrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
42234b0ead49Smrg      fi
42244b0ead49Smrg
42254b0ead49Smrg      case $output in
42264b0ead49Smrg      *.lo)
42274b0ead49Smrg	if test -n "$objs$old_deplibs"; then
42284b0ead49Smrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
42294b0ead49Smrg	  exit $EXIT_FAILURE
42304b0ead49Smrg	fi
42314b0ead49Smrg	libobj="$output"
42324b0ead49Smrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
42334b0ead49Smrg	;;
42344b0ead49Smrg      *)
42354b0ead49Smrg	libobj=
42364b0ead49Smrg	obj="$output"
42374b0ead49Smrg	;;
42384b0ead49Smrg      esac
42394b0ead49Smrg
42404b0ead49Smrg      # Delete the old objects.
42414b0ead49Smrg      $run $rm $obj $libobj
42424b0ead49Smrg
42434b0ead49Smrg      # Objects from convenience libraries.  This assumes
42444b0ead49Smrg      # single-version convenience libraries.  Whenever we create
42454b0ead49Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
42464b0ead49Smrg      # the extraction.
42474b0ead49Smrg      reload_conv_objs=
42484b0ead49Smrg      gentop=
42494b0ead49Smrg      # reload_cmds runs $LD directly, so let us get rid of
42504b0ead49Smrg      # -Wl from whole_archive_flag_spec
42514b0ead49Smrg      wl=
42524b0ead49Smrg
42534b0ead49Smrg      if test -n "$convenience"; then
42544b0ead49Smrg	if test -n "$whole_archive_flag_spec"; then
42554b0ead49Smrg	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
42564b0ead49Smrg	else
42574b0ead49Smrg	  gentop="$output_objdir/${obj}x"
42584b0ead49Smrg	  generated="$generated $gentop"
42594b0ead49Smrg
42604b0ead49Smrg	  func_extract_archives $gentop $convenience
42614b0ead49Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
42624b0ead49Smrg	fi
42634b0ead49Smrg      fi
42644b0ead49Smrg
42654b0ead49Smrg      # Create the old-style object.
42664b0ead49Smrg      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
42674b0ead49Smrg
42684b0ead49Smrg      output="$obj"
42694b0ead49Smrg      cmds=$reload_cmds
42704b0ead49Smrg      save_ifs="$IFS"; IFS='~'
42714b0ead49Smrg      for cmd in $cmds; do
42724b0ead49Smrg	IFS="$save_ifs"
42734b0ead49Smrg	eval cmd=\"$cmd\"
42744b0ead49Smrg	$show "$cmd"
42754b0ead49Smrg	$run eval "$cmd" || exit $?
42764b0ead49Smrg      done
42774b0ead49Smrg      IFS="$save_ifs"
42784b0ead49Smrg
42794b0ead49Smrg      # Exit if we aren't doing a library object file.
42804b0ead49Smrg      if test -z "$libobj"; then
42814b0ead49Smrg	if test -n "$gentop"; then
42824b0ead49Smrg	  $show "${rm}r $gentop"
42834b0ead49Smrg	  $run ${rm}r $gentop
42844b0ead49Smrg	fi
42854b0ead49Smrg
42864b0ead49Smrg	exit $EXIT_SUCCESS
42874b0ead49Smrg      fi
42884b0ead49Smrg
42894b0ead49Smrg      if test "$build_libtool_libs" != yes; then
42904b0ead49Smrg	if test -n "$gentop"; then
42914b0ead49Smrg	  $show "${rm}r $gentop"
42924b0ead49Smrg	  $run ${rm}r $gentop
42934b0ead49Smrg	fi
42944b0ead49Smrg
42954b0ead49Smrg	# Create an invalid libtool object if no PIC, so that we don't
42964b0ead49Smrg	# accidentally link it into a program.
42974b0ead49Smrg	# $show "echo timestamp > $libobj"
42984b0ead49Smrg	# $run eval "echo timestamp > $libobj" || exit $?
42994b0ead49Smrg	exit $EXIT_SUCCESS
43004b0ead49Smrg      fi
43014b0ead49Smrg
43024b0ead49Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
43034b0ead49Smrg	# Only do commands if we really have different PIC objects.
43044b0ead49Smrg	reload_objs="$libobjs $reload_conv_objs"
43054b0ead49Smrg	output="$libobj"
43064b0ead49Smrg	cmds=$reload_cmds
43074b0ead49Smrg	save_ifs="$IFS"; IFS='~'
43084b0ead49Smrg	for cmd in $cmds; do
43094b0ead49Smrg	  IFS="$save_ifs"
43104b0ead49Smrg	  eval cmd=\"$cmd\"
43114b0ead49Smrg	  $show "$cmd"
43124b0ead49Smrg	  $run eval "$cmd" || exit $?
43134b0ead49Smrg	done
43144b0ead49Smrg	IFS="$save_ifs"
43154b0ead49Smrg      fi
43164b0ead49Smrg
43174b0ead49Smrg      if test -n "$gentop"; then
43184b0ead49Smrg	$show "${rm}r $gentop"
43194b0ead49Smrg	$run ${rm}r $gentop
43204b0ead49Smrg      fi
43214b0ead49Smrg
43224b0ead49Smrg      exit $EXIT_SUCCESS
43234b0ead49Smrg      ;;
43244b0ead49Smrg
43254b0ead49Smrg    prog)
43264b0ead49Smrg      case $host in
43274b0ead49Smrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
43284b0ead49Smrg      esac
43294b0ead49Smrg      if test -n "$vinfo"; then
43304b0ead49Smrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
43314b0ead49Smrg      fi
43324b0ead49Smrg
43334b0ead49Smrg      if test -n "$release"; then
43344b0ead49Smrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
43354b0ead49Smrg      fi
43364b0ead49Smrg
43374b0ead49Smrg      if test "$preload" = yes; then
43384b0ead49Smrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
43394b0ead49Smrg	   test "$dlopen_self_static" = unknown; then
43404b0ead49Smrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
43414b0ead49Smrg	fi
43424b0ead49Smrg      fi
43434b0ead49Smrg
43444b0ead49Smrg      case $host in
43454b0ead49Smrg      *-*-rhapsody* | *-*-darwin1.[012])
43464b0ead49Smrg	# On Rhapsody replace the C library is the System framework
43474b0ead49Smrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
43484b0ead49Smrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
43494b0ead49Smrg	;;
43504b0ead49Smrg      esac
43514b0ead49Smrg
43524b0ead49Smrg      case $host in
43534b0ead49Smrg      *darwin*)
43544b0ead49Smrg        # Don't allow lazy linking, it breaks C++ global constructors
43554b0ead49Smrg        if test "$tagname" = CXX ; then
43564b0ead49Smrg        compile_command="$compile_command ${wl}-bind_at_load"
43574b0ead49Smrg        finalize_command="$finalize_command ${wl}-bind_at_load"
43584b0ead49Smrg        fi
43594b0ead49Smrg        ;;
43604b0ead49Smrg      esac
43614b0ead49Smrg
43624b0ead49Smrg
43634b0ead49Smrg      # move library search paths that coincide with paths to not yet
43644b0ead49Smrg      # installed libraries to the beginning of the library search list
43654b0ead49Smrg      new_libs=
43664b0ead49Smrg      for path in $notinst_path; do
43674b0ead49Smrg	case " $new_libs " in
43684b0ead49Smrg	*" -L$path/$objdir "*) ;;
43694b0ead49Smrg	*)
43704b0ead49Smrg	  case " $compile_deplibs " in
43714b0ead49Smrg	  *" -L$path/$objdir "*)
43724b0ead49Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
43734b0ead49Smrg	  esac
43744b0ead49Smrg	  ;;
43754b0ead49Smrg	esac
43764b0ead49Smrg      done
43774b0ead49Smrg      for deplib in $compile_deplibs; do
43784b0ead49Smrg	case $deplib in
43794b0ead49Smrg	-L*)
43804b0ead49Smrg	  case " $new_libs " in
43814b0ead49Smrg	  *" $deplib "*) ;;
43824b0ead49Smrg	  *) new_libs="$new_libs $deplib" ;;
43834b0ead49Smrg	  esac
43844b0ead49Smrg	  ;;
43854b0ead49Smrg	*) new_libs="$new_libs $deplib" ;;
43864b0ead49Smrg	esac
43874b0ead49Smrg      done
43884b0ead49Smrg      compile_deplibs="$new_libs"
43894b0ead49Smrg
43904b0ead49Smrg
43914b0ead49Smrg      compile_command="$compile_command $compile_deplibs"
43924b0ead49Smrg      finalize_command="$finalize_command $finalize_deplibs"
43934b0ead49Smrg
43944b0ead49Smrg      if test -n "$rpath$xrpath"; then
43954b0ead49Smrg	# If the user specified any rpath flags, then add them.
43964b0ead49Smrg	for libdir in $rpath $xrpath; do
43974b0ead49Smrg	  # This is the magic to use -rpath.
43984b0ead49Smrg	  case "$finalize_rpath " in
43994b0ead49Smrg	  *" $libdir "*) ;;
44004b0ead49Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
44014b0ead49Smrg	  esac
44024b0ead49Smrg	done
44034b0ead49Smrg      fi
44044b0ead49Smrg
44054b0ead49Smrg      # Now hardcode the library paths
44064b0ead49Smrg      rpath=
44074b0ead49Smrg      hardcode_libdirs=
44084b0ead49Smrg      for libdir in $compile_rpath $finalize_rpath; do
44094b0ead49Smrg	if test -n "$hardcode_libdir_flag_spec"; then
44104b0ead49Smrg	  if test -n "$hardcode_libdir_separator"; then
44114b0ead49Smrg	    if test -z "$hardcode_libdirs"; then
44124b0ead49Smrg	      hardcode_libdirs="$libdir"
44134b0ead49Smrg	    else
44144b0ead49Smrg	      # Just accumulate the unique libdirs.
44154b0ead49Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
44164b0ead49Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
44174b0ead49Smrg		;;
44184b0ead49Smrg	      *)
44194b0ead49Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
44204b0ead49Smrg		;;
44214b0ead49Smrg	      esac
44224b0ead49Smrg	    fi
44234b0ead49Smrg	  else
44244b0ead49Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
44254b0ead49Smrg	    rpath="$rpath $flag"
44264b0ead49Smrg	  fi
44274b0ead49Smrg	elif test -n "$runpath_var"; then
44284b0ead49Smrg	  case "$perm_rpath " in
44294b0ead49Smrg	  *" $libdir "*) ;;
44304b0ead49Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
44314b0ead49Smrg	  esac
44324b0ead49Smrg	fi
44334b0ead49Smrg	case $host in
44344b0ead49Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
44354b0ead49Smrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
44364b0ead49Smrg	  case :$dllsearchpath: in
44374b0ead49Smrg	  *":$libdir:"*) ;;
44384b0ead49Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
44394b0ead49Smrg	  esac
44404b0ead49Smrg	  case :$dllsearchpath: in
44414b0ead49Smrg	  *":$testbindir:"*) ;;
44424b0ead49Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
44434b0ead49Smrg	  esac
44444b0ead49Smrg	  ;;
44454b0ead49Smrg	esac
44464b0ead49Smrg      done
44474b0ead49Smrg      # Substitute the hardcoded libdirs into the rpath.
44484b0ead49Smrg      if test -n "$hardcode_libdir_separator" &&
44494b0ead49Smrg	 test -n "$hardcode_libdirs"; then
44504b0ead49Smrg	libdir="$hardcode_libdirs"
44514b0ead49Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
44524b0ead49Smrg      fi
44534b0ead49Smrg      compile_rpath="$rpath"
44544b0ead49Smrg
44554b0ead49Smrg      rpath=
44564b0ead49Smrg      hardcode_libdirs=
44574b0ead49Smrg      for libdir in $finalize_rpath; do
44584b0ead49Smrg	if test -n "$hardcode_libdir_flag_spec"; then
44594b0ead49Smrg	  if test -n "$hardcode_libdir_separator"; then
44604b0ead49Smrg	    if test -z "$hardcode_libdirs"; then
44614b0ead49Smrg	      hardcode_libdirs="$libdir"
44624b0ead49Smrg	    else
44634b0ead49Smrg	      # Just accumulate the unique libdirs.
44644b0ead49Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
44654b0ead49Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
44664b0ead49Smrg		;;
44674b0ead49Smrg	      *)
44684b0ead49Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
44694b0ead49Smrg		;;
44704b0ead49Smrg	      esac
44714b0ead49Smrg	    fi
44724b0ead49Smrg	  else
44734b0ead49Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
44744b0ead49Smrg	    rpath="$rpath $flag"
44754b0ead49Smrg	  fi
44764b0ead49Smrg	elif test -n "$runpath_var"; then
44774b0ead49Smrg	  case "$finalize_perm_rpath " in
44784b0ead49Smrg	  *" $libdir "*) ;;
44794b0ead49Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
44804b0ead49Smrg	  esac
44814b0ead49Smrg	fi
44824b0ead49Smrg      done
44834b0ead49Smrg      # Substitute the hardcoded libdirs into the rpath.
44844b0ead49Smrg      if test -n "$hardcode_libdir_separator" &&
44854b0ead49Smrg	 test -n "$hardcode_libdirs"; then
44864b0ead49Smrg	libdir="$hardcode_libdirs"
44874b0ead49Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
44884b0ead49Smrg      fi
44894b0ead49Smrg      finalize_rpath="$rpath"
44904b0ead49Smrg
44914b0ead49Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
44924b0ead49Smrg	# Transform all the library objects into standard objects.
44934b0ead49Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
44944b0ead49Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
44954b0ead49Smrg      fi
44964b0ead49Smrg
44974b0ead49Smrg      dlsyms=
44984b0ead49Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
44994b0ead49Smrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
45004b0ead49Smrg	  dlsyms="${outputname}S.c"
45014b0ead49Smrg	else
45024b0ead49Smrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
45034b0ead49Smrg	fi
45044b0ead49Smrg      fi
45054b0ead49Smrg
45064b0ead49Smrg      if test -n "$dlsyms"; then
45074b0ead49Smrg	case $dlsyms in
45084b0ead49Smrg	"") ;;
45094b0ead49Smrg	*.c)
45104b0ead49Smrg	  # Discover the nlist of each of the dlfiles.
45114b0ead49Smrg	  nlist="$output_objdir/${outputname}.nm"
45124b0ead49Smrg
45134b0ead49Smrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
45144b0ead49Smrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
45154b0ead49Smrg
45164b0ead49Smrg	  # Parse the name list into a source file.
45174b0ead49Smrg	  $show "creating $output_objdir/$dlsyms"
45184b0ead49Smrg
45194b0ead49Smrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
45204b0ead49Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
45214b0ead49Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
45224b0ead49Smrg
45234b0ead49Smrg#ifdef __cplusplus
45244b0ead49Smrgextern \"C\" {
45254b0ead49Smrg#endif
45264b0ead49Smrg
45274b0ead49Smrg/* Prevent the only kind of declaration conflicts we can make. */
45284b0ead49Smrg#define lt_preloaded_symbols some_other_symbol
45294b0ead49Smrg
45304b0ead49Smrg/* External symbol declarations for the compiler. */\
45314b0ead49Smrg"
45324b0ead49Smrg
45334b0ead49Smrg	  if test "$dlself" = yes; then
45344b0ead49Smrg	    $show "generating symbol list for \`$output'"
45354b0ead49Smrg
45364b0ead49Smrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
45374b0ead49Smrg
45384b0ead49Smrg	    # Add our own program objects to the symbol list.
45394b0ead49Smrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
45404b0ead49Smrg	    for arg in $progfiles; do
45414b0ead49Smrg	      $show "extracting global C symbols from \`$arg'"
45424b0ead49Smrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
45434b0ead49Smrg	    done
45444b0ead49Smrg
45454b0ead49Smrg	    if test -n "$exclude_expsyms"; then
45464b0ead49Smrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
45474b0ead49Smrg	      $run eval '$mv "$nlist"T "$nlist"'
45484b0ead49Smrg	    fi
45494b0ead49Smrg
45504b0ead49Smrg	    if test -n "$export_symbols_regex"; then
45514b0ead49Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
45524b0ead49Smrg	      $run eval '$mv "$nlist"T "$nlist"'
45534b0ead49Smrg	    fi
45544b0ead49Smrg
45554b0ead49Smrg	    # Prepare the list of exported symbols
45564b0ead49Smrg	    if test -z "$export_symbols"; then
45574b0ead49Smrg	      export_symbols="$output_objdir/$outputname.exp"
45584b0ead49Smrg	      $run $rm $export_symbols
45594b0ead49Smrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
45604b0ead49Smrg              case $host in
45614b0ead49Smrg              *cygwin* | *mingw* )
45624b0ead49Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
45634b0ead49Smrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
45644b0ead49Smrg                ;;
45654b0ead49Smrg              esac
45664b0ead49Smrg	    else
45674b0ead49Smrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
45684b0ead49Smrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
45694b0ead49Smrg	      $run eval 'mv "$nlist"T "$nlist"'
45704b0ead49Smrg              case $host in
45714b0ead49Smrg              *cygwin* | *mingw* )
45724b0ead49Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
45734b0ead49Smrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
45744b0ead49Smrg                ;;
45754b0ead49Smrg              esac
45764b0ead49Smrg	    fi
45774b0ead49Smrg	  fi
45784b0ead49Smrg
45794b0ead49Smrg	  for arg in $dlprefiles; do
45804b0ead49Smrg	    $show "extracting global C symbols from \`$arg'"
45814b0ead49Smrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
45824b0ead49Smrg	    $run eval '$echo ": $name " >> "$nlist"'
45834b0ead49Smrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
45844b0ead49Smrg	  done
45854b0ead49Smrg
45864b0ead49Smrg	  if test -z "$run"; then
45874b0ead49Smrg	    # Make sure we have at least an empty file.
45884b0ead49Smrg	    test -f "$nlist" || : > "$nlist"
45894b0ead49Smrg
45904b0ead49Smrg	    if test -n "$exclude_expsyms"; then
45914b0ead49Smrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
45924b0ead49Smrg	      $mv "$nlist"T "$nlist"
45934b0ead49Smrg	    fi
45944b0ead49Smrg
45954b0ead49Smrg	    # Try sorting and uniquifying the output.
45964b0ead49Smrg	    if grep -v "^: " < "$nlist" |
45974b0ead49Smrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
45984b0ead49Smrg		  sort -k 3
45994b0ead49Smrg		else
46004b0ead49Smrg		  sort +2
46014b0ead49Smrg		fi |
46024b0ead49Smrg		uniq > "$nlist"S; then
46034b0ead49Smrg	      :
46044b0ead49Smrg	    else
46054b0ead49Smrg	      grep -v "^: " < "$nlist" > "$nlist"S
46064b0ead49Smrg	    fi
46074b0ead49Smrg
46084b0ead49Smrg	    if test -f "$nlist"S; then
46094b0ead49Smrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
46104b0ead49Smrg	    else
46114b0ead49Smrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
46124b0ead49Smrg	    fi
46134b0ead49Smrg
46144b0ead49Smrg	    $echo >> "$output_objdir/$dlsyms" "\
46154b0ead49Smrg
46164b0ead49Smrg#undef lt_preloaded_symbols
46174b0ead49Smrg
46184b0ead49Smrg#if defined (__STDC__) && __STDC__
46194b0ead49Smrg# define lt_ptr void *
46204b0ead49Smrg#else
46214b0ead49Smrg# define lt_ptr char *
46224b0ead49Smrg# define const
46234b0ead49Smrg#endif
46244b0ead49Smrg
46254b0ead49Smrg/* The mapping between symbol names and symbols. */
46264b0ead49Smrg"
46274b0ead49Smrg
46284b0ead49Smrg	    case $host in
46294b0ead49Smrg	    *cygwin* | *mingw* )
46304b0ead49Smrg	  $echo >> "$output_objdir/$dlsyms" "\
46314b0ead49Smrg/* DATA imports from DLLs on WIN32 can't be const, because
46324b0ead49Smrg   runtime relocations are performed -- see ld's documentation
46334b0ead49Smrg   on pseudo-relocs */
46344b0ead49Smrgstruct {
46354b0ead49Smrg"
46364b0ead49Smrg	      ;;
46374b0ead49Smrg	    * )
46384b0ead49Smrg	  $echo >> "$output_objdir/$dlsyms" "\
46394b0ead49Smrgconst struct {
46404b0ead49Smrg"
46414b0ead49Smrg	      ;;
46424b0ead49Smrg	    esac
46434b0ead49Smrg
46444b0ead49Smrg
46454b0ead49Smrg	  $echo >> "$output_objdir/$dlsyms" "\
46464b0ead49Smrg  const char *name;
46474b0ead49Smrg  lt_ptr address;
46484b0ead49Smrg}
46494b0ead49Smrglt_preloaded_symbols[] =
46504b0ead49Smrg{\
46514b0ead49Smrg"
46524b0ead49Smrg
46534b0ead49Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
46544b0ead49Smrg
46554b0ead49Smrg	    $echo >> "$output_objdir/$dlsyms" "\
46564b0ead49Smrg  {0, (lt_ptr) 0}
46574b0ead49Smrg};
46584b0ead49Smrg
46594b0ead49Smrg/* This works around a problem in FreeBSD linker */
46604b0ead49Smrg#ifdef FREEBSD_WORKAROUND
46614b0ead49Smrgstatic const void *lt_preloaded_setup() {
46624b0ead49Smrg  return lt_preloaded_symbols;
46634b0ead49Smrg}
46644b0ead49Smrg#endif
46654b0ead49Smrg
46664b0ead49Smrg#ifdef __cplusplus
46674b0ead49Smrg}
46684b0ead49Smrg#endif\
46694b0ead49Smrg"
46704b0ead49Smrg	  fi
46714b0ead49Smrg
46724b0ead49Smrg	  pic_flag_for_symtable=
46734b0ead49Smrg	  case $host in
46744b0ead49Smrg	  # compiling the symbol table file with pic_flag works around
46754b0ead49Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
46764b0ead49Smrg	  # linked before any other PIC object.  But we must not use
46774b0ead49Smrg	  # pic_flag when linking with -static.  The problem exists in
46784b0ead49Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
46794b0ead49Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
46804b0ead49Smrg	    case "$compile_command " in
46814b0ead49Smrg	    *" -static "*) ;;
46824b0ead49Smrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
46834b0ead49Smrg	    esac;;
46844b0ead49Smrg	  *-*-hpux*)
46854b0ead49Smrg	    case "$compile_command " in
46864b0ead49Smrg	    *" -static "*) ;;
46874b0ead49Smrg	    *) pic_flag_for_symtable=" $pic_flag";;
46884b0ead49Smrg	    esac
46894b0ead49Smrg	  esac
46904b0ead49Smrg
46914b0ead49Smrg	  # Now compile the dynamic symbol file.
46924b0ead49Smrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
46934b0ead49Smrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
46944b0ead49Smrg
46954b0ead49Smrg	  # Clean up the generated files.
46964b0ead49Smrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
46974b0ead49Smrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
46984b0ead49Smrg
46994b0ead49Smrg	  # Transform the symbol file into the correct name.
47004b0ead49Smrg          case $host in
47014b0ead49Smrg          *cygwin* | *mingw* )
47024b0ead49Smrg            if test -f "$output_objdir/${outputname}.def" ; then
47034b0ead49Smrg              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
47044b0ead49Smrg              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
47054b0ead49Smrg            else
47064b0ead49Smrg              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
47074b0ead49Smrg              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
47084b0ead49Smrg             fi
47094b0ead49Smrg            ;;
47104b0ead49Smrg          * )
47114b0ead49Smrg            compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
47124b0ead49Smrg            finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
47134b0ead49Smrg            ;;
47144b0ead49Smrg          esac
47154b0ead49Smrg	  ;;
47164b0ead49Smrg	*)
47174b0ead49Smrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
47184b0ead49Smrg	  exit $EXIT_FAILURE
47194b0ead49Smrg	  ;;
47204b0ead49Smrg	esac
47214b0ead49Smrg      else
47224b0ead49Smrg	# We keep going just in case the user didn't refer to
47234b0ead49Smrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
47244b0ead49Smrg	# really was required.
47254b0ead49Smrg
47264b0ead49Smrg	# Nullify the symbol file.
47274b0ead49Smrg	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
47284b0ead49Smrg	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
47294b0ead49Smrg      fi
47304b0ead49Smrg
47314b0ead49Smrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
47324b0ead49Smrg	# Replace the output file specification.
47334b0ead49Smrg	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
47344b0ead49Smrg	link_command="$compile_command$compile_rpath"
47354b0ead49Smrg
47364b0ead49Smrg	# We have no uninstalled library dependencies, so finalize right now.
47374b0ead49Smrg	$show "$link_command"
47384b0ead49Smrg	$run eval "$link_command"
47394b0ead49Smrg	exit_status=$?
47404b0ead49Smrg
47414b0ead49Smrg	# Delete the generated files.
47424b0ead49Smrg	if test -n "$dlsyms"; then
47434b0ead49Smrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
47444b0ead49Smrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
47454b0ead49Smrg	fi
47464b0ead49Smrg
47474b0ead49Smrg	exit $exit_status
47484b0ead49Smrg      fi
47494b0ead49Smrg
47504b0ead49Smrg      if test -n "$shlibpath_var"; then
47514b0ead49Smrg	# We should set the shlibpath_var
47524b0ead49Smrg	rpath=
47534b0ead49Smrg	for dir in $temp_rpath; do
47544b0ead49Smrg	  case $dir in
47554b0ead49Smrg	  [\\/]* | [A-Za-z]:[\\/]*)
47564b0ead49Smrg	    # Absolute path.
47574b0ead49Smrg	    rpath="$rpath$dir:"
47584b0ead49Smrg	    ;;
47594b0ead49Smrg	  *)
47604b0ead49Smrg	    # Relative path: add a thisdir entry.
47614b0ead49Smrg	    rpath="$rpath\$thisdir/$dir:"
47624b0ead49Smrg	    ;;
47634b0ead49Smrg	  esac
47644b0ead49Smrg	done
47654b0ead49Smrg	temp_rpath="$rpath"
47664b0ead49Smrg      fi
47674b0ead49Smrg
47684b0ead49Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
47694b0ead49Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
47704b0ead49Smrg      fi
47714b0ead49Smrg      if test -n "$finalize_shlibpath"; then
47724b0ead49Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
47734b0ead49Smrg      fi
47744b0ead49Smrg
47754b0ead49Smrg      compile_var=
47764b0ead49Smrg      finalize_var=
47774b0ead49Smrg      if test -n "$runpath_var"; then
47784b0ead49Smrg	if test -n "$perm_rpath"; then
47794b0ead49Smrg	  # We should set the runpath_var.
47804b0ead49Smrg	  rpath=
47814b0ead49Smrg	  for dir in $perm_rpath; do
47824b0ead49Smrg	    rpath="$rpath$dir:"
47834b0ead49Smrg	  done
47844b0ead49Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
47854b0ead49Smrg	fi
47864b0ead49Smrg	if test -n "$finalize_perm_rpath"; then
47874b0ead49Smrg	  # We should set the runpath_var.
47884b0ead49Smrg	  rpath=
47894b0ead49Smrg	  for dir in $finalize_perm_rpath; do
47904b0ead49Smrg	    rpath="$rpath$dir:"
47914b0ead49Smrg	  done
47924b0ead49Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
47934b0ead49Smrg	fi
47944b0ead49Smrg      fi
47954b0ead49Smrg
47964b0ead49Smrg      if test "$no_install" = yes; then
47974b0ead49Smrg	# We don't need to create a wrapper script.
47984b0ead49Smrg	link_command="$compile_var$compile_command$compile_rpath"
47994b0ead49Smrg	# Replace the output file specification.
48004b0ead49Smrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
48014b0ead49Smrg	# Delete the old output file.
48024b0ead49Smrg	$run $rm $output
48034b0ead49Smrg	# Link the executable and exit
48044b0ead49Smrg	$show "$link_command"
48054b0ead49Smrg	$run eval "$link_command" || exit $?
48064b0ead49Smrg	exit $EXIT_SUCCESS
48074b0ead49Smrg      fi
48084b0ead49Smrg
48094b0ead49Smrg      if test "$hardcode_action" = relink; then
48104b0ead49Smrg	# Fast installation is not supported
48114b0ead49Smrg	link_command="$compile_var$compile_command$compile_rpath"
48124b0ead49Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
48134b0ead49Smrg
48144b0ead49Smrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
48154b0ead49Smrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
48164b0ead49Smrg      else
48174b0ead49Smrg	if test "$fast_install" != no; then
48184b0ead49Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
48194b0ead49Smrg	  if test "$fast_install" = yes; then
48204b0ead49Smrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
48214b0ead49Smrg	  else
48224b0ead49Smrg	    # fast_install is set to needless
48234b0ead49Smrg	    relink_command=
48244b0ead49Smrg	  fi
48254b0ead49Smrg	else
48264b0ead49Smrg	  link_command="$compile_var$compile_command$compile_rpath"
48274b0ead49Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
48284b0ead49Smrg	fi
48294b0ead49Smrg      fi
48304b0ead49Smrg
48314b0ead49Smrg      # Replace the output file specification.
48324b0ead49Smrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
48334b0ead49Smrg
48344b0ead49Smrg      # Delete the old output files.
48354b0ead49Smrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
48364b0ead49Smrg
48374b0ead49Smrg      $show "$link_command"
48384b0ead49Smrg      $run eval "$link_command" || exit $?
48394b0ead49Smrg
48404b0ead49Smrg      # Now create the wrapper script.
48414b0ead49Smrg      $show "creating $output"
48424b0ead49Smrg
48434b0ead49Smrg      # Quote the relink command for shipping.
48444b0ead49Smrg      if test -n "$relink_command"; then
48454b0ead49Smrg	# Preserve any variables that may affect compiler behavior
48464b0ead49Smrg	for var in $variables_saved_for_relink; do
48474b0ead49Smrg	  if eval test -z \"\${$var+set}\"; then
48484b0ead49Smrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
48494b0ead49Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
48504b0ead49Smrg	    relink_command="$var=; export $var; $relink_command"
48514b0ead49Smrg	  else
48524b0ead49Smrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
48534b0ead49Smrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
48544b0ead49Smrg	  fi
48554b0ead49Smrg	done
48564b0ead49Smrg	relink_command="(cd `pwd`; $relink_command)"
48574b0ead49Smrg	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
48584b0ead49Smrg      fi
48594b0ead49Smrg
48604b0ead49Smrg      # Quote $echo for shipping.
48614b0ead49Smrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
48624b0ead49Smrg	case $progpath in
48634b0ead49Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
48644b0ead49Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
48654b0ead49Smrg	esac
48664b0ead49Smrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
48674b0ead49Smrg      else
48684b0ead49Smrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
48694b0ead49Smrg      fi
48704b0ead49Smrg
48714b0ead49Smrg      # Only actually do things if our run command is non-null.
48724b0ead49Smrg      if test -z "$run"; then
48734b0ead49Smrg	# win32 will think the script is a binary if it has
48744b0ead49Smrg	# a .exe suffix, so we strip it off here.
48754b0ead49Smrg	case $output in
48764b0ead49Smrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
48774b0ead49Smrg	esac
48784b0ead49Smrg	# test for cygwin because mv fails w/o .exe extensions
48794b0ead49Smrg	case $host in
48804b0ead49Smrg	  *cygwin*)
48814b0ead49Smrg	    exeext=.exe
48824b0ead49Smrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
48834b0ead49Smrg	  *) exeext= ;;
48844b0ead49Smrg	esac
48854b0ead49Smrg	case $host in
48864b0ead49Smrg	  *cygwin* | *mingw* )
48874b0ead49Smrg            output_name=`basename $output`
48884b0ead49Smrg            output_path=`dirname $output`
48894b0ead49Smrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
48904b0ead49Smrg            cwrapper="$output_path/$output_name.exe"
48914b0ead49Smrg            $rm $cwrappersource $cwrapper
48924b0ead49Smrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
48934b0ead49Smrg
48944b0ead49Smrg	    cat > $cwrappersource <<EOF
48954b0ead49Smrg
48964b0ead49Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
48974b0ead49Smrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
48984b0ead49Smrg
48994b0ead49Smrg   The $output program cannot be directly executed until all the libtool
49004b0ead49Smrg   libraries that it depends on are installed.
49014b0ead49Smrg
49024b0ead49Smrg   This wrapper executable should never be moved out of the build directory.
49034b0ead49Smrg   If it is, it will not operate correctly.
49044b0ead49Smrg
49054b0ead49Smrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
49064b0ead49Smrg   but could eventually absorb all of the scripts functionality and
49074b0ead49Smrg   exec $objdir/$outputname directly.
49084b0ead49Smrg*/
49094b0ead49SmrgEOF
49104b0ead49Smrg	    cat >> $cwrappersource<<"EOF"
49114b0ead49Smrg#include <stdio.h>
49124b0ead49Smrg#include <stdlib.h>
49134b0ead49Smrg#include <unistd.h>
49144b0ead49Smrg#include <malloc.h>
49154b0ead49Smrg#include <stdarg.h>
49164b0ead49Smrg#include <assert.h>
49174b0ead49Smrg#include <string.h>
49184b0ead49Smrg#include <ctype.h>
49194b0ead49Smrg#include <sys/stat.h>
49204b0ead49Smrg
49214b0ead49Smrg#if defined(PATH_MAX)
49224b0ead49Smrg# define LT_PATHMAX PATH_MAX
49234b0ead49Smrg#elif defined(MAXPATHLEN)
49244b0ead49Smrg# define LT_PATHMAX MAXPATHLEN
49254b0ead49Smrg#else
49264b0ead49Smrg# define LT_PATHMAX 1024
49274b0ead49Smrg#endif
49284b0ead49Smrg
49294b0ead49Smrg#ifndef DIR_SEPARATOR
49304b0ead49Smrg# define DIR_SEPARATOR '/'
49314b0ead49Smrg# define PATH_SEPARATOR ':'
49324b0ead49Smrg#endif
49334b0ead49Smrg
49344b0ead49Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
49354b0ead49Smrg  defined (__OS2__)
49364b0ead49Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
49374b0ead49Smrg# ifndef DIR_SEPARATOR_2
49384b0ead49Smrg#  define DIR_SEPARATOR_2 '\\'
49394b0ead49Smrg# endif
49404b0ead49Smrg# ifndef PATH_SEPARATOR_2
49414b0ead49Smrg#  define PATH_SEPARATOR_2 ';'
49424b0ead49Smrg# endif
49434b0ead49Smrg#endif
49444b0ead49Smrg
49454b0ead49Smrg#ifndef DIR_SEPARATOR_2
49464b0ead49Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
49474b0ead49Smrg#else /* DIR_SEPARATOR_2 */
49484b0ead49Smrg# define IS_DIR_SEPARATOR(ch) \
49494b0ead49Smrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
49504b0ead49Smrg#endif /* DIR_SEPARATOR_2 */
49514b0ead49Smrg
49524b0ead49Smrg#ifndef PATH_SEPARATOR_2
49534b0ead49Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
49544b0ead49Smrg#else /* PATH_SEPARATOR_2 */
49554b0ead49Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
49564b0ead49Smrg#endif /* PATH_SEPARATOR_2 */
49574b0ead49Smrg
49584b0ead49Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
49594b0ead49Smrg#define XFREE(stale) do { \
49604b0ead49Smrg  if (stale) { free ((void *) stale); stale = 0; } \
49614b0ead49Smrg} while (0)
49624b0ead49Smrg
49634b0ead49Smrg/* -DDEBUG is fairly common in CFLAGS.  */
49644b0ead49Smrg#undef DEBUG
49654b0ead49Smrg#if defined DEBUGWRAPPER
49664b0ead49Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
49674b0ead49Smrg#else
49684b0ead49Smrg# define DEBUG(format, ...)
49694b0ead49Smrg#endif
49704b0ead49Smrg
49714b0ead49Smrgconst char *program_name = NULL;
49724b0ead49Smrg
49734b0ead49Smrgvoid * xmalloc (size_t num);
49744b0ead49Smrgchar * xstrdup (const char *string);
49754b0ead49Smrgconst char * base_name (const char *name);
49764b0ead49Smrgchar * find_executable(const char *wrapper);
49774b0ead49Smrgint    check_executable(const char *path);
49784b0ead49Smrgchar * strendzap(char *str, const char *pat);
49794b0ead49Smrgvoid lt_fatal (const char *message, ...);
49804b0ead49Smrg
49814b0ead49Smrgint
49824b0ead49Smrgmain (int argc, char *argv[])
49834b0ead49Smrg{
49844b0ead49Smrg  char **newargz;
49854b0ead49Smrg  int i;
49864b0ead49Smrg
49874b0ead49Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
49884b0ead49Smrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
49894b0ead49Smrg  DEBUG("(main) program_name : %s\n",program_name);
49904b0ead49Smrg  newargz = XMALLOC(char *, argc+2);
49914b0ead49SmrgEOF
49924b0ead49Smrg
49934b0ead49Smrg            cat >> $cwrappersource <<EOF
49944b0ead49Smrg  newargz[0] = (char *) xstrdup("$SHELL");
49954b0ead49SmrgEOF
49964b0ead49Smrg
49974b0ead49Smrg            cat >> $cwrappersource <<"EOF"
49984b0ead49Smrg  newargz[1] = find_executable(argv[0]);
49994b0ead49Smrg  if (newargz[1] == NULL)
50004b0ead49Smrg    lt_fatal("Couldn't find %s", argv[0]);
50014b0ead49Smrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
50024b0ead49Smrg  /* we know the script has the same name, without the .exe */
50034b0ead49Smrg  /* so make sure newargz[1] doesn't end in .exe */
50044b0ead49Smrg  strendzap(newargz[1],".exe");
50054b0ead49Smrg  for (i = 1; i < argc; i++)
50064b0ead49Smrg    newargz[i+1] = xstrdup(argv[i]);
50074b0ead49Smrg  newargz[argc+1] = NULL;
50084b0ead49Smrg
50094b0ead49Smrg  for (i=0; i<argc+1; i++)
50104b0ead49Smrg  {
50114b0ead49Smrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
50124b0ead49Smrg    ;
50134b0ead49Smrg  }
50144b0ead49Smrg
50154b0ead49SmrgEOF
50164b0ead49Smrg
50174b0ead49Smrg            case $host_os in
50184b0ead49Smrg              mingw*)
50194b0ead49Smrg                cat >> $cwrappersource <<EOF
50204b0ead49Smrg  execv("$SHELL",(char const **)newargz);
50214b0ead49SmrgEOF
50224b0ead49Smrg              ;;
50234b0ead49Smrg              *)
50244b0ead49Smrg                cat >> $cwrappersource <<EOF
50254b0ead49Smrg  execv("$SHELL",newargz);
50264b0ead49SmrgEOF
50274b0ead49Smrg              ;;
50284b0ead49Smrg            esac
50294b0ead49Smrg
50304b0ead49Smrg            cat >> $cwrappersource <<"EOF"
50314b0ead49Smrg  return 127;
50324b0ead49Smrg}
50334b0ead49Smrg
50344b0ead49Smrgvoid *
50354b0ead49Smrgxmalloc (size_t num)
50364b0ead49Smrg{
50374b0ead49Smrg  void * p = (void *) malloc (num);
50384b0ead49Smrg  if (!p)
50394b0ead49Smrg    lt_fatal ("Memory exhausted");
50404b0ead49Smrg
50414b0ead49Smrg  return p;
50424b0ead49Smrg}
50434b0ead49Smrg
50444b0ead49Smrgchar *
50454b0ead49Smrgxstrdup (const char *string)
50464b0ead49Smrg{
50474b0ead49Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
50484b0ead49Smrg;
50494b0ead49Smrg}
50504b0ead49Smrg
50514b0ead49Smrgconst char *
50524b0ead49Smrgbase_name (const char *name)
50534b0ead49Smrg{
50544b0ead49Smrg  const char *base;
50554b0ead49Smrg
50564b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
50574b0ead49Smrg  /* Skip over the disk name in MSDOS pathnames. */
50584b0ead49Smrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
50594b0ead49Smrg    name += 2;
50604b0ead49Smrg#endif
50614b0ead49Smrg
50624b0ead49Smrg  for (base = name; *name; name++)
50634b0ead49Smrg    if (IS_DIR_SEPARATOR (*name))
50644b0ead49Smrg      base = name + 1;
50654b0ead49Smrg  return base;
50664b0ead49Smrg}
50674b0ead49Smrg
50684b0ead49Smrgint
50694b0ead49Smrgcheck_executable(const char * path)
50704b0ead49Smrg{
50714b0ead49Smrg  struct stat st;
50724b0ead49Smrg
50734b0ead49Smrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
50744b0ead49Smrg  if ((!path) || (!*path))
50754b0ead49Smrg    return 0;
50764b0ead49Smrg
50774b0ead49Smrg  if ((stat (path, &st) >= 0) &&
50784b0ead49Smrg      (
50794b0ead49Smrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
50804b0ead49Smrg#if defined (S_IXOTH)
50814b0ead49Smrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
50824b0ead49Smrg#endif
50834b0ead49Smrg#if defined (S_IXGRP)
50844b0ead49Smrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
50854b0ead49Smrg#endif
50864b0ead49Smrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
50874b0ead49Smrg      )
50884b0ead49Smrg    return 1;
50894b0ead49Smrg  else
50904b0ead49Smrg    return 0;
50914b0ead49Smrg}
50924b0ead49Smrg
50934b0ead49Smrg/* Searches for the full path of the wrapper.  Returns
50944b0ead49Smrg   newly allocated full path name if found, NULL otherwise */
50954b0ead49Smrgchar *
50964b0ead49Smrgfind_executable (const char* wrapper)
50974b0ead49Smrg{
50984b0ead49Smrg  int has_slash = 0;
50994b0ead49Smrg  const char* p;
51004b0ead49Smrg  const char* p_next;
51014b0ead49Smrg  /* static buffer for getcwd */
51024b0ead49Smrg  char tmp[LT_PATHMAX + 1];
51034b0ead49Smrg  int tmp_len;
51044b0ead49Smrg  char* concat_name;
51054b0ead49Smrg
51064b0ead49Smrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51074b0ead49Smrg
51084b0ead49Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
51094b0ead49Smrg    return NULL;
51104b0ead49Smrg
51114b0ead49Smrg  /* Absolute path? */
51124b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51134b0ead49Smrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
51144b0ead49Smrg  {
51154b0ead49Smrg    concat_name = xstrdup (wrapper);
51164b0ead49Smrg    if (check_executable(concat_name))
51174b0ead49Smrg      return concat_name;
51184b0ead49Smrg    XFREE(concat_name);
51194b0ead49Smrg  }
51204b0ead49Smrg  else
51214b0ead49Smrg  {
51224b0ead49Smrg#endif
51234b0ead49Smrg    if (IS_DIR_SEPARATOR (wrapper[0]))
51244b0ead49Smrg    {
51254b0ead49Smrg      concat_name = xstrdup (wrapper);
51264b0ead49Smrg      if (check_executable(concat_name))
51274b0ead49Smrg        return concat_name;
51284b0ead49Smrg      XFREE(concat_name);
51294b0ead49Smrg    }
51304b0ead49Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51314b0ead49Smrg  }
51324b0ead49Smrg#endif
51334b0ead49Smrg
51344b0ead49Smrg  for (p = wrapper; *p; p++)
51354b0ead49Smrg    if (*p == '/')
51364b0ead49Smrg    {
51374b0ead49Smrg      has_slash = 1;
51384b0ead49Smrg      break;
51394b0ead49Smrg    }
51404b0ead49Smrg  if (!has_slash)
51414b0ead49Smrg  {
51424b0ead49Smrg    /* no slashes; search PATH */
51434b0ead49Smrg    const char* path = getenv ("PATH");
51444b0ead49Smrg    if (path != NULL)
51454b0ead49Smrg    {
51464b0ead49Smrg      for (p = path; *p; p = p_next)
51474b0ead49Smrg      {
51484b0ead49Smrg        const char* q;
51494b0ead49Smrg        size_t p_len;
51504b0ead49Smrg        for (q = p; *q; q++)
51514b0ead49Smrg          if (IS_PATH_SEPARATOR(*q))
51524b0ead49Smrg            break;
51534b0ead49Smrg        p_len = q - p;
51544b0ead49Smrg        p_next = (*q == '\0' ? q : q + 1);
51554b0ead49Smrg        if (p_len == 0)
51564b0ead49Smrg        {
51574b0ead49Smrg          /* empty path: current directory */
51584b0ead49Smrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
51594b0ead49Smrg            lt_fatal ("getcwd failed");
51604b0ead49Smrg          tmp_len = strlen(tmp);
51614b0ead49Smrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51624b0ead49Smrg          memcpy (concat_name, tmp, tmp_len);
51634b0ead49Smrg          concat_name[tmp_len] = '/';
51644b0ead49Smrg          strcpy (concat_name + tmp_len + 1, wrapper);
51654b0ead49Smrg        }
51664b0ead49Smrg        else
51674b0ead49Smrg        {
51684b0ead49Smrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
51694b0ead49Smrg          memcpy (concat_name, p, p_len);
51704b0ead49Smrg          concat_name[p_len] = '/';
51714b0ead49Smrg          strcpy (concat_name + p_len + 1, wrapper);
51724b0ead49Smrg        }
51734b0ead49Smrg        if (check_executable(concat_name))
51744b0ead49Smrg          return concat_name;
51754b0ead49Smrg        XFREE(concat_name);
51764b0ead49Smrg      }
51774b0ead49Smrg    }
51784b0ead49Smrg    /* not found in PATH; assume curdir */
51794b0ead49Smrg  }
51804b0ead49Smrg  /* Relative path | not found in path: prepend cwd */
51814b0ead49Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
51824b0ead49Smrg    lt_fatal ("getcwd failed");
51834b0ead49Smrg  tmp_len = strlen(tmp);
51844b0ead49Smrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51854b0ead49Smrg  memcpy (concat_name, tmp, tmp_len);
51864b0ead49Smrg  concat_name[tmp_len] = '/';
51874b0ead49Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
51884b0ead49Smrg
51894b0ead49Smrg  if (check_executable(concat_name))
51904b0ead49Smrg    return concat_name;
51914b0ead49Smrg  XFREE(concat_name);
51924b0ead49Smrg  return NULL;
51934b0ead49Smrg}
51944b0ead49Smrg
51954b0ead49Smrgchar *
51964b0ead49Smrgstrendzap(char *str, const char *pat)
51974b0ead49Smrg{
51984b0ead49Smrg  size_t len, patlen;
51994b0ead49Smrg
52004b0ead49Smrg  assert(str != NULL);
52014b0ead49Smrg  assert(pat != NULL);
52024b0ead49Smrg
52034b0ead49Smrg  len = strlen(str);
52044b0ead49Smrg  patlen = strlen(pat);
52054b0ead49Smrg
52064b0ead49Smrg  if (patlen <= len)
52074b0ead49Smrg  {
52084b0ead49Smrg    str += len - patlen;
52094b0ead49Smrg    if (strcmp(str, pat) == 0)
52104b0ead49Smrg      *str = '\0';
52114b0ead49Smrg  }
52124b0ead49Smrg  return str;
52134b0ead49Smrg}
52144b0ead49Smrg
52154b0ead49Smrgstatic void
52164b0ead49Smrglt_error_core (int exit_status, const char * mode,
52174b0ead49Smrg          const char * message, va_list ap)
52184b0ead49Smrg{
52194b0ead49Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
52204b0ead49Smrg  vfprintf (stderr, message, ap);
52214b0ead49Smrg  fprintf (stderr, ".\n");
52224b0ead49Smrg
52234b0ead49Smrg  if (exit_status >= 0)
52244b0ead49Smrg    exit (exit_status);
52254b0ead49Smrg}
52264b0ead49Smrg
52274b0ead49Smrgvoid
52284b0ead49Smrglt_fatal (const char *message, ...)
52294b0ead49Smrg{
52304b0ead49Smrg  va_list ap;
52314b0ead49Smrg  va_start (ap, message);
52324b0ead49Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
52334b0ead49Smrg  va_end (ap);
52344b0ead49Smrg}
52354b0ead49SmrgEOF
52364b0ead49Smrg          # we should really use a build-platform specific compiler
52374b0ead49Smrg          # here, but OTOH, the wrappers (shell script and this C one)
52384b0ead49Smrg          # are only useful if you want to execute the "real" binary.
52394b0ead49Smrg          # Since the "real" binary is built for $host, then this
52404b0ead49Smrg          # wrapper might as well be built for $host, too.
52414b0ead49Smrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
52424b0ead49Smrg          ;;
52434b0ead49Smrg        esac
52444b0ead49Smrg        $rm $output
52454b0ead49Smrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
52464b0ead49Smrg
52474b0ead49Smrg	$echo > $output "\
52484b0ead49Smrg#! $SHELL
52494b0ead49Smrg
52504b0ead49Smrg# $output - temporary wrapper script for $objdir/$outputname
52514b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
52524b0ead49Smrg#
52534b0ead49Smrg# The $output program cannot be directly executed until all the libtool
52544b0ead49Smrg# libraries that it depends on are installed.
52554b0ead49Smrg#
52564b0ead49Smrg# This wrapper script should never be moved out of the build directory.
52574b0ead49Smrg# If it is, it will not operate correctly.
52584b0ead49Smrg
52594b0ead49Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
52604b0ead49Smrg# metacharacters that are still active within double-quoted strings.
52614b0ead49SmrgXsed='${SED} -e 1s/^X//'
52624b0ead49Smrgsed_quote_subst='$sed_quote_subst'
52634b0ead49Smrg
52644b0ead49Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
52654b0ead49Smrg# if CDPATH is set.
52664b0ead49Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
52674b0ead49Smrg
52684b0ead49Smrgrelink_command=\"$relink_command\"
52694b0ead49Smrg
52704b0ead49Smrg# This environment variable determines our operation mode.
52714b0ead49Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
52724b0ead49Smrg  # install mode needs the following variable:
52734b0ead49Smrg  notinst_deplibs='$notinst_deplibs'
52744b0ead49Smrgelse
52754b0ead49Smrg  # When we are sourced in execute mode, \$file and \$echo are already set.
52764b0ead49Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
52774b0ead49Smrg    echo=\"$qecho\"
52784b0ead49Smrg    file=\"\$0\"
52794b0ead49Smrg    # Make sure echo works.
52804b0ead49Smrg    if test \"X\$1\" = X--no-reexec; then
52814b0ead49Smrg      # Discard the --no-reexec flag, and continue.
52824b0ead49Smrg      shift
52834b0ead49Smrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
52844b0ead49Smrg      # Yippee, \$echo works!
52854b0ead49Smrg      :
52864b0ead49Smrg    else
52874b0ead49Smrg      # Restart under the correct shell, and then maybe \$echo will work.
52884b0ead49Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
52894b0ead49Smrg    fi
52904b0ead49Smrg  fi\
52914b0ead49Smrg"
52924b0ead49Smrg	$echo >> $output "\
52934b0ead49Smrg
52944b0ead49Smrg  # Find the directory that this script lives in.
52954b0ead49Smrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
52964b0ead49Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
52974b0ead49Smrg
52984b0ead49Smrg  # Follow symbolic links until we get to the real thisdir.
52994b0ead49Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
53004b0ead49Smrg  while test -n \"\$file\"; do
53014b0ead49Smrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
53024b0ead49Smrg
53034b0ead49Smrg    # If there was a directory component, then change thisdir.
53044b0ead49Smrg    if test \"x\$destdir\" != \"x\$file\"; then
53054b0ead49Smrg      case \"\$destdir\" in
53064b0ead49Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
53074b0ead49Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
53084b0ead49Smrg      esac
53094b0ead49Smrg    fi
53104b0ead49Smrg
53114b0ead49Smrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
53124b0ead49Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
53134b0ead49Smrg  done
53144b0ead49Smrg
53154b0ead49Smrg  # Try to get the absolute directory name.
53164b0ead49Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
53174b0ead49Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
53184b0ead49Smrg"
53194b0ead49Smrg
53204b0ead49Smrg	if test "$fast_install" = yes; then
53214b0ead49Smrg	  $echo >> $output "\
53224b0ead49Smrg  program=lt-'$outputname'$exeext
53234b0ead49Smrg  progdir=\"\$thisdir/$objdir\"
53244b0ead49Smrg
53254b0ead49Smrg  if test ! -f \"\$progdir/\$program\" || \\
53264b0ead49Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
53274b0ead49Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
53284b0ead49Smrg
53294b0ead49Smrg    file=\"\$\$-\$program\"
53304b0ead49Smrg
53314b0ead49Smrg    if test ! -d \"\$progdir\"; then
53324b0ead49Smrg      $mkdir \"\$progdir\"
53334b0ead49Smrg    else
53344b0ead49Smrg      $rm \"\$progdir/\$file\"
53354b0ead49Smrg    fi"
53364b0ead49Smrg
53374b0ead49Smrg	  $echo >> $output "\
53384b0ead49Smrg
53394b0ead49Smrg    # relink executable if necessary
53404b0ead49Smrg    if test -n \"\$relink_command\"; then
53414b0ead49Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
53424b0ead49Smrg      else
53434b0ead49Smrg	$echo \"\$relink_command_output\" >&2
53444b0ead49Smrg	$rm \"\$progdir/\$file\"
53454b0ead49Smrg	exit $EXIT_FAILURE
53464b0ead49Smrg      fi
53474b0ead49Smrg    fi
53484b0ead49Smrg
53494b0ead49Smrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
53504b0ead49Smrg    { $rm \"\$progdir/\$program\";
53514b0ead49Smrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
53524b0ead49Smrg    $rm \"\$progdir/\$file\"
53534b0ead49Smrg  fi"
53544b0ead49Smrg	else
53554b0ead49Smrg	  $echo >> $output "\
53564b0ead49Smrg  program='$outputname'
53574b0ead49Smrg  progdir=\"\$thisdir/$objdir\"
53584b0ead49Smrg"
53594b0ead49Smrg	fi
53604b0ead49Smrg
53614b0ead49Smrg	$echo >> $output "\
53624b0ead49Smrg
53634b0ead49Smrg  if test -f \"\$progdir/\$program\"; then"
53644b0ead49Smrg
53654b0ead49Smrg	# Export our shlibpath_var if we have one.
53664b0ead49Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
53674b0ead49Smrg	  $echo >> $output "\
53684b0ead49Smrg    # Add our own library path to $shlibpath_var
53694b0ead49Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
53704b0ead49Smrg
53714b0ead49Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
53724b0ead49Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
53734b0ead49Smrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
53744b0ead49Smrg
53754b0ead49Smrg    export $shlibpath_var
53764b0ead49Smrg"
53774b0ead49Smrg	fi
53784b0ead49Smrg
53794b0ead49Smrg	# fixup the dll searchpath if we need to.
53804b0ead49Smrg	if test -n "$dllsearchpath"; then
53814b0ead49Smrg	  $echo >> $output "\
53824b0ead49Smrg    # Add the dll search path components to the executable PATH
53834b0ead49Smrg    PATH=$dllsearchpath:\$PATH
53844b0ead49Smrg"
53854b0ead49Smrg	fi
53864b0ead49Smrg
53874b0ead49Smrg	$echo >> $output "\
53884b0ead49Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
53894b0ead49Smrg      # Run the actual program with our arguments.
53904b0ead49Smrg"
53914b0ead49Smrg	case $host in
53924b0ead49Smrg	# Backslashes separate directories on plain windows
53934b0ead49Smrg	*-*-mingw | *-*-os2*)
53944b0ead49Smrg	  $echo >> $output "\
53954b0ead49Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
53964b0ead49Smrg"
53974b0ead49Smrg	  ;;
53984b0ead49Smrg
53994b0ead49Smrg	*)
54004b0ead49Smrg	  $echo >> $output "\
54014b0ead49Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
54024b0ead49Smrg"
54034b0ead49Smrg	  ;;
54044b0ead49Smrg	esac
54054b0ead49Smrg	$echo >> $output "\
54064b0ead49Smrg      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
54074b0ead49Smrg      exit $EXIT_FAILURE
54084b0ead49Smrg    fi
54094b0ead49Smrg  else
54104b0ead49Smrg    # The program doesn't exist.
54114b0ead49Smrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
54124b0ead49Smrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
54134b0ead49Smrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
54144b0ead49Smrg    exit $EXIT_FAILURE
54154b0ead49Smrg  fi
54164b0ead49Smrgfi\
54174b0ead49Smrg"
54184b0ead49Smrg	chmod +x $output
54194b0ead49Smrg      fi
54204b0ead49Smrg      exit $EXIT_SUCCESS
54214b0ead49Smrg      ;;
54224b0ead49Smrg    esac
54234b0ead49Smrg
54244b0ead49Smrg    # See if we need to build an old-fashioned archive.
54254b0ead49Smrg    for oldlib in $oldlibs; do
54264b0ead49Smrg
54274b0ead49Smrg      if test "$build_libtool_libs" = convenience; then
54284b0ead49Smrg	oldobjs="$libobjs_save"
54294b0ead49Smrg	addlibs="$convenience"
54304b0ead49Smrg	build_libtool_libs=no
54314b0ead49Smrg      else
54324b0ead49Smrg	if test "$build_libtool_libs" = module; then
54334b0ead49Smrg	  oldobjs="$libobjs_save"
54344b0ead49Smrg	  build_libtool_libs=no
54354b0ead49Smrg	else
54364b0ead49Smrg	  oldobjs="$old_deplibs $non_pic_objects"
54374b0ead49Smrg	fi
54384b0ead49Smrg	addlibs="$old_convenience"
54394b0ead49Smrg      fi
54404b0ead49Smrg
54414b0ead49Smrg      if test -n "$addlibs"; then
54424b0ead49Smrg	gentop="$output_objdir/${outputname}x"
54434b0ead49Smrg	generated="$generated $gentop"
54444b0ead49Smrg
54454b0ead49Smrg	func_extract_archives $gentop $addlibs
54464b0ead49Smrg	oldobjs="$oldobjs $func_extract_archives_result"
54474b0ead49Smrg      fi
54484b0ead49Smrg
54494b0ead49Smrg      # Do each command in the archive commands.
54504b0ead49Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
54514b0ead49Smrg       cmds=$old_archive_from_new_cmds
54524b0ead49Smrg      else
54534b0ead49Smrg	# POSIX demands no paths to be encoded in archives.  We have
54544b0ead49Smrg	# to avoid creating archives with duplicate basenames if we
54554b0ead49Smrg	# might have to extract them afterwards, e.g., when creating a
54564b0ead49Smrg	# static archive out of a convenience library, or when linking
54574b0ead49Smrg	# the entirety of a libtool archive into another (currently
54584b0ead49Smrg	# not supported by libtool).
54594b0ead49Smrg	if (for obj in $oldobjs
54604b0ead49Smrg	    do
54614b0ead49Smrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
54624b0ead49Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
54634b0ead49Smrg	  :
54644b0ead49Smrg	else
54654b0ead49Smrg	  $echo "copying selected object files to avoid basename conflicts..."
54664b0ead49Smrg
54674b0ead49Smrg	  if test -z "$gentop"; then
54684b0ead49Smrg	    gentop="$output_objdir/${outputname}x"
54694b0ead49Smrg	    generated="$generated $gentop"
54704b0ead49Smrg
54714b0ead49Smrg	    $show "${rm}r $gentop"
54724b0ead49Smrg	    $run ${rm}r "$gentop"
54734b0ead49Smrg	    $show "$mkdir $gentop"
54744b0ead49Smrg	    $run $mkdir "$gentop"
54754b0ead49Smrg	    exit_status=$?
54764b0ead49Smrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
54774b0ead49Smrg	      exit $exit_status
54784b0ead49Smrg	    fi
54794b0ead49Smrg	  fi
54804b0ead49Smrg
54814b0ead49Smrg	  save_oldobjs=$oldobjs
54824b0ead49Smrg	  oldobjs=
54834b0ead49Smrg	  counter=1
54844b0ead49Smrg	  for obj in $save_oldobjs
54854b0ead49Smrg	  do
54864b0ead49Smrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
54874b0ead49Smrg	    case " $oldobjs " in
54884b0ead49Smrg	    " ") oldobjs=$obj ;;
54894b0ead49Smrg	    *[\ /]"$objbase "*)
54904b0ead49Smrg	      while :; do
54914b0ead49Smrg		# Make sure we don't pick an alternate name that also
54924b0ead49Smrg		# overlaps.
54934b0ead49Smrg		newobj=lt$counter-$objbase
54944b0ead49Smrg		counter=`expr $counter + 1`
54954b0ead49Smrg		case " $oldobjs " in
54964b0ead49Smrg		*[\ /]"$newobj "*) ;;
54974b0ead49Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
54984b0ead49Smrg		esac
54994b0ead49Smrg	      done
55004b0ead49Smrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
55014b0ead49Smrg	      $run ln "$obj" "$gentop/$newobj" ||
55024b0ead49Smrg	      $run cp "$obj" "$gentop/$newobj"
55034b0ead49Smrg	      oldobjs="$oldobjs $gentop/$newobj"
55044b0ead49Smrg	      ;;
55054b0ead49Smrg	    *) oldobjs="$oldobjs $obj" ;;
55064b0ead49Smrg	    esac
55074b0ead49Smrg	  done
55084b0ead49Smrg	fi
55094b0ead49Smrg
55104b0ead49Smrg	eval cmds=\"$old_archive_cmds\"
55114b0ead49Smrg
55124b0ead49Smrg	if len=`expr "X$cmds" : ".*"` &&
55134b0ead49Smrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
55144b0ead49Smrg	  cmds=$old_archive_cmds
55154b0ead49Smrg	else
55164b0ead49Smrg	  # the command line is too long to link in one step, link in parts
55174b0ead49Smrg	  $echo "using piecewise archive linking..."
55184b0ead49Smrg	  save_RANLIB=$RANLIB
55194b0ead49Smrg	  RANLIB=:
55204b0ead49Smrg	  objlist=
55214b0ead49Smrg	  concat_cmds=
55224b0ead49Smrg	  save_oldobjs=$oldobjs
55234b0ead49Smrg
55244b0ead49Smrg	  # Is there a better way of finding the last object in the list?
55254b0ead49Smrg	  for obj in $save_oldobjs
55264b0ead49Smrg	  do
55274b0ead49Smrg	    last_oldobj=$obj
55284b0ead49Smrg	  done
55294b0ead49Smrg	  for obj in $save_oldobjs
55304b0ead49Smrg	  do
55314b0ead49Smrg	    oldobjs="$objlist $obj"
55324b0ead49Smrg	    objlist="$objlist $obj"
55334b0ead49Smrg	    eval test_cmds=\"$old_archive_cmds\"
55344b0ead49Smrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
55354b0ead49Smrg	       test "$len" -le "$max_cmd_len"; then
55364b0ead49Smrg	      :
55374b0ead49Smrg	    else
55384b0ead49Smrg	      # the above command should be used before it gets too long
55394b0ead49Smrg	      oldobjs=$objlist
55404b0ead49Smrg	      if test "$obj" = "$last_oldobj" ; then
55414b0ead49Smrg	        RANLIB=$save_RANLIB
55424b0ead49Smrg	      fi
55434b0ead49Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
55444b0ead49Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
55454b0ead49Smrg	      objlist=
55464b0ead49Smrg	    fi
55474b0ead49Smrg	  done
55484b0ead49Smrg	  RANLIB=$save_RANLIB
55494b0ead49Smrg	  oldobjs=$objlist
55504b0ead49Smrg	  if test "X$oldobjs" = "X" ; then
55514b0ead49Smrg	    eval cmds=\"\$concat_cmds\"
55524b0ead49Smrg	  else
55534b0ead49Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
55544b0ead49Smrg	  fi
55554b0ead49Smrg	fi
55564b0ead49Smrg      fi
55574b0ead49Smrg      save_ifs="$IFS"; IFS='~'
55584b0ead49Smrg      for cmd in $cmds; do
55594b0ead49Smrg        eval cmd=\"$cmd\"
55604b0ead49Smrg	IFS="$save_ifs"
55614b0ead49Smrg	$show "$cmd"
55624b0ead49Smrg	$run eval "$cmd" || exit $?
55634b0ead49Smrg      done
55644b0ead49Smrg      IFS="$save_ifs"
55654b0ead49Smrg    done
55664b0ead49Smrg
55674b0ead49Smrg    if test -n "$generated"; then
55684b0ead49Smrg      $show "${rm}r$generated"
55694b0ead49Smrg      $run ${rm}r$generated
55704b0ead49Smrg    fi
55714b0ead49Smrg
55724b0ead49Smrg    # Now create the libtool archive.
55734b0ead49Smrg    case $output in
55744b0ead49Smrg    *.la)
55754b0ead49Smrg      old_library=
55764b0ead49Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
55774b0ead49Smrg      $show "creating $output"
55784b0ead49Smrg
55794b0ead49Smrg      # Preserve any variables that may affect compiler behavior
55804b0ead49Smrg      for var in $variables_saved_for_relink; do
55814b0ead49Smrg	if eval test -z \"\${$var+set}\"; then
55824b0ead49Smrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
55834b0ead49Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
55844b0ead49Smrg	  relink_command="$var=; export $var; $relink_command"
55854b0ead49Smrg	else
55864b0ead49Smrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
55874b0ead49Smrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
55884b0ead49Smrg	fi
55894b0ead49Smrg      done
55904b0ead49Smrg      # Quote the link command for shipping.
55914b0ead49Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
55924b0ead49Smrg      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
55934b0ead49Smrg      if test "$hardcode_automatic" = yes ; then
55944b0ead49Smrg	relink_command=
55954b0ead49Smrg      fi
55964b0ead49Smrg
55974b0ead49Smrg
55984b0ead49Smrg      # Only create the output if not a dry run.
55994b0ead49Smrg      if test -z "$run"; then
56004b0ead49Smrg	for installed in no yes; do
56014b0ead49Smrg	  if test "$installed" = yes; then
56024b0ead49Smrg	    if test -z "$install_libdir"; then
56034b0ead49Smrg	      break
56044b0ead49Smrg	    fi
56054b0ead49Smrg	    output="$output_objdir/$outputname"i
56064b0ead49Smrg	    # Replace all uninstalled libtool libraries with the installed ones
56074b0ead49Smrg	    newdependency_libs=
56084b0ead49Smrg	    for deplib in $dependency_libs; do
56094b0ead49Smrg	      case $deplib in
56104b0ead49Smrg	      *.la)
56114b0ead49Smrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
56124b0ead49Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
56134b0ead49Smrg		if test -z "$libdir"; then
56144b0ead49Smrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
56154b0ead49Smrg		  exit $EXIT_FAILURE
56164b0ead49Smrg		fi
56174b0ead49Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
56184b0ead49Smrg		;;
56194b0ead49Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
56204b0ead49Smrg	      esac
56214b0ead49Smrg	    done
56224b0ead49Smrg	    dependency_libs="$newdependency_libs"
56234b0ead49Smrg	    newdlfiles=
56244b0ead49Smrg	    for lib in $dlfiles; do
56254b0ead49Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
56264b0ead49Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
56274b0ead49Smrg	      if test -z "$libdir"; then
56284b0ead49Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
56294b0ead49Smrg		exit $EXIT_FAILURE
56304b0ead49Smrg	      fi
56314b0ead49Smrg	      newdlfiles="$newdlfiles $libdir/$name"
56324b0ead49Smrg	    done
56334b0ead49Smrg	    dlfiles="$newdlfiles"
56344b0ead49Smrg	    newdlprefiles=
56354b0ead49Smrg	    for lib in $dlprefiles; do
56364b0ead49Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
56374b0ead49Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
56384b0ead49Smrg	      if test -z "$libdir"; then
56394b0ead49Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
56404b0ead49Smrg		exit $EXIT_FAILURE
56414b0ead49Smrg	      fi
56424b0ead49Smrg	      newdlprefiles="$newdlprefiles $libdir/$name"
56434b0ead49Smrg	    done
56444b0ead49Smrg	    dlprefiles="$newdlprefiles"
56454b0ead49Smrg	  else
56464b0ead49Smrg	    newdlfiles=
56474b0ead49Smrg	    for lib in $dlfiles; do
56484b0ead49Smrg	      case $lib in
56494b0ead49Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
56504b0ead49Smrg		*) abs=`pwd`"/$lib" ;;
56514b0ead49Smrg	      esac
56524b0ead49Smrg	      newdlfiles="$newdlfiles $abs"
56534b0ead49Smrg	    done
56544b0ead49Smrg	    dlfiles="$newdlfiles"
56554b0ead49Smrg	    newdlprefiles=
56564b0ead49Smrg	    for lib in $dlprefiles; do
56574b0ead49Smrg	      case $lib in
56584b0ead49Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
56594b0ead49Smrg		*) abs=`pwd`"/$lib" ;;
56604b0ead49Smrg	      esac
56614b0ead49Smrg	      newdlprefiles="$newdlprefiles $abs"
56624b0ead49Smrg	    done
56634b0ead49Smrg	    dlprefiles="$newdlprefiles"
56644b0ead49Smrg	  fi
56654b0ead49Smrg	  $rm $output
56664b0ead49Smrg	  # place dlname in correct position for cygwin
56674b0ead49Smrg	  tdlname=$dlname
56684b0ead49Smrg	  case $host,$output,$installed,$module,$dlname in
56694b0ead49Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
56704b0ead49Smrg	  esac
56714b0ead49Smrg	  $echo > $output "\
56724b0ead49Smrg# $outputname - a libtool library file
56734b0ead49Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
56744b0ead49Smrg#
56754b0ead49Smrg# Please DO NOT delete this file!
56764b0ead49Smrg# It is necessary for linking the library.
56774b0ead49Smrg
56784b0ead49Smrg# The name that we can dlopen(3).
56794b0ead49Smrgdlname='$tdlname'
56804b0ead49Smrg
56814b0ead49Smrg# Names of this library.
56824b0ead49Smrglibrary_names='$library_names'
56834b0ead49Smrg
56844b0ead49Smrg# The name of the static archive.
56854b0ead49Smrgold_library='$old_library'
56864b0ead49Smrg
56874b0ead49Smrg# Libraries that this one depends upon.
56884b0ead49Smrgdependency_libs='$dependency_libs'
56894b0ead49Smrg
56904b0ead49Smrg# Version information for $libname.
56914b0ead49Smrgcurrent=$current
56924b0ead49Smrgage=$age
56934b0ead49Smrgrevision=$revision
56944b0ead49Smrg
56954b0ead49Smrg# Is this an already installed library?
56964b0ead49Smrginstalled=$installed
56974b0ead49Smrg
56984b0ead49Smrg# Should we warn about portability when linking against -modules?
56994b0ead49Smrgshouldnotlink=$module
57004b0ead49Smrg
57014b0ead49Smrg# Files to dlopen/dlpreopen
57024b0ead49Smrgdlopen='$dlfiles'
57034b0ead49Smrgdlpreopen='$dlprefiles'
57044b0ead49Smrg
57054b0ead49Smrg# Directory that this library needs to be installed in:
57064b0ead49Smrglibdir='$install_libdir'"
57074b0ead49Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
57084b0ead49Smrg	    $echo >> $output "\
57094b0ead49Smrgrelink_command=\"$relink_command\""
57104b0ead49Smrg	  fi
57114b0ead49Smrg	done
57124b0ead49Smrg      fi
57134b0ead49Smrg
57144b0ead49Smrg      # Do a symbolic link so that the libtool archive can be found in
57154b0ead49Smrg      # LD_LIBRARY_PATH before the program is installed.
57164b0ead49Smrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
57174b0ead49Smrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
57184b0ead49Smrg      ;;
57194b0ead49Smrg    esac
57204b0ead49Smrg    exit $EXIT_SUCCESS
57214b0ead49Smrg    ;;
57224b0ead49Smrg
57234b0ead49Smrg  # libtool install mode
57244b0ead49Smrg  install)
57254b0ead49Smrg    modename="$modename: install"
57264b0ead49Smrg
57274b0ead49Smrg    # There may be an optional sh(1) argument at the beginning of
57284b0ead49Smrg    # install_prog (especially on Windows NT).
57294b0ead49Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
57304b0ead49Smrg       # Allow the use of GNU shtool's install command.
57314b0ead49Smrg       $echo "X$nonopt" | grep shtool > /dev/null; then
57324b0ead49Smrg      # Aesthetically quote it.
57334b0ead49Smrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
57344b0ead49Smrg      case $arg in
57354b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
57364b0ead49Smrg	arg="\"$arg\""
57374b0ead49Smrg	;;
57384b0ead49Smrg      esac
57394b0ead49Smrg      install_prog="$arg "
57404b0ead49Smrg      arg="$1"
57414b0ead49Smrg      shift
57424b0ead49Smrg    else
57434b0ead49Smrg      install_prog=
57444b0ead49Smrg      arg=$nonopt
57454b0ead49Smrg    fi
57464b0ead49Smrg
57474b0ead49Smrg    # The real first argument should be the name of the installation program.
57484b0ead49Smrg    # Aesthetically quote it.
57494b0ead49Smrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
57504b0ead49Smrg    case $arg in
57514b0ead49Smrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
57524b0ead49Smrg      arg="\"$arg\""
57534b0ead49Smrg      ;;
57544b0ead49Smrg    esac
57554b0ead49Smrg    install_prog="$install_prog$arg"
57564b0ead49Smrg
57574b0ead49Smrg    # We need to accept at least all the BSD install flags.
57584b0ead49Smrg    dest=
57594b0ead49Smrg    files=
57604b0ead49Smrg    opts=
57614b0ead49Smrg    prev=
57624b0ead49Smrg    install_type=
57634b0ead49Smrg    isdir=no
57644b0ead49Smrg    stripme=
57654b0ead49Smrg    for arg
57664b0ead49Smrg    do
57674b0ead49Smrg      if test -n "$dest"; then
57684b0ead49Smrg	files="$files $dest"
57694b0ead49Smrg	dest=$arg
57704b0ead49Smrg	continue
57714b0ead49Smrg      fi
57724b0ead49Smrg
57734b0ead49Smrg      case $arg in
57744b0ead49Smrg      -d) isdir=yes ;;
57754b0ead49Smrg      -f) 
57764b0ead49Smrg      	case " $install_prog " in
57774b0ead49Smrg	*[\\\ /]cp\ *) ;;
57784b0ead49Smrg	*) prev=$arg ;;
57794b0ead49Smrg	esac
57804b0ead49Smrg	;;
57814b0ead49Smrg      -g | -m | -o) prev=$arg ;;
57824b0ead49Smrg      -s)
57834b0ead49Smrg	stripme=" -s"
57844b0ead49Smrg	continue
57854b0ead49Smrg	;;
57864b0ead49Smrg      -*)
57874b0ead49Smrg	;;
57884b0ead49Smrg      *)
57894b0ead49Smrg	# If the previous option needed an argument, then skip it.
57904b0ead49Smrg	if test -n "$prev"; then
57914b0ead49Smrg	  prev=
57924b0ead49Smrg	else
57934b0ead49Smrg	  dest=$arg
57944b0ead49Smrg	  continue
57954b0ead49Smrg	fi
57964b0ead49Smrg	;;
57974b0ead49Smrg      esac
57984b0ead49Smrg
57994b0ead49Smrg      # Aesthetically quote the argument.
58004b0ead49Smrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
58014b0ead49Smrg      case $arg in
58024b0ead49Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
58034b0ead49Smrg	arg="\"$arg\""
58044b0ead49Smrg	;;
58054b0ead49Smrg      esac
58064b0ead49Smrg      install_prog="$install_prog $arg"
58074b0ead49Smrg    done
58084b0ead49Smrg
58094b0ead49Smrg    if test -z "$install_prog"; then
58104b0ead49Smrg      $echo "$modename: you must specify an install program" 1>&2
58114b0ead49Smrg      $echo "$help" 1>&2
58124b0ead49Smrg      exit $EXIT_FAILURE
58134b0ead49Smrg    fi
58144b0ead49Smrg
58154b0ead49Smrg    if test -n "$prev"; then
58164b0ead49Smrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
58174b0ead49Smrg      $echo "$help" 1>&2
58184b0ead49Smrg      exit $EXIT_FAILURE
58194b0ead49Smrg    fi
58204b0ead49Smrg
58214b0ead49Smrg    if test -z "$files"; then
58224b0ead49Smrg      if test -z "$dest"; then
58234b0ead49Smrg	$echo "$modename: no file or destination specified" 1>&2
58244b0ead49Smrg      else
58254b0ead49Smrg	$echo "$modename: you must specify a destination" 1>&2
58264b0ead49Smrg      fi
58274b0ead49Smrg      $echo "$help" 1>&2
58284b0ead49Smrg      exit $EXIT_FAILURE
58294b0ead49Smrg    fi
58304b0ead49Smrg
58314b0ead49Smrg    # Strip any trailing slash from the destination.
58324b0ead49Smrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
58334b0ead49Smrg
58344b0ead49Smrg    # Check to see that the destination is a directory.
58354b0ead49Smrg    test -d "$dest" && isdir=yes
58364b0ead49Smrg    if test "$isdir" = yes; then
58374b0ead49Smrg      destdir="$dest"
58384b0ead49Smrg      destname=
58394b0ead49Smrg    else
58404b0ead49Smrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
58414b0ead49Smrg      test "X$destdir" = "X$dest" && destdir=.
58424b0ead49Smrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
58434b0ead49Smrg
58444b0ead49Smrg      # Not a directory, so check to see that there is only one file specified.
58454b0ead49Smrg      set dummy $files
58464b0ead49Smrg      if test "$#" -gt 2; then
58474b0ead49Smrg	$echo "$modename: \`$dest' is not a directory" 1>&2
58484b0ead49Smrg	$echo "$help" 1>&2
58494b0ead49Smrg	exit $EXIT_FAILURE
58504b0ead49Smrg      fi
58514b0ead49Smrg    fi
58524b0ead49Smrg    case $destdir in
58534b0ead49Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
58544b0ead49Smrg    *)
58554b0ead49Smrg      for file in $files; do
58564b0ead49Smrg	case $file in
58574b0ead49Smrg	*.lo) ;;
58584b0ead49Smrg	*)
58594b0ead49Smrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
58604b0ead49Smrg	  $echo "$help" 1>&2
58614b0ead49Smrg	  exit $EXIT_FAILURE
58624b0ead49Smrg	  ;;
58634b0ead49Smrg	esac
58644b0ead49Smrg      done
58654b0ead49Smrg      ;;
58664b0ead49Smrg    esac
58674b0ead49Smrg
58684b0ead49Smrg    # This variable tells wrapper scripts just to set variables rather
58694b0ead49Smrg    # than running their programs.
58704b0ead49Smrg    libtool_install_magic="$magic"
58714b0ead49Smrg
58724b0ead49Smrg    staticlibs=
58734b0ead49Smrg    future_libdirs=
58744b0ead49Smrg    current_libdirs=
58754b0ead49Smrg    for file in $files; do
58764b0ead49Smrg
58774b0ead49Smrg      # Do each installation.
58784b0ead49Smrg      case $file in
58794b0ead49Smrg      *.$libext)
58804b0ead49Smrg	# Do the static libraries later.
58814b0ead49Smrg	staticlibs="$staticlibs $file"
58824b0ead49Smrg	;;
58834b0ead49Smrg
58844b0ead49Smrg      *.la)
58854b0ead49Smrg	# Check to see that this really is a libtool archive.
58864b0ead49Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
58874b0ead49Smrg	else
58884b0ead49Smrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
58894b0ead49Smrg	  $echo "$help" 1>&2
58904b0ead49Smrg	  exit $EXIT_FAILURE
58914b0ead49Smrg	fi
58924b0ead49Smrg
58934b0ead49Smrg	library_names=
58944b0ead49Smrg	old_library=
58954b0ead49Smrg	relink_command=
58964b0ead49Smrg	# If there is no directory component, then add one.
58974b0ead49Smrg	case $file in
58984b0ead49Smrg	*/* | *\\*) . $file ;;
58994b0ead49Smrg	*) . ./$file ;;
59004b0ead49Smrg	esac
59014b0ead49Smrg
59024b0ead49Smrg	# Add the libdir to current_libdirs if it is the destination.
59034b0ead49Smrg	if test "X$destdir" = "X$libdir"; then
59044b0ead49Smrg	  case "$current_libdirs " in
59054b0ead49Smrg	  *" $libdir "*) ;;
59064b0ead49Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
59074b0ead49Smrg	  esac
59084b0ead49Smrg	else
59094b0ead49Smrg	  # Note the libdir as a future libdir.
59104b0ead49Smrg	  case "$future_libdirs " in
59114b0ead49Smrg	  *" $libdir "*) ;;
59124b0ead49Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
59134b0ead49Smrg	  esac
59144b0ead49Smrg	fi
59154b0ead49Smrg
59164b0ead49Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
59174b0ead49Smrg	test "X$dir" = "X$file/" && dir=
59184b0ead49Smrg	dir="$dir$objdir"
59194b0ead49Smrg
59204b0ead49Smrg	if test -n "$relink_command"; then
59214b0ead49Smrg	  # Determine the prefix the user has applied to our future dir.
59224b0ead49Smrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
59234b0ead49Smrg
59244b0ead49Smrg	  # Don't allow the user to place us outside of our expected
59254b0ead49Smrg	  # location b/c this prevents finding dependent libraries that
59264b0ead49Smrg	  # are installed to the same prefix.
59274b0ead49Smrg	  # At present, this check doesn't affect windows .dll's that
59284b0ead49Smrg	  # are installed into $libdir/../bin (currently, that works fine)
59294b0ead49Smrg	  # but it's something to keep an eye on.
59304b0ead49Smrg	  if test "$inst_prefix_dir" = "$destdir"; then
59314b0ead49Smrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
59324b0ead49Smrg	    exit $EXIT_FAILURE
59334b0ead49Smrg	  fi
59344b0ead49Smrg
59354b0ead49Smrg	  if test -n "$inst_prefix_dir"; then
59364b0ead49Smrg	    # Stick the inst_prefix_dir data into the link command.
59374b0ead49Smrg	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
59384b0ead49Smrg	  else
59394b0ead49Smrg	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
59404b0ead49Smrg	  fi
59414b0ead49Smrg
59424b0ead49Smrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
59434b0ead49Smrg	  $show "$relink_command"
59444b0ead49Smrg	  if $run eval "$relink_command"; then :
59454b0ead49Smrg	  else
59464b0ead49Smrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
59474b0ead49Smrg	    exit $EXIT_FAILURE
59484b0ead49Smrg	  fi
59494b0ead49Smrg	fi
59504b0ead49Smrg
59514b0ead49Smrg	# See the names of the shared library.
59524b0ead49Smrg	set dummy $library_names
59534b0ead49Smrg	if test -n "$2"; then
59544b0ead49Smrg	  realname="$2"
59554b0ead49Smrg	  shift
59564b0ead49Smrg	  shift
59574b0ead49Smrg
59584b0ead49Smrg	  srcname="$realname"
59594b0ead49Smrg	  test -n "$relink_command" && srcname="$realname"T
59604b0ead49Smrg
59614b0ead49Smrg	  # Install the shared library and build the symlinks.
59624b0ead49Smrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
59634b0ead49Smrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
59644b0ead49Smrg	  if test -n "$stripme" && test -n "$striplib"; then
59654b0ead49Smrg	    $show "$striplib $destdir/$realname"
59664b0ead49Smrg	    $run eval "$striplib $destdir/$realname" || exit $?
59674b0ead49Smrg	  fi
59684b0ead49Smrg
59694b0ead49Smrg	  if test "$#" -gt 0; then
59704b0ead49Smrg	    # Delete the old symlinks, and create new ones.
59714b0ead49Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
59724b0ead49Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
59734b0ead49Smrg	    # so we also need to try rm && ln -s.
59744b0ead49Smrg	    for linkname
59754b0ead49Smrg	    do
59764b0ead49Smrg	      if test "$linkname" != "$realname"; then
59774b0ead49Smrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
59784b0ead49Smrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
59794b0ead49Smrg	      fi
59804b0ead49Smrg	    done
59814b0ead49Smrg	  fi
59824b0ead49Smrg
59834b0ead49Smrg	  # Do each command in the postinstall commands.
59844b0ead49Smrg	  lib="$destdir/$realname"
59854b0ead49Smrg	  cmds=$postinstall_cmds
59864b0ead49Smrg	  save_ifs="$IFS"; IFS='~'
59874b0ead49Smrg	  for cmd in $cmds; do
59884b0ead49Smrg	    IFS="$save_ifs"
59894b0ead49Smrg	    eval cmd=\"$cmd\"
59904b0ead49Smrg	    $show "$cmd"
59914b0ead49Smrg	    $run eval "$cmd" || {
59924b0ead49Smrg	      lt_exit=$?
59934b0ead49Smrg
59944b0ead49Smrg	      # Restore the uninstalled library and exit
59954b0ead49Smrg	      if test "$mode" = relink; then
59964b0ead49Smrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
59974b0ead49Smrg	      fi
59984b0ead49Smrg
59994b0ead49Smrg	      exit $lt_exit
60004b0ead49Smrg	    }
60014b0ead49Smrg	  done
60024b0ead49Smrg	  IFS="$save_ifs"
60034b0ead49Smrg	fi
60044b0ead49Smrg
60054b0ead49Smrg	# Install the pseudo-library for information purposes.
60064b0ead49Smrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
60074b0ead49Smrg	instname="$dir/$name"i
60084b0ead49Smrg	$show "$install_prog $instname $destdir/$name"
60094b0ead49Smrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
60104b0ead49Smrg
60114b0ead49Smrg	# Maybe install the static library, too.
60124b0ead49Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
60134b0ead49Smrg	;;
60144b0ead49Smrg
60154b0ead49Smrg      *.lo)
60164b0ead49Smrg	# Install (i.e. copy) a libtool object.
60174b0ead49Smrg
60184b0ead49Smrg	# Figure out destination file name, if it wasn't already specified.
60194b0ead49Smrg	if test -n "$destname"; then
60204b0ead49Smrg	  destfile="$destdir/$destname"
60214b0ead49Smrg	else
60224b0ead49Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
60234b0ead49Smrg	  destfile="$destdir/$destfile"
60244b0ead49Smrg	fi
60254b0ead49Smrg
60264b0ead49Smrg	# Deduce the name of the destination old-style object file.
60274b0ead49Smrg	case $destfile in
60284b0ead49Smrg	*.lo)
60294b0ead49Smrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
60304b0ead49Smrg	  ;;
60314b0ead49Smrg	*.$objext)
60324b0ead49Smrg	  staticdest="$destfile"
60334b0ead49Smrg	  destfile=
60344b0ead49Smrg	  ;;
60354b0ead49Smrg	*)
60364b0ead49Smrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
60374b0ead49Smrg	  $echo "$help" 1>&2
60384b0ead49Smrg	  exit $EXIT_FAILURE
60394b0ead49Smrg	  ;;
60404b0ead49Smrg	esac
60414b0ead49Smrg
60424b0ead49Smrg	# Install the libtool object if requested.
60434b0ead49Smrg	if test -n "$destfile"; then
60444b0ead49Smrg	  $show "$install_prog $file $destfile"
60454b0ead49Smrg	  $run eval "$install_prog $file $destfile" || exit $?
60464b0ead49Smrg	fi
60474b0ead49Smrg
60484b0ead49Smrg	# Install the old object if enabled.
60494b0ead49Smrg	if test "$build_old_libs" = yes; then
60504b0ead49Smrg	  # Deduce the name of the old-style object file.
60514b0ead49Smrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
60524b0ead49Smrg
60534b0ead49Smrg	  $show "$install_prog $staticobj $staticdest"
60544b0ead49Smrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
60554b0ead49Smrg	fi
60564b0ead49Smrg	exit $EXIT_SUCCESS
60574b0ead49Smrg	;;
60584b0ead49Smrg
60594b0ead49Smrg      *)
60604b0ead49Smrg	# Figure out destination file name, if it wasn't already specified.
60614b0ead49Smrg	if test -n "$destname"; then
60624b0ead49Smrg	  destfile="$destdir/$destname"
60634b0ead49Smrg	else
60644b0ead49Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
60654b0ead49Smrg	  destfile="$destdir/$destfile"
60664b0ead49Smrg	fi
60674b0ead49Smrg
60684b0ead49Smrg	# If the file is missing, and there is a .exe on the end, strip it
60694b0ead49Smrg	# because it is most likely a libtool script we actually want to
60704b0ead49Smrg	# install
60714b0ead49Smrg	stripped_ext=""
60724b0ead49Smrg	case $file in
60734b0ead49Smrg	  *.exe)
60744b0ead49Smrg	    if test ! -f "$file"; then
60754b0ead49Smrg	      file=`$echo $file|${SED} 's,.exe$,,'`
60764b0ead49Smrg	      stripped_ext=".exe"
60774b0ead49Smrg	    fi
60784b0ead49Smrg	    ;;
60794b0ead49Smrg	esac
60804b0ead49Smrg
60814b0ead49Smrg	# Do a test to see if this is really a libtool program.
60824b0ead49Smrg	case $host in
60834b0ead49Smrg	*cygwin*|*mingw*)
60844b0ead49Smrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
60854b0ead49Smrg	    ;;
60864b0ead49Smrg	*)
60874b0ead49Smrg	    wrapper=$file
60884b0ead49Smrg	    ;;
60894b0ead49Smrg	esac
60904b0ead49Smrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
60914b0ead49Smrg	  notinst_deplibs=
60924b0ead49Smrg	  relink_command=
60934b0ead49Smrg
60944b0ead49Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
60954b0ead49Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
60964b0ead49Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
60974b0ead49Smrg	  # `FILE.' does not work on cygwin managed mounts.
60984b0ead49Smrg	  #
60994b0ead49Smrg	  # If there is no directory component, then add one.
61004b0ead49Smrg	  case $wrapper in
61014b0ead49Smrg	  */* | *\\*) . ${wrapper} ;;
61024b0ead49Smrg	  *) . ./${wrapper} ;;
61034b0ead49Smrg	  esac
61044b0ead49Smrg
61054b0ead49Smrg	  # Check the variables that should have been set.
61064b0ead49Smrg	  if test -z "$notinst_deplibs"; then
61074b0ead49Smrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
61084b0ead49Smrg	    exit $EXIT_FAILURE
61094b0ead49Smrg	  fi
61104b0ead49Smrg
61114b0ead49Smrg	  finalize=yes
61124b0ead49Smrg	  for lib in $notinst_deplibs; do
61134b0ead49Smrg	    # Check to see that each library is installed.
61144b0ead49Smrg	    libdir=
61154b0ead49Smrg	    if test -f "$lib"; then
61164b0ead49Smrg	      # If there is no directory component, then add one.
61174b0ead49Smrg	      case $lib in
61184b0ead49Smrg	      */* | *\\*) . $lib ;;
61194b0ead49Smrg	      *) . ./$lib ;;
61204b0ead49Smrg	      esac
61214b0ead49Smrg	    fi
61224b0ead49Smrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
61234b0ead49Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
61244b0ead49Smrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
61254b0ead49Smrg	      finalize=no
61264b0ead49Smrg	    fi
61274b0ead49Smrg	  done
61284b0ead49Smrg
61294b0ead49Smrg	  relink_command=
61304b0ead49Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
61314b0ead49Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
61324b0ead49Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
61334b0ead49Smrg	  # `FILE.' does not work on cygwin managed mounts.
61344b0ead49Smrg	  #
61354b0ead49Smrg	  # If there is no directory component, then add one.
61364b0ead49Smrg	  case $wrapper in
61374b0ead49Smrg	  */* | *\\*) . ${wrapper} ;;
61384b0ead49Smrg	  *) . ./${wrapper} ;;
61394b0ead49Smrg	  esac
61404b0ead49Smrg
61414b0ead49Smrg	  outputname=
61424b0ead49Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
61434b0ead49Smrg	    if test "$finalize" = yes && test -z "$run"; then
61444b0ead49Smrg	      tmpdir=`func_mktempdir`
61454b0ead49Smrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
61464b0ead49Smrg	      outputname="$tmpdir/$file"
61474b0ead49Smrg	      # Replace the output file specification.
61484b0ead49Smrg	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
61494b0ead49Smrg
61504b0ead49Smrg	      $show "$relink_command"
61514b0ead49Smrg	      if $run eval "$relink_command"; then :
61524b0ead49Smrg	      else
61534b0ead49Smrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
61544b0ead49Smrg		${rm}r "$tmpdir"
61554b0ead49Smrg		continue
61564b0ead49Smrg	      fi
61574b0ead49Smrg	      file="$outputname"
61584b0ead49Smrg	    else
61594b0ead49Smrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
61604b0ead49Smrg	    fi
61614b0ead49Smrg	  else
61624b0ead49Smrg	    # Install the binary that we compiled earlier.
61634b0ead49Smrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
61644b0ead49Smrg	  fi
61654b0ead49Smrg	fi
61664b0ead49Smrg
61674b0ead49Smrg	# remove .exe since cygwin /usr/bin/install will append another
61684b0ead49Smrg	# one anyway 
61694b0ead49Smrg	case $install_prog,$host in
61704b0ead49Smrg	*/usr/bin/install*,*cygwin*)
61714b0ead49Smrg	  case $file:$destfile in
61724b0ead49Smrg	  *.exe:*.exe)
61734b0ead49Smrg	    # this is ok
61744b0ead49Smrg	    ;;
61754b0ead49Smrg	  *.exe:*)
61764b0ead49Smrg	    destfile=$destfile.exe
61774b0ead49Smrg	    ;;
61784b0ead49Smrg	  *:*.exe)
61794b0ead49Smrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
61804b0ead49Smrg	    ;;
61814b0ead49Smrg	  esac
61824b0ead49Smrg	  ;;
61834b0ead49Smrg	esac
61844b0ead49Smrg	$show "$install_prog$stripme $file $destfile"
61854b0ead49Smrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
61864b0ead49Smrg	test -n "$outputname" && ${rm}r "$tmpdir"
61874b0ead49Smrg	;;
61884b0ead49Smrg      esac
61894b0ead49Smrg    done
61904b0ead49Smrg
61914b0ead49Smrg    for file in $staticlibs; do
61924b0ead49Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
61934b0ead49Smrg
61944b0ead49Smrg      # Set up the ranlib parameters.
61954b0ead49Smrg      oldlib="$destdir/$name"
61964b0ead49Smrg
61974b0ead49Smrg      $show "$install_prog $file $oldlib"
61984b0ead49Smrg      $run eval "$install_prog \$file \$oldlib" || exit $?
61994b0ead49Smrg
62004b0ead49Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
62014b0ead49Smrg	$show "$old_striplib $oldlib"
62024b0ead49Smrg	$run eval "$old_striplib $oldlib" || exit $?
62034b0ead49Smrg      fi
62044b0ead49Smrg
62054b0ead49Smrg      # Do each command in the postinstall commands.
62064b0ead49Smrg      cmds=$old_postinstall_cmds
62074b0ead49Smrg      save_ifs="$IFS"; IFS='~'
62084b0ead49Smrg      for cmd in $cmds; do
62094b0ead49Smrg	IFS="$save_ifs"
62104b0ead49Smrg	eval cmd=\"$cmd\"
62114b0ead49Smrg	$show "$cmd"
62124b0ead49Smrg	$run eval "$cmd" || exit $?
62134b0ead49Smrg      done
62144b0ead49Smrg      IFS="$save_ifs"
62154b0ead49Smrg    done
62164b0ead49Smrg
62174b0ead49Smrg    if test -n "$future_libdirs"; then
62184b0ead49Smrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
62194b0ead49Smrg    fi
62204b0ead49Smrg
62214b0ead49Smrg    if test -n "$current_libdirs"; then
62224b0ead49Smrg      # Maybe just do a dry run.
62234b0ead49Smrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
62244b0ead49Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
62254b0ead49Smrg    else
62264b0ead49Smrg      exit $EXIT_SUCCESS
62274b0ead49Smrg    fi
62284b0ead49Smrg    ;;
62294b0ead49Smrg
62304b0ead49Smrg  # libtool finish mode
62314b0ead49Smrg  finish)
62324b0ead49Smrg    modename="$modename: finish"
62334b0ead49Smrg    libdirs="$nonopt"
62344b0ead49Smrg    admincmds=
62354b0ead49Smrg
62364b0ead49Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
62374b0ead49Smrg      for dir
62384b0ead49Smrg      do
62394b0ead49Smrg	libdirs="$libdirs $dir"
62404b0ead49Smrg      done
62414b0ead49Smrg
62424b0ead49Smrg      for libdir in $libdirs; do
62434b0ead49Smrg	if test -n "$finish_cmds"; then
62444b0ead49Smrg	  # Do each command in the finish commands.
62454b0ead49Smrg	  cmds=$finish_cmds
62464b0ead49Smrg	  save_ifs="$IFS"; IFS='~'
62474b0ead49Smrg	  for cmd in $cmds; do
62484b0ead49Smrg	    IFS="$save_ifs"
62494b0ead49Smrg	    eval cmd=\"$cmd\"
62504b0ead49Smrg	    $show "$cmd"
62514b0ead49Smrg	    $run eval "$cmd" || admincmds="$admincmds
62524b0ead49Smrg       $cmd"
62534b0ead49Smrg	  done
62544b0ead49Smrg	  IFS="$save_ifs"
62554b0ead49Smrg	fi
62564b0ead49Smrg	if test -n "$finish_eval"; then
62574b0ead49Smrg	  # Do the single finish_eval.
62584b0ead49Smrg	  eval cmds=\"$finish_eval\"
62594b0ead49Smrg	  $run eval "$cmds" || admincmds="$admincmds
62604b0ead49Smrg       $cmds"
62614b0ead49Smrg	fi
62624b0ead49Smrg      done
62634b0ead49Smrg    fi
62644b0ead49Smrg
62654b0ead49Smrg    # Exit here if they wanted silent mode.
62664b0ead49Smrg    test "$show" = : && exit $EXIT_SUCCESS
62674b0ead49Smrg
62684b0ead49Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
62694b0ead49Smrg    $echo "Libraries have been installed in:"
62704b0ead49Smrg    for libdir in $libdirs; do
62714b0ead49Smrg      $echo "   $libdir"
62724b0ead49Smrg    done
62734b0ead49Smrg    $echo
62744b0ead49Smrg    $echo "If you ever happen to want to link against installed libraries"
62754b0ead49Smrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
62764b0ead49Smrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
62774b0ead49Smrg    $echo "flag during linking and do at least one of the following:"
62784b0ead49Smrg    if test -n "$shlibpath_var"; then
62794b0ead49Smrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
62804b0ead49Smrg      $echo "     during execution"
62814b0ead49Smrg    fi
62824b0ead49Smrg    if test -n "$runpath_var"; then
62834b0ead49Smrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
62844b0ead49Smrg      $echo "     during linking"
62854b0ead49Smrg    fi
62864b0ead49Smrg    if test -n "$hardcode_libdir_flag_spec"; then
62874b0ead49Smrg      libdir=LIBDIR
62884b0ead49Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
62894b0ead49Smrg
62904b0ead49Smrg      $echo "   - use the \`$flag' linker flag"
62914b0ead49Smrg    fi
62924b0ead49Smrg    if test -n "$admincmds"; then
62934b0ead49Smrg      $echo "   - have your system administrator run these commands:$admincmds"
62944b0ead49Smrg    fi
62954b0ead49Smrg    if test -f /etc/ld.so.conf; then
62964b0ead49Smrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
62974b0ead49Smrg    fi
62984b0ead49Smrg    $echo
62994b0ead49Smrg    $echo "See any operating system documentation about shared libraries for"
63004b0ead49Smrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
63014b0ead49Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
63024b0ead49Smrg    exit $EXIT_SUCCESS
63034b0ead49Smrg    ;;
63044b0ead49Smrg
63054b0ead49Smrg  # libtool execute mode
63064b0ead49Smrg  execute)
63074b0ead49Smrg    modename="$modename: execute"
63084b0ead49Smrg
63094b0ead49Smrg    # The first argument is the command name.
63104b0ead49Smrg    cmd="$nonopt"
63114b0ead49Smrg    if test -z "$cmd"; then
63124b0ead49Smrg      $echo "$modename: you must specify a COMMAND" 1>&2
63134b0ead49Smrg      $echo "$help"
63144b0ead49Smrg      exit $EXIT_FAILURE
63154b0ead49Smrg    fi
63164b0ead49Smrg
63174b0ead49Smrg    # Handle -dlopen flags immediately.
63184b0ead49Smrg    for file in $execute_dlfiles; do
63194b0ead49Smrg      if test ! -f "$file"; then
63204b0ead49Smrg	$echo "$modename: \`$file' is not a file" 1>&2
63214b0ead49Smrg	$echo "$help" 1>&2
63224b0ead49Smrg	exit $EXIT_FAILURE
63234b0ead49Smrg      fi
63244b0ead49Smrg
63254b0ead49Smrg      dir=
63264b0ead49Smrg      case $file in
63274b0ead49Smrg      *.la)
63284b0ead49Smrg	# Check to see that this really is a libtool archive.
63294b0ead49Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
63304b0ead49Smrg	else
63314b0ead49Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
63324b0ead49Smrg	  $echo "$help" 1>&2
63334b0ead49Smrg	  exit $EXIT_FAILURE
63344b0ead49Smrg	fi
63354b0ead49Smrg
63364b0ead49Smrg	# Read the libtool library.
63374b0ead49Smrg	dlname=
63384b0ead49Smrg	library_names=
63394b0ead49Smrg
63404b0ead49Smrg	# If there is no directory component, then add one.
63414b0ead49Smrg	case $file in
63424b0ead49Smrg	*/* | *\\*) . $file ;;
63434b0ead49Smrg	*) . ./$file ;;
63444b0ead49Smrg	esac
63454b0ead49Smrg
63464b0ead49Smrg	# Skip this library if it cannot be dlopened.
63474b0ead49Smrg	if test -z "$dlname"; then
63484b0ead49Smrg	  # Warn if it was a shared library.
63494b0ead49Smrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
63504b0ead49Smrg	  continue
63514b0ead49Smrg	fi
63524b0ead49Smrg
63534b0ead49Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
63544b0ead49Smrg	test "X$dir" = "X$file" && dir=.
63554b0ead49Smrg
63564b0ead49Smrg	if test -f "$dir/$objdir/$dlname"; then
63574b0ead49Smrg	  dir="$dir/$objdir"
63584b0ead49Smrg	else
63594b0ead49Smrg	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
63604b0ead49Smrg	  exit $EXIT_FAILURE
63614b0ead49Smrg	fi
63624b0ead49Smrg	;;
63634b0ead49Smrg
63644b0ead49Smrg      *.lo)
63654b0ead49Smrg	# Just add the directory containing the .lo file.
63664b0ead49Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
63674b0ead49Smrg	test "X$dir" = "X$file" && dir=.
63684b0ead49Smrg	;;
63694b0ead49Smrg
63704b0ead49Smrg      *)
63714b0ead49Smrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
63724b0ead49Smrg	continue
63734b0ead49Smrg	;;
63744b0ead49Smrg      esac
63754b0ead49Smrg
63764b0ead49Smrg      # Get the absolute pathname.
63774b0ead49Smrg      absdir=`cd "$dir" && pwd`
63784b0ead49Smrg      test -n "$absdir" && dir="$absdir"
63794b0ead49Smrg
63804b0ead49Smrg      # Now add the directory to shlibpath_var.
63814b0ead49Smrg      if eval "test -z \"\$$shlibpath_var\""; then
63824b0ead49Smrg	eval "$shlibpath_var=\"\$dir\""
63834b0ead49Smrg      else
63844b0ead49Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
63854b0ead49Smrg      fi
63864b0ead49Smrg    done
63874b0ead49Smrg
63884b0ead49Smrg    # This variable tells wrapper scripts just to set shlibpath_var
63894b0ead49Smrg    # rather than running their programs.
63904b0ead49Smrg    libtool_execute_magic="$magic"
63914b0ead49Smrg
63924b0ead49Smrg    # Check if any of the arguments is a wrapper script.
63934b0ead49Smrg    args=
63944b0ead49Smrg    for file
63954b0ead49Smrg    do
63964b0ead49Smrg      case $file in
63974b0ead49Smrg      -*) ;;
63984b0ead49Smrg      *)
63994b0ead49Smrg	# Do a test to see if this is really a libtool program.
64004b0ead49Smrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
64014b0ead49Smrg	  # If there is no directory component, then add one.
64024b0ead49Smrg	  case $file in
64034b0ead49Smrg	  */* | *\\*) . $file ;;
64044b0ead49Smrg	  *) . ./$file ;;
64054b0ead49Smrg	  esac
64064b0ead49Smrg
64074b0ead49Smrg	  # Transform arg to wrapped name.
64084b0ead49Smrg	  file="$progdir/$program"
64094b0ead49Smrg	fi
64104b0ead49Smrg	;;
64114b0ead49Smrg      esac
64124b0ead49Smrg      # Quote arguments (to preserve shell metacharacters).
64134b0ead49Smrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
64144b0ead49Smrg      args="$args \"$file\""
64154b0ead49Smrg    done
64164b0ead49Smrg
64174b0ead49Smrg    if test -z "$run"; then
64184b0ead49Smrg      if test -n "$shlibpath_var"; then
64194b0ead49Smrg	# Export the shlibpath_var.
64204b0ead49Smrg	eval "export $shlibpath_var"
64214b0ead49Smrg      fi
64224b0ead49Smrg
64234b0ead49Smrg      # Restore saved environment variables
64244b0ead49Smrg      if test "${save_LC_ALL+set}" = set; then
64254b0ead49Smrg	LC_ALL="$save_LC_ALL"; export LC_ALL
64264b0ead49Smrg      fi
64274b0ead49Smrg      if test "${save_LANG+set}" = set; then
64284b0ead49Smrg	LANG="$save_LANG"; export LANG
64294b0ead49Smrg      fi
64304b0ead49Smrg
64314b0ead49Smrg      # Now prepare to actually exec the command.
64324b0ead49Smrg      exec_cmd="\$cmd$args"
64334b0ead49Smrg    else
64344b0ead49Smrg      # Display what would be done.
64354b0ead49Smrg      if test -n "$shlibpath_var"; then
64364b0ead49Smrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
64374b0ead49Smrg	$echo "export $shlibpath_var"
64384b0ead49Smrg      fi
64394b0ead49Smrg      $echo "$cmd$args"
64404b0ead49Smrg      exit $EXIT_SUCCESS
64414b0ead49Smrg    fi
64424b0ead49Smrg    ;;
64434b0ead49Smrg
64444b0ead49Smrg  # libtool clean and uninstall mode
64454b0ead49Smrg  clean | uninstall)
64464b0ead49Smrg    modename="$modename: $mode"
64474b0ead49Smrg    rm="$nonopt"
64484b0ead49Smrg    files=
64494b0ead49Smrg    rmforce=
64504b0ead49Smrg    exit_status=0
64514b0ead49Smrg
64524b0ead49Smrg    # This variable tells wrapper scripts just to set variables rather
64534b0ead49Smrg    # than running their programs.
64544b0ead49Smrg    libtool_install_magic="$magic"
64554b0ead49Smrg
64564b0ead49Smrg    for arg
64574b0ead49Smrg    do
64584b0ead49Smrg      case $arg in
64594b0ead49Smrg      -f) rm="$rm $arg"; rmforce=yes ;;
64604b0ead49Smrg      -*) rm="$rm $arg" ;;
64614b0ead49Smrg      *) files="$files $arg" ;;
64624b0ead49Smrg      esac
64634b0ead49Smrg    done
64644b0ead49Smrg
64654b0ead49Smrg    if test -z "$rm"; then
64664b0ead49Smrg      $echo "$modename: you must specify an RM program" 1>&2
64674b0ead49Smrg      $echo "$help" 1>&2
64684b0ead49Smrg      exit $EXIT_FAILURE
64694b0ead49Smrg    fi
64704b0ead49Smrg
64714b0ead49Smrg    rmdirs=
64724b0ead49Smrg
64734b0ead49Smrg    origobjdir="$objdir"
64744b0ead49Smrg    for file in $files; do
64754b0ead49Smrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
64764b0ead49Smrg      if test "X$dir" = "X$file"; then
64774b0ead49Smrg	dir=.
64784b0ead49Smrg	objdir="$origobjdir"
64794b0ead49Smrg      else
64804b0ead49Smrg	objdir="$dir/$origobjdir"
64814b0ead49Smrg      fi
64824b0ead49Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
64834b0ead49Smrg      test "$mode" = uninstall && objdir="$dir"
64844b0ead49Smrg
64854b0ead49Smrg      # Remember objdir for removal later, being careful to avoid duplicates
64864b0ead49Smrg      if test "$mode" = clean; then
64874b0ead49Smrg	case " $rmdirs " in
64884b0ead49Smrg	  *" $objdir "*) ;;
64894b0ead49Smrg	  *) rmdirs="$rmdirs $objdir" ;;
64904b0ead49Smrg	esac
64914b0ead49Smrg      fi
64924b0ead49Smrg
64934b0ead49Smrg      # Don't error if the file doesn't exist and rm -f was used.
64944b0ead49Smrg      if (test -L "$file") >/dev/null 2>&1 \
64954b0ead49Smrg	|| (test -h "$file") >/dev/null 2>&1 \
64964b0ead49Smrg	|| test -f "$file"; then
64974b0ead49Smrg	:
64984b0ead49Smrg      elif test -d "$file"; then
64994b0ead49Smrg	exit_status=1
65004b0ead49Smrg	continue
65014b0ead49Smrg      elif test "$rmforce" = yes; then
65024b0ead49Smrg	continue
65034b0ead49Smrg      fi
65044b0ead49Smrg
65054b0ead49Smrg      rmfiles="$file"
65064b0ead49Smrg
65074b0ead49Smrg      case $name in
65084b0ead49Smrg      *.la)
65094b0ead49Smrg	# Possibly a libtool archive, so verify it.
65104b0ead49Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
65114b0ead49Smrg	  . $dir/$name
65124b0ead49Smrg
65134b0ead49Smrg	  # Delete the libtool libraries and symlinks.
65144b0ead49Smrg	  for n in $library_names; do
65154b0ead49Smrg	    rmfiles="$rmfiles $objdir/$n"
65164b0ead49Smrg	  done
65174b0ead49Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
65184b0ead49Smrg
65194b0ead49Smrg	  case "$mode" in
65204b0ead49Smrg	  clean)
65214b0ead49Smrg	    case "  $library_names " in
65224b0ead49Smrg	    # "  " in the beginning catches empty $dlname
65234b0ead49Smrg	    *" $dlname "*) ;;
65244b0ead49Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
65254b0ead49Smrg	    esac
65264b0ead49Smrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
65274b0ead49Smrg	    ;;
65284b0ead49Smrg	  uninstall)
65294b0ead49Smrg	    if test -n "$library_names"; then
65304b0ead49Smrg	      # Do each command in the postuninstall commands.
65314b0ead49Smrg	      cmds=$postuninstall_cmds
65324b0ead49Smrg	      save_ifs="$IFS"; IFS='~'
65334b0ead49Smrg	      for cmd in $cmds; do
65344b0ead49Smrg		IFS="$save_ifs"
65354b0ead49Smrg		eval cmd=\"$cmd\"
65364b0ead49Smrg		$show "$cmd"
65374b0ead49Smrg		$run eval "$cmd"
65384b0ead49Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
65394b0ead49Smrg		  exit_status=1
65404b0ead49Smrg		fi
65414b0ead49Smrg	      done
65424b0ead49Smrg	      IFS="$save_ifs"
65434b0ead49Smrg	    fi
65444b0ead49Smrg
65454b0ead49Smrg	    if test -n "$old_library"; then
65464b0ead49Smrg	      # Do each command in the old_postuninstall commands.
65474b0ead49Smrg	      cmds=$old_postuninstall_cmds
65484b0ead49Smrg	      save_ifs="$IFS"; IFS='~'
65494b0ead49Smrg	      for cmd in $cmds; do
65504b0ead49Smrg		IFS="$save_ifs"
65514b0ead49Smrg		eval cmd=\"$cmd\"
65524b0ead49Smrg		$show "$cmd"
65534b0ead49Smrg		$run eval "$cmd"
65544b0ead49Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
65554b0ead49Smrg		  exit_status=1
65564b0ead49Smrg		fi
65574b0ead49Smrg	      done
65584b0ead49Smrg	      IFS="$save_ifs"
65594b0ead49Smrg	    fi
65604b0ead49Smrg	    # FIXME: should reinstall the best remaining shared library.
65614b0ead49Smrg	    ;;
65624b0ead49Smrg	  esac
65634b0ead49Smrg	fi
65644b0ead49Smrg	;;
65654b0ead49Smrg
65664b0ead49Smrg      *.lo)
65674b0ead49Smrg	# Possibly a libtool object, so verify it.
65684b0ead49Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
65694b0ead49Smrg
65704b0ead49Smrg	  # Read the .lo file
65714b0ead49Smrg	  . $dir/$name
65724b0ead49Smrg
65734b0ead49Smrg	  # Add PIC object to the list of files to remove.
65744b0ead49Smrg	  if test -n "$pic_object" \
65754b0ead49Smrg	     && test "$pic_object" != none; then
65764b0ead49Smrg	    rmfiles="$rmfiles $dir/$pic_object"
65774b0ead49Smrg	  fi
65784b0ead49Smrg
65794b0ead49Smrg	  # Add non-PIC object to the list of files to remove.
65804b0ead49Smrg	  if test -n "$non_pic_object" \
65814b0ead49Smrg	     && test "$non_pic_object" != none; then
65824b0ead49Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
65834b0ead49Smrg	  fi
65844b0ead49Smrg	fi
65854b0ead49Smrg	;;
65864b0ead49Smrg
65874b0ead49Smrg      *)
65884b0ead49Smrg	if test "$mode" = clean ; then
65894b0ead49Smrg	  noexename=$name
65904b0ead49Smrg	  case $file in
65914b0ead49Smrg	  *.exe)
65924b0ead49Smrg	    file=`$echo $file|${SED} 's,.exe$,,'`
65934b0ead49Smrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
65944b0ead49Smrg	    # $file with .exe has already been added to rmfiles,
65954b0ead49Smrg	    # add $file without .exe
65964b0ead49Smrg	    rmfiles="$rmfiles $file"
65974b0ead49Smrg	    ;;
65984b0ead49Smrg	  esac
65994b0ead49Smrg	  # Do a test to see if this is a libtool program.
66004b0ead49Smrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
66014b0ead49Smrg	    relink_command=
66024b0ead49Smrg	    . $dir/$noexename
66034b0ead49Smrg
66044b0ead49Smrg	    # note $name still contains .exe if it was in $file originally
66054b0ead49Smrg	    # as does the version of $file that was added into $rmfiles
66064b0ead49Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
66074b0ead49Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
66084b0ead49Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
66094b0ead49Smrg	    fi
66104b0ead49Smrg	    if test "X$noexename" != "X$name" ; then
66114b0ead49Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
66124b0ead49Smrg	    fi
66134b0ead49Smrg	  fi
66144b0ead49Smrg	fi
66154b0ead49Smrg	;;
66164b0ead49Smrg      esac
66174b0ead49Smrg      $show "$rm $rmfiles"
66184b0ead49Smrg      $run $rm $rmfiles || exit_status=1
66194b0ead49Smrg    done
66204b0ead49Smrg    objdir="$origobjdir"
66214b0ead49Smrg
66224b0ead49Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
66234b0ead49Smrg    for dir in $rmdirs; do
66244b0ead49Smrg      if test -d "$dir"; then
66254b0ead49Smrg	$show "rmdir $dir"
66264b0ead49Smrg	$run rmdir $dir >/dev/null 2>&1
66274b0ead49Smrg      fi
66284b0ead49Smrg    done
66294b0ead49Smrg
66304b0ead49Smrg    exit $exit_status
66314b0ead49Smrg    ;;
66324b0ead49Smrg
66334b0ead49Smrg  "")
66344b0ead49Smrg    $echo "$modename: you must specify a MODE" 1>&2
66354b0ead49Smrg    $echo "$generic_help" 1>&2
66364b0ead49Smrg    exit $EXIT_FAILURE
66374b0ead49Smrg    ;;
66384b0ead49Smrg  esac
66394b0ead49Smrg
66404b0ead49Smrg  if test -z "$exec_cmd"; then
66414b0ead49Smrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
66424b0ead49Smrg    $echo "$generic_help" 1>&2
66434b0ead49Smrg    exit $EXIT_FAILURE
66444b0ead49Smrg  fi
66454b0ead49Smrgfi # test -z "$show_help"
66464b0ead49Smrg
66474b0ead49Smrgif test -n "$exec_cmd"; then
66484b0ead49Smrg  eval exec $exec_cmd
66494b0ead49Smrg  exit $EXIT_FAILURE
66504b0ead49Smrgfi
66514b0ead49Smrg
66524b0ead49Smrg# We need to display help for each of the modes.
66534b0ead49Smrgcase $mode in
66544b0ead49Smrg"") $echo \
66554b0ead49Smrg"Usage: $modename [OPTION]... [MODE-ARG]...
66564b0ead49Smrg
66574b0ead49SmrgProvide generalized library-building support services.
66584b0ead49Smrg
66594b0ead49Smrg    --config          show all configuration variables
66604b0ead49Smrg    --debug           enable verbose shell tracing
66614b0ead49Smrg-n, --dry-run         display commands without modifying any files
66624b0ead49Smrg    --features        display basic configuration information and exit
66634b0ead49Smrg    --finish          same as \`--mode=finish'
66644b0ead49Smrg    --help            display this help message and exit
66654b0ead49Smrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
66664b0ead49Smrg    --quiet           same as \`--silent'
66674b0ead49Smrg    --silent          don't print informational messages
66684b0ead49Smrg    --tag=TAG         use configuration variables from tag TAG
66694b0ead49Smrg    --version         print version information
66704b0ead49Smrg
66714b0ead49SmrgMODE must be one of the following:
66724b0ead49Smrg
66734b0ead49Smrg      clean           remove files from the build directory
66744b0ead49Smrg      compile         compile a source file into a libtool object
66754b0ead49Smrg      execute         automatically set library path, then run a program
66764b0ead49Smrg      finish          complete the installation of libtool libraries
66774b0ead49Smrg      install         install libraries or executables
66784b0ead49Smrg      link            create a library or an executable
66794b0ead49Smrg      uninstall       remove libraries from an installed directory
66804b0ead49Smrg
66814b0ead49SmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
66824b0ead49Smrga more detailed description of MODE.
66834b0ead49Smrg
66844b0ead49SmrgReport bugs to <bug-libtool@gnu.org>."
66854b0ead49Smrg  exit $EXIT_SUCCESS
66864b0ead49Smrg  ;;
66874b0ead49Smrg
66884b0ead49Smrgclean)
66894b0ead49Smrg  $echo \
66904b0ead49Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
66914b0ead49Smrg
66924b0ead49SmrgRemove files from the build directory.
66934b0ead49Smrg
66944b0ead49SmrgRM is the name of the program to use to delete files associated with each FILE
66954b0ead49Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
66964b0ead49Smrgto RM.
66974b0ead49Smrg
66984b0ead49SmrgIf FILE is a libtool library, object or program, all the files associated
66994b0ead49Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
67004b0ead49Smrg  ;;
67014b0ead49Smrg
67024b0ead49Smrgcompile)
67034b0ead49Smrg  $echo \
67044b0ead49Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
67054b0ead49Smrg
67064b0ead49SmrgCompile a source file into a libtool library object.
67074b0ead49Smrg
67084b0ead49SmrgThis mode accepts the following additional options:
67094b0ead49Smrg
67104b0ead49Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
67114b0ead49Smrg  -prefer-pic       try to building PIC objects only
67124b0ead49Smrg  -prefer-non-pic   try to building non-PIC objects only
67134b0ead49Smrg  -static           always build a \`.o' file suitable for static linking
67144b0ead49Smrg
67154b0ead49SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
67164b0ead49Smrgfrom the given SOURCEFILE.
67174b0ead49Smrg
67184b0ead49SmrgThe output file name is determined by removing the directory component from
67194b0ead49SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
67204b0ead49Smrglibrary object suffix, \`.lo'."
67214b0ead49Smrg  ;;
67224b0ead49Smrg
67234b0ead49Smrgexecute)
67244b0ead49Smrg  $echo \
67254b0ead49Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
67264b0ead49Smrg
67274b0ead49SmrgAutomatically set library path, then run a program.
67284b0ead49Smrg
67294b0ead49SmrgThis mode accepts the following additional options:
67304b0ead49Smrg
67314b0ead49Smrg  -dlopen FILE      add the directory containing FILE to the library path
67324b0ead49Smrg
67334b0ead49SmrgThis mode sets the library path environment variable according to \`-dlopen'
67344b0ead49Smrgflags.
67354b0ead49Smrg
67364b0ead49SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
67374b0ead49Smrginto their corresponding uninstalled binary, and any of their required library
67384b0ead49Smrgdirectories are added to the library path.
67394b0ead49Smrg
67404b0ead49SmrgThen, COMMAND is executed, with ARGS as arguments."
67414b0ead49Smrg  ;;
67424b0ead49Smrg
67434b0ead49Smrgfinish)
67444b0ead49Smrg  $echo \
67454b0ead49Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
67464b0ead49Smrg
67474b0ead49SmrgComplete the installation of libtool libraries.
67484b0ead49Smrg
67494b0ead49SmrgEach LIBDIR is a directory that contains libtool libraries.
67504b0ead49Smrg
67514b0ead49SmrgThe commands that this mode executes may require superuser privileges.  Use
67524b0ead49Smrgthe \`--dry-run' option if you just want to see what would be executed."
67534b0ead49Smrg  ;;
67544b0ead49Smrg
67554b0ead49Smrginstall)
67564b0ead49Smrg  $echo \
67574b0ead49Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
67584b0ead49Smrg
67594b0ead49SmrgInstall executables or libraries.
67604b0ead49Smrg
67614b0ead49SmrgINSTALL-COMMAND is the installation command.  The first component should be
67624b0ead49Smrgeither the \`install' or \`cp' program.
67634b0ead49Smrg
67644b0ead49SmrgThe rest of the components are interpreted as arguments to that command (only
67654b0ead49SmrgBSD-compatible install options are recognized)."
67664b0ead49Smrg  ;;
67674b0ead49Smrg
67684b0ead49Smrglink)
67694b0ead49Smrg  $echo \
67704b0ead49Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
67714b0ead49Smrg
67724b0ead49SmrgLink object files or libraries together to form another library, or to
67734b0ead49Smrgcreate an executable program.
67744b0ead49Smrg
67754b0ead49SmrgLINK-COMMAND is a command using the C compiler that you would use to create
67764b0ead49Smrga program from several object files.
67774b0ead49Smrg
67784b0ead49SmrgThe following components of LINK-COMMAND are treated specially:
67794b0ead49Smrg
67804b0ead49Smrg  -all-static       do not do any dynamic linking at all
67814b0ead49Smrg  -avoid-version    do not add a version suffix if possible
67824b0ead49Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
67834b0ead49Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
67844b0ead49Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
67854b0ead49Smrg  -export-symbols SYMFILE
67864b0ead49Smrg		    try to export only the symbols listed in SYMFILE
67874b0ead49Smrg  -export-symbols-regex REGEX
67884b0ead49Smrg		    try to export only the symbols matching REGEX
67894b0ead49Smrg  -LLIBDIR          search LIBDIR for required installed libraries
67904b0ead49Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
67914b0ead49Smrg  -module           build a library that can dlopened
67924b0ead49Smrg  -no-fast-install  disable the fast-install mode
67934b0ead49Smrg  -no-install       link a not-installable executable
67944b0ead49Smrg  -no-undefined     declare that a library does not refer to external symbols
67954b0ead49Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
67964b0ead49Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
67974b0ead49Smrg  -precious-files-regex REGEX
67984b0ead49Smrg                    don't remove output files matching REGEX
67994b0ead49Smrg  -release RELEASE  specify package release information
68004b0ead49Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
68014b0ead49Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
68024b0ead49Smrg  -static           do not do any dynamic linking of libtool libraries
68034b0ead49Smrg  -version-info CURRENT[:REVISION[:AGE]]
68044b0ead49Smrg		    specify library version info [each variable defaults to 0]
68054b0ead49Smrg
68064b0ead49SmrgAll other options (arguments beginning with \`-') are ignored.
68074b0ead49Smrg
68084b0ead49SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
68094b0ead49Smrgtreated as uninstalled libtool libraries, other files are standard or library
68104b0ead49Smrgobject files.
68114b0ead49Smrg
68124b0ead49SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
68134b0ead49Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
68144b0ead49Smrgrequired, except when creating a convenience library.
68154b0ead49Smrg
68164b0ead49SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
68174b0ead49Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
68184b0ead49Smrg
68194b0ead49SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
68204b0ead49Smrgis created, otherwise an executable program is created."
68214b0ead49Smrg  ;;
68224b0ead49Smrg
68234b0ead49Smrguninstall)
68244b0ead49Smrg  $echo \
68254b0ead49Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
68264b0ead49Smrg
68274b0ead49SmrgRemove libraries from an installation directory.
68284b0ead49Smrg
68294b0ead49SmrgRM is the name of the program to use to delete files associated with each FILE
68304b0ead49Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
68314b0ead49Smrgto RM.
68324b0ead49Smrg
68334b0ead49SmrgIf FILE is a libtool library, all the files associated with it are deleted.
68344b0ead49SmrgOtherwise, only FILE itself is deleted using RM."
68354b0ead49Smrg  ;;
68364b0ead49Smrg
68374b0ead49Smrg*)
68384b0ead49Smrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
68394b0ead49Smrg  $echo "$help" 1>&2
68404b0ead49Smrg  exit $EXIT_FAILURE
68414b0ead49Smrg  ;;
68424b0ead49Smrgesac
68434b0ead49Smrg
68444b0ead49Smrg$echo
68454b0ead49Smrg$echo "Try \`$modename --help' for more information about other modes."
68464b0ead49Smrg
68474b0ead49Smrgexit $?
68484b0ead49Smrg
68494b0ead49Smrg# The TAGs below are defined such that we never get into a situation
68504b0ead49Smrg# in which we disable both kinds of libraries.  Given conflicting
68514b0ead49Smrg# choices, we go for a static library, that is the most portable,
68524b0ead49Smrg# since we can't tell whether shared libraries were disabled because
68534b0ead49Smrg# the user asked for that or because the platform doesn't support
68544b0ead49Smrg# them.  This is particularly important on AIX, because we don't
68554b0ead49Smrg# support having both static and shared libraries enabled at the same
68564b0ead49Smrg# time on that platform, so we default to a shared-only configuration.
68574b0ead49Smrg# If a disable-shared tag is given, we'll fallback to a static-only
68584b0ead49Smrg# configuration.  But we'll never go from static-only to shared-only.
68594b0ead49Smrg
68604b0ead49Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
68614b0ead49Smrgdisable_libs=shared
68624b0ead49Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
68634b0ead49Smrg
68644b0ead49Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
68654b0ead49Smrgdisable_libs=static
68664b0ead49Smrg# ### END LIBTOOL TAG CONFIG: disable-static
68674b0ead49Smrg
68684b0ead49Smrg# Local Variables:
68694b0ead49Smrg# mode:shell-script
68704b0ead49Smrg# sh-indentation:2
68714b0ead49Smrg# End:
6872