ltmain.sh revision 549e21da
1549e21daSmrg# Generated from ltmain.m4sh.
2549e21daSmrg
3549e21daSmrg# libtool (GNU libtool) 2.2.10
4549e21daSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5549e21daSmrg
6549e21daSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
7549e21daSmrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
8549e21daSmrg# This is free software; see the source for copying conditions.  There is NO
9549e21daSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10549e21daSmrg
11549e21daSmrg# GNU Libtool is free software; you can redistribute it and/or modify
12ba6a1819Smrg# it under the terms of the GNU General Public License as published by
13ba6a1819Smrg# the Free Software Foundation; either version 2 of the License, or
14ba6a1819Smrg# (at your option) any later version.
15ba6a1819Smrg#
16549e21daSmrg# As a special exception to the GNU General Public License,
17549e21daSmrg# if you distribute this file as part of a program or library that
18549e21daSmrg# is built using GNU Libtool, you may include this file under the
19549e21daSmrg# same distribution terms that you use for the rest of that program.
20549e21daSmrg#
21549e21daSmrg# GNU Libtool is distributed in the hope that it will be useful, but
22ba6a1819Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
23ba6a1819Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24ba6a1819Smrg# General Public License for more details.
25ba6a1819Smrg#
26ba6a1819Smrg# You should have received a copy of the GNU General Public License
27549e21daSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
28549e21daSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
29549e21daSmrg# or obtained by writing to the Free Software Foundation, Inc.,
30549e21daSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31549e21daSmrg
32549e21daSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
33549e21daSmrg#
34549e21daSmrg# Provide generalized library-building support services.
35ba6a1819Smrg#
36549e21daSmrg#       --config             show all configuration variables
37549e21daSmrg#       --debug              enable verbose shell tracing
38549e21daSmrg#   -n, --dry-run            display commands without modifying any files
39549e21daSmrg#       --features           display basic configuration information and exit
40549e21daSmrg#       --mode=MODE          use operation mode MODE
41549e21daSmrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
42549e21daSmrg#       --quiet, --silent    don't print informational messages
43549e21daSmrg#       --no-quiet, --no-silent
44549e21daSmrg#                            print informational messages (default)
45549e21daSmrg#       --tag=TAG            use configuration variables from tag TAG
46549e21daSmrg#   -v, --verbose            print more informational messages than default
47549e21daSmrg#       --no-verbose         don't print the extra informational messages
48549e21daSmrg#       --version            print version information
49549e21daSmrg#   -h, --help, --help-all   print short, long, or detailed help message
50549e21daSmrg#
51549e21daSmrg# MODE must be one of the following:
52549e21daSmrg#
53549e21daSmrg#         clean              remove files from the build directory
54549e21daSmrg#         compile            compile a source file into a libtool object
55549e21daSmrg#         execute            automatically set library path, then run a program
56549e21daSmrg#         finish             complete the installation of libtool libraries
57549e21daSmrg#         install            install libraries or executables
58549e21daSmrg#         link               create a library or an executable
59549e21daSmrg#         uninstall          remove libraries from an installed directory
60549e21daSmrg#
61549e21daSmrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
62549e21daSmrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63549e21daSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64549e21daSmrg#
65549e21daSmrg# When reporting a bug, please describe a test case to reproduce it and
66549e21daSmrg# include the following information:
67549e21daSmrg#
68549e21daSmrg#         host-triplet:	$host
69549e21daSmrg#         shell:		$SHELL
70549e21daSmrg#         compiler:		$LTCC
71549e21daSmrg#         compiler flags:		$LTCFLAGS
72549e21daSmrg#         linker:		$LD (gnu? $with_gnu_ld)
73549e21daSmrg#         $progname:	(GNU libtool) 2.2.10
74549e21daSmrg#         automake:	$automake_version
75549e21daSmrg#         autoconf:	$autoconf_version
76549e21daSmrg#
77549e21daSmrg# Report bugs to <bug-libtool@gnu.org>.
78549e21daSmrg
79549e21daSmrgPROGRAM=libtool
80549e21daSmrgPACKAGE=libtool
81549e21daSmrgVERSION=2.2.10
82549e21daSmrgTIMESTAMP=""
83549e21daSmrgpackage_revision=1.3175
84549e21daSmrg
85549e21daSmrg# Be Bourne compatible
86549e21daSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
87549e21daSmrg  emulate sh
88549e21daSmrg  NULLCMD=:
89549e21daSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
90549e21daSmrg  # is contrary to our usage.  Disable this feature.
91549e21daSmrg  alias -g '${1+"$@"}'='"$@"'
92549e21daSmrg  setopt NO_GLOB_SUBST
93549e21daSmrgelse
94549e21daSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
95549e21daSmrgfi
96549e21daSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
97549e21daSmrgDUALCASE=1; export DUALCASE # for MKS sh
98549e21daSmrg
99549e21daSmrg# A function that is used when there is no print builtin or printf.
100549e21daSmrgfunc_fallback_echo ()
101549e21daSmrg{
102549e21daSmrg  eval 'cat <<_LTECHO_EOF
103549e21daSmrg$1
104549e21daSmrg_LTECHO_EOF'
105549e21daSmrg}
106549e21daSmrg
107549e21daSmrg# NLS nuisances: We save the old values to restore during execute mode.
108549e21daSmrglt_user_locale=
109549e21daSmrglt_safe_locale=
110549e21daSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
111549e21daSmrgdo
112549e21daSmrg  eval "if test \"\${$lt_var+set}\" = set; then
113549e21daSmrg          save_$lt_var=\$$lt_var
114549e21daSmrg          $lt_var=C
115549e21daSmrg	  export $lt_var
116549e21daSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
117549e21daSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
118549e21daSmrg	fi"
119549e21daSmrgdone
120549e21daSmrgLC_ALL=C
121549e21daSmrgLANGUAGE=C
122549e21daSmrgexport LANGUAGE LC_ALL
123549e21daSmrg
124549e21daSmrg$lt_unset CDPATH
125ba6a1819Smrg
126ba6a1819Smrg
127ba6a1819Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
128ba6a1819Smrg# is ksh but when the shell is invoked as "sh" and the current value of
129ba6a1819Smrg# the _XPG environment variable is not equal to 1 (one), the special
130ba6a1819Smrg# positional parameter $0, within a function call, is the name of the
131ba6a1819Smrg# function.
132ba6a1819Smrgprogpath="$0"
133ba6a1819Smrg
134549e21daSmrg
135549e21daSmrg
136549e21daSmrg: ${CP="cp -f"}
137549e21daSmrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
138549e21daSmrg: ${EGREP="grep -E"}
139549e21daSmrg: ${FGREP="grep -F"}
140549e21daSmrg: ${GREP="grep"}
141549e21daSmrg: ${LN_S="ln -s"}
142549e21daSmrg: ${MAKE="make"}
143549e21daSmrg: ${MKDIR="mkdir"}
144549e21daSmrg: ${MV="mv -f"}
145549e21daSmrg: ${RM="rm -f"}
146549e21daSmrg: ${SED="sed"}
147549e21daSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
148549e21daSmrg: ${Xsed="$SED -e 1s/^X//"}
149ba6a1819Smrg
150ba6a1819Smrg# Global variables:
151ba6a1819SmrgEXIT_SUCCESS=0
152ba6a1819SmrgEXIT_FAILURE=1
153549e21daSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
154549e21daSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
155ba6a1819Smrg
156549e21daSmrgexit_status=$EXIT_SUCCESS
157ba6a1819Smrg
158549e21daSmrg# Make sure IFS has a sensible default
159549e21daSmrglt_nl='
160549e21daSmrg'
161549e21daSmrgIFS=" 	$lt_nl"
162ba6a1819Smrg
163549e21daSmrgdirname="s,/[^/]*$,,"
164549e21daSmrgbasename="s,^.*/,,"
165549e21daSmrg
166549e21daSmrg# func_dirname_and_basename file append nondir_replacement
167549e21daSmrg# perform func_basename and func_dirname in a single function
168549e21daSmrg# call:
169549e21daSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
170549e21daSmrg#             add APPEND to the result, otherwise set result
171549e21daSmrg#             to NONDIR_REPLACEMENT.
172549e21daSmrg#             value returned in "$func_dirname_result"
173549e21daSmrg#   basename: Compute filename of FILE.
174549e21daSmrg#             value retuned in "$func_basename_result"
175549e21daSmrg# Implementation must be kept synchronized with func_dirname
176549e21daSmrg# and func_basename. For efficiency, we do not delegate to
177549e21daSmrg# those functions but instead duplicate the functionality here.
178549e21daSmrgfunc_dirname_and_basename ()
179549e21daSmrg{
180549e21daSmrg  # Extract subdirectory from the argument.
181549e21daSmrg  func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
182549e21daSmrg  if test "X$func_dirname_result" = "X${1}"; then
183549e21daSmrg    func_dirname_result="${3}"
184549e21daSmrg  else
185549e21daSmrg    func_dirname_result="$func_dirname_result${2}"
186549e21daSmrg  fi
187549e21daSmrg  func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
188549e21daSmrg}
189ba6a1819Smrg
190549e21daSmrg# Generated shell functions inserted here.
191549e21daSmrg
192549e21daSmrg# These SED scripts presuppose an absolute path with a trailing slash.
193549e21daSmrgpathcar='s,^/\([^/]*\).*$,\1,'
194549e21daSmrgpathcdr='s,^/[^/]*,,'
195549e21daSmrgremovedotparts=':dotsl
196549e21daSmrg		s@/\./@/@g
197549e21daSmrg		t dotsl
198549e21daSmrg		s,/\.$,/,'
199549e21daSmrgcollapseslashes='s@/\{1,\}@/@g'
200549e21daSmrgfinalslash='s,/*$,/,'
201549e21daSmrg
202549e21daSmrg# func_normal_abspath PATH
203549e21daSmrg# Remove doubled-up and trailing slashes, "." path components,
204549e21daSmrg# and cancel out any ".." path components in PATH after making
205549e21daSmrg# it an absolute path.
206549e21daSmrg#             value returned in "$func_normal_abspath_result"
207549e21daSmrgfunc_normal_abspath ()
208549e21daSmrg{
209549e21daSmrg  # Start from root dir and reassemble the path.
210549e21daSmrg  func_normal_abspath_result=
211549e21daSmrg  func_normal_abspath_tpath=$1
212549e21daSmrg  func_normal_abspath_altnamespace=
213549e21daSmrg  case $func_normal_abspath_tpath in
214549e21daSmrg    "")
215549e21daSmrg      # Empty path, that just means $cwd.
216549e21daSmrg      func_stripname '' '/' "`pwd`"
217549e21daSmrg      func_normal_abspath_result=$func_stripname_result
218549e21daSmrg      return
219549e21daSmrg    ;;
220549e21daSmrg    # The next three entries are used to spot a run of precisely
221549e21daSmrg    # two leading slashes without using negated character classes;
222549e21daSmrg    # we take advantage of case's first-match behaviour.
223549e21daSmrg    ///*)
224549e21daSmrg      # Unusual form of absolute path, do nothing.
225549e21daSmrg    ;;
226549e21daSmrg    //*)
227549e21daSmrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
228549e21daSmrg      # and for example Cygwin uses it to access remote file shares
229549e21daSmrg      # over CIFS/SMB, so we conserve a leading double slash if found.
230549e21daSmrg      func_normal_abspath_altnamespace=/
231549e21daSmrg    ;;
232549e21daSmrg    /*)
233549e21daSmrg      # Absolute path, do nothing.
234549e21daSmrg    ;;
235549e21daSmrg    *)
236549e21daSmrg      # Relative path, prepend $cwd.
237549e21daSmrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
238549e21daSmrg    ;;
239549e21daSmrg  esac
240549e21daSmrg  # Cancel out all the simple stuff to save iterations.  We also want
241549e21daSmrg  # the path to end with a slash for ease of parsing, so make sure
242549e21daSmrg  # there is one (and only one) here.
243549e21daSmrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
244549e21daSmrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
245549e21daSmrg  while :; do
246549e21daSmrg    # Processed it all yet?
247549e21daSmrg    if test "$func_normal_abspath_tpath" = / ; then
248549e21daSmrg      # If we ascended to the root using ".." the result may be empty now.
249549e21daSmrg      if test -z "$func_normal_abspath_result" ; then
250549e21daSmrg        func_normal_abspath_result=/
251549e21daSmrg      fi
252549e21daSmrg      break
253549e21daSmrg    fi
254549e21daSmrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
255549e21daSmrg        -e "$pathcar"`
256549e21daSmrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
257549e21daSmrg        -e "$pathcdr"`
258549e21daSmrg    # Figure out what to do with it
259549e21daSmrg    case $func_normal_abspath_tcomponent in
260549e21daSmrg      "")
261549e21daSmrg        # Trailing empty path component, ignore it.
262549e21daSmrg      ;;
263549e21daSmrg      ..)
264549e21daSmrg        # Parent dir; strip last assembled component from result.
265549e21daSmrg        func_dirname "$func_normal_abspath_result"
266549e21daSmrg        func_normal_abspath_result=$func_dirname_result
267549e21daSmrg      ;;
268549e21daSmrg      *)
269549e21daSmrg        # Actual path component, append it.
270549e21daSmrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
271549e21daSmrg      ;;
272549e21daSmrg    esac
273549e21daSmrg  done
274549e21daSmrg  # Restore leading double-slash if one was found on entry.
275549e21daSmrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
276549e21daSmrg}
277ba6a1819Smrg
278549e21daSmrg# func_relative_path SRCDIR DSTDIR
279549e21daSmrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
280549e21daSmrg# slash if non-empty, suitable for immediately appending a filename
281549e21daSmrg# without needing to append a separator.
282549e21daSmrg#             value returned in "$func_relative_path_result"
283549e21daSmrgfunc_relative_path ()
284549e21daSmrg{
285549e21daSmrg  func_relative_path_result=
286549e21daSmrg  func_normal_abspath "$1"
287549e21daSmrg  func_relative_path_tlibdir=$func_normal_abspath_result
288549e21daSmrg  func_normal_abspath "$2"
289549e21daSmrg  func_relative_path_tbindir=$func_normal_abspath_result
290549e21daSmrg
291549e21daSmrg  # Ascend the tree starting from libdir
292549e21daSmrg  while :; do
293549e21daSmrg    # check if we have found a prefix of bindir
294549e21daSmrg    case $func_relative_path_tbindir in
295549e21daSmrg      $func_relative_path_tlibdir)
296549e21daSmrg        # found an exact match
297549e21daSmrg        func_relative_path_tcancelled=
298549e21daSmrg        break
299549e21daSmrg        ;;
300549e21daSmrg      $func_relative_path_tlibdir*)
301549e21daSmrg        # found a matching prefix
302549e21daSmrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
303549e21daSmrg        func_relative_path_tcancelled=$func_stripname_result
304549e21daSmrg        if test -z "$func_relative_path_result"; then
305549e21daSmrg          func_relative_path_result=.
306549e21daSmrg        fi
307549e21daSmrg        break
308549e21daSmrg        ;;
309549e21daSmrg      *)
310549e21daSmrg        func_dirname $func_relative_path_tlibdir
311549e21daSmrg        func_relative_path_tlibdir=${func_dirname_result}
312549e21daSmrg        if test "x$func_relative_path_tlibdir" = x ; then
313549e21daSmrg          # Have to descend all the way to the root!
314549e21daSmrg          func_relative_path_result=../$func_relative_path_result
315549e21daSmrg          func_relative_path_tcancelled=$func_relative_path_tbindir
316549e21daSmrg          break
317549e21daSmrg        fi
318549e21daSmrg        func_relative_path_result=../$func_relative_path_result
319549e21daSmrg        ;;
320549e21daSmrg    esac
321549e21daSmrg  done
322549e21daSmrg
323549e21daSmrg  # Now calculate path; take care to avoid doubling-up slashes.
324549e21daSmrg  func_stripname '' '/' "$func_relative_path_result"
325549e21daSmrg  func_relative_path_result=$func_stripname_result
326549e21daSmrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
327549e21daSmrg  if test "x$func_stripname_result" != x ; then
328549e21daSmrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
329549e21daSmrg  fi
330549e21daSmrg
331549e21daSmrg  # Normalisation. If bindir is libdir, return empty string,
332549e21daSmrg  # else relative path ending with a slash; either way, target
333549e21daSmrg  # file name can be directly appended.
334549e21daSmrg  if test ! -z "$func_relative_path_result"; then
335549e21daSmrg    func_stripname './' '' "$func_relative_path_result/"
336549e21daSmrg    func_relative_path_result=$func_stripname_result
337549e21daSmrg  fi
338549e21daSmrg}
339549e21daSmrg
340549e21daSmrg# The name of this program:
341549e21daSmrgfunc_dirname_and_basename "$progpath"
342549e21daSmrgprogname=$func_basename_result
343549e21daSmrg
344549e21daSmrg# Make sure we have an absolute path for reexecution:
345549e21daSmrgcase $progpath in
346549e21daSmrg  [\\/]*|[A-Za-z]:\\*) ;;
347549e21daSmrg  *[\\/]*)
348549e21daSmrg     progdir=$func_dirname_result
349549e21daSmrg     progdir=`cd "$progdir" && pwd`
350549e21daSmrg     progpath="$progdir/$progname"
351549e21daSmrg     ;;
352549e21daSmrg  *)
353549e21daSmrg     save_IFS="$IFS"
354549e21daSmrg     IFS=:
355549e21daSmrg     for progdir in $PATH; do
356549e21daSmrg       IFS="$save_IFS"
357549e21daSmrg       test -x "$progdir/$progname" && break
358549e21daSmrg     done
359549e21daSmrg     IFS="$save_IFS"
360549e21daSmrg     test -n "$progdir" || progdir=`pwd`
361549e21daSmrg     progpath="$progdir/$progname"
362549e21daSmrg     ;;
363549e21daSmrgesac
364ba6a1819Smrg
365ba6a1819Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
366ba6a1819Smrg# metacharacters that are still active within double-quoted strings.
367ba6a1819SmrgXsed="${SED}"' -e 1s/^X//'
368549e21daSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
369549e21daSmrg
370549e21daSmrg# Same as above, but do not quote variable references.
371549e21daSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
372549e21daSmrg
373549e21daSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
374549e21daSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
375549e21daSmrg# in input to double_quote_subst, that '$' was protected from expansion.
376549e21daSmrg# Since each input `\' is now two `\'s, look for any number of runs of
377549e21daSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
378549e21daSmrgbs='\\'
379549e21daSmrgbs2='\\\\'
380549e21daSmrgbs4='\\\\\\\\'
381549e21daSmrgdollar='\$'
382549e21daSmrgsed_double_backslash="\
383549e21daSmrg  s/$bs4/&\\
384549e21daSmrg/g
385549e21daSmrg  s/^$bs2$dollar/$bs&/
386549e21daSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
387549e21daSmrg  s/\n//g"
388549e21daSmrg
389549e21daSmrg# Standard options:
390549e21daSmrgopt_dry_run=false
391549e21daSmrgopt_help=false
392549e21daSmrgopt_quiet=false
393549e21daSmrgopt_verbose=false
394549e21daSmrgopt_warning=:
395549e21daSmrg
396549e21daSmrg# func_echo arg...
397549e21daSmrg# Echo program name prefixed message, along with the current mode
398549e21daSmrg# name if it has been set yet.
399549e21daSmrgfunc_echo ()
400549e21daSmrg{
401549e21daSmrg    $ECHO "$progname${mode+: }$mode: $*"
402549e21daSmrg}
403ba6a1819Smrg
404549e21daSmrg# func_verbose arg...
405549e21daSmrg# Echo program name prefixed message in verbose mode only.
406549e21daSmrgfunc_verbose ()
407549e21daSmrg{
408549e21daSmrg    $opt_verbose && func_echo ${1+"$@"}
409ba6a1819Smrg
410549e21daSmrg    # A bug in bash halts the script if the last line of a function
411549e21daSmrg    # fails when set -e is in force, so we need another command to
412549e21daSmrg    # work around that:
413549e21daSmrg    :
414549e21daSmrg}
415ba6a1819Smrg
416549e21daSmrg# func_echo_all arg...
417549e21daSmrg# Invoke $ECHO with all args, space-separated.
418549e21daSmrgfunc_echo_all ()
419549e21daSmrg{
420549e21daSmrg    $ECHO "$*"
421549e21daSmrg}
422ba6a1819Smrg
423549e21daSmrg# func_error arg...
424549e21daSmrg# Echo program name prefixed message to standard error.
425549e21daSmrgfunc_error ()
426549e21daSmrg{
427549e21daSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
428549e21daSmrg}
429549e21daSmrg
430549e21daSmrg# func_warning arg...
431549e21daSmrg# Echo program name prefixed warning message to standard error.
432549e21daSmrgfunc_warning ()
433549e21daSmrg{
434549e21daSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
435549e21daSmrg
436549e21daSmrg    # bash bug again:
437549e21daSmrg    :
438549e21daSmrg}
439549e21daSmrg
440549e21daSmrg# func_fatal_error arg...
441549e21daSmrg# Echo program name prefixed message to standard error, and exit.
442549e21daSmrgfunc_fatal_error ()
443549e21daSmrg{
444549e21daSmrg    func_error ${1+"$@"}
445549e21daSmrg    exit $EXIT_FAILURE
446549e21daSmrg}
447549e21daSmrg
448549e21daSmrg# func_fatal_help arg...
449549e21daSmrg# Echo program name prefixed message to standard error, followed by
450549e21daSmrg# a help hint, and exit.
451549e21daSmrgfunc_fatal_help ()
452549e21daSmrg{
453549e21daSmrg    func_error ${1+"$@"}
454549e21daSmrg    func_fatal_error "$help"
455549e21daSmrg}
456549e21daSmrghelp="Try \`$progname --help' for more information."  ## default
457549e21daSmrg
458549e21daSmrg
459549e21daSmrg# func_grep expression filename
460549e21daSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
461549e21daSmrgfunc_grep ()
462549e21daSmrg{
463549e21daSmrg    $GREP "$1" "$2" >/dev/null 2>&1
464549e21daSmrg}
465549e21daSmrg
466549e21daSmrg
467549e21daSmrg# func_mkdir_p directory-path
468549e21daSmrg# Make sure the entire path to DIRECTORY-PATH is available.
469549e21daSmrgfunc_mkdir_p ()
470549e21daSmrg{
471549e21daSmrg    my_directory_path="$1"
472549e21daSmrg    my_dir_list=
473549e21daSmrg
474549e21daSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
475549e21daSmrg
476549e21daSmrg      # Protect directory names starting with `-'
477549e21daSmrg      case $my_directory_path in
478549e21daSmrg        -*) my_directory_path="./$my_directory_path" ;;
479549e21daSmrg      esac
480549e21daSmrg
481549e21daSmrg      # While some portion of DIR does not yet exist...
482549e21daSmrg      while test ! -d "$my_directory_path"; do
483549e21daSmrg        # ...make a list in topmost first order.  Use a colon delimited
484549e21daSmrg	# list incase some portion of path contains whitespace.
485549e21daSmrg        my_dir_list="$my_directory_path:$my_dir_list"
486549e21daSmrg
487549e21daSmrg        # If the last portion added has no slash in it, the list is done
488549e21daSmrg        case $my_directory_path in */*) ;; *) break ;; esac
489549e21daSmrg
490549e21daSmrg        # ...otherwise throw away the child directory and loop
491549e21daSmrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
492549e21daSmrg      done
493549e21daSmrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
494549e21daSmrg
495549e21daSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
496549e21daSmrg      for my_dir in $my_dir_list; do
497549e21daSmrg	IFS="$save_mkdir_p_IFS"
498549e21daSmrg        # mkdir can fail with a `File exist' error if two processes
499549e21daSmrg        # try to create one of the directories concurrently.  Don't
500549e21daSmrg        # stop in that case!
501549e21daSmrg        $MKDIR "$my_dir" 2>/dev/null || :
502549e21daSmrg      done
503549e21daSmrg      IFS="$save_mkdir_p_IFS"
504549e21daSmrg
505549e21daSmrg      # Bail out if we (or some other process) failed to create a directory.
506549e21daSmrg      test -d "$my_directory_path" || \
507549e21daSmrg        func_fatal_error "Failed to create \`$1'"
508549e21daSmrg    fi
509549e21daSmrg}
510ba6a1819Smrg
511ba6a1819Smrg
512ba6a1819Smrg# func_mktempdir [string]
513ba6a1819Smrg# Make a temporary directory that won't clash with other running
514ba6a1819Smrg# libtool processes, and avoids race conditions if possible.  If
515ba6a1819Smrg# given, STRING is the basename for that directory.
516ba6a1819Smrgfunc_mktempdir ()
517ba6a1819Smrg{
518ba6a1819Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
519ba6a1819Smrg
520549e21daSmrg    if test "$opt_dry_run" = ":"; then
521ba6a1819Smrg      # Return a directory name, but don't create it in dry-run mode
522ba6a1819Smrg      my_tmpdir="${my_template}-$$"
523ba6a1819Smrg    else
524ba6a1819Smrg
525ba6a1819Smrg      # If mktemp works, use that first and foremost
526ba6a1819Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
527ba6a1819Smrg
528ba6a1819Smrg      if test ! -d "$my_tmpdir"; then
529549e21daSmrg        # Failing that, at least try and use $RANDOM to avoid a race
530549e21daSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
531ba6a1819Smrg
532549e21daSmrg        save_mktempdir_umask=`umask`
533549e21daSmrg        umask 0077
534549e21daSmrg        $MKDIR "$my_tmpdir"
535549e21daSmrg        umask $save_mktempdir_umask
536ba6a1819Smrg      fi
537ba6a1819Smrg
538ba6a1819Smrg      # If we're not in dry-run mode, bomb out on failure
539549e21daSmrg      test -d "$my_tmpdir" || \
540549e21daSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
541ba6a1819Smrg    fi
542ba6a1819Smrg
543549e21daSmrg    $ECHO "$my_tmpdir"
544ba6a1819Smrg}
545ba6a1819Smrg
546ba6a1819Smrg
547549e21daSmrg# func_quote_for_eval arg
548549e21daSmrg# Aesthetically quote ARG to be evaled later.
549549e21daSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
550549e21daSmrg# is double-quoted, suitable for a subsequent eval, whereas
551549e21daSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
552549e21daSmrg# which are still active within double quotes backslashified.
553549e21daSmrgfunc_quote_for_eval ()
554ba6a1819Smrg{
555549e21daSmrg    case $1 in
556549e21daSmrg      *[\\\`\"\$]*)
557549e21daSmrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
558549e21daSmrg      *)
559549e21daSmrg        func_quote_for_eval_unquoted_result="$1" ;;
560549e21daSmrg    esac
561549e21daSmrg
562549e21daSmrg    case $func_quote_for_eval_unquoted_result in
563549e21daSmrg      # Double-quote args containing shell metacharacters to delay
564549e21daSmrg      # word splitting, command substitution and and variable
565549e21daSmrg      # expansion for a subsequent eval.
566549e21daSmrg      # Many Bourne shells cannot handle close brackets correctly
567549e21daSmrg      # in scan sets, so we specify it separately.
568549e21daSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
569549e21daSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
570549e21daSmrg        ;;
571549e21daSmrg      *)
572549e21daSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
573ba6a1819Smrg    esac
574ba6a1819Smrg}
575ba6a1819Smrg
576ba6a1819Smrg
577549e21daSmrg# func_quote_for_expand arg
578549e21daSmrg# Aesthetically quote ARG to be evaled later; same as above,
579549e21daSmrg# but do not quote variable references.
580549e21daSmrgfunc_quote_for_expand ()
581ba6a1819Smrg{
582549e21daSmrg    case $1 in
583549e21daSmrg      *[\\\`\"]*)
584549e21daSmrg	my_arg=`$ECHO "$1" | $SED \
585549e21daSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
586ba6a1819Smrg      *)
587549e21daSmrg        my_arg="$1" ;;
588549e21daSmrg    esac
589549e21daSmrg
590549e21daSmrg    case $my_arg in
591549e21daSmrg      # Double-quote args containing shell metacharacters to delay
592549e21daSmrg      # word splitting and command substitution for a subsequent eval.
593549e21daSmrg      # Many Bourne shells cannot handle close brackets correctly
594549e21daSmrg      # in scan sets, so we specify it separately.
595549e21daSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
596549e21daSmrg        my_arg="\"$my_arg\""
597549e21daSmrg        ;;
598549e21daSmrg    esac
599549e21daSmrg
600549e21daSmrg    func_quote_for_expand_result="$my_arg"
601ba6a1819Smrg}
602ba6a1819Smrg
603ba6a1819Smrg
604549e21daSmrg# func_show_eval cmd [fail_exp]
605549e21daSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
606549e21daSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
607549e21daSmrg# is given, then evaluate it.
608549e21daSmrgfunc_show_eval ()
609ba6a1819Smrg{
610549e21daSmrg    my_cmd="$1"
611549e21daSmrg    my_fail_exp="${2-:}"
612ba6a1819Smrg
613549e21daSmrg    ${opt_silent-false} || {
614549e21daSmrg      func_quote_for_expand "$my_cmd"
615549e21daSmrg      eval "func_echo $func_quote_for_expand_result"
616549e21daSmrg    }
617549e21daSmrg
618549e21daSmrg    if ${opt_dry_run-false}; then :; else
619549e21daSmrg      eval "$my_cmd"
620549e21daSmrg      my_status=$?
621549e21daSmrg      if test "$my_status" -eq 0; then :; else
622549e21daSmrg	eval "(exit $my_status); $my_fail_exp"
623549e21daSmrg      fi
624ba6a1819Smrg    fi
625ba6a1819Smrg}
626ba6a1819Smrg
627549e21daSmrg
628549e21daSmrg# func_show_eval_locale cmd [fail_exp]
629549e21daSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
630549e21daSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
631549e21daSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
632549e21daSmrgfunc_show_eval_locale ()
633ba6a1819Smrg{
634549e21daSmrg    my_cmd="$1"
635549e21daSmrg    my_fail_exp="${2-:}"
636ba6a1819Smrg
637549e21daSmrg    ${opt_silent-false} || {
638549e21daSmrg      func_quote_for_expand "$my_cmd"
639549e21daSmrg      eval "func_echo $func_quote_for_expand_result"
640549e21daSmrg    }
641549e21daSmrg
642549e21daSmrg    if ${opt_dry_run-false}; then :; else
643549e21daSmrg      eval "$lt_user_locale
644549e21daSmrg	    $my_cmd"
645549e21daSmrg      my_status=$?
646549e21daSmrg      eval "$lt_safe_locale"
647549e21daSmrg      if test "$my_status" -eq 0; then :; else
648549e21daSmrg	eval "(exit $my_status); $my_fail_exp"
649ba6a1819Smrg      fi
650549e21daSmrg    fi
651ba6a1819Smrg}
652ba6a1819Smrg
653ba6a1819Smrg
654549e21daSmrg# func_version
655549e21daSmrg# Echo version message to standard output and exit.
656549e21daSmrgfunc_version ()
657549e21daSmrg{
658549e21daSmrg    $SED -n '/(C)/!b go
659549e21daSmrg	:more
660549e21daSmrg	/\./!{
661549e21daSmrg	  N
662549e21daSmrg	  s/\n# / /
663549e21daSmrg	  b more
664549e21daSmrg	}
665549e21daSmrg	:go
666549e21daSmrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
667549e21daSmrg        s/^# //
668549e21daSmrg	s/^# *$//
669549e21daSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
670549e21daSmrg        p
671549e21daSmrg     }' < "$progpath"
672549e21daSmrg     exit $?
673549e21daSmrg}
674ba6a1819Smrg
675549e21daSmrg# func_usage
676549e21daSmrg# Echo short help message to standard output and exit.
677549e21daSmrgfunc_usage ()
678549e21daSmrg{
679549e21daSmrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
680549e21daSmrg        s/^# //
681549e21daSmrg	s/^# *$//
682549e21daSmrg	s/\$progname/'$progname'/
683549e21daSmrg	p
684549e21daSmrg    }' < "$progpath"
685549e21daSmrg    echo
686549e21daSmrg    $ECHO "run \`$progname --help | more' for full usage"
687549e21daSmrg    exit $?
688549e21daSmrg}
689ba6a1819Smrg
690549e21daSmrg# func_help [NOEXIT]
691549e21daSmrg# Echo long help message to standard output and exit,
692549e21daSmrg# unless 'noexit' is passed as argument.
693549e21daSmrgfunc_help ()
694549e21daSmrg{
695549e21daSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
696549e21daSmrg        s/^# //
697549e21daSmrg	s/^# *$//
698549e21daSmrg	s*\$progname*'$progname'*
699549e21daSmrg	s*\$host*'"$host"'*
700549e21daSmrg	s*\$SHELL*'"$SHELL"'*
701549e21daSmrg	s*\$LTCC*'"$LTCC"'*
702549e21daSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
703549e21daSmrg	s*\$LD*'"$LD"'*
704549e21daSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
705549e21daSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
706549e21daSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
707549e21daSmrg	p
708549e21daSmrg     }' < "$progpath"
709549e21daSmrg    ret=$?
710549e21daSmrg    if test -z "$1"; then
711549e21daSmrg      exit $ret
712549e21daSmrg    fi
713549e21daSmrg}
714ba6a1819Smrg
715549e21daSmrg# func_missing_arg argname
716549e21daSmrg# Echo program name prefixed message to standard error and set global
717549e21daSmrg# exit_cmd.
718549e21daSmrgfunc_missing_arg ()
719549e21daSmrg{
720549e21daSmrg    func_error "missing argument for $1."
721549e21daSmrg    exit_cmd=exit
722549e21daSmrg}
723ba6a1819Smrg
724549e21daSmrgexit_cmd=:
725ba6a1819Smrg
726ba6a1819Smrg
727ba6a1819Smrg
728ba6a1819Smrg
729549e21daSmrg
730549e21daSmrg
731549e21daSmrgmagic="%%%MAGIC variable%%%"
732549e21daSmrgmagic_exe="%%%MAGIC EXE variable%%%"
733549e21daSmrg
734549e21daSmrg# Global variables.
735549e21daSmrg# $mode is unset
736549e21daSmrgnonopt=
737549e21daSmrgexecute_dlfiles=
738549e21daSmrgpreserve_args=
739549e21daSmrglo2o="s/\\.lo\$/.${objext}/"
740549e21daSmrgo2lo="s/\\.${objext}\$/.lo/"
741549e21daSmrgextracted_archives=
742549e21daSmrgextracted_serial=0
743549e21daSmrg
744549e21daSmrgopt_dry_run=false
745549e21daSmrgopt_duplicate_deps=false
746549e21daSmrgopt_silent=false
747549e21daSmrgopt_debug=:
748549e21daSmrg
749549e21daSmrg# If this variable is set in any of the actions, the command in it
750549e21daSmrg# will be execed at the end.  This prevents here-documents from being
751549e21daSmrg# left over by shells.
752549e21daSmrgexec_cmd=
753549e21daSmrg
754549e21daSmrg# func_fatal_configuration arg...
755549e21daSmrg# Echo program name prefixed message to standard error, followed by
756549e21daSmrg# a configuration failure hint, and exit.
757549e21daSmrgfunc_fatal_configuration ()
758549e21daSmrg{
759549e21daSmrg    func_error ${1+"$@"}
760549e21daSmrg    func_error "See the $PACKAGE documentation for more information."
761549e21daSmrg    func_fatal_error "Fatal configuration error."
762549e21daSmrg}
763549e21daSmrg
764549e21daSmrg
765549e21daSmrg# func_config
766549e21daSmrg# Display the configuration for all the tags in this script.
767549e21daSmrgfunc_config ()
768549e21daSmrg{
769549e21daSmrg    re_begincf='^# ### BEGIN LIBTOOL'
770549e21daSmrg    re_endcf='^# ### END LIBTOOL'
771549e21daSmrg
772549e21daSmrg    # Default configuration.
773549e21daSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
774549e21daSmrg
775ba6a1819Smrg    # Now print the configurations for the tags.
776ba6a1819Smrg    for tagname in $taglist; do
777549e21daSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
778ba6a1819Smrg    done
779ba6a1819Smrg
780549e21daSmrg    exit $?
781549e21daSmrg}
782ba6a1819Smrg
783549e21daSmrg# func_features
784549e21daSmrg# Display the features supported by this script.
785549e21daSmrgfunc_features ()
786549e21daSmrg{
787549e21daSmrg    echo "host: $host"
788ba6a1819Smrg    if test "$build_libtool_libs" = yes; then
789549e21daSmrg      echo "enable shared libraries"
790ba6a1819Smrg    else
791549e21daSmrg      echo "disable shared libraries"
792ba6a1819Smrg    fi
793ba6a1819Smrg    if test "$build_old_libs" = yes; then
794549e21daSmrg      echo "enable static libraries"
795ba6a1819Smrg    else
796549e21daSmrg      echo "disable static libraries"
797ba6a1819Smrg    fi
798549e21daSmrg
799ba6a1819Smrg    exit $?
800549e21daSmrg}
801549e21daSmrg
802549e21daSmrg# func_enable_tag tagname
803549e21daSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
804549e21daSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
805549e21daSmrg# variable here.
806549e21daSmrgfunc_enable_tag ()
807549e21daSmrg{
808549e21daSmrg  # Global variable:
809549e21daSmrg  tagname="$1"
810ba6a1819Smrg
811549e21daSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
812549e21daSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
813549e21daSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
814ba6a1819Smrg
815549e21daSmrg  # Validate tagname.
816549e21daSmrg  case $tagname in
817549e21daSmrg    *[!-_A-Za-z0-9,/]*)
818549e21daSmrg      func_fatal_error "invalid tag name: $tagname"
819549e21daSmrg      ;;
820549e21daSmrg  esac
821ba6a1819Smrg
822549e21daSmrg  # Don't test for the "default" C tag, as we know it's
823549e21daSmrg  # there but not specially marked.
824549e21daSmrg  case $tagname in
825549e21daSmrg    CC) ;;
826549e21daSmrg    *)
827549e21daSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
828549e21daSmrg	taglist="$taglist $tagname"
829549e21daSmrg
830549e21daSmrg	# Evaluate the configuration.  Be careful to quote the path
831549e21daSmrg	# and the sed script, to avoid splitting on whitespace, but
832549e21daSmrg	# also don't use non-portable quotes within backquotes within
833549e21daSmrg	# quotes we have to do it in 2 steps:
834549e21daSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
835549e21daSmrg	eval "$extractedcf"
836549e21daSmrg      else
837549e21daSmrg	func_error "ignoring unknown tag $tagname"
838549e21daSmrg      fi
839549e21daSmrg      ;;
840549e21daSmrg  esac
841549e21daSmrg}
842ba6a1819Smrg
843549e21daSmrg# Parse options once, thoroughly.  This comes as soon as possible in
844549e21daSmrg# the script to make things like `libtool --version' happen quickly.
845549e21daSmrg{
846ba6a1819Smrg
847549e21daSmrg  # Shorthand for --mode=foo, only valid as the first argument
848549e21daSmrg  case $1 in
849549e21daSmrg  clean|clea|cle|cl)
850549e21daSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
851ba6a1819Smrg    ;;
852549e21daSmrg  compile|compil|compi|comp|com|co|c)
853549e21daSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
854ba6a1819Smrg    ;;
855549e21daSmrg  execute|execut|execu|exec|exe|ex|e)
856549e21daSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
857ba6a1819Smrg    ;;
858549e21daSmrg  finish|finis|fini|fin|fi|f)
859549e21daSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
860ba6a1819Smrg    ;;
861549e21daSmrg  install|instal|insta|inst|ins|in|i)
862549e21daSmrg    shift; set dummy --mode install ${1+"$@"}; shift
863549e21daSmrg    ;;
864549e21daSmrg  link|lin|li|l)
865549e21daSmrg    shift; set dummy --mode link ${1+"$@"}; shift
866549e21daSmrg    ;;
867549e21daSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
868549e21daSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
869ba6a1819Smrg    ;;
870ba6a1819Smrg  esac
871ba6a1819Smrg
872549e21daSmrg  # Parse non-mode specific arguments:
873549e21daSmrg  while test "$#" -gt 0; do
874549e21daSmrg    opt="$1"
875549e21daSmrg    shift
876ba6a1819Smrg
877549e21daSmrg    case $opt in
878549e21daSmrg      --config)		func_config					;;
879ba6a1819Smrg
880549e21daSmrg      --debug)		preserve_args="$preserve_args $opt"
881549e21daSmrg			func_echo "enabling shell trace mode"
882549e21daSmrg			opt_debug='set -x'
883549e21daSmrg			$opt_debug
884549e21daSmrg			;;
885ba6a1819Smrg
886549e21daSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
887549e21daSmrg			execute_dlfiles="$execute_dlfiles $1"
888549e21daSmrg			shift
889549e21daSmrg			;;
890ba6a1819Smrg
891549e21daSmrg      --dry-run | -n)	opt_dry_run=:					;;
892549e21daSmrg      --features)       func_features					;;
893549e21daSmrg      --finish)		mode="finish"					;;
894549e21daSmrg
895549e21daSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
896549e21daSmrg			case $1 in
897549e21daSmrg			  # Valid mode arguments:
898549e21daSmrg			  clean)	;;
899549e21daSmrg			  compile)	;;
900549e21daSmrg			  execute)	;;
901549e21daSmrg			  finish)	;;
902549e21daSmrg			  install)	;;
903549e21daSmrg			  link)		;;
904549e21daSmrg			  relink)	;;
905549e21daSmrg			  uninstall)	;;
906549e21daSmrg
907549e21daSmrg			  # Catch anything else as an error
908549e21daSmrg			  *) func_error "invalid argument for $opt"
909549e21daSmrg			     exit_cmd=exit
910549e21daSmrg			     break
911549e21daSmrg			     ;;
912549e21daSmrg		        esac
913549e21daSmrg
914549e21daSmrg			mode="$1"
915549e21daSmrg			shift
916549e21daSmrg			;;
917549e21daSmrg
918549e21daSmrg      --preserve-dup-deps)
919549e21daSmrg			opt_duplicate_deps=:				;;
920549e21daSmrg
921549e21daSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
922549e21daSmrg			opt_silent=:
923549e21daSmrg			opt_verbose=false
924549e21daSmrg			;;
925549e21daSmrg
926549e21daSmrg      --no-quiet|--no-silent)
927549e21daSmrg			preserve_args="$preserve_args $opt"
928549e21daSmrg			opt_silent=false
929549e21daSmrg			;;
930549e21daSmrg
931549e21daSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
932549e21daSmrg			opt_silent=false
933549e21daSmrg			opt_verbose=:
934549e21daSmrg			;;
935549e21daSmrg
936549e21daSmrg      --no-verbose)	preserve_args="$preserve_args $opt"
937549e21daSmrg			opt_verbose=false
938549e21daSmrg			;;
939549e21daSmrg
940549e21daSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
941549e21daSmrg			preserve_args="$preserve_args $opt $1"
942549e21daSmrg			func_enable_tag "$1"	# tagname is set here
943549e21daSmrg			shift
944549e21daSmrg			;;
945549e21daSmrg
946549e21daSmrg      # Separate optargs to long options:
947549e21daSmrg      -dlopen=*|--mode=*|--tag=*)
948549e21daSmrg			func_opt_split "$opt"
949549e21daSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
950549e21daSmrg			shift
951549e21daSmrg			;;
952549e21daSmrg
953549e21daSmrg      -\?|-h)		func_usage					;;
954549e21daSmrg      --help)		opt_help=:					;;
955549e21daSmrg      --help-all)	opt_help=': help-all'				;;
956549e21daSmrg      --version)	func_version					;;
957549e21daSmrg
958549e21daSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
959549e21daSmrg
960549e21daSmrg      *)		nonopt="$opt"
961549e21daSmrg			break
962549e21daSmrg			;;
963549e21daSmrg    esac
964549e21daSmrg  done
965549e21daSmrg
966549e21daSmrg
967549e21daSmrg  case $host in
968549e21daSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
969549e21daSmrg      # don't eliminate duplications in $postdeps and $predeps
970549e21daSmrg      opt_duplicate_compiler_generated_deps=:
971ba6a1819Smrg      ;;
972ba6a1819Smrg    *)
973549e21daSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
974549e21daSmrg      ;;
975549e21daSmrg  esac
976ba6a1819Smrg
977549e21daSmrg  # Having warned about all mis-specified options, bail out if
978549e21daSmrg  # anything was wrong.
979549e21daSmrg  $exit_cmd $EXIT_FAILURE
980549e21daSmrg}
981549e21daSmrg
982549e21daSmrg# func_check_version_match
983549e21daSmrg# Ensure that we are using m4 macros, and libtool script from the same
984549e21daSmrg# release of libtool.
985549e21daSmrgfunc_check_version_match ()
986549e21daSmrg{
987549e21daSmrg  if test "$package_revision" != "$macro_revision"; then
988549e21daSmrg    if test "$VERSION" != "$macro_version"; then
989549e21daSmrg      if test -z "$macro_version"; then
990549e21daSmrg        cat >&2 <<_LT_EOF
991549e21daSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
992549e21daSmrg$progname: definition of this LT_INIT comes from an older release.
993549e21daSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
994549e21daSmrg$progname: and run autoconf again.
995549e21daSmrg_LT_EOF
996549e21daSmrg      else
997549e21daSmrg        cat >&2 <<_LT_EOF
998549e21daSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
999549e21daSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1000549e21daSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1001549e21daSmrg$progname: and run autoconf again.
1002549e21daSmrg_LT_EOF
1003ba6a1819Smrg      fi
1004549e21daSmrg    else
1005549e21daSmrg      cat >&2 <<_LT_EOF
1006549e21daSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1007549e21daSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1008549e21daSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1009549e21daSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
1010549e21daSmrg_LT_EOF
1011549e21daSmrg    fi
1012549e21daSmrg
1013549e21daSmrg    exit $EXIT_MISMATCH
1014549e21daSmrg  fi
1015549e21daSmrg}
1016549e21daSmrg
1017549e21daSmrg
1018549e21daSmrg## ----------- ##
1019549e21daSmrg##    Main.    ##
1020549e21daSmrg## ----------- ##
1021549e21daSmrg
1022549e21daSmrg$opt_help || {
1023549e21daSmrg  # Sanity checks first:
1024549e21daSmrg  func_check_version_match
1025549e21daSmrg
1026549e21daSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1027549e21daSmrg    func_fatal_configuration "not configured to build any kind of library"
1028ba6a1819Smrg  fi
1029ba6a1819Smrg
1030549e21daSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1031549e21daSmrg
1032549e21daSmrg
1033549e21daSmrg  # Darwin sucks
1034549e21daSmrg  eval std_shrext=\"$shrext_cmds\"
1035549e21daSmrg
1036549e21daSmrg
1037ba6a1819Smrg  # Only execute mode is allowed to have -dlopen flags.
1038ba6a1819Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
1039549e21daSmrg    func_error "unrecognized option \`-dlopen'"
1040549e21daSmrg    $ECHO "$help" 1>&2
1041ba6a1819Smrg    exit $EXIT_FAILURE
1042ba6a1819Smrg  fi
1043ba6a1819Smrg
1044ba6a1819Smrg  # Change the help message to a mode-specific one.
1045ba6a1819Smrg  generic_help="$help"
1046549e21daSmrg  help="Try \`$progname --help --mode=$mode' for more information."
1047549e21daSmrg}
1048ba6a1819Smrg
1049ba6a1819Smrg
1050549e21daSmrg# func_lalib_p file
1051549e21daSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1052549e21daSmrg# This function is only a basic sanity check; it will hardly flush out
1053549e21daSmrg# determined imposters.
1054549e21daSmrgfunc_lalib_p ()
1055549e21daSmrg{
1056549e21daSmrg    test -f "$1" &&
1057549e21daSmrg      $SED -e 4q "$1" 2>/dev/null \
1058549e21daSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1059549e21daSmrg}
1060ba6a1819Smrg
1061549e21daSmrg# func_lalib_unsafe_p file
1062549e21daSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1063549e21daSmrg# This function implements the same check as func_lalib_p without
1064549e21daSmrg# resorting to external programs.  To this end, it redirects stdin and
1065549e21daSmrg# closes it afterwards, without saving the original file descriptor.
1066549e21daSmrg# As a safety measure, use it only where a negative result would be
1067549e21daSmrg# fatal anyway.  Works if `file' does not exist.
1068549e21daSmrgfunc_lalib_unsafe_p ()
1069549e21daSmrg{
1070549e21daSmrg    lalib_p=no
1071549e21daSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1072549e21daSmrg	for lalib_p_l in 1 2 3 4
1073549e21daSmrg	do
1074549e21daSmrg	    read lalib_p_line
1075549e21daSmrg	    case "$lalib_p_line" in
1076549e21daSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1077549e21daSmrg	    esac
1078549e21daSmrg	done
1079549e21daSmrg	exec 0<&5 5<&-
1080549e21daSmrg    fi
1081549e21daSmrg    test "$lalib_p" = yes
1082549e21daSmrg}
1083ba6a1819Smrg
1084549e21daSmrg# func_ltwrapper_script_p file
1085549e21daSmrg# True iff FILE is a libtool wrapper script
1086549e21daSmrg# This function is only a basic sanity check; it will hardly flush out
1087549e21daSmrg# determined imposters.
1088549e21daSmrgfunc_ltwrapper_script_p ()
1089549e21daSmrg{
1090549e21daSmrg    func_lalib_p "$1"
1091549e21daSmrg}
1092ba6a1819Smrg
1093549e21daSmrg# func_ltwrapper_executable_p file
1094549e21daSmrg# True iff FILE is a libtool wrapper executable
1095549e21daSmrg# This function is only a basic sanity check; it will hardly flush out
1096549e21daSmrg# determined imposters.
1097549e21daSmrgfunc_ltwrapper_executable_p ()
1098549e21daSmrg{
1099549e21daSmrg    func_ltwrapper_exec_suffix=
1100549e21daSmrg    case $1 in
1101549e21daSmrg    *.exe) ;;
1102549e21daSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
1103549e21daSmrg    esac
1104549e21daSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1105549e21daSmrg}
1106ba6a1819Smrg
1107549e21daSmrg# func_ltwrapper_scriptname file
1108549e21daSmrg# Assumes file is an ltwrapper_executable
1109549e21daSmrg# uses $file to determine the appropriate filename for a
1110549e21daSmrg# temporary ltwrapper_script.
1111549e21daSmrgfunc_ltwrapper_scriptname ()
1112549e21daSmrg{
1113549e21daSmrg    func_ltwrapper_scriptname_result=""
1114549e21daSmrg    if func_ltwrapper_executable_p "$1"; then
1115549e21daSmrg	func_dirname_and_basename "$1" "" "."
1116549e21daSmrg	func_stripname '' '.exe' "$func_basename_result"
1117549e21daSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1118549e21daSmrg    fi
1119549e21daSmrg}
1120ba6a1819Smrg
1121549e21daSmrg# func_ltwrapper_p file
1122549e21daSmrg# True iff FILE is a libtool wrapper script or wrapper executable
1123549e21daSmrg# This function is only a basic sanity check; it will hardly flush out
1124549e21daSmrg# determined imposters.
1125549e21daSmrgfunc_ltwrapper_p ()
1126549e21daSmrg{
1127549e21daSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1128549e21daSmrg}
1129ba6a1819Smrg
1130ba6a1819Smrg
1131549e21daSmrg# func_execute_cmds commands fail_cmd
1132549e21daSmrg# Execute tilde-delimited COMMANDS.
1133549e21daSmrg# If FAIL_CMD is given, eval that upon failure.
1134549e21daSmrg# FAIL_CMD may read-access the current command in variable CMD!
1135549e21daSmrgfunc_execute_cmds ()
1136549e21daSmrg{
1137549e21daSmrg    $opt_debug
1138549e21daSmrg    save_ifs=$IFS; IFS='~'
1139549e21daSmrg    for cmd in $1; do
1140549e21daSmrg      IFS=$save_ifs
1141549e21daSmrg      eval cmd=\"$cmd\"
1142549e21daSmrg      func_show_eval "$cmd" "${2-:}"
1143549e21daSmrg    done
1144549e21daSmrg    IFS=$save_ifs
1145549e21daSmrg}
1146ba6a1819Smrg
1147ba6a1819Smrg
1148549e21daSmrg# func_source file
1149549e21daSmrg# Source FILE, adding directory component if necessary.
1150549e21daSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
1151549e21daSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1152549e21daSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1153549e21daSmrg# `FILE.' does not work on cygwin managed mounts.
1154549e21daSmrgfunc_source ()
1155549e21daSmrg{
1156549e21daSmrg    $opt_debug
1157549e21daSmrg    case $1 in
1158549e21daSmrg    */* | *\\*)	. "$1" ;;
1159549e21daSmrg    *)		. "./$1" ;;
1160549e21daSmrg    esac
1161549e21daSmrg}
1162549e21daSmrg
1163549e21daSmrg
1164549e21daSmrg# func_infer_tag arg
1165549e21daSmrg# Infer tagged configuration to use if any are available and
1166549e21daSmrg# if one wasn't chosen via the "--tag" command line option.
1167549e21daSmrg# Only attempt this if the compiler in the base compile
1168549e21daSmrg# command doesn't match the default compiler.
1169549e21daSmrg# arg is usually of the form 'gcc ...'
1170549e21daSmrgfunc_infer_tag ()
1171549e21daSmrg{
1172549e21daSmrg    $opt_debug
1173549e21daSmrg    if test -n "$available_tags" && test -z "$tagname"; then
1174549e21daSmrg      CC_quoted=
1175549e21daSmrg      for arg in $CC; do
1176549e21daSmrg        func_quote_for_eval "$arg"
1177549e21daSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1178549e21daSmrg      done
1179549e21daSmrg      CC_expanded=`func_echo_all $CC`
1180549e21daSmrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
1181549e21daSmrg      case $@ in
1182549e21daSmrg      # Blanks in the command may have been stripped by the calling shell,
1183549e21daSmrg      # but not from the CC environment variable when configure was run.
1184549e21daSmrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1185549e21daSmrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1186549e21daSmrg      # Blanks at the start of $base_compile will cause this to fail
1187549e21daSmrg      # if we don't check for them as well.
1188549e21daSmrg      *)
1189549e21daSmrg	for z in $available_tags; do
1190549e21daSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1191549e21daSmrg	    # Evaluate the configuration.
1192549e21daSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1193549e21daSmrg	    CC_quoted=
1194549e21daSmrg	    for arg in $CC; do
1195549e21daSmrg	      # Double-quote args containing other shell metacharacters.
1196549e21daSmrg	      func_quote_for_eval "$arg"
1197549e21daSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1198549e21daSmrg	    done
1199549e21daSmrg	    CC_expanded=`func_echo_all $CC`
1200549e21daSmrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1201549e21daSmrg	    case "$@ " in
1202549e21daSmrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1203549e21daSmrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1204549e21daSmrg	      # The compiler in the base compile command matches
1205549e21daSmrg	      # the one in the tagged configuration.
1206549e21daSmrg	      # Assume this is the tagged configuration we want.
1207549e21daSmrg	      tagname=$z
1208549e21daSmrg	      break
1209549e21daSmrg	      ;;
1210549e21daSmrg	    esac
1211549e21daSmrg	  fi
1212549e21daSmrg	done
1213549e21daSmrg	# If $tagname still isn't set, then no tagged configuration
1214549e21daSmrg	# was found and let the user know that the "--tag" command
1215549e21daSmrg	# line option must be used.
1216549e21daSmrg	if test -z "$tagname"; then
1217549e21daSmrg	  func_echo "unable to infer tagged configuration"
1218549e21daSmrg	  func_fatal_error "specify a tag with \`--tag'"
1219549e21daSmrg#	else
1220549e21daSmrg#	  func_verbose "using $tagname tagged configuration"
1221549e21daSmrg	fi
1222549e21daSmrg	;;
1223549e21daSmrg      esac
1224549e21daSmrg    fi
1225549e21daSmrg}
1226549e21daSmrg
1227549e21daSmrg
1228549e21daSmrg
1229549e21daSmrg# func_write_libtool_object output_name pic_name nonpic_name
1230549e21daSmrg# Create a libtool object file (analogous to a ".la" file),
1231549e21daSmrg# but don't create it if we're doing a dry run.
1232549e21daSmrgfunc_write_libtool_object ()
1233549e21daSmrg{
1234549e21daSmrg    write_libobj=${1}
1235549e21daSmrg    if test "$build_libtool_libs" = yes; then
1236549e21daSmrg      write_lobj=\'${2}\'
1237549e21daSmrg    else
1238549e21daSmrg      write_lobj=none
1239549e21daSmrg    fi
1240549e21daSmrg
1241549e21daSmrg    if test "$build_old_libs" = yes; then
1242549e21daSmrg      write_oldobj=\'${3}\'
1243549e21daSmrg    else
1244549e21daSmrg      write_oldobj=none
1245549e21daSmrg    fi
1246549e21daSmrg
1247549e21daSmrg    $opt_dry_run || {
1248549e21daSmrg      cat >${write_libobj}T <<EOF
1249549e21daSmrg# $write_libobj - a libtool object file
1250549e21daSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1251549e21daSmrg#
1252549e21daSmrg# Please DO NOT delete this file!
1253549e21daSmrg# It is necessary for linking the library.
1254549e21daSmrg
1255549e21daSmrg# Name of the PIC object.
1256549e21daSmrgpic_object=$write_lobj
1257549e21daSmrg
1258549e21daSmrg# Name of the non-PIC object
1259549e21daSmrgnon_pic_object=$write_oldobj
1260549e21daSmrg
1261549e21daSmrgEOF
1262549e21daSmrg      $MV "${write_libobj}T" "${write_libobj}"
1263549e21daSmrg    }
1264549e21daSmrg}
1265549e21daSmrg
1266549e21daSmrg# func_mode_compile arg...
1267549e21daSmrgfunc_mode_compile ()
1268549e21daSmrg{
1269549e21daSmrg    $opt_debug
1270549e21daSmrg    # Get the compilation command and the source file.
1271549e21daSmrg    base_compile=
1272549e21daSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1273549e21daSmrg    suppress_opt=yes
1274549e21daSmrg    suppress_output=
1275549e21daSmrg    arg_mode=normal
1276549e21daSmrg    libobj=
1277549e21daSmrg    later=
1278549e21daSmrg    pie_flag=
1279549e21daSmrg
1280549e21daSmrg    for arg
1281549e21daSmrg    do
1282549e21daSmrg      case $arg_mode in
1283549e21daSmrg      arg  )
1284549e21daSmrg	# do not "continue".  Instead, add this to base_compile
1285549e21daSmrg	lastarg="$arg"
1286549e21daSmrg	arg_mode=normal
1287549e21daSmrg	;;
1288549e21daSmrg
1289549e21daSmrg      target )
1290549e21daSmrg	libobj="$arg"
1291549e21daSmrg	arg_mode=normal
1292549e21daSmrg	continue
1293549e21daSmrg	;;
1294549e21daSmrg
1295549e21daSmrg      normal )
1296549e21daSmrg	# Accept any command-line options.
1297549e21daSmrg	case $arg in
1298549e21daSmrg	-o)
1299549e21daSmrg	  test -n "$libobj" && \
1300549e21daSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
1301549e21daSmrg	  arg_mode=target
1302549e21daSmrg	  continue
1303549e21daSmrg	  ;;
1304549e21daSmrg
1305549e21daSmrg	-pie | -fpie | -fPIE)
1306549e21daSmrg          pie_flag="$pie_flag $arg"
1307549e21daSmrg	  continue
1308549e21daSmrg	  ;;
1309549e21daSmrg
1310549e21daSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1311549e21daSmrg	  later="$later $arg"
1312549e21daSmrg	  continue
1313549e21daSmrg	  ;;
1314549e21daSmrg
1315549e21daSmrg	-no-suppress)
1316549e21daSmrg	  suppress_opt=no
1317549e21daSmrg	  continue
1318549e21daSmrg	  ;;
1319549e21daSmrg
1320549e21daSmrg	-Xcompiler)
1321549e21daSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1322549e21daSmrg	  continue      #  The current "srcfile" will either be retained or
1323549e21daSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
1324549e21daSmrg
1325549e21daSmrg	-Wc,*)
1326549e21daSmrg	  func_stripname '-Wc,' '' "$arg"
1327549e21daSmrg	  args=$func_stripname_result
1328549e21daSmrg	  lastarg=
1329549e21daSmrg	  save_ifs="$IFS"; IFS=','
1330549e21daSmrg	  for arg in $args; do
1331549e21daSmrg	    IFS="$save_ifs"
1332549e21daSmrg	    func_quote_for_eval "$arg"
1333549e21daSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
1334549e21daSmrg	  done
1335549e21daSmrg	  IFS="$save_ifs"
1336549e21daSmrg	  func_stripname ' ' '' "$lastarg"
1337549e21daSmrg	  lastarg=$func_stripname_result
1338549e21daSmrg
1339549e21daSmrg	  # Add the arguments to base_compile.
1340549e21daSmrg	  base_compile="$base_compile $lastarg"
1341549e21daSmrg	  continue
1342549e21daSmrg	  ;;
1343549e21daSmrg
1344549e21daSmrg	*)
1345549e21daSmrg	  # Accept the current argument as the source file.
1346549e21daSmrg	  # The previous "srcfile" becomes the current argument.
1347ba6a1819Smrg	  #
1348ba6a1819Smrg	  lastarg="$srcfile"
1349ba6a1819Smrg	  srcfile="$arg"
1350ba6a1819Smrg	  ;;
1351ba6a1819Smrg	esac  #  case $arg
1352ba6a1819Smrg	;;
1353ba6a1819Smrg      esac    #  case $arg_mode
1354ba6a1819Smrg
1355ba6a1819Smrg      # Aesthetically quote the previous argument.
1356549e21daSmrg      func_quote_for_eval "$lastarg"
1357549e21daSmrg      base_compile="$base_compile $func_quote_for_eval_result"
1358ba6a1819Smrg    done # for arg
1359ba6a1819Smrg
1360ba6a1819Smrg    case $arg_mode in
1361ba6a1819Smrg    arg)
1362549e21daSmrg      func_fatal_error "you must specify an argument for -Xcompile"
1363ba6a1819Smrg      ;;
1364ba6a1819Smrg    target)
1365549e21daSmrg      func_fatal_error "you must specify a target with \`-o'"
1366ba6a1819Smrg      ;;
1367ba6a1819Smrg    *)
1368ba6a1819Smrg      # Get the name of the library object.
1369549e21daSmrg      test -z "$libobj" && {
1370549e21daSmrg	func_basename "$srcfile"
1371549e21daSmrg	libobj="$func_basename_result"
1372549e21daSmrg      }
1373ba6a1819Smrg      ;;
1374ba6a1819Smrg    esac
1375ba6a1819Smrg
1376ba6a1819Smrg    # Recognize several different file suffixes.
1377ba6a1819Smrg    # If the user specifies -o file.o, it is replaced with file.lo
1378ba6a1819Smrg    case $libobj in
1379549e21daSmrg    *.[cCFSifmso] | \
1380549e21daSmrg    *.ada | *.adb | *.ads | *.asm | \
1381549e21daSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1382549e21daSmrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
1383549e21daSmrg      func_xform "$libobj"
1384549e21daSmrg      libobj=$func_xform_result
1385549e21daSmrg      ;;
1386ba6a1819Smrg    esac
1387ba6a1819Smrg
1388ba6a1819Smrg    case $libobj in
1389549e21daSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1390ba6a1819Smrg    *)
1391549e21daSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
1392ba6a1819Smrg      ;;
1393ba6a1819Smrg    esac
1394ba6a1819Smrg
1395ba6a1819Smrg    func_infer_tag $base_compile
1396ba6a1819Smrg
1397ba6a1819Smrg    for arg in $later; do
1398ba6a1819Smrg      case $arg in
1399549e21daSmrg      -shared)
1400549e21daSmrg	test "$build_libtool_libs" != yes && \
1401549e21daSmrg	  func_fatal_configuration "can not build a shared library"
1402549e21daSmrg	build_old_libs=no
1403549e21daSmrg	continue
1404549e21daSmrg	;;
1405549e21daSmrg
1406ba6a1819Smrg      -static)
1407549e21daSmrg	build_libtool_libs=no
1408ba6a1819Smrg	build_old_libs=yes
1409ba6a1819Smrg	continue
1410ba6a1819Smrg	;;
1411ba6a1819Smrg
1412ba6a1819Smrg      -prefer-pic)
1413ba6a1819Smrg	pic_mode=yes
1414ba6a1819Smrg	continue
1415ba6a1819Smrg	;;
1416ba6a1819Smrg
1417ba6a1819Smrg      -prefer-non-pic)
1418ba6a1819Smrg	pic_mode=no
1419ba6a1819Smrg	continue
1420ba6a1819Smrg	;;
1421ba6a1819Smrg      esac
1422ba6a1819Smrg    done
1423ba6a1819Smrg
1424549e21daSmrg    func_quote_for_eval "$libobj"
1425549e21daSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1426549e21daSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1427549e21daSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1428549e21daSmrg    func_dirname_and_basename "$obj" "/" ""
1429549e21daSmrg    objname="$func_basename_result"
1430549e21daSmrg    xdir="$func_dirname_result"
1431ba6a1819Smrg    lobj=${xdir}$objdir/$objname
1432ba6a1819Smrg
1433549e21daSmrg    test -z "$base_compile" && \
1434549e21daSmrg      func_fatal_help "you must specify a compilation command"
1435ba6a1819Smrg
1436ba6a1819Smrg    # Delete any leftover library objects.
1437ba6a1819Smrg    if test "$build_old_libs" = yes; then
1438ba6a1819Smrg      removelist="$obj $lobj $libobj ${libobj}T"
1439ba6a1819Smrg    else
1440ba6a1819Smrg      removelist="$lobj $libobj ${libobj}T"
1441ba6a1819Smrg    fi
1442ba6a1819Smrg
1443ba6a1819Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
1444ba6a1819Smrg    case $host_os in
1445549e21daSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
1446ba6a1819Smrg      pic_mode=default
1447ba6a1819Smrg      ;;
1448ba6a1819Smrg    esac
1449ba6a1819Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1450ba6a1819Smrg      # non-PIC code in shared libraries is not supported
1451ba6a1819Smrg      pic_mode=default
1452ba6a1819Smrg    fi
1453ba6a1819Smrg
1454ba6a1819Smrg    # Calculate the filename of the output object if compiler does
1455ba6a1819Smrg    # not support -o with -c
1456ba6a1819Smrg    if test "$compiler_c_o" = no; then
1457549e21daSmrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
1458ba6a1819Smrg      lockfile="$output_obj.lock"
1459ba6a1819Smrg    else
1460ba6a1819Smrg      output_obj=
1461ba6a1819Smrg      need_locks=no
1462ba6a1819Smrg      lockfile=
1463ba6a1819Smrg    fi
1464ba6a1819Smrg
1465ba6a1819Smrg    # Lock this critical section if it is needed
1466ba6a1819Smrg    # We use this script file to make the link, it avoids creating a new file
1467ba6a1819Smrg    if test "$need_locks" = yes; then
1468549e21daSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1469549e21daSmrg	func_echo "Waiting for $lockfile to be removed"
1470ba6a1819Smrg	sleep 2
1471ba6a1819Smrg      done
1472ba6a1819Smrg    elif test "$need_locks" = warn; then
1473ba6a1819Smrg      if test -f "$lockfile"; then
1474549e21daSmrg	$ECHO "\
1475ba6a1819Smrg*** ERROR, $lockfile exists and contains:
1476ba6a1819Smrg`cat $lockfile 2>/dev/null`
1477ba6a1819Smrg
1478ba6a1819SmrgThis indicates that another process is trying to use the same
1479ba6a1819Smrgtemporary object file, and libtool could not work around it because
1480ba6a1819Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1481ba6a1819Smrgrepeat this compilation, it may succeed, by chance, but you had better
1482ba6a1819Smrgavoid parallel builds (make -j) in this platform, or get a better
1483ba6a1819Smrgcompiler."
1484ba6a1819Smrg
1485549e21daSmrg	$opt_dry_run || $RM $removelist
1486ba6a1819Smrg	exit $EXIT_FAILURE
1487ba6a1819Smrg      fi
1488549e21daSmrg      removelist="$removelist $output_obj"
1489549e21daSmrg      $ECHO "$srcfile" > "$lockfile"
1490ba6a1819Smrg    fi
1491ba6a1819Smrg
1492549e21daSmrg    $opt_dry_run || $RM $removelist
1493549e21daSmrg    removelist="$removelist $lockfile"
1494549e21daSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1495549e21daSmrg
1496ba6a1819Smrg    if test -n "$fix_srcfile_path"; then
1497ba6a1819Smrg      eval srcfile=\"$fix_srcfile_path\"
1498ba6a1819Smrg    fi
1499549e21daSmrg    func_quote_for_eval "$srcfile"
1500549e21daSmrg    qsrcfile=$func_quote_for_eval_result
1501ba6a1819Smrg
1502ba6a1819Smrg    # Only build a PIC object if we are building libtool libraries.
1503ba6a1819Smrg    if test "$build_libtool_libs" = yes; then
1504ba6a1819Smrg      # Without this assignment, base_compile gets emptied.
1505ba6a1819Smrg      fbsd_hideous_sh_bug=$base_compile
1506ba6a1819Smrg
1507ba6a1819Smrg      if test "$pic_mode" != no; then
1508ba6a1819Smrg	command="$base_compile $qsrcfile $pic_flag"
1509ba6a1819Smrg      else
1510ba6a1819Smrg	# Don't build PIC code
1511ba6a1819Smrg	command="$base_compile $qsrcfile"
1512ba6a1819Smrg      fi
1513ba6a1819Smrg
1514549e21daSmrg      func_mkdir_p "$xdir$objdir"
1515ba6a1819Smrg
1516ba6a1819Smrg      if test -z "$output_obj"; then
1517ba6a1819Smrg	# Place PIC objects in $objdir
1518ba6a1819Smrg	command="$command -o $lobj"
1519ba6a1819Smrg      fi
1520ba6a1819Smrg
1521549e21daSmrg      func_show_eval_locale "$command"	\
1522549e21daSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1523ba6a1819Smrg
1524ba6a1819Smrg      if test "$need_locks" = warn &&
1525ba6a1819Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1526549e21daSmrg	$ECHO "\
1527ba6a1819Smrg*** ERROR, $lockfile contains:
1528ba6a1819Smrg`cat $lockfile 2>/dev/null`
1529ba6a1819Smrg
1530ba6a1819Smrgbut it should contain:
1531ba6a1819Smrg$srcfile
1532ba6a1819Smrg
1533ba6a1819SmrgThis indicates that another process is trying to use the same
1534ba6a1819Smrgtemporary object file, and libtool could not work around it because
1535ba6a1819Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1536ba6a1819Smrgrepeat this compilation, it may succeed, by chance, but you had better
1537ba6a1819Smrgavoid parallel builds (make -j) in this platform, or get a better
1538ba6a1819Smrgcompiler."
1539ba6a1819Smrg
1540549e21daSmrg	$opt_dry_run || $RM $removelist
1541ba6a1819Smrg	exit $EXIT_FAILURE
1542ba6a1819Smrg      fi
1543ba6a1819Smrg
1544ba6a1819Smrg      # Just move the object if needed, then go on to compile the next one
1545ba6a1819Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1546549e21daSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1547549e21daSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1548ba6a1819Smrg      fi
1549ba6a1819Smrg
1550ba6a1819Smrg      # Allow error messages only from the first compilation.
1551ba6a1819Smrg      if test "$suppress_opt" = yes; then
1552549e21daSmrg	suppress_output=' >/dev/null 2>&1'
1553ba6a1819Smrg      fi
1554ba6a1819Smrg    fi
1555ba6a1819Smrg
1556ba6a1819Smrg    # Only build a position-dependent object if we build old libraries.
1557ba6a1819Smrg    if test "$build_old_libs" = yes; then
1558ba6a1819Smrg      if test "$pic_mode" != yes; then
1559ba6a1819Smrg	# Don't build PIC code
1560549e21daSmrg	command="$base_compile $qsrcfile$pie_flag"
1561ba6a1819Smrg      else
1562ba6a1819Smrg	command="$base_compile $qsrcfile $pic_flag"
1563ba6a1819Smrg      fi
1564ba6a1819Smrg      if test "$compiler_c_o" = yes; then
1565ba6a1819Smrg	command="$command -o $obj"
1566ba6a1819Smrg      fi
1567ba6a1819Smrg
1568ba6a1819Smrg      # Suppress compiler output if we already did a PIC compilation.
1569ba6a1819Smrg      command="$command$suppress_output"
1570549e21daSmrg      func_show_eval_locale "$command" \
1571549e21daSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1572ba6a1819Smrg
1573ba6a1819Smrg      if test "$need_locks" = warn &&
1574ba6a1819Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1575549e21daSmrg	$ECHO "\
1576ba6a1819Smrg*** ERROR, $lockfile contains:
1577ba6a1819Smrg`cat $lockfile 2>/dev/null`
1578ba6a1819Smrg
1579ba6a1819Smrgbut it should contain:
1580ba6a1819Smrg$srcfile
1581ba6a1819Smrg
1582ba6a1819SmrgThis indicates that another process is trying to use the same
1583ba6a1819Smrgtemporary object file, and libtool could not work around it because
1584ba6a1819Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1585ba6a1819Smrgrepeat this compilation, it may succeed, by chance, but you had better
1586ba6a1819Smrgavoid parallel builds (make -j) in this platform, or get a better
1587ba6a1819Smrgcompiler."
1588ba6a1819Smrg
1589549e21daSmrg	$opt_dry_run || $RM $removelist
1590ba6a1819Smrg	exit $EXIT_FAILURE
1591ba6a1819Smrg      fi
1592ba6a1819Smrg
1593ba6a1819Smrg      # Just move the object if needed
1594ba6a1819Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1595549e21daSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
1596549e21daSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1597ba6a1819Smrg      fi
1598549e21daSmrg    fi
1599ba6a1819Smrg
1600549e21daSmrg    $opt_dry_run || {
1601549e21daSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1602ba6a1819Smrg
1603549e21daSmrg      # Unlock the critical section if it was locked
1604549e21daSmrg      if test "$need_locks" != no; then
1605549e21daSmrg	removelist=$lockfile
1606549e21daSmrg        $RM "$lockfile"
1607549e21daSmrg      fi
1608549e21daSmrg    }
1609ba6a1819Smrg
1610549e21daSmrg    exit $EXIT_SUCCESS
1611549e21daSmrg}
1612ba6a1819Smrg
1613549e21daSmrg$opt_help || {
1614549e21daSmrg  test "$mode" = compile && func_mode_compile ${1+"$@"}
1615549e21daSmrg}
1616ba6a1819Smrg
1617549e21daSmrgfunc_mode_help ()
1618549e21daSmrg{
1619549e21daSmrg    # We need to display help for each of the modes.
1620549e21daSmrg    case $mode in
1621549e21daSmrg      "")
1622549e21daSmrg        # Generic help is extracted from the usage comments
1623549e21daSmrg        # at the start of this file.
1624549e21daSmrg        func_help
1625549e21daSmrg        ;;
1626ba6a1819Smrg
1627549e21daSmrg      clean)
1628549e21daSmrg        $ECHO \
1629549e21daSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1630ba6a1819Smrg
1631549e21daSmrgRemove files from the build directory.
1632ba6a1819Smrg
1633549e21daSmrgRM is the name of the program to use to delete files associated with each FILE
1634549e21daSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1635549e21daSmrgto RM.
1636ba6a1819Smrg
1637549e21daSmrgIf FILE is a libtool library, object or program, all the files associated
1638549e21daSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1639549e21daSmrg        ;;
1640ba6a1819Smrg
1641549e21daSmrg      compile)
1642549e21daSmrg      $ECHO \
1643549e21daSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1644ba6a1819Smrg
1645549e21daSmrgCompile a source file into a libtool library object.
1646ba6a1819Smrg
1647549e21daSmrgThis mode accepts the following additional options:
1648ba6a1819Smrg
1649549e21daSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1650549e21daSmrg  -no-suppress      do not suppress compiler output for multiple passes
1651549e21daSmrg  -prefer-pic       try to build PIC objects only
1652549e21daSmrg  -prefer-non-pic   try to build non-PIC objects only
1653549e21daSmrg  -shared           do not build a \`.o' file suitable for static linking
1654549e21daSmrg  -static           only build a \`.o' file suitable for static linking
1655549e21daSmrg  -Wc,FLAG          pass FLAG directly to the compiler
1656ba6a1819Smrg
1657549e21daSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1658549e21daSmrgfrom the given SOURCEFILE.
1659ba6a1819Smrg
1660549e21daSmrgThe output file name is determined by removing the directory component from
1661549e21daSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1662549e21daSmrglibrary object suffix, \`.lo'."
1663549e21daSmrg        ;;
1664ba6a1819Smrg
1665549e21daSmrg      execute)
1666549e21daSmrg        $ECHO \
1667549e21daSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1668ba6a1819Smrg
1669549e21daSmrgAutomatically set library path, then run a program.
1670ba6a1819Smrg
1671549e21daSmrgThis mode accepts the following additional options:
1672ba6a1819Smrg
1673549e21daSmrg  -dlopen FILE      add the directory containing FILE to the library path
1674ba6a1819Smrg
1675549e21daSmrgThis mode sets the library path environment variable according to \`-dlopen'
1676549e21daSmrgflags.
1677ba6a1819Smrg
1678549e21daSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1679549e21daSmrginto their corresponding uninstalled binary, and any of their required library
1680549e21daSmrgdirectories are added to the library path.
1681ba6a1819Smrg
1682549e21daSmrgThen, COMMAND is executed, with ARGS as arguments."
1683549e21daSmrg        ;;
1684ba6a1819Smrg
1685549e21daSmrg      finish)
1686549e21daSmrg        $ECHO \
1687549e21daSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1688ba6a1819Smrg
1689549e21daSmrgComplete the installation of libtool libraries.
1690ba6a1819Smrg
1691549e21daSmrgEach LIBDIR is a directory that contains libtool libraries.
1692ba6a1819Smrg
1693549e21daSmrgThe commands that this mode executes may require superuser privileges.  Use
1694549e21daSmrgthe \`--dry-run' option if you just want to see what would be executed."
1695549e21daSmrg        ;;
1696ba6a1819Smrg
1697549e21daSmrg      install)
1698549e21daSmrg        $ECHO \
1699549e21daSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1700ba6a1819Smrg
1701549e21daSmrgInstall executables or libraries.
1702ba6a1819Smrg
1703549e21daSmrgINSTALL-COMMAND is the installation command.  The first component should be
1704549e21daSmrgeither the \`install' or \`cp' program.
1705ba6a1819Smrg
1706549e21daSmrgThe following components of INSTALL-COMMAND are treated specially:
1707ba6a1819Smrg
1708549e21daSmrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1709ba6a1819Smrg
1710549e21daSmrgThe rest of the components are interpreted as arguments to that command (only
1711549e21daSmrgBSD-compatible install options are recognized)."
1712549e21daSmrg        ;;
1713ba6a1819Smrg
1714549e21daSmrg      link)
1715549e21daSmrg        $ECHO \
1716549e21daSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1717ba6a1819Smrg
1718549e21daSmrgLink object files or libraries together to form another library, or to
1719549e21daSmrgcreate an executable program.
1720ba6a1819Smrg
1721549e21daSmrgLINK-COMMAND is a command using the C compiler that you would use to create
1722549e21daSmrga program from several object files.
1723ba6a1819Smrg
1724549e21daSmrgThe following components of LINK-COMMAND are treated specially:
1725ba6a1819Smrg
1726549e21daSmrg  -all-static       do not do any dynamic linking at all
1727549e21daSmrg  -avoid-version    do not add a version suffix if possible
1728549e21daSmrg  -bindir BINDIR    specify path to binaries directory (for systems where
1729549e21daSmrg                    libraries must be found in the PATH setting at runtime)
1730549e21daSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1731549e21daSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1732549e21daSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1733549e21daSmrg  -export-symbols SYMFILE
1734549e21daSmrg                    try to export only the symbols listed in SYMFILE
1735549e21daSmrg  -export-symbols-regex REGEX
1736549e21daSmrg                    try to export only the symbols matching REGEX
1737549e21daSmrg  -LLIBDIR          search LIBDIR for required installed libraries
1738549e21daSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1739549e21daSmrg  -module           build a library that can dlopened
1740549e21daSmrg  -no-fast-install  disable the fast-install mode
1741549e21daSmrg  -no-install       link a not-installable executable
1742549e21daSmrg  -no-undefined     declare that a library does not refer to external symbols
1743549e21daSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1744549e21daSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1745549e21daSmrg  -precious-files-regex REGEX
1746549e21daSmrg                    don't remove output files matching REGEX
1747549e21daSmrg  -release RELEASE  specify package release information
1748549e21daSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1749549e21daSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1750549e21daSmrg  -shared           only do dynamic linking of libtool libraries
1751549e21daSmrg  -shrext SUFFIX    override the standard shared library file extension
1752549e21daSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1753549e21daSmrg  -static-libtool-libs
1754549e21daSmrg                    do not do any dynamic linking of libtool libraries
1755549e21daSmrg  -version-info CURRENT[:REVISION[:AGE]]
1756549e21daSmrg                    specify library version info [each variable defaults to 0]
1757549e21daSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
1758549e21daSmrg  -Wc,FLAG
1759549e21daSmrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
1760549e21daSmrg  -Wl,FLAG
1761549e21daSmrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
1762549e21daSmrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
1763ba6a1819Smrg
1764549e21daSmrgAll other options (arguments beginning with \`-') are ignored.
1765ba6a1819Smrg
1766549e21daSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1767549e21daSmrgtreated as uninstalled libtool libraries, other files are standard or library
1768549e21daSmrgobject files.
1769ba6a1819Smrg
1770549e21daSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1771549e21daSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1772549e21daSmrgrequired, except when creating a convenience library.
1773ba6a1819Smrg
1774549e21daSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1775549e21daSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
1776ba6a1819Smrg
1777549e21daSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1778549e21daSmrgis created, otherwise an executable program is created."
1779549e21daSmrg        ;;
1780ba6a1819Smrg
1781549e21daSmrg      uninstall)
1782549e21daSmrg        $ECHO \
1783549e21daSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1784ba6a1819Smrg
1785549e21daSmrgRemove libraries from an installation directory.
1786ba6a1819Smrg
1787549e21daSmrgRM is the name of the program to use to delete files associated with each FILE
1788549e21daSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1789549e21daSmrgto RM.
1790ba6a1819Smrg
1791549e21daSmrgIf FILE is a libtool library, all the files associated with it are deleted.
1792549e21daSmrgOtherwise, only FILE itself is deleted using RM."
1793ba6a1819Smrg        ;;
1794ba6a1819Smrg
1795549e21daSmrg      *)
1796549e21daSmrg        func_fatal_help "invalid operation mode \`$mode'"
1797549e21daSmrg        ;;
1798549e21daSmrg    esac
1799ba6a1819Smrg
1800549e21daSmrg    echo
1801549e21daSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
1802549e21daSmrg}
1803ba6a1819Smrg
1804549e21daSmrg# Now that we've collected a possible --mode arg, show help if necessary
1805549e21daSmrgif $opt_help; then
1806549e21daSmrg  if test "$opt_help" = :; then
1807549e21daSmrg    func_mode_help
1808549e21daSmrg  else
1809549e21daSmrg    {
1810549e21daSmrg      func_help noexit
1811549e21daSmrg      for mode in compile link execute install finish uninstall clean; do
1812549e21daSmrg	func_mode_help
1813549e21daSmrg      done
1814549e21daSmrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
1815549e21daSmrg    {
1816549e21daSmrg      func_help noexit
1817549e21daSmrg      for mode in compile link execute install finish uninstall clean; do
1818549e21daSmrg	echo
1819549e21daSmrg	func_mode_help
1820549e21daSmrg      done
1821549e21daSmrg    } |
1822549e21daSmrg    sed '1d
1823549e21daSmrg      /^When reporting/,/^Report/{
1824549e21daSmrg	H
1825549e21daSmrg	d
1826549e21daSmrg      }
1827549e21daSmrg      $x
1828549e21daSmrg      /information about other modes/d
1829549e21daSmrg      /more detailed .*MODE/d
1830549e21daSmrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
1831549e21daSmrg  fi
1832549e21daSmrg  exit $?
1833549e21daSmrgfi
1834ba6a1819Smrg
1835ba6a1819Smrg
1836549e21daSmrg# func_mode_execute arg...
1837549e21daSmrgfunc_mode_execute ()
1838549e21daSmrg{
1839549e21daSmrg    $opt_debug
1840549e21daSmrg    # The first argument is the command name.
1841549e21daSmrg    cmd="$nonopt"
1842549e21daSmrg    test -z "$cmd" && \
1843549e21daSmrg      func_fatal_help "you must specify a COMMAND"
1844ba6a1819Smrg
1845549e21daSmrg    # Handle -dlopen flags immediately.
1846549e21daSmrg    for file in $execute_dlfiles; do
1847549e21daSmrg      test -f "$file" \
1848549e21daSmrg	|| func_fatal_help "\`$file' is not a file"
1849ba6a1819Smrg
1850549e21daSmrg      dir=
1851549e21daSmrg      case $file in
1852549e21daSmrg      *.la)
1853549e21daSmrg	# Check to see that this really is a libtool archive.
1854549e21daSmrg	func_lalib_unsafe_p "$file" \
1855549e21daSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
1856ba6a1819Smrg
1857549e21daSmrg	# Read the libtool library.
1858549e21daSmrg	dlname=
1859549e21daSmrg	library_names=
1860549e21daSmrg	func_source "$file"
1861ba6a1819Smrg
1862549e21daSmrg	# Skip this library if it cannot be dlopened.
1863549e21daSmrg	if test -z "$dlname"; then
1864549e21daSmrg	  # Warn if it was a shared library.
1865549e21daSmrg	  test -n "$library_names" && \
1866549e21daSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1867549e21daSmrg	  continue
1868549e21daSmrg	fi
1869ba6a1819Smrg
1870549e21daSmrg	func_dirname "$file" "" "."
1871549e21daSmrg	dir="$func_dirname_result"
1872ba6a1819Smrg
1873549e21daSmrg	if test -f "$dir/$objdir/$dlname"; then
1874549e21daSmrg	  dir="$dir/$objdir"
1875549e21daSmrg	else
1876549e21daSmrg	  if test ! -f "$dir/$dlname"; then
1877549e21daSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1878549e21daSmrg	  fi
1879549e21daSmrg	fi
1880ba6a1819Smrg	;;
1881ba6a1819Smrg
1882549e21daSmrg      *.lo)
1883549e21daSmrg	# Just add the directory containing the .lo file.
1884549e21daSmrg	func_dirname "$file" "" "."
1885549e21daSmrg	dir="$func_dirname_result"
1886ba6a1819Smrg	;;
1887ba6a1819Smrg
1888549e21daSmrg      *)
1889549e21daSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1890ba6a1819Smrg	continue
1891ba6a1819Smrg	;;
1892549e21daSmrg      esac
1893ba6a1819Smrg
1894549e21daSmrg      # Get the absolute pathname.
1895549e21daSmrg      absdir=`cd "$dir" && pwd`
1896549e21daSmrg      test -n "$absdir" && dir="$absdir"
1897ba6a1819Smrg
1898549e21daSmrg      # Now add the directory to shlibpath_var.
1899549e21daSmrg      if eval "test -z \"\$$shlibpath_var\""; then
1900549e21daSmrg	eval "$shlibpath_var=\"\$dir\""
1901549e21daSmrg      else
1902549e21daSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1903549e21daSmrg      fi
1904549e21daSmrg    done
1905ba6a1819Smrg
1906549e21daSmrg    # This variable tells wrapper scripts just to set shlibpath_var
1907549e21daSmrg    # rather than running their programs.
1908549e21daSmrg    libtool_execute_magic="$magic"
1909ba6a1819Smrg
1910549e21daSmrg    # Check if any of the arguments is a wrapper script.
1911549e21daSmrg    args=
1912549e21daSmrg    for file
1913549e21daSmrg    do
1914549e21daSmrg      case $file in
1915549e21daSmrg      -* | *.la | *.lo ) ;;
1916549e21daSmrg      *)
1917549e21daSmrg	# Do a test to see if this is really a libtool program.
1918549e21daSmrg	if func_ltwrapper_script_p "$file"; then
1919549e21daSmrg	  func_source "$file"
1920549e21daSmrg	  # Transform arg to wrapped name.
1921549e21daSmrg	  file="$progdir/$program"
1922549e21daSmrg	elif func_ltwrapper_executable_p "$file"; then
1923549e21daSmrg	  func_ltwrapper_scriptname "$file"
1924549e21daSmrg	  func_source "$func_ltwrapper_scriptname_result"
1925549e21daSmrg	  # Transform arg to wrapped name.
1926549e21daSmrg	  file="$progdir/$program"
1927549e21daSmrg	fi
1928ba6a1819Smrg	;;
1929549e21daSmrg      esac
1930549e21daSmrg      # Quote arguments (to preserve shell metacharacters).
1931549e21daSmrg      func_quote_for_eval "$file"
1932549e21daSmrg      args="$args $func_quote_for_eval_result"
1933549e21daSmrg    done
1934ba6a1819Smrg
1935549e21daSmrg    if test "X$opt_dry_run" = Xfalse; then
1936549e21daSmrg      if test -n "$shlibpath_var"; then
1937549e21daSmrg	# Export the shlibpath_var.
1938549e21daSmrg	eval "export $shlibpath_var"
1939549e21daSmrg      fi
1940ba6a1819Smrg
1941549e21daSmrg      # Restore saved environment variables
1942549e21daSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1943549e21daSmrg      do
1944549e21daSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1945549e21daSmrg                $lt_var=\$save_$lt_var; export $lt_var
1946549e21daSmrg	      else
1947549e21daSmrg		$lt_unset $lt_var
1948549e21daSmrg	      fi"
1949549e21daSmrg      done
1950ba6a1819Smrg
1951549e21daSmrg      # Now prepare to actually exec the command.
1952549e21daSmrg      exec_cmd="\$cmd$args"
1953549e21daSmrg    else
1954549e21daSmrg      # Display what would be done.
1955549e21daSmrg      if test -n "$shlibpath_var"; then
1956549e21daSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1957549e21daSmrg	echo "export $shlibpath_var"
1958549e21daSmrg      fi
1959549e21daSmrg      $ECHO "$cmd$args"
1960549e21daSmrg      exit $EXIT_SUCCESS
1961549e21daSmrg    fi
1962549e21daSmrg}
1963ba6a1819Smrg
1964549e21daSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
1965ba6a1819Smrg
1966ba6a1819Smrg
1967549e21daSmrg# func_mode_finish arg...
1968549e21daSmrgfunc_mode_finish ()
1969549e21daSmrg{
1970549e21daSmrg    $opt_debug
1971549e21daSmrg    libdirs="$nonopt"
1972549e21daSmrg    admincmds=
1973ba6a1819Smrg
1974549e21daSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1975549e21daSmrg      for dir
1976549e21daSmrg      do
1977549e21daSmrg	libdirs="$libdirs $dir"
1978549e21daSmrg      done
1979ba6a1819Smrg
1980549e21daSmrg      for libdir in $libdirs; do
1981549e21daSmrg	if test -n "$finish_cmds"; then
1982549e21daSmrg	  # Do each command in the finish commands.
1983549e21daSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1984549e21daSmrg'"$cmd"'"'
1985549e21daSmrg	fi
1986549e21daSmrg	if test -n "$finish_eval"; then
1987549e21daSmrg	  # Do the single finish_eval.
1988549e21daSmrg	  eval cmds=\"$finish_eval\"
1989549e21daSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1990549e21daSmrg       $cmds"
1991549e21daSmrg	fi
1992549e21daSmrg      done
1993549e21daSmrg    fi
1994ba6a1819Smrg
1995549e21daSmrg    # Exit here if they wanted silent mode.
1996549e21daSmrg    $opt_silent && exit $EXIT_SUCCESS
1997ba6a1819Smrg
1998549e21daSmrg    echo "----------------------------------------------------------------------"
1999549e21daSmrg    echo "Libraries have been installed in:"
2000549e21daSmrg    for libdir in $libdirs; do
2001549e21daSmrg      $ECHO "   $libdir"
2002549e21daSmrg    done
2003549e21daSmrg    echo
2004549e21daSmrg    echo "If you ever happen to want to link against installed libraries"
2005549e21daSmrg    echo "in a given directory, LIBDIR, you must either use libtool, and"
2006549e21daSmrg    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2007549e21daSmrg    echo "flag during linking and do at least one of the following:"
2008549e21daSmrg    if test -n "$shlibpath_var"; then
2009549e21daSmrg      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2010549e21daSmrg      echo "     during execution"
2011549e21daSmrg    fi
2012549e21daSmrg    if test -n "$runpath_var"; then
2013549e21daSmrg      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2014549e21daSmrg      echo "     during linking"
2015549e21daSmrg    fi
2016549e21daSmrg    if test -n "$hardcode_libdir_flag_spec"; then
2017549e21daSmrg      libdir=LIBDIR
2018549e21daSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
2019ba6a1819Smrg
2020549e21daSmrg      $ECHO "   - use the \`$flag' linker flag"
2021549e21daSmrg    fi
2022549e21daSmrg    if test -n "$admincmds"; then
2023549e21daSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
2024549e21daSmrg    fi
2025549e21daSmrg    if test -f /etc/ld.so.conf; then
2026549e21daSmrg      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2027549e21daSmrg    fi
2028549e21daSmrg    echo
2029ba6a1819Smrg
2030549e21daSmrg    echo "See any operating system documentation about shared libraries for"
2031549e21daSmrg    case $host in
2032549e21daSmrg      solaris2.[6789]|solaris2.1[0-9])
2033549e21daSmrg        echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2034549e21daSmrg	echo "pages."
2035549e21daSmrg	;;
2036549e21daSmrg      *)
2037549e21daSmrg        echo "more information, such as the ld(1) and ld.so(8) manual pages."
2038549e21daSmrg        ;;
2039549e21daSmrg    esac
2040549e21daSmrg    echo "----------------------------------------------------------------------"
2041549e21daSmrg    exit $EXIT_SUCCESS
2042549e21daSmrg}
2043ba6a1819Smrg
2044549e21daSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
2045ba6a1819Smrg
2046ba6a1819Smrg
2047549e21daSmrg# func_mode_install arg...
2048549e21daSmrgfunc_mode_install ()
2049549e21daSmrg{
2050549e21daSmrg    $opt_debug
2051549e21daSmrg    # There may be an optional sh(1) argument at the beginning of
2052549e21daSmrg    # install_prog (especially on Windows NT).
2053549e21daSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2054549e21daSmrg       # Allow the use of GNU shtool's install command.
2055549e21daSmrg       case $nonopt in *shtool*) :;; *) false;; esac; then
2056549e21daSmrg      # Aesthetically quote it.
2057549e21daSmrg      func_quote_for_eval "$nonopt"
2058549e21daSmrg      install_prog="$func_quote_for_eval_result "
2059549e21daSmrg      arg=$1
2060549e21daSmrg      shift
2061549e21daSmrg    else
2062549e21daSmrg      install_prog=
2063549e21daSmrg      arg=$nonopt
2064549e21daSmrg    fi
2065ba6a1819Smrg
2066549e21daSmrg    # The real first argument should be the name of the installation program.
2067549e21daSmrg    # Aesthetically quote it.
2068549e21daSmrg    func_quote_for_eval "$arg"
2069549e21daSmrg    install_prog="$install_prog$func_quote_for_eval_result"
2070549e21daSmrg    install_shared_prog=$install_prog
2071549e21daSmrg    case " $install_prog " in
2072549e21daSmrg      *[\\\ /]cp\ *) install_cp=: ;;
2073549e21daSmrg      *) install_cp=false ;;
2074549e21daSmrg    esac
2075ba6a1819Smrg
2076549e21daSmrg    # We need to accept at least all the BSD install flags.
2077549e21daSmrg    dest=
2078549e21daSmrg    files=
2079549e21daSmrg    opts=
2080549e21daSmrg    prev=
2081549e21daSmrg    install_type=
2082549e21daSmrg    isdir=no
2083549e21daSmrg    stripme=
2084549e21daSmrg    no_mode=:
2085549e21daSmrg    for arg
2086549e21daSmrg    do
2087549e21daSmrg      arg2=
2088549e21daSmrg      if test -n "$dest"; then
2089549e21daSmrg	files="$files $dest"
2090549e21daSmrg	dest=$arg
2091549e21daSmrg	continue
2092549e21daSmrg      fi
2093ba6a1819Smrg
2094549e21daSmrg      case $arg in
2095549e21daSmrg      -d) isdir=yes ;;
2096549e21daSmrg      -f)
2097549e21daSmrg	if $install_cp; then :; else
2098549e21daSmrg	  prev=$arg
2099ba6a1819Smrg	fi
2100549e21daSmrg	;;
2101549e21daSmrg      -g | -m | -o)
2102549e21daSmrg	prev=$arg
2103549e21daSmrg	;;
2104549e21daSmrg      -s)
2105549e21daSmrg	stripme=" -s"
2106ba6a1819Smrg	continue
2107ba6a1819Smrg	;;
2108549e21daSmrg      -*)
2109549e21daSmrg	;;
2110ba6a1819Smrg      *)
2111549e21daSmrg	# If the previous option needed an argument, then skip it.
2112549e21daSmrg	if test -n "$prev"; then
2113549e21daSmrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2114549e21daSmrg	    arg2=$install_override_mode
2115549e21daSmrg	    no_mode=false
2116549e21daSmrg	  fi
2117549e21daSmrg	  prev=
2118549e21daSmrg	else
2119549e21daSmrg	  dest=$arg
2120549e21daSmrg	  continue
2121549e21daSmrg	fi
2122ba6a1819Smrg	;;
2123549e21daSmrg      esac
2124ba6a1819Smrg
2125549e21daSmrg      # Aesthetically quote the argument.
2126549e21daSmrg      func_quote_for_eval "$arg"
2127549e21daSmrg      install_prog="$install_prog $func_quote_for_eval_result"
2128549e21daSmrg      if test -n "$arg2"; then
2129549e21daSmrg	func_quote_for_eval "$arg2"
2130ba6a1819Smrg      fi
2131549e21daSmrg      install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
2132549e21daSmrg    done
2133ba6a1819Smrg
2134549e21daSmrg    test -z "$install_prog" && \
2135549e21daSmrg      func_fatal_help "you must specify an install program"
2136ba6a1819Smrg
2137549e21daSmrg    test -n "$prev" && \
2138549e21daSmrg      func_fatal_help "the \`$prev' option requires an argument"
2139ba6a1819Smrg
2140549e21daSmrg    if test -n "$install_override_mode" && $no_mode; then
2141549e21daSmrg      if $install_cp; then :; else
2142549e21daSmrg	func_quote_for_eval "$install_override_mode"
2143549e21daSmrg	install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
2144549e21daSmrg      fi
2145ba6a1819Smrg    fi
2146ba6a1819Smrg
2147549e21daSmrg    if test -z "$files"; then
2148549e21daSmrg      if test -z "$dest"; then
2149549e21daSmrg	func_fatal_help "no file or destination specified"
2150549e21daSmrg      else
2151549e21daSmrg	func_fatal_help "you must specify a destination"
2152ba6a1819Smrg      fi
2153ba6a1819Smrg    fi
2154ba6a1819Smrg
2155549e21daSmrg    # Strip any trailing slash from the destination.
2156549e21daSmrg    func_stripname '' '/' "$dest"
2157549e21daSmrg    dest=$func_stripname_result
2158ba6a1819Smrg
2159549e21daSmrg    # Check to see that the destination is a directory.
2160549e21daSmrg    test -d "$dest" && isdir=yes
2161549e21daSmrg    if test "$isdir" = yes; then
2162549e21daSmrg      destdir="$dest"
2163549e21daSmrg      destname=
2164549e21daSmrg    else
2165549e21daSmrg      func_dirname_and_basename "$dest" "" "."
2166549e21daSmrg      destdir="$func_dirname_result"
2167549e21daSmrg      destname="$func_basename_result"
2168549e21daSmrg
2169549e21daSmrg      # Not a directory, so check to see that there is only one file specified.
2170549e21daSmrg      set dummy $files; shift
2171549e21daSmrg      test "$#" -gt 1 && \
2172549e21daSmrg	func_fatal_help "\`$dest' is not a directory"
2173549e21daSmrg    fi
2174549e21daSmrg    case $destdir in
2175549e21daSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
2176ba6a1819Smrg    *)
2177549e21daSmrg      for file in $files; do
2178549e21daSmrg	case $file in
2179549e21daSmrg	*.lo) ;;
2180549e21daSmrg	*)
2181549e21daSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
2182549e21daSmrg	  ;;
2183549e21daSmrg	esac
2184549e21daSmrg      done
2185ba6a1819Smrg      ;;
2186ba6a1819Smrg    esac
2187ba6a1819Smrg
2188549e21daSmrg    # This variable tells wrapper scripts just to set variables rather
2189549e21daSmrg    # than running their programs.
2190549e21daSmrg    libtool_install_magic="$magic"
2191ba6a1819Smrg
2192549e21daSmrg    staticlibs=
2193549e21daSmrg    future_libdirs=
2194549e21daSmrg    current_libdirs=
2195549e21daSmrg    for file in $files; do
2196ba6a1819Smrg
2197549e21daSmrg      # Do each installation.
2198549e21daSmrg      case $file in
2199549e21daSmrg      *.$libext)
2200549e21daSmrg	# Do the static libraries later.
2201549e21daSmrg	staticlibs="$staticlibs $file"
2202549e21daSmrg	;;
2203ba6a1819Smrg
2204549e21daSmrg      *.la)
2205549e21daSmrg	# Check to see that this really is a libtool archive.
2206549e21daSmrg	func_lalib_unsafe_p "$file" \
2207549e21daSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
2208549e21daSmrg
2209549e21daSmrg	library_names=
2210549e21daSmrg	old_library=
2211549e21daSmrg	relink_command=
2212549e21daSmrg	func_source "$file"
2213549e21daSmrg
2214549e21daSmrg	# Add the libdir to current_libdirs if it is the destination.
2215549e21daSmrg	if test "X$destdir" = "X$libdir"; then
2216549e21daSmrg	  case "$current_libdirs " in
2217549e21daSmrg	  *" $libdir "*) ;;
2218549e21daSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
2219ba6a1819Smrg	  esac
2220549e21daSmrg	else
2221549e21daSmrg	  # Note the libdir as a future libdir.
2222549e21daSmrg	  case "$future_libdirs " in
2223549e21daSmrg	  *" $libdir "*) ;;
2224549e21daSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2225549e21daSmrg	  esac
2226549e21daSmrg	fi
2227549e21daSmrg
2228549e21daSmrg	func_dirname "$file" "/" ""
2229549e21daSmrg	dir="$func_dirname_result"
2230549e21daSmrg	dir="$dir$objdir"
2231549e21daSmrg
2232549e21daSmrg	if test -n "$relink_command"; then
2233549e21daSmrg	  # Determine the prefix the user has applied to our future dir.
2234549e21daSmrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2235549e21daSmrg
2236549e21daSmrg	  # Don't allow the user to place us outside of our expected
2237549e21daSmrg	  # location b/c this prevents finding dependent libraries that
2238549e21daSmrg	  # are installed to the same prefix.
2239549e21daSmrg	  # At present, this check doesn't affect windows .dll's that
2240549e21daSmrg	  # are installed into $libdir/../bin (currently, that works fine)
2241549e21daSmrg	  # but it's something to keep an eye on.
2242549e21daSmrg	  test "$inst_prefix_dir" = "$destdir" && \
2243549e21daSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2244549e21daSmrg
2245549e21daSmrg	  if test -n "$inst_prefix_dir"; then
2246549e21daSmrg	    # Stick the inst_prefix_dir data into the link command.
2247549e21daSmrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2248ba6a1819Smrg	  else
2249549e21daSmrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2250ba6a1819Smrg	  fi
2251549e21daSmrg
2252549e21daSmrg	  func_warning "relinking \`$file'"
2253549e21daSmrg	  func_show_eval "$relink_command" \
2254549e21daSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2255549e21daSmrg	fi
2256549e21daSmrg
2257549e21daSmrg	# See the names of the shared library.
2258549e21daSmrg	set dummy $library_names; shift
2259549e21daSmrg	if test -n "$1"; then
2260549e21daSmrg	  realname="$1"
2261549e21daSmrg	  shift
2262549e21daSmrg
2263549e21daSmrg	  srcname="$realname"
2264549e21daSmrg	  test -n "$relink_command" && srcname="$realname"T
2265549e21daSmrg
2266549e21daSmrg	  # Install the shared library and build the symlinks.
2267549e21daSmrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2268549e21daSmrg	      'exit $?'
2269549e21daSmrg	  tstripme="$stripme"
2270549e21daSmrg	  case $host_os in
2271549e21daSmrg	  cygwin* | mingw* | pw32* | cegcc*)
2272549e21daSmrg	    case $realname in
2273549e21daSmrg	    *.dll.a)
2274549e21daSmrg	      tstripme=""
2275549e21daSmrg	      ;;
2276549e21daSmrg	    esac
2277549e21daSmrg	    ;;
2278549e21daSmrg	  esac
2279549e21daSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
2280549e21daSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2281ba6a1819Smrg	  fi
2282549e21daSmrg
2283549e21daSmrg	  if test "$#" -gt 0; then
2284549e21daSmrg	    # Delete the old symlinks, and create new ones.
2285549e21daSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2286549e21daSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2287549e21daSmrg	    # so we also need to try rm && ln -s.
2288549e21daSmrg	    for linkname
2289549e21daSmrg	    do
2290549e21daSmrg	      test "$linkname" != "$realname" \
2291549e21daSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2292ba6a1819Smrg	    done
2293ba6a1819Smrg	  fi
2294549e21daSmrg
2295549e21daSmrg	  # Do each command in the postinstall commands.
2296549e21daSmrg	  lib="$destdir/$realname"
2297549e21daSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
2298549e21daSmrg	fi
2299549e21daSmrg
2300549e21daSmrg	# Install the pseudo-library for information purposes.
2301549e21daSmrg	func_basename "$file"
2302549e21daSmrg	name="$func_basename_result"
2303549e21daSmrg	instname="$dir/$name"i
2304549e21daSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2305549e21daSmrg
2306549e21daSmrg	# Maybe install the static library, too.
2307549e21daSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2308549e21daSmrg	;;
2309549e21daSmrg
2310549e21daSmrg      *.lo)
2311549e21daSmrg	# Install (i.e. copy) a libtool object.
2312549e21daSmrg
2313549e21daSmrg	# Figure out destination file name, if it wasn't already specified.
2314549e21daSmrg	if test -n "$destname"; then
2315549e21daSmrg	  destfile="$destdir/$destname"
2316549e21daSmrg	else
2317549e21daSmrg	  func_basename "$file"
2318549e21daSmrg	  destfile="$func_basename_result"
2319549e21daSmrg	  destfile="$destdir/$destfile"
2320549e21daSmrg	fi
2321549e21daSmrg
2322549e21daSmrg	# Deduce the name of the destination old-style object file.
2323549e21daSmrg	case $destfile in
2324549e21daSmrg	*.lo)
2325549e21daSmrg	  func_lo2o "$destfile"
2326549e21daSmrg	  staticdest=$func_lo2o_result
2327ba6a1819Smrg	  ;;
2328549e21daSmrg	*.$objext)
2329549e21daSmrg	  staticdest="$destfile"
2330549e21daSmrg	  destfile=
2331ba6a1819Smrg	  ;;
2332549e21daSmrg	*)
2333549e21daSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2334ba6a1819Smrg	  ;;
2335549e21daSmrg	esac
2336549e21daSmrg
2337549e21daSmrg	# Install the libtool object if requested.
2338549e21daSmrg	test -n "$destfile" && \
2339549e21daSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2340549e21daSmrg
2341549e21daSmrg	# Install the old object if enabled.
2342549e21daSmrg	if test "$build_old_libs" = yes; then
2343549e21daSmrg	  # Deduce the name of the old-style object file.
2344549e21daSmrg	  func_lo2o "$file"
2345549e21daSmrg	  staticobj=$func_lo2o_result
2346549e21daSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2347ba6a1819Smrg	fi
2348549e21daSmrg	exit $EXIT_SUCCESS
2349549e21daSmrg	;;
2350ba6a1819Smrg
2351549e21daSmrg      *)
2352549e21daSmrg	# Figure out destination file name, if it wasn't already specified.
2353549e21daSmrg	if test -n "$destname"; then
2354549e21daSmrg	  destfile="$destdir/$destname"
2355ba6a1819Smrg	else
2356549e21daSmrg	  func_basename "$file"
2357549e21daSmrg	  destfile="$func_basename_result"
2358549e21daSmrg	  destfile="$destdir/$destfile"
2359ba6a1819Smrg	fi
2360ba6a1819Smrg
2361549e21daSmrg	# If the file is missing, and there is a .exe on the end, strip it
2362549e21daSmrg	# because it is most likely a libtool script we actually want to
2363549e21daSmrg	# install
2364549e21daSmrg	stripped_ext=""
2365549e21daSmrg	case $file in
2366549e21daSmrg	  *.exe)
2367549e21daSmrg	    if test ! -f "$file"; then
2368549e21daSmrg	      func_stripname '' '.exe' "$file"
2369549e21daSmrg	      file=$func_stripname_result
2370549e21daSmrg	      stripped_ext=".exe"
2371549e21daSmrg	    fi
2372549e21daSmrg	    ;;
2373549e21daSmrg	esac
2374ba6a1819Smrg
2375549e21daSmrg	# Do a test to see if this is really a libtool program.
2376549e21daSmrg	case $host in
2377549e21daSmrg	*cygwin* | *mingw*)
2378549e21daSmrg	    if func_ltwrapper_executable_p "$file"; then
2379549e21daSmrg	      func_ltwrapper_scriptname "$file"
2380549e21daSmrg	      wrapper=$func_ltwrapper_scriptname_result
2381549e21daSmrg	    else
2382549e21daSmrg	      func_stripname '' '.exe' "$file"
2383549e21daSmrg	      wrapper=$func_stripname_result
2384549e21daSmrg	    fi
2385549e21daSmrg	    ;;
2386549e21daSmrg	*)
2387549e21daSmrg	    wrapper=$file
2388549e21daSmrg	    ;;
2389ba6a1819Smrg	esac
2390549e21daSmrg	if func_ltwrapper_script_p "$wrapper"; then
2391549e21daSmrg	  notinst_deplibs=
2392549e21daSmrg	  relink_command=
2393ba6a1819Smrg
2394549e21daSmrg	  func_source "$wrapper"
2395ba6a1819Smrg
2396549e21daSmrg	  # Check the variables that should have been set.
2397549e21daSmrg	  test -z "$generated_by_libtool_version" && \
2398549e21daSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2399549e21daSmrg
2400549e21daSmrg	  finalize=yes
2401549e21daSmrg	  for lib in $notinst_deplibs; do
2402549e21daSmrg	    # Check to see that each library is installed.
2403549e21daSmrg	    libdir=
2404549e21daSmrg	    if test -f "$lib"; then
2405549e21daSmrg	      func_source "$lib"
2406ba6a1819Smrg	    fi
2407549e21daSmrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
2408549e21daSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2409549e21daSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2410549e21daSmrg	      finalize=no
2411549e21daSmrg	    fi
2412549e21daSmrg	  done
2413ba6a1819Smrg
2414549e21daSmrg	  relink_command=
2415549e21daSmrg	  func_source "$wrapper"
2416ba6a1819Smrg
2417549e21daSmrg	  outputname=
2418549e21daSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2419549e21daSmrg	    $opt_dry_run || {
2420549e21daSmrg	      if test "$finalize" = yes; then
2421549e21daSmrg	        tmpdir=`func_mktempdir`
2422549e21daSmrg		func_basename "$file$stripped_ext"
2423549e21daSmrg		file="$func_basename_result"
2424549e21daSmrg	        outputname="$tmpdir/$file"
2425549e21daSmrg	        # Replace the output file specification.
2426549e21daSmrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
2427549e21daSmrg
2428549e21daSmrg	        $opt_silent || {
2429549e21daSmrg	          func_quote_for_expand "$relink_command"
2430549e21daSmrg		  eval "func_echo $func_quote_for_expand_result"
2431549e21daSmrg	        }
2432549e21daSmrg	        if eval "$relink_command"; then :
2433549e21daSmrg	          else
2434549e21daSmrg		  func_error "error: relink \`$file' with the above command before installing it"
2435549e21daSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
2436549e21daSmrg		  continue
2437549e21daSmrg	        fi
2438549e21daSmrg	        file="$outputname"
2439549e21daSmrg	      else
2440549e21daSmrg	        func_warning "cannot relink \`$file'"
2441549e21daSmrg	      fi
2442549e21daSmrg	    }
2443ba6a1819Smrg	  else
2444549e21daSmrg	    # Install the binary that we compiled earlier.
2445549e21daSmrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
2446ba6a1819Smrg	  fi
2447549e21daSmrg	fi
2448ba6a1819Smrg
2449549e21daSmrg	# remove .exe since cygwin /usr/bin/install will append another
2450549e21daSmrg	# one anyway
2451549e21daSmrg	case $install_prog,$host in
2452549e21daSmrg	*/usr/bin/install*,*cygwin*)
2453549e21daSmrg	  case $file:$destfile in
2454549e21daSmrg	  *.exe:*.exe)
2455549e21daSmrg	    # this is ok
2456549e21daSmrg	    ;;
2457549e21daSmrg	  *.exe:*)
2458549e21daSmrg	    destfile=$destfile.exe
2459549e21daSmrg	    ;;
2460549e21daSmrg	  *:*.exe)
2461549e21daSmrg	    func_stripname '' '.exe' "$destfile"
2462549e21daSmrg	    destfile=$func_stripname_result
2463549e21daSmrg	    ;;
2464549e21daSmrg	  esac
2465ba6a1819Smrg	  ;;
2466ba6a1819Smrg	esac
2467549e21daSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2468549e21daSmrg	$opt_dry_run || if test -n "$outputname"; then
2469549e21daSmrg	  ${RM}r "$tmpdir"
2470549e21daSmrg	fi
2471549e21daSmrg	;;
2472549e21daSmrg      esac
2473549e21daSmrg    done
2474ba6a1819Smrg
2475549e21daSmrg    for file in $staticlibs; do
2476549e21daSmrg      func_basename "$file"
2477549e21daSmrg      name="$func_basename_result"
2478ba6a1819Smrg
2479549e21daSmrg      # Set up the ranlib parameters.
2480549e21daSmrg      oldlib="$destdir/$name"
2481ba6a1819Smrg
2482549e21daSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2483ba6a1819Smrg
2484549e21daSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
2485549e21daSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2486549e21daSmrg      fi
2487ba6a1819Smrg
2488549e21daSmrg      # Do each command in the postinstall commands.
2489549e21daSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2490549e21daSmrg    done
2491ba6a1819Smrg
2492549e21daSmrg    test -n "$future_libdirs" && \
2493549e21daSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
2494ba6a1819Smrg
2495549e21daSmrg    if test -n "$current_libdirs"; then
2496549e21daSmrg      # Maybe just do a dry run.
2497549e21daSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2498549e21daSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2499549e21daSmrg    else
2500549e21daSmrg      exit $EXIT_SUCCESS
2501549e21daSmrg    fi
2502549e21daSmrg}
2503ba6a1819Smrg
2504549e21daSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
2505ba6a1819Smrg
2506ba6a1819Smrg
2507549e21daSmrg# func_generate_dlsyms outputname originator pic_p
2508549e21daSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2509549e21daSmrg# a dlpreopen symbol table.
2510549e21daSmrgfunc_generate_dlsyms ()
2511549e21daSmrg{
2512549e21daSmrg    $opt_debug
2513549e21daSmrg    my_outputname="$1"
2514549e21daSmrg    my_originator="$2"
2515549e21daSmrg    my_pic_p="${3-no}"
2516549e21daSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2517549e21daSmrg    my_dlsyms=
2518549e21daSmrg
2519549e21daSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2520549e21daSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2521549e21daSmrg	my_dlsyms="${my_outputname}S.c"
2522549e21daSmrg      else
2523549e21daSmrg	func_error "not configured to extract global symbols from dlpreopened files"
2524549e21daSmrg      fi
2525549e21daSmrg    fi
2526ba6a1819Smrg
2527549e21daSmrg    if test -n "$my_dlsyms"; then
2528549e21daSmrg      case $my_dlsyms in
2529549e21daSmrg      "") ;;
2530549e21daSmrg      *.c)
2531549e21daSmrg	# Discover the nlist of each of the dlfiles.
2532549e21daSmrg	nlist="$output_objdir/${my_outputname}.nm"
2533549e21daSmrg
2534549e21daSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2535549e21daSmrg
2536549e21daSmrg	# Parse the name list into a source file.
2537549e21daSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
2538549e21daSmrg
2539549e21daSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2540549e21daSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2541549e21daSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2542549e21daSmrg
2543549e21daSmrg#ifdef __cplusplus
2544549e21daSmrgextern \"C\" {
2545549e21daSmrg#endif
2546549e21daSmrg
2547549e21daSmrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
2548549e21daSmrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
2549549e21daSmrg#endif
2550549e21daSmrg
2551549e21daSmrg/* External symbol declarations for the compiler. */\
2552549e21daSmrg"
2553549e21daSmrg
2554549e21daSmrg	if test "$dlself" = yes; then
2555549e21daSmrg	  func_verbose "generating symbol list for \`$output'"
2556549e21daSmrg
2557549e21daSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2558549e21daSmrg
2559549e21daSmrg	  # Add our own program objects to the symbol list.
2560549e21daSmrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
2561549e21daSmrg	  for progfile in $progfiles; do
2562549e21daSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
2563549e21daSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2564549e21daSmrg	  done
2565549e21daSmrg
2566549e21daSmrg	  if test -n "$exclude_expsyms"; then
2567549e21daSmrg	    $opt_dry_run || {
2568549e21daSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2569549e21daSmrg	      eval '$MV "$nlist"T "$nlist"'
2570549e21daSmrg	    }
2571ba6a1819Smrg	  fi
2572ba6a1819Smrg
2573549e21daSmrg	  if test -n "$export_symbols_regex"; then
2574549e21daSmrg	    $opt_dry_run || {
2575549e21daSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2576549e21daSmrg	      eval '$MV "$nlist"T "$nlist"'
2577549e21daSmrg	    }
2578ba6a1819Smrg	  fi
2579549e21daSmrg
2580549e21daSmrg	  # Prepare the list of exported symbols
2581549e21daSmrg	  if test -z "$export_symbols"; then
2582549e21daSmrg	    export_symbols="$output_objdir/$outputname.exp"
2583549e21daSmrg	    $opt_dry_run || {
2584549e21daSmrg	      $RM $export_symbols
2585549e21daSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2586549e21daSmrg	      case $host in
2587549e21daSmrg	      *cygwin* | *mingw* | *cegcc* )
2588549e21daSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2589549e21daSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2590549e21daSmrg	        ;;
2591ba6a1819Smrg	      esac
2592549e21daSmrg	    }
2593549e21daSmrg	  else
2594549e21daSmrg	    $opt_dry_run || {
2595549e21daSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2596549e21daSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2597549e21daSmrg	      eval '$MV "$nlist"T "$nlist"'
2598549e21daSmrg	      case $host in
2599549e21daSmrg	        *cygwin* | *mingw* | *cegcc* )
2600549e21daSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2601549e21daSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2602549e21daSmrg	          ;;
2603ba6a1819Smrg	      esac
2604549e21daSmrg	    }
2605ba6a1819Smrg	  fi
2606549e21daSmrg	fi
2607ba6a1819Smrg
2608549e21daSmrg	for dlprefile in $dlprefiles; do
2609549e21daSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2610549e21daSmrg	  func_basename "$dlprefile"
2611549e21daSmrg	  name="$func_basename_result"
2612549e21daSmrg	  $opt_dry_run || {
2613549e21daSmrg	    eval '$ECHO ": $name " >> "$nlist"'
2614549e21daSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2615549e21daSmrg	  }
2616549e21daSmrg	done
2617ba6a1819Smrg
2618549e21daSmrg	$opt_dry_run || {
2619549e21daSmrg	  # Make sure we have at least an empty file.
2620549e21daSmrg	  test -f "$nlist" || : > "$nlist"
2621ba6a1819Smrg
2622549e21daSmrg	  if test -n "$exclude_expsyms"; then
2623549e21daSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2624549e21daSmrg	    $MV "$nlist"T "$nlist"
2625ba6a1819Smrg	  fi
2626ba6a1819Smrg
2627549e21daSmrg	  # Try sorting and uniquifying the output.
2628549e21daSmrg	  if $GREP -v "^: " < "$nlist" |
2629549e21daSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2630549e21daSmrg		sort -k 3
2631ba6a1819Smrg	      else
2632549e21daSmrg		sort +2
2633549e21daSmrg	      fi |
2634549e21daSmrg	      uniq > "$nlist"S; then
2635549e21daSmrg	    :
2636ba6a1819Smrg	  else
2637549e21daSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
2638ba6a1819Smrg	  fi
2639ba6a1819Smrg
2640549e21daSmrg	  if test -f "$nlist"S; then
2641549e21daSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2642ba6a1819Smrg	  else
2643549e21daSmrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
2644ba6a1819Smrg	  fi
2645ba6a1819Smrg
2646549e21daSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
2647ba6a1819Smrg
2648549e21daSmrg/* The mapping between symbol names and symbols.  */
2649549e21daSmrgtypedef struct {
2650549e21daSmrg  const char *name;
2651549e21daSmrg  void *address;
2652549e21daSmrg} lt_dlsymlist;
2653549e21daSmrg"
2654549e21daSmrg	  case $host in
2655549e21daSmrg	  *cygwin* | *mingw* | *cegcc* )
2656549e21daSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2657549e21daSmrg/* DATA imports from DLLs on WIN32 con't be const, because
2658549e21daSmrg   runtime relocations are performed -- see ld's documentation
2659549e21daSmrg   on pseudo-relocs.  */"
2660549e21daSmrg	    lt_dlsym_const= ;;
2661549e21daSmrg	  *osf5*)
2662549e21daSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2663549e21daSmrg/* This system does not cope well with relocations in const data */"
2664549e21daSmrg	    lt_dlsym_const= ;;
2665549e21daSmrg	  *)
2666549e21daSmrg	    lt_dlsym_const=const ;;
2667549e21daSmrg	  esac
2668549e21daSmrg
2669549e21daSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
2670549e21daSmrgextern $lt_dlsym_const lt_dlsymlist
2671549e21daSmrglt_${my_prefix}_LTX_preloaded_symbols[];
2672549e21daSmrg$lt_dlsym_const lt_dlsymlist
2673549e21daSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
2674549e21daSmrg{\
2675549e21daSmrg  { \"$my_originator\", (void *) 0 },"
2676549e21daSmrg
2677549e21daSmrg	  case $need_lib_prefix in
2678549e21daSmrg	  no)
2679549e21daSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2680549e21daSmrg	    ;;
2681549e21daSmrg	  *)
2682549e21daSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2683549e21daSmrg	    ;;
2684549e21daSmrg	  esac
2685549e21daSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
2686549e21daSmrg  {0, (void *) 0}
2687549e21daSmrg};
2688549e21daSmrg
2689549e21daSmrg/* This works around a problem in FreeBSD linker */
2690549e21daSmrg#ifdef FREEBSD_WORKAROUND
2691549e21daSmrgstatic const void *lt_preloaded_setup() {
2692549e21daSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2693549e21daSmrg}
2694549e21daSmrg#endif
2695549e21daSmrg
2696549e21daSmrg#ifdef __cplusplus
2697549e21daSmrg}
2698549e21daSmrg#endif\
2699549e21daSmrg"
2700549e21daSmrg	} # !$opt_dry_run
2701549e21daSmrg
2702549e21daSmrg	pic_flag_for_symtable=
2703549e21daSmrg	case "$compile_command " in
2704549e21daSmrg	*" -static "*) ;;
2705549e21daSmrg	*)
2706549e21daSmrg	  case $host in
2707549e21daSmrg	  # compiling the symbol table file with pic_flag works around
2708549e21daSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
2709549e21daSmrg	  # linked before any other PIC object.  But we must not use
2710549e21daSmrg	  # pic_flag when linking with -static.  The problem exists in
2711549e21daSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2712549e21daSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2713549e21daSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2714549e21daSmrg	  *-*-hpux*)
2715549e21daSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2716549e21daSmrg	  *)
2717549e21daSmrg	    if test "X$my_pic_p" != Xno; then
2718549e21daSmrg	      pic_flag_for_symtable=" $pic_flag"
2719ba6a1819Smrg	    fi
2720549e21daSmrg	    ;;
2721549e21daSmrg	  esac
2722549e21daSmrg	  ;;
2723549e21daSmrg	esac
2724549e21daSmrg	symtab_cflags=
2725549e21daSmrg	for arg in $LTCFLAGS; do
2726549e21daSmrg	  case $arg in
2727549e21daSmrg	  -pie | -fpie | -fPIE) ;;
2728549e21daSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2729549e21daSmrg	  esac
2730549e21daSmrg	done
2731ba6a1819Smrg
2732549e21daSmrg	# Now compile the dynamic symbol file.
2733549e21daSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2734ba6a1819Smrg
2735549e21daSmrg	# Clean up the generated files.
2736549e21daSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2737549e21daSmrg
2738549e21daSmrg	# Transform the symbol file into the correct name.
2739549e21daSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2740549e21daSmrg	case $host in
2741549e21daSmrg	*cygwin* | *mingw* | *cegcc* )
2742549e21daSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
2743549e21daSmrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2744549e21daSmrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2745549e21daSmrg	  else
2746549e21daSmrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2747549e21daSmrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2748549e21daSmrg	  fi
2749549e21daSmrg	  ;;
2750549e21daSmrg	*)
2751549e21daSmrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2752549e21daSmrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2753ba6a1819Smrg	  ;;
2754ba6a1819Smrg	esac
2755549e21daSmrg	;;
2756549e21daSmrg      *)
2757549e21daSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2758549e21daSmrg	;;
2759549e21daSmrg      esac
2760549e21daSmrg    else
2761549e21daSmrg      # We keep going just in case the user didn't refer to
2762549e21daSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2763549e21daSmrg      # really was required.
2764ba6a1819Smrg
2765549e21daSmrg      # Nullify the symbol file.
2766549e21daSmrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
2767549e21daSmrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
2768549e21daSmrg    fi
2769549e21daSmrg}
2770ba6a1819Smrg
2771549e21daSmrg# func_win32_libid arg
2772549e21daSmrg# return the library type of file 'arg'
2773549e21daSmrg#
2774549e21daSmrg# Need a lot of goo to handle *both* DLLs and import libs
2775549e21daSmrg# Has to be a shell function in order to 'eat' the argument
2776549e21daSmrg# that is supplied when $file_magic_command is called.
2777549e21daSmrg# Despite the name, also deal with 64 bit binaries.
2778549e21daSmrgfunc_win32_libid ()
2779549e21daSmrg{
2780549e21daSmrg  $opt_debug
2781549e21daSmrg  win32_libid_type="unknown"
2782549e21daSmrg  win32_fileres=`file -L $1 2>/dev/null`
2783549e21daSmrg  case $win32_fileres in
2784549e21daSmrg  *ar\ archive\ import\ library*) # definitely import
2785549e21daSmrg    win32_libid_type="x86 archive import"
2786549e21daSmrg    ;;
2787549e21daSmrg  *ar\ archive*) # could be an import, or static
2788549e21daSmrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
2789549e21daSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2790549e21daSmrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
2791549e21daSmrg      win32_nmres=`eval $NM -f posix -A $1 |
2792549e21daSmrg	$SED -n -e '
2793549e21daSmrg	    1,100{
2794549e21daSmrg		/ I /{
2795549e21daSmrg		    s,.*,import,
2796549e21daSmrg		    p
2797549e21daSmrg		    q
2798549e21daSmrg		}
2799549e21daSmrg	    }'`
2800549e21daSmrg      case $win32_nmres in
2801549e21daSmrg      import*)  win32_libid_type="x86 archive import";;
2802549e21daSmrg      *)        win32_libid_type="x86 archive static";;
2803549e21daSmrg      esac
2804549e21daSmrg    fi
2805549e21daSmrg    ;;
2806549e21daSmrg  *DLL*)
2807549e21daSmrg    win32_libid_type="x86 DLL"
2808549e21daSmrg    ;;
2809549e21daSmrg  *executable*) # but shell scripts are "executable" too...
2810549e21daSmrg    case $win32_fileres in
2811549e21daSmrg    *MS\ Windows\ PE\ Intel*)
2812549e21daSmrg      win32_libid_type="x86 DLL"
2813549e21daSmrg      ;;
2814549e21daSmrg    esac
2815549e21daSmrg    ;;
2816549e21daSmrg  esac
2817549e21daSmrg  $ECHO "$win32_libid_type"
2818549e21daSmrg}
2819ba6a1819Smrg
2820ba6a1819Smrg
2821ba6a1819Smrg
2822549e21daSmrg# func_extract_an_archive dir oldlib
2823549e21daSmrgfunc_extract_an_archive ()
2824549e21daSmrg{
2825549e21daSmrg    $opt_debug
2826549e21daSmrg    f_ex_an_ar_dir="$1"; shift
2827549e21daSmrg    f_ex_an_ar_oldlib="$1"
2828549e21daSmrg    if test "$lock_old_archive_extraction" = yes; then
2829549e21daSmrg      lockfile=$f_ex_an_ar_oldlib.lock
2830549e21daSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2831549e21daSmrg	func_echo "Waiting for $lockfile to be removed"
2832549e21daSmrg	sleep 2
2833549e21daSmrg      done
2834549e21daSmrg    fi
2835549e21daSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
2836549e21daSmrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
2837549e21daSmrg    if test "$lock_old_archive_extraction" = yes; then
2838549e21daSmrg      $opt_dry_run || rm -f "$lockfile"
2839549e21daSmrg    fi
2840549e21daSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2841549e21daSmrg     :
2842549e21daSmrg    else
2843549e21daSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2844549e21daSmrg    fi
2845549e21daSmrg}
2846ba6a1819Smrg
2847ba6a1819Smrg
2848549e21daSmrg# func_extract_archives gentop oldlib ...
2849549e21daSmrgfunc_extract_archives ()
2850549e21daSmrg{
2851549e21daSmrg    $opt_debug
2852549e21daSmrg    my_gentop="$1"; shift
2853549e21daSmrg    my_oldlibs=${1+"$@"}
2854549e21daSmrg    my_oldobjs=""
2855549e21daSmrg    my_xlib=""
2856549e21daSmrg    my_xabs=""
2857549e21daSmrg    my_xdir=""
2858ba6a1819Smrg
2859549e21daSmrg    for my_xlib in $my_oldlibs; do
2860549e21daSmrg      # Extract the objects.
2861549e21daSmrg      case $my_xlib in
2862549e21daSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2863549e21daSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2864ba6a1819Smrg      esac
2865549e21daSmrg      func_basename "$my_xlib"
2866549e21daSmrg      my_xlib="$func_basename_result"
2867549e21daSmrg      my_xlib_u=$my_xlib
2868549e21daSmrg      while :; do
2869549e21daSmrg        case " $extracted_archives " in
2870549e21daSmrg	*" $my_xlib_u "*)
2871549e21daSmrg	  func_arith $extracted_serial + 1
2872549e21daSmrg	  extracted_serial=$func_arith_result
2873549e21daSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2874549e21daSmrg	*) break ;;
2875549e21daSmrg	esac
2876549e21daSmrg      done
2877549e21daSmrg      extracted_archives="$extracted_archives $my_xlib_u"
2878549e21daSmrg      my_xdir="$my_gentop/$my_xlib_u"
2879ba6a1819Smrg
2880549e21daSmrg      func_mkdir_p "$my_xdir"
2881ba6a1819Smrg
2882549e21daSmrg      case $host in
2883549e21daSmrg      *-darwin*)
2884549e21daSmrg	func_verbose "Extracting $my_xabs"
2885549e21daSmrg	# Do not bother doing anything if just a dry run
2886549e21daSmrg	$opt_dry_run || {
2887549e21daSmrg	  darwin_orig_dir=`pwd`
2888549e21daSmrg	  cd $my_xdir || exit $?
2889549e21daSmrg	  darwin_archive=$my_xabs
2890549e21daSmrg	  darwin_curdir=`pwd`
2891549e21daSmrg	  darwin_base_archive=`basename "$darwin_archive"`
2892549e21daSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2893549e21daSmrg	  if test -n "$darwin_arches"; then
2894549e21daSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2895549e21daSmrg	    darwin_arch=
2896549e21daSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2897549e21daSmrg	    for darwin_arch in  $darwin_arches ; do
2898549e21daSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2899549e21daSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2900549e21daSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2901549e21daSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2902549e21daSmrg	      cd "$darwin_curdir"
2903549e21daSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2904549e21daSmrg	    done # $darwin_arches
2905549e21daSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2906549e21daSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2907549e21daSmrg	    darwin_file=
2908549e21daSmrg	    darwin_files=
2909549e21daSmrg	    for darwin_file in $darwin_filelist; do
2910549e21daSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
2911549e21daSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
2912549e21daSmrg	    done # $darwin_filelist
2913549e21daSmrg	    $RM -rf unfat-$$
2914549e21daSmrg	    cd "$darwin_orig_dir"
2915549e21daSmrg	  else
2916549e21daSmrg	    cd $darwin_orig_dir
2917549e21daSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2918549e21daSmrg	  fi # $darwin_arches
2919549e21daSmrg	} # !$opt_dry_run
2920549e21daSmrg	;;
2921549e21daSmrg      *)
2922549e21daSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2923549e21daSmrg	;;
2924549e21daSmrg      esac
2925549e21daSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
2926549e21daSmrg    done
2927ba6a1819Smrg
2928549e21daSmrg    func_extract_archives_result="$my_oldobjs"
2929549e21daSmrg}
2930ba6a1819Smrg
2931ba6a1819Smrg
2932549e21daSmrg# func_emit_wrapper [arg=no]
2933549e21daSmrg#
2934549e21daSmrg# Emit a libtool wrapper script on stdout.
2935549e21daSmrg# Don't directly open a file because we may want to
2936549e21daSmrg# incorporate the script contents within a cygwin/mingw
2937549e21daSmrg# wrapper executable.  Must ONLY be called from within
2938549e21daSmrg# func_mode_link because it depends on a number of variables
2939549e21daSmrg# set therein.
2940549e21daSmrg#
2941549e21daSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2942549e21daSmrg# variable will take.  If 'yes', then the emitted script
2943549e21daSmrg# will assume that the directory in which it is stored is
2944549e21daSmrg# the $objdir directory.  This is a cygwin/mingw-specific
2945549e21daSmrg# behavior.
2946549e21daSmrgfunc_emit_wrapper ()
2947549e21daSmrg{
2948549e21daSmrg	func_emit_wrapper_arg1=${1-no}
2949ba6a1819Smrg
2950549e21daSmrg	$ECHO "\
2951549e21daSmrg#! $SHELL
2952ba6a1819Smrg
2953549e21daSmrg# $output - temporary wrapper script for $objdir/$outputname
2954549e21daSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2955549e21daSmrg#
2956549e21daSmrg# The $output program cannot be directly executed until all the libtool
2957549e21daSmrg# libraries that it depends on are installed.
2958549e21daSmrg#
2959549e21daSmrg# This wrapper script should never be moved out of the build directory.
2960549e21daSmrg# If it is, it will not operate correctly.
2961ba6a1819Smrg
2962549e21daSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
2963549e21daSmrg# metacharacters that are still active within double-quoted strings.
2964549e21daSmrgsed_quote_subst='$sed_quote_subst'
2965ba6a1819Smrg
2966549e21daSmrg# Be Bourne compatible
2967549e21daSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2968549e21daSmrg  emulate sh
2969549e21daSmrg  NULLCMD=:
2970549e21daSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2971549e21daSmrg  # is contrary to our usage.  Disable this feature.
2972549e21daSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2973549e21daSmrg  setopt NO_GLOB_SUBST
2974549e21daSmrgelse
2975549e21daSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2976549e21daSmrgfi
2977549e21daSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2978549e21daSmrgDUALCASE=1; export DUALCASE # for MKS sh
2979ba6a1819Smrg
2980549e21daSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2981549e21daSmrg# if CDPATH is set.
2982549e21daSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2983ba6a1819Smrg
2984549e21daSmrgrelink_command=\"$relink_command\"
2985ba6a1819Smrg
2986549e21daSmrg# This environment variable determines our operation mode.
2987549e21daSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2988549e21daSmrg  # install mode needs the following variables:
2989549e21daSmrg  generated_by_libtool_version='$macro_version'
2990549e21daSmrg  notinst_deplibs='$notinst_deplibs'
2991549e21daSmrgelse
2992549e21daSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2993549e21daSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2994549e21daSmrg    file=\"\$0\""
2995ba6a1819Smrg
2996549e21daSmrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
2997549e21daSmrg    $ECHO "\
2998ba6a1819Smrg
2999549e21daSmrg# A function that is used when there is no print builtin or printf.
3000549e21daSmrgfunc_fallback_echo ()
3001549e21daSmrg{
3002549e21daSmrg  eval 'cat <<_LTECHO_EOF
3003549e21daSmrg\$1
3004549e21daSmrg_LTECHO_EOF'
3005549e21daSmrg}
3006549e21daSmrg    ECHO=\"$qECHO\"
3007549e21daSmrg  fi
3008ba6a1819Smrg
3009549e21daSmrg# Very basic option parsing. These options are (a) specific to
3010549e21daSmrg# the libtool wrapper, (b) are identical between the wrapper
3011549e21daSmrg# /script/ and the wrapper /executable/ which is used only on
3012549e21daSmrg# windows platforms, and (c) all begin with the string "--lt-"
3013549e21daSmrg# (application programs are unlikely to have options which match
3014549e21daSmrg# this pattern).
3015549e21daSmrg#
3016549e21daSmrg# There are only two supported options: --lt-debug and
3017549e21daSmrg# --lt-dump-script. There is, deliberately, no --lt-help.
3018549e21daSmrg#
3019549e21daSmrg# The first argument to this parsing function should be the
3020549e21daSmrg# script's $0 value, followed by "$@".
3021549e21daSmrglt_option_debug=
3022549e21daSmrgfunc_parse_lt_options ()
3023549e21daSmrg{
3024549e21daSmrg  lt_script_arg0=\$0
3025549e21daSmrg  shift
3026549e21daSmrg  for lt_opt
3027549e21daSmrg  do
3028549e21daSmrg    case \"\$lt_opt\" in
3029549e21daSmrg    --lt-debug) lt_option_debug=1 ;;
3030549e21daSmrg    --lt-dump-script)
3031549e21daSmrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3032549e21daSmrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3033549e21daSmrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3034549e21daSmrg        cat \"\$lt_dump_D/\$lt_dump_F\"
3035549e21daSmrg        exit 0
3036549e21daSmrg      ;;
3037549e21daSmrg    --lt-*)
3038549e21daSmrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3039549e21daSmrg        exit 1
3040549e21daSmrg      ;;
3041549e21daSmrg    esac
3042549e21daSmrg  done
3043ba6a1819Smrg
3044549e21daSmrg  # Print the debug banner immediately:
3045549e21daSmrg  if test -n \"\$lt_option_debug\"; then
3046549e21daSmrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3047549e21daSmrg  fi
3048549e21daSmrg}
3049ba6a1819Smrg
3050549e21daSmrg# Used when --lt-debug. Prints its arguments to stdout
3051549e21daSmrg# (redirection is the responsibility of the caller)
3052549e21daSmrgfunc_lt_dump_args ()
3053549e21daSmrg{
3054549e21daSmrg  lt_dump_args_N=1;
3055549e21daSmrg  for lt_arg
3056549e21daSmrg  do
3057549e21daSmrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3058549e21daSmrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3059549e21daSmrg  done
3060549e21daSmrg}
3061ba6a1819Smrg
3062549e21daSmrg# Core function for launching the target application
3063549e21daSmrgfunc_exec_program_core ()
3064549e21daSmrg{
3065549e21daSmrg"
3066549e21daSmrg  case $host in
3067549e21daSmrg  # Backslashes separate directories on plain windows
3068549e21daSmrg  *-*-mingw | *-*-os2* | *-cegcc*)
3069549e21daSmrg    $ECHO "\
3070549e21daSmrg      if test -n \"\$lt_option_debug\"; then
3071549e21daSmrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3072549e21daSmrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
3073549e21daSmrg      fi
3074549e21daSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3075549e21daSmrg"
3076549e21daSmrg    ;;
3077ba6a1819Smrg
3078549e21daSmrg  *)
3079549e21daSmrg    $ECHO "\
3080549e21daSmrg      if test -n \"\$lt_option_debug\"; then
3081549e21daSmrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3082549e21daSmrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
3083549e21daSmrg      fi
3084549e21daSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3085549e21daSmrg"
3086549e21daSmrg    ;;
3087549e21daSmrg  esac
3088549e21daSmrg  $ECHO "\
3089549e21daSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3090549e21daSmrg      exit 1
3091549e21daSmrg}
3092ba6a1819Smrg
3093549e21daSmrg# A function to encapsulate launching the target application
3094549e21daSmrg# Strips options in the --lt-* namespace from \$@ and
3095549e21daSmrg# launches target application with the remaining arguments.
3096549e21daSmrgfunc_exec_program ()
3097549e21daSmrg{
3098549e21daSmrg  for lt_wr_arg
3099549e21daSmrg  do
3100549e21daSmrg    case \$lt_wr_arg in
3101549e21daSmrg    --lt-*) ;;
3102549e21daSmrg    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3103549e21daSmrg    esac
3104549e21daSmrg    shift
3105549e21daSmrg  done
3106549e21daSmrg  func_exec_program_core \${1+\"\$@\"}
3107549e21daSmrg}
3108ba6a1819Smrg
3109549e21daSmrg  # Parse options
3110549e21daSmrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
3111ba6a1819Smrg
3112549e21daSmrg  # Find the directory that this script lives in.
3113549e21daSmrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
3114549e21daSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3115ba6a1819Smrg
3116549e21daSmrg  # Follow symbolic links until we get to the real thisdir.
3117549e21daSmrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
3118549e21daSmrg  while test -n \"\$file\"; do
3119549e21daSmrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
3120ba6a1819Smrg
3121549e21daSmrg    # If there was a directory component, then change thisdir.
3122549e21daSmrg    if test \"x\$destdir\" != \"x\$file\"; then
3123549e21daSmrg      case \"\$destdir\" in
3124549e21daSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
3125549e21daSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
3126549e21daSmrg      esac
3127549e21daSmrg    fi
3128ba6a1819Smrg
3129549e21daSmrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
3130549e21daSmrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
3131549e21daSmrg  done
3132ba6a1819Smrg
3133549e21daSmrg  # Usually 'no', except on cygwin/mingw when embedded into
3134549e21daSmrg  # the cwrapper.
3135549e21daSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
3136549e21daSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
3137549e21daSmrg    # special case for '.'
3138549e21daSmrg    if test \"\$thisdir\" = \".\"; then
3139549e21daSmrg      thisdir=\`pwd\`
3140549e21daSmrg    fi
3141549e21daSmrg    # remove .libs from thisdir
3142549e21daSmrg    case \"\$thisdir\" in
3143549e21daSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
3144549e21daSmrg    $objdir )   thisdir=. ;;
3145549e21daSmrg    esac
3146549e21daSmrg  fi
3147ba6a1819Smrg
3148549e21daSmrg  # Try to get the absolute directory name.
3149549e21daSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
3150549e21daSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
3151549e21daSmrg"
3152ba6a1819Smrg
3153549e21daSmrg	if test "$fast_install" = yes; then
3154549e21daSmrg	  $ECHO "\
3155549e21daSmrg  program=lt-'$outputname'$exeext
3156549e21daSmrg  progdir=\"\$thisdir/$objdir\"
3157ba6a1819Smrg
3158549e21daSmrg  if test ! -f \"\$progdir/\$program\" ||
3159549e21daSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
3160549e21daSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
3161ba6a1819Smrg
3162549e21daSmrg    file=\"\$\$-\$program\"
3163ba6a1819Smrg
3164549e21daSmrg    if test ! -d \"\$progdir\"; then
3165549e21daSmrg      $MKDIR \"\$progdir\"
3166549e21daSmrg    else
3167549e21daSmrg      $RM \"\$progdir/\$file\"
3168549e21daSmrg    fi"
3169ba6a1819Smrg
3170549e21daSmrg	  $ECHO "\
3171549e21daSmrg
3172549e21daSmrg    # relink executable if necessary
3173549e21daSmrg    if test -n \"\$relink_command\"; then
3174549e21daSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
3175549e21daSmrg      else
3176549e21daSmrg	$ECHO \"\$relink_command_output\" >&2
3177549e21daSmrg	$RM \"\$progdir/\$file\"
3178549e21daSmrg	exit 1
3179ba6a1819Smrg      fi
3180549e21daSmrg    fi
3181ba6a1819Smrg
3182549e21daSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3183549e21daSmrg    { $RM \"\$progdir/\$program\";
3184549e21daSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3185549e21daSmrg    $RM \"\$progdir/\$file\"
3186549e21daSmrg  fi"
3187549e21daSmrg	else
3188549e21daSmrg	  $ECHO "\
3189549e21daSmrg  program='$outputname'
3190549e21daSmrg  progdir=\"\$thisdir/$objdir\"
3191549e21daSmrg"
3192ba6a1819Smrg	fi
3193ba6a1819Smrg
3194549e21daSmrg	$ECHO "\
3195ba6a1819Smrg
3196549e21daSmrg  if test -f \"\$progdir/\$program\"; then"
3197ba6a1819Smrg
3198549e21daSmrg	# Export our shlibpath_var if we have one.
3199549e21daSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3200549e21daSmrg	  $ECHO "\
3201549e21daSmrg    # Add our own library path to $shlibpath_var
3202549e21daSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3203ba6a1819Smrg
3204549e21daSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
3205549e21daSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
3206549e21daSmrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
3207549e21daSmrg
3208549e21daSmrg    export $shlibpath_var
3209549e21daSmrg"
3210ba6a1819Smrg	fi
3211ba6a1819Smrg
3212549e21daSmrg	# fixup the dll searchpath if we need to.
3213549e21daSmrg	if test -n "$dllsearchpath"; then
3214549e21daSmrg	  $ECHO "\
3215549e21daSmrg    # Add the dll search path components to the executable PATH
3216549e21daSmrg    PATH=$dllsearchpath:\$PATH
3217549e21daSmrg"
3218549e21daSmrg	fi
3219ba6a1819Smrg
3220549e21daSmrg	$ECHO "\
3221549e21daSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
3222549e21daSmrg      # Run the actual program with our arguments.
3223549e21daSmrg      func_exec_program \${1+\"\$@\"}
3224549e21daSmrg    fi
3225549e21daSmrg  else
3226549e21daSmrg    # The program doesn't exist.
3227549e21daSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
3228549e21daSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
3229549e21daSmrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3230549e21daSmrg    exit 1
3231549e21daSmrg  fi
3232549e21daSmrgfi\
3233549e21daSmrg"
3234549e21daSmrg}
3235ba6a1819Smrg
3236ba6a1819Smrg
3237549e21daSmrg# func_to_host_path arg
3238549e21daSmrg#
3239549e21daSmrg# Convert paths to host format when used with build tools.
3240549e21daSmrg# Intended for use with "native" mingw (where libtool itself
3241549e21daSmrg# is running under the msys shell), or in the following cross-
3242549e21daSmrg# build environments:
3243549e21daSmrg#    $build          $host
3244549e21daSmrg#    mingw (msys)    mingw  [e.g. native]
3245549e21daSmrg#    cygwin          mingw
3246549e21daSmrg#    *nix + wine     mingw
3247549e21daSmrg# where wine is equipped with the `winepath' executable.
3248549e21daSmrg# In the native mingw case, the (msys) shell automatically
3249549e21daSmrg# converts paths for any non-msys applications it launches,
3250549e21daSmrg# but that facility isn't available from inside the cwrapper.
3251549e21daSmrg# Similar accommodations are necessary for $host mingw and
3252549e21daSmrg# $build cygwin.  Calling this function does no harm for other
3253549e21daSmrg# $host/$build combinations not listed above.
3254549e21daSmrg#
3255549e21daSmrg# ARG is the path (on $build) that should be converted to
3256549e21daSmrg# the proper representation for $host. The result is stored
3257549e21daSmrg# in $func_to_host_path_result.
3258549e21daSmrgfunc_to_host_path ()
3259549e21daSmrg{
3260549e21daSmrg  func_to_host_path_result="$1"
3261549e21daSmrg  if test -n "$1"; then
3262549e21daSmrg    case $host in
3263549e21daSmrg      *mingw* )
3264549e21daSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3265549e21daSmrg        case $build in
3266549e21daSmrg          *mingw* ) # actually, msys
3267549e21daSmrg            # awkward: cmd appends spaces to result
3268549e21daSmrg            func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
3269549e21daSmrg              $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3270549e21daSmrg            ;;
3271549e21daSmrg          *cygwin* )
3272549e21daSmrg            func_to_host_path_result=`cygpath -w "$1" |
3273549e21daSmrg	      $SED -e "$lt_sed_naive_backslashify"`
3274549e21daSmrg            ;;
3275549e21daSmrg          * )
3276549e21daSmrg            # Unfortunately, winepath does not exit with a non-zero
3277549e21daSmrg            # error code, so we are forced to check the contents of
3278549e21daSmrg            # stdout. On the other hand, if the command is not
3279549e21daSmrg            # found, the shell will set an exit code of 127 and print
3280549e21daSmrg            # *an error message* to stdout. So we must check for both
3281549e21daSmrg            # error code of zero AND non-empty stdout, which explains
3282549e21daSmrg            # the odd construction:
3283549e21daSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3284549e21daSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3285549e21daSmrg              func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
3286549e21daSmrg                $SED -e "$lt_sed_naive_backslashify"`
3287549e21daSmrg            else
3288549e21daSmrg              # Allow warning below.
3289549e21daSmrg              func_to_host_path_result=
3290549e21daSmrg            fi
3291549e21daSmrg            ;;
3292549e21daSmrg        esac
3293549e21daSmrg        if test -z "$func_to_host_path_result" ; then
3294549e21daSmrg          func_error "Could not determine host path corresponding to"
3295549e21daSmrg          func_error "  \`$1'"
3296549e21daSmrg          func_error "Continuing, but uninstalled executables may not work."
3297549e21daSmrg          # Fallback:
3298549e21daSmrg          func_to_host_path_result="$1"
3299549e21daSmrg        fi
3300549e21daSmrg        ;;
3301549e21daSmrg    esac
3302549e21daSmrg  fi
3303549e21daSmrg}
3304549e21daSmrg# end: func_to_host_path
3305549e21daSmrg
3306549e21daSmrg# func_to_host_pathlist arg
3307549e21daSmrg#
3308549e21daSmrg# Convert pathlists to host format when used with build tools.
3309549e21daSmrg# See func_to_host_path(), above. This function supports the
3310549e21daSmrg# following $build/$host combinations (but does no harm for
3311549e21daSmrg# combinations not listed here):
3312549e21daSmrg#    $build          $host
3313549e21daSmrg#    mingw (msys)    mingw  [e.g. native]
3314549e21daSmrg#    cygwin          mingw
3315549e21daSmrg#    *nix + wine     mingw
3316549e21daSmrg#
3317549e21daSmrg# Path separators are also converted from $build format to
3318549e21daSmrg# $host format. If ARG begins or ends with a path separator
3319549e21daSmrg# character, it is preserved (but converted to $host format)
3320549e21daSmrg# on output.
3321549e21daSmrg#
3322549e21daSmrg# ARG is a pathlist (on $build) that should be converted to
3323549e21daSmrg# the proper representation on $host. The result is stored
3324549e21daSmrg# in $func_to_host_pathlist_result.
3325549e21daSmrgfunc_to_host_pathlist ()
3326549e21daSmrg{
3327549e21daSmrg  func_to_host_pathlist_result="$1"
3328549e21daSmrg  if test -n "$1"; then
3329549e21daSmrg    case $host in
3330549e21daSmrg      *mingw* )
3331549e21daSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3332549e21daSmrg        # Remove leading and trailing path separator characters from
3333549e21daSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3334549e21daSmrg        # into '.;' and ';.', and winepath ignores them completely.
3335549e21daSmrg	func_stripname : : "$1"
3336549e21daSmrg        func_to_host_pathlist_tmp1=$func_stripname_result
3337549e21daSmrg        case $build in
3338549e21daSmrg          *mingw* ) # Actually, msys.
3339549e21daSmrg            # Awkward: cmd appends spaces to result.
3340549e21daSmrg            func_to_host_pathlist_result=`
3341549e21daSmrg	      ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
3342549e21daSmrg	      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3343549e21daSmrg            ;;
3344549e21daSmrg          *cygwin* )
3345549e21daSmrg            func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
3346549e21daSmrg              $SED -e "$lt_sed_naive_backslashify"`
3347549e21daSmrg            ;;
3348549e21daSmrg          * )
3349549e21daSmrg            # unfortunately, winepath doesn't convert pathlists
3350549e21daSmrg            func_to_host_pathlist_result=""
3351549e21daSmrg            func_to_host_pathlist_oldIFS=$IFS
3352549e21daSmrg            IFS=:
3353549e21daSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3354549e21daSmrg              IFS=$func_to_host_pathlist_oldIFS
3355549e21daSmrg              if test -n "$func_to_host_pathlist_f" ; then
3356549e21daSmrg                func_to_host_path "$func_to_host_pathlist_f"
3357549e21daSmrg                if test -n "$func_to_host_path_result" ; then
3358549e21daSmrg                  if test -z "$func_to_host_pathlist_result" ; then
3359549e21daSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3360549e21daSmrg                  else
3361549e21daSmrg                    func_append func_to_host_pathlist_result ";$func_to_host_path_result"
3362549e21daSmrg                  fi
3363549e21daSmrg                fi
3364549e21daSmrg              fi
3365549e21daSmrg            done
3366549e21daSmrg            IFS=$func_to_host_pathlist_oldIFS
3367549e21daSmrg            ;;
3368549e21daSmrg        esac
3369549e21daSmrg        if test -z "$func_to_host_pathlist_result"; then
3370549e21daSmrg          func_error "Could not determine the host path(s) corresponding to"
3371549e21daSmrg          func_error "  \`$1'"
3372549e21daSmrg          func_error "Continuing, but uninstalled executables may not work."
3373549e21daSmrg          # Fallback. This may break if $1 contains DOS-style drive
3374549e21daSmrg          # specifications. The fix is not to complicate the expression
3375549e21daSmrg          # below, but for the user to provide a working wine installation
3376549e21daSmrg          # with winepath so that path translation in the cross-to-mingw
3377549e21daSmrg          # case works properly.
3378549e21daSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3379549e21daSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3380549e21daSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3381549e21daSmrg        fi
3382549e21daSmrg        # Now, add the leading and trailing path separators back
3383549e21daSmrg        case "$1" in
3384549e21daSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3385549e21daSmrg            ;;
3386549e21daSmrg        esac
3387549e21daSmrg        case "$1" in
3388549e21daSmrg          *: ) func_append func_to_host_pathlist_result ";"
3389549e21daSmrg            ;;
3390549e21daSmrg        esac
3391549e21daSmrg        ;;
3392549e21daSmrg    esac
3393549e21daSmrg  fi
3394549e21daSmrg}
3395549e21daSmrg# end: func_to_host_pathlist
3396549e21daSmrg
3397549e21daSmrg# func_emit_cwrapperexe_src
3398549e21daSmrg# emit the source code for a wrapper executable on stdout
3399549e21daSmrg# Must ONLY be called from within func_mode_link because
3400549e21daSmrg# it depends on a number of variable set therein.
3401549e21daSmrgfunc_emit_cwrapperexe_src ()
3402549e21daSmrg{
3403549e21daSmrg	cat <<EOF
3404549e21daSmrg
3405549e21daSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3406549e21daSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3407549e21daSmrg
3408549e21daSmrg   The $output program cannot be directly executed until all the libtool
3409549e21daSmrg   libraries that it depends on are installed.
3410549e21daSmrg
3411549e21daSmrg   This wrapper executable should never be moved out of the build directory.
3412549e21daSmrg   If it is, it will not operate correctly.
3413549e21daSmrg*/
3414549e21daSmrgEOF
3415549e21daSmrg	    cat <<"EOF"
3416549e21daSmrg#ifdef _MSC_VER
3417549e21daSmrg# define _CRT_SECURE_NO_DEPRECATE 1
3418549e21daSmrg#endif
3419549e21daSmrg#include <stdio.h>
3420549e21daSmrg#include <stdlib.h>
3421549e21daSmrg#ifdef _MSC_VER
3422549e21daSmrg# include <direct.h>
3423549e21daSmrg# include <process.h>
3424549e21daSmrg# include <io.h>
3425549e21daSmrg#else
3426549e21daSmrg# include <unistd.h>
3427549e21daSmrg# include <stdint.h>
3428549e21daSmrg# ifdef __CYGWIN__
3429549e21daSmrg#  include <io.h>
3430549e21daSmrg# endif
3431549e21daSmrg#endif
3432549e21daSmrg#include <malloc.h>
3433549e21daSmrg#include <stdarg.h>
3434549e21daSmrg#include <assert.h>
3435549e21daSmrg#include <string.h>
3436549e21daSmrg#include <ctype.h>
3437549e21daSmrg#include <errno.h>
3438549e21daSmrg#include <fcntl.h>
3439549e21daSmrg#include <sys/stat.h>
3440549e21daSmrg
3441549e21daSmrg/* declarations of non-ANSI functions */
3442549e21daSmrg#if defined(__MINGW32__)
3443549e21daSmrg# ifdef __STRICT_ANSI__
3444549e21daSmrgint _putenv (const char *);
3445549e21daSmrg# endif
3446549e21daSmrg#elif defined(__CYGWIN__)
3447549e21daSmrg# ifdef __STRICT_ANSI__
3448549e21daSmrgchar *realpath (const char *, char *);
3449549e21daSmrgint putenv (char *);
3450549e21daSmrgint setenv (const char *, const char *, int);
3451549e21daSmrg# endif
3452549e21daSmrg/* #elif defined (other platforms) ... */
3453549e21daSmrg#endif
3454549e21daSmrg
3455549e21daSmrg/* portability defines, excluding path handling macros */
3456549e21daSmrg#if defined(_MSC_VER)
3457549e21daSmrg# define setmode _setmode
3458549e21daSmrg# define stat    _stat
3459549e21daSmrg# define chmod   _chmod
3460549e21daSmrg# define getcwd  _getcwd
3461549e21daSmrg# define putenv  _putenv
3462549e21daSmrg# define S_IXUSR _S_IEXEC
3463549e21daSmrg# ifndef _INTPTR_T_DEFINED
3464549e21daSmrg#  define _INTPTR_T_DEFINED
3465549e21daSmrg#  define intptr_t int
3466549e21daSmrg# endif
3467549e21daSmrg#elif defined(__MINGW32__)
3468549e21daSmrg# define setmode _setmode
3469549e21daSmrg# define stat    _stat
3470549e21daSmrg# define chmod   _chmod
3471549e21daSmrg# define getcwd  _getcwd
3472549e21daSmrg# define putenv  _putenv
3473549e21daSmrg#elif defined(__CYGWIN__)
3474549e21daSmrg# define HAVE_SETENV
3475549e21daSmrg# define FOPEN_WB "wb"
3476549e21daSmrg/* #elif defined (other platforms) ... */
3477549e21daSmrg#endif
3478549e21daSmrg
3479549e21daSmrg#if defined(PATH_MAX)
3480549e21daSmrg# define LT_PATHMAX PATH_MAX
3481549e21daSmrg#elif defined(MAXPATHLEN)
3482549e21daSmrg# define LT_PATHMAX MAXPATHLEN
3483549e21daSmrg#else
3484549e21daSmrg# define LT_PATHMAX 1024
3485549e21daSmrg#endif
3486549e21daSmrg
3487549e21daSmrg#ifndef S_IXOTH
3488549e21daSmrg# define S_IXOTH 0
3489549e21daSmrg#endif
3490549e21daSmrg#ifndef S_IXGRP
3491549e21daSmrg# define S_IXGRP 0
3492549e21daSmrg#endif
3493549e21daSmrg
3494549e21daSmrg/* path handling portability macros */
3495549e21daSmrg#ifndef DIR_SEPARATOR
3496549e21daSmrg# define DIR_SEPARATOR '/'
3497549e21daSmrg# define PATH_SEPARATOR ':'
3498549e21daSmrg#endif
3499549e21daSmrg
3500549e21daSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3501549e21daSmrg  defined (__OS2__)
3502549e21daSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
3503549e21daSmrg# define FOPEN_WB "wb"
3504549e21daSmrg# ifndef DIR_SEPARATOR_2
3505549e21daSmrg#  define DIR_SEPARATOR_2 '\\'
3506549e21daSmrg# endif
3507549e21daSmrg# ifndef PATH_SEPARATOR_2
3508549e21daSmrg#  define PATH_SEPARATOR_2 ';'
3509549e21daSmrg# endif
3510549e21daSmrg#endif
3511549e21daSmrg
3512549e21daSmrg#ifndef DIR_SEPARATOR_2
3513549e21daSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3514549e21daSmrg#else /* DIR_SEPARATOR_2 */
3515549e21daSmrg# define IS_DIR_SEPARATOR(ch) \
3516549e21daSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3517549e21daSmrg#endif /* DIR_SEPARATOR_2 */
3518549e21daSmrg
3519549e21daSmrg#ifndef PATH_SEPARATOR_2
3520549e21daSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3521549e21daSmrg#else /* PATH_SEPARATOR_2 */
3522549e21daSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3523549e21daSmrg#endif /* PATH_SEPARATOR_2 */
3524549e21daSmrg
3525549e21daSmrg#ifndef FOPEN_WB
3526549e21daSmrg# define FOPEN_WB "w"
3527549e21daSmrg#endif
3528549e21daSmrg#ifndef _O_BINARY
3529549e21daSmrg# define _O_BINARY 0
3530549e21daSmrg#endif
3531549e21daSmrg
3532549e21daSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3533549e21daSmrg#define XFREE(stale) do { \
3534549e21daSmrg  if (stale) { free ((void *) stale); stale = 0; } \
3535549e21daSmrg} while (0)
3536549e21daSmrg
3537549e21daSmrg#if defined(LT_DEBUGWRAPPER)
3538549e21daSmrgstatic int lt_debug = 1;
3539549e21daSmrg#else
3540549e21daSmrgstatic int lt_debug = 0;
3541549e21daSmrg#endif
3542549e21daSmrg
3543549e21daSmrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
3544549e21daSmrg
3545549e21daSmrgvoid *xmalloc (size_t num);
3546549e21daSmrgchar *xstrdup (const char *string);
3547549e21daSmrgconst char *base_name (const char *name);
3548549e21daSmrgchar *find_executable (const char *wrapper);
3549549e21daSmrgchar *chase_symlinks (const char *pathspec);
3550549e21daSmrgint make_executable (const char *path);
3551549e21daSmrgint check_executable (const char *path);
3552549e21daSmrgchar *strendzap (char *str, const char *pat);
3553549e21daSmrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
3554549e21daSmrgvoid lt_fatal (const char *file, int line, const char *message, ...);
3555549e21daSmrgstatic const char *nonnull (const char *s);
3556549e21daSmrgstatic const char *nonempty (const char *s);
3557549e21daSmrgvoid lt_setenv (const char *name, const char *value);
3558549e21daSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3559549e21daSmrgvoid lt_update_exe_path (const char *name, const char *value);
3560549e21daSmrgvoid lt_update_lib_path (const char *name, const char *value);
3561549e21daSmrgchar **prepare_spawn (char **argv);
3562549e21daSmrgvoid lt_dump_script (FILE *f);
3563549e21daSmrgEOF
3564549e21daSmrg
3565549e21daSmrg	    cat <<EOF
3566549e21daSmrgconst char * MAGIC_EXE = "$magic_exe";
3567549e21daSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3568549e21daSmrgEOF
3569549e21daSmrg
3570549e21daSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3571549e21daSmrg              func_to_host_pathlist "$temp_rpath"
3572549e21daSmrg	      cat <<EOF
3573549e21daSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3574ba6a1819SmrgEOF
3575ba6a1819Smrg	    else
3576549e21daSmrg	      cat <<"EOF"
3577549e21daSmrgconst char * LIB_PATH_VALUE   = "";
3578549e21daSmrgEOF
3579ba6a1819Smrg	    fi
3580549e21daSmrg
3581549e21daSmrg	    if test -n "$dllsearchpath"; then
3582549e21daSmrg              func_to_host_pathlist "$dllsearchpath:"
3583549e21daSmrg	      cat <<EOF
3584549e21daSmrgconst char * EXE_PATH_VARNAME = "PATH";
3585549e21daSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3586549e21daSmrgEOF
3587ba6a1819Smrg	    else
3588549e21daSmrg	      cat <<"EOF"
3589549e21daSmrgconst char * EXE_PATH_VARNAME = "";
3590549e21daSmrgconst char * EXE_PATH_VALUE   = "";
3591549e21daSmrgEOF
3592ba6a1819Smrg	    fi
3593ba6a1819Smrg
3594549e21daSmrg	    if test "$fast_install" = yes; then
3595549e21daSmrg	      cat <<EOF
3596549e21daSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3597549e21daSmrgEOF
3598ba6a1819Smrg	    else
3599549e21daSmrg	      cat <<EOF
3600549e21daSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3601549e21daSmrgEOF
3602ba6a1819Smrg	    fi
3603ba6a1819Smrg
3604ba6a1819Smrg
3605549e21daSmrg	    cat <<"EOF"
3606ba6a1819Smrg
3607549e21daSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3608ba6a1819Smrg
3609549e21daSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3610549e21daSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3611549e21daSmrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
3612ba6a1819Smrg
3613549e21daSmrgint
3614549e21daSmrgmain (int argc, char *argv[])
3615549e21daSmrg{
3616549e21daSmrg  char **newargz;
3617549e21daSmrg  int  newargc;
3618549e21daSmrg  char *tmp_pathspec;
3619549e21daSmrg  char *actual_cwrapper_path;
3620549e21daSmrg  char *actual_cwrapper_name;
3621549e21daSmrg  char *target_name;
3622549e21daSmrg  char *lt_argv_zero;
3623549e21daSmrg  intptr_t rval = 127;
3624ba6a1819Smrg
3625549e21daSmrg  int i;
3626ba6a1819Smrg
3627549e21daSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
3628549e21daSmrg  newargz = XMALLOC (char *, argc + 1);
3629ba6a1819Smrg
3630549e21daSmrg  /* very simple arg parsing; don't want to rely on getopt
3631549e21daSmrg   * also, copy all non cwrapper options to newargz, except
3632549e21daSmrg   * argz[0], which is handled differently
3633549e21daSmrg   */
3634549e21daSmrg  newargc=0;
3635549e21daSmrg  for (i = 1; i < argc; i++)
3636549e21daSmrg    {
3637549e21daSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3638549e21daSmrg	{
3639549e21daSmrgEOF
3640549e21daSmrg	    case "$host" in
3641549e21daSmrg	      *mingw* | *cygwin* )
3642549e21daSmrg		# make stdout use "unix" line endings
3643549e21daSmrg		echo "          setmode(1,_O_BINARY);"
3644549e21daSmrg		;;
3645549e21daSmrg	      esac
3646ba6a1819Smrg
3647549e21daSmrg	    cat <<"EOF"
3648549e21daSmrg	  lt_dump_script (stdout);
3649549e21daSmrg	  return 0;
3650549e21daSmrg	}
3651549e21daSmrg      if (strcmp (argv[i], debug_opt) == 0)
3652549e21daSmrg	{
3653549e21daSmrg          lt_debug = 1;
3654549e21daSmrg          continue;
3655549e21daSmrg	}
3656549e21daSmrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
3657549e21daSmrg        {
3658549e21daSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3659549e21daSmrg             namespace, but it is not one of the ones we know about and
3660549e21daSmrg             have already dealt with, above (inluding dump-script), then
3661549e21daSmrg             report an error. Otherwise, targets might begin to believe
3662549e21daSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3663549e21daSmrg             namespace. The first time any user complains about this, we'll
3664549e21daSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3665549e21daSmrg             or a configure.ac-settable value.
3666549e21daSmrg           */
3667549e21daSmrg          lt_fatal (__FILE__, __LINE__,
3668549e21daSmrg		    "unrecognized %s option: '%s'",
3669549e21daSmrg                    ltwrapper_option_prefix, argv[i]);
3670549e21daSmrg        }
3671549e21daSmrg      /* otherwise ... */
3672549e21daSmrg      newargz[++newargc] = xstrdup (argv[i]);
3673549e21daSmrg    }
3674549e21daSmrg  newargz[++newargc] = NULL;
3675ba6a1819Smrg
3676549e21daSmrgEOF
3677549e21daSmrg	    cat <<EOF
3678549e21daSmrg  /* The GNU banner must be the first non-error debug message */
3679549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
3680549e21daSmrgEOF
3681549e21daSmrg	    cat <<"EOF"
3682549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
3683549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
3684549e21daSmrg
3685549e21daSmrg  tmp_pathspec = find_executable (argv[0]);
3686549e21daSmrg  if (tmp_pathspec == NULL)
3687549e21daSmrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
3688549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
3689549e21daSmrg                  "(main) found exe (before symlink chase) at: %s\n",
3690549e21daSmrg		  tmp_pathspec);
3691549e21daSmrg
3692549e21daSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3693549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
3694549e21daSmrg                  "(main) found exe (after symlink chase) at: %s\n",
3695549e21daSmrg		  actual_cwrapper_path);
3696549e21daSmrg  XFREE (tmp_pathspec);
3697549e21daSmrg
3698549e21daSmrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
3699549e21daSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3700549e21daSmrg
3701549e21daSmrg  /* wrapper name transforms */
3702549e21daSmrg  strendzap (actual_cwrapper_name, ".exe");
3703549e21daSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3704549e21daSmrg  XFREE (actual_cwrapper_name);
3705549e21daSmrg  actual_cwrapper_name = tmp_pathspec;
3706549e21daSmrg  tmp_pathspec = 0;
3707549e21daSmrg
3708549e21daSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3709549e21daSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3710549e21daSmrg  strendzap (target_name, ".exe");
3711549e21daSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3712549e21daSmrg  XFREE (target_name);
3713549e21daSmrg  target_name = tmp_pathspec;
3714549e21daSmrg  tmp_pathspec = 0;
3715549e21daSmrg
3716549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
3717549e21daSmrg		  "(main) libtool target name: %s\n",
3718549e21daSmrg		  target_name);
3719549e21daSmrgEOF
3720ba6a1819Smrg
3721549e21daSmrg	    cat <<EOF
3722549e21daSmrg  newargz[0] =
3723549e21daSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3724549e21daSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3725549e21daSmrg  strcpy (newargz[0], actual_cwrapper_path);
3726549e21daSmrg  strcat (newargz[0], "$objdir");
3727549e21daSmrg  strcat (newargz[0], "/");
3728549e21daSmrgEOF
3729ba6a1819Smrg
3730549e21daSmrg	    cat <<"EOF"
3731549e21daSmrg  /* stop here, and copy so we don't have to do this twice */
3732549e21daSmrg  tmp_pathspec = xstrdup (newargz[0]);
3733ba6a1819Smrg
3734549e21daSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3735549e21daSmrg  strcat (newargz[0], actual_cwrapper_name);
3736ba6a1819Smrg
3737549e21daSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
3738549e21daSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3739549e21daSmrg  XFREE (tmp_pathspec);
3740549e21daSmrg  tmp_pathspec = NULL;
3741549e21daSmrgEOF
3742ba6a1819Smrg
3743549e21daSmrg	    case $host_os in
3744549e21daSmrg	      mingw*)
3745549e21daSmrg	    cat <<"EOF"
3746549e21daSmrg  {
3747549e21daSmrg    char* p;
3748549e21daSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3749549e21daSmrg      {
3750549e21daSmrg	*p = '/';
3751549e21daSmrg      }
3752549e21daSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3753549e21daSmrg      {
3754549e21daSmrg	*p = '/';
3755549e21daSmrg      }
3756549e21daSmrg  }
3757549e21daSmrgEOF
3758549e21daSmrg	    ;;
3759549e21daSmrg	    esac
3760ba6a1819Smrg
3761549e21daSmrg	    cat <<"EOF"
3762549e21daSmrg  XFREE (target_name);
3763549e21daSmrg  XFREE (actual_cwrapper_path);
3764549e21daSmrg  XFREE (actual_cwrapper_name);
3765ba6a1819Smrg
3766549e21daSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3767549e21daSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3768549e21daSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3769549e21daSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3770ba6a1819Smrg
3771549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
3772549e21daSmrg		  nonnull (lt_argv_zero));
3773549e21daSmrg  for (i = 0; i < newargc; i++)
3774549e21daSmrg    {
3775549e21daSmrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
3776549e21daSmrg		      i, nonnull (newargz[i]));
3777549e21daSmrg    }
3778ba6a1819Smrg
3779549e21daSmrgEOF
3780ba6a1819Smrg
3781549e21daSmrg	    case $host_os in
3782549e21daSmrg	      mingw*)
3783549e21daSmrg		cat <<"EOF"
3784549e21daSmrg  /* execv doesn't actually work on mingw as expected on unix */
3785549e21daSmrg  newargz = prepare_spawn (newargz);
3786549e21daSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3787549e21daSmrg  if (rval == -1)
3788549e21daSmrg    {
3789549e21daSmrg      /* failed to start process */
3790549e21daSmrg      lt_debugprintf (__FILE__, __LINE__,
3791549e21daSmrg		      "(main) failed to launch target \"%s\": %s\n",
3792549e21daSmrg		      lt_argv_zero, nonnull (strerror (errno)));
3793549e21daSmrg      return 127;
3794549e21daSmrg    }
3795549e21daSmrg  return rval;
3796549e21daSmrgEOF
3797549e21daSmrg		;;
3798549e21daSmrg	      *)
3799549e21daSmrg		cat <<"EOF"
3800549e21daSmrg  execv (lt_argv_zero, newargz);
3801549e21daSmrg  return rval; /* =127, but avoids unused variable warning */
3802549e21daSmrgEOF
3803549e21daSmrg		;;
3804549e21daSmrg	    esac
3805ba6a1819Smrg
3806549e21daSmrg	    cat <<"EOF"
3807549e21daSmrg}
3808ba6a1819Smrg
3809549e21daSmrgvoid *
3810549e21daSmrgxmalloc (size_t num)
3811549e21daSmrg{
3812549e21daSmrg  void *p = (void *) malloc (num);
3813549e21daSmrg  if (!p)
3814549e21daSmrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
3815ba6a1819Smrg
3816549e21daSmrg  return p;
3817549e21daSmrg}
3818ba6a1819Smrg
3819549e21daSmrgchar *
3820549e21daSmrgxstrdup (const char *string)
3821549e21daSmrg{
3822549e21daSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3823549e21daSmrg			  string) : NULL;
3824549e21daSmrg}
3825ba6a1819Smrg
3826549e21daSmrgconst char *
3827549e21daSmrgbase_name (const char *name)
3828549e21daSmrg{
3829549e21daSmrg  const char *base;
3830ba6a1819Smrg
3831549e21daSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3832549e21daSmrg  /* Skip over the disk name in MSDOS pathnames. */
3833549e21daSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3834549e21daSmrg    name += 2;
3835549e21daSmrg#endif
3836ba6a1819Smrg
3837549e21daSmrg  for (base = name; *name; name++)
3838549e21daSmrg    if (IS_DIR_SEPARATOR (*name))
3839549e21daSmrg      base = name + 1;
3840549e21daSmrg  return base;
3841549e21daSmrg}
3842ba6a1819Smrg
3843549e21daSmrgint
3844549e21daSmrgcheck_executable (const char *path)
3845549e21daSmrg{
3846549e21daSmrg  struct stat st;
3847ba6a1819Smrg
3848549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
3849549e21daSmrg                  nonempty (path));
3850549e21daSmrg  if ((!path) || (!*path))
3851549e21daSmrg    return 0;
3852ba6a1819Smrg
3853549e21daSmrg  if ((stat (path, &st) >= 0)
3854549e21daSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3855549e21daSmrg    return 1;
3856549e21daSmrg  else
3857549e21daSmrg    return 0;
3858549e21daSmrg}
3859ba6a1819Smrg
3860549e21daSmrgint
3861549e21daSmrgmake_executable (const char *path)
3862549e21daSmrg{
3863549e21daSmrg  int rval = 0;
3864549e21daSmrg  struct stat st;
3865ba6a1819Smrg
3866549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
3867549e21daSmrg                  nonempty (path));
3868549e21daSmrg  if ((!path) || (!*path))
3869549e21daSmrg    return 0;
3870ba6a1819Smrg
3871549e21daSmrg  if (stat (path, &st) >= 0)
3872549e21daSmrg    {
3873549e21daSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3874549e21daSmrg    }
3875549e21daSmrg  return rval;
3876549e21daSmrg}
3877ba6a1819Smrg
3878549e21daSmrg/* Searches for the full path of the wrapper.  Returns
3879549e21daSmrg   newly allocated full path name if found, NULL otherwise
3880549e21daSmrg   Does not chase symlinks, even on platforms that support them.
3881549e21daSmrg*/
3882549e21daSmrgchar *
3883549e21daSmrgfind_executable (const char *wrapper)
3884549e21daSmrg{
3885549e21daSmrg  int has_slash = 0;
3886549e21daSmrg  const char *p;
3887549e21daSmrg  const char *p_next;
3888549e21daSmrg  /* static buffer for getcwd */
3889549e21daSmrg  char tmp[LT_PATHMAX + 1];
3890549e21daSmrg  int tmp_len;
3891549e21daSmrg  char *concat_name;
3892ba6a1819Smrg
3893549e21daSmrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
3894549e21daSmrg                  nonempty (wrapper));
3895ba6a1819Smrg
3896549e21daSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3897549e21daSmrg    return NULL;
3898ba6a1819Smrg
3899549e21daSmrg  /* Absolute path? */
3900549e21daSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3901549e21daSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3902549e21daSmrg    {
3903549e21daSmrg      concat_name = xstrdup (wrapper);
3904549e21daSmrg      if (check_executable (concat_name))
3905549e21daSmrg	return concat_name;
3906549e21daSmrg      XFREE (concat_name);
3907549e21daSmrg    }
3908549e21daSmrg  else
3909549e21daSmrg    {
3910549e21daSmrg#endif
3911549e21daSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3912549e21daSmrg	{
3913549e21daSmrg	  concat_name = xstrdup (wrapper);
3914549e21daSmrg	  if (check_executable (concat_name))
3915549e21daSmrg	    return concat_name;
3916549e21daSmrg	  XFREE (concat_name);
3917549e21daSmrg	}
3918549e21daSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3919549e21daSmrg    }
3920549e21daSmrg#endif
3921ba6a1819Smrg
3922549e21daSmrg  for (p = wrapper; *p; p++)
3923549e21daSmrg    if (*p == '/')
3924549e21daSmrg      {
3925549e21daSmrg	has_slash = 1;
3926549e21daSmrg	break;
3927549e21daSmrg      }
3928549e21daSmrg  if (!has_slash)
3929549e21daSmrg    {
3930549e21daSmrg      /* no slashes; search PATH */
3931549e21daSmrg      const char *path = getenv ("PATH");
3932549e21daSmrg      if (path != NULL)
3933549e21daSmrg	{
3934549e21daSmrg	  for (p = path; *p; p = p_next)
3935549e21daSmrg	    {
3936549e21daSmrg	      const char *q;
3937549e21daSmrg	      size_t p_len;
3938549e21daSmrg	      for (q = p; *q; q++)
3939549e21daSmrg		if (IS_PATH_SEPARATOR (*q))
3940549e21daSmrg		  break;
3941549e21daSmrg	      p_len = q - p;
3942549e21daSmrg	      p_next = (*q == '\0' ? q : q + 1);
3943549e21daSmrg	      if (p_len == 0)
3944549e21daSmrg		{
3945549e21daSmrg		  /* empty path: current directory */
3946549e21daSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
3947549e21daSmrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3948549e21daSmrg                              nonnull (strerror (errno)));
3949549e21daSmrg		  tmp_len = strlen (tmp);
3950549e21daSmrg		  concat_name =
3951549e21daSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3952549e21daSmrg		  memcpy (concat_name, tmp, tmp_len);
3953549e21daSmrg		  concat_name[tmp_len] = '/';
3954549e21daSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3955549e21daSmrg		}
3956549e21daSmrg	      else
3957549e21daSmrg		{
3958549e21daSmrg		  concat_name =
3959549e21daSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3960549e21daSmrg		  memcpy (concat_name, p, p_len);
3961549e21daSmrg		  concat_name[p_len] = '/';
3962549e21daSmrg		  strcpy (concat_name + p_len + 1, wrapper);
3963549e21daSmrg		}
3964549e21daSmrg	      if (check_executable (concat_name))
3965549e21daSmrg		return concat_name;
3966549e21daSmrg	      XFREE (concat_name);
3967549e21daSmrg	    }
3968549e21daSmrg	}
3969549e21daSmrg      /* not found in PATH; assume curdir */
3970549e21daSmrg    }
3971549e21daSmrg  /* Relative path | not found in path: prepend cwd */
3972549e21daSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
3973549e21daSmrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3974549e21daSmrg              nonnull (strerror (errno)));
3975549e21daSmrg  tmp_len = strlen (tmp);
3976549e21daSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3977549e21daSmrg  memcpy (concat_name, tmp, tmp_len);
3978549e21daSmrg  concat_name[tmp_len] = '/';
3979549e21daSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
3980ba6a1819Smrg
3981549e21daSmrg  if (check_executable (concat_name))
3982549e21daSmrg    return concat_name;
3983549e21daSmrg  XFREE (concat_name);
3984549e21daSmrg  return NULL;
3985549e21daSmrg}
3986ba6a1819Smrg
3987549e21daSmrgchar *
3988549e21daSmrgchase_symlinks (const char *pathspec)
3989549e21daSmrg{
3990549e21daSmrg#ifndef S_ISLNK
3991549e21daSmrg  return xstrdup (pathspec);
3992549e21daSmrg#else
3993549e21daSmrg  char buf[LT_PATHMAX];
3994549e21daSmrg  struct stat s;
3995549e21daSmrg  char *tmp_pathspec = xstrdup (pathspec);
3996549e21daSmrg  char *p;
3997549e21daSmrg  int has_symlinks = 0;
3998549e21daSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
3999549e21daSmrg    {
4000549e21daSmrg      lt_debugprintf (__FILE__, __LINE__,
4001549e21daSmrg		      "checking path component for symlinks: %s\n",
4002549e21daSmrg		      tmp_pathspec);
4003549e21daSmrg      if (lstat (tmp_pathspec, &s) == 0)
4004549e21daSmrg	{
4005549e21daSmrg	  if (S_ISLNK (s.st_mode) != 0)
4006549e21daSmrg	    {
4007549e21daSmrg	      has_symlinks = 1;
4008549e21daSmrg	      break;
4009549e21daSmrg	    }
4010ba6a1819Smrg
4011549e21daSmrg	  /* search backwards for last DIR_SEPARATOR */
4012549e21daSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4013549e21daSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4014549e21daSmrg	    p--;
4015549e21daSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4016549e21daSmrg	    {
4017549e21daSmrg	      /* no more DIR_SEPARATORS left */
4018549e21daSmrg	      break;
4019549e21daSmrg	    }
4020549e21daSmrg	  *p = '\0';
4021549e21daSmrg	}
4022549e21daSmrg      else
4023549e21daSmrg	{
4024549e21daSmrg	  lt_fatal (__FILE__, __LINE__,
4025549e21daSmrg		    "error accessing file \"%s\": %s",
4026549e21daSmrg		    tmp_pathspec, nonnull (strerror (errno)));
4027549e21daSmrg	}
4028549e21daSmrg    }
4029549e21daSmrg  XFREE (tmp_pathspec);
4030ba6a1819Smrg
4031549e21daSmrg  if (!has_symlinks)
4032549e21daSmrg    {
4033549e21daSmrg      return xstrdup (pathspec);
4034549e21daSmrg    }
4035ba6a1819Smrg
4036549e21daSmrg  tmp_pathspec = realpath (pathspec, buf);
4037549e21daSmrg  if (tmp_pathspec == 0)
4038549e21daSmrg    {
4039549e21daSmrg      lt_fatal (__FILE__, __LINE__,
4040549e21daSmrg		"could not follow symlinks for %s", pathspec);
4041549e21daSmrg    }
4042549e21daSmrg  return xstrdup (tmp_pathspec);
4043549e21daSmrg#endif
4044549e21daSmrg}
4045ba6a1819Smrg
4046549e21daSmrgchar *
4047549e21daSmrgstrendzap (char *str, const char *pat)
4048549e21daSmrg{
4049549e21daSmrg  size_t len, patlen;
4050ba6a1819Smrg
4051549e21daSmrg  assert (str != NULL);
4052549e21daSmrg  assert (pat != NULL);
4053ba6a1819Smrg
4054549e21daSmrg  len = strlen (str);
4055549e21daSmrg  patlen = strlen (pat);
4056ba6a1819Smrg
4057549e21daSmrg  if (patlen <= len)
4058549e21daSmrg    {
4059549e21daSmrg      str += len - patlen;
4060549e21daSmrg      if (strcmp (str, pat) == 0)
4061549e21daSmrg	*str = '\0';
4062549e21daSmrg    }
4063549e21daSmrg  return str;
4064549e21daSmrg}
4065ba6a1819Smrg
4066549e21daSmrgvoid
4067549e21daSmrglt_debugprintf (const char *file, int line, const char *fmt, ...)
4068549e21daSmrg{
4069549e21daSmrg  va_list args;
4070549e21daSmrg  if (lt_debug)
4071549e21daSmrg    {
4072549e21daSmrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4073549e21daSmrg      va_start (args, fmt);
4074549e21daSmrg      (void) vfprintf (stderr, fmt, args);
4075549e21daSmrg      va_end (args);
4076549e21daSmrg    }
4077549e21daSmrg}
4078ba6a1819Smrg
4079549e21daSmrgstatic void
4080549e21daSmrglt_error_core (int exit_status, const char *file,
4081549e21daSmrg	       int line, const char *mode,
4082549e21daSmrg	       const char *message, va_list ap)
4083549e21daSmrg{
4084549e21daSmrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4085549e21daSmrg  vfprintf (stderr, message, ap);
4086549e21daSmrg  fprintf (stderr, ".\n");
4087ba6a1819Smrg
4088549e21daSmrg  if (exit_status >= 0)
4089549e21daSmrg    exit (exit_status);
4090549e21daSmrg}
4091ba6a1819Smrg
4092549e21daSmrgvoid
4093549e21daSmrglt_fatal (const char *file, int line, const char *message, ...)
4094549e21daSmrg{
4095549e21daSmrg  va_list ap;
4096549e21daSmrg  va_start (ap, message);
4097549e21daSmrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4098549e21daSmrg  va_end (ap);
4099549e21daSmrg}
4100ba6a1819Smrg
4101549e21daSmrgstatic const char *
4102549e21daSmrgnonnull (const char *s)
4103549e21daSmrg{
4104549e21daSmrg  return s ? s : "(null)";
4105549e21daSmrg}
4106ba6a1819Smrg
4107549e21daSmrgstatic const char *
4108549e21daSmrgnonempty (const char *s)
4109549e21daSmrg{
4110549e21daSmrg  return (s && !*s) ? "(empty)" : nonnull (s);
4111549e21daSmrg}
4112ba6a1819Smrg
4113549e21daSmrgvoid
4114549e21daSmrglt_setenv (const char *name, const char *value)
4115549e21daSmrg{
4116549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
4117549e21daSmrg		  "(lt_setenv) setting '%s' to '%s'\n",
4118549e21daSmrg                  nonnull (name), nonnull (value));
4119549e21daSmrg  {
4120549e21daSmrg#ifdef HAVE_SETENV
4121549e21daSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
4122549e21daSmrg    char *str = xstrdup (value);
4123549e21daSmrg    setenv (name, str, 1);
4124549e21daSmrg#else
4125549e21daSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
4126549e21daSmrg    char *str = XMALLOC (char, len);
4127549e21daSmrg    sprintf (str, "%s=%s", name, value);
4128549e21daSmrg    if (putenv (str) != EXIT_SUCCESS)
4129549e21daSmrg      {
4130549e21daSmrg        XFREE (str);
4131549e21daSmrg      }
4132549e21daSmrg#endif
4133549e21daSmrg  }
4134549e21daSmrg}
4135ba6a1819Smrg
4136549e21daSmrgchar *
4137549e21daSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
4138549e21daSmrg{
4139549e21daSmrg  char *new_value;
4140549e21daSmrg  if (orig_value && *orig_value)
4141549e21daSmrg    {
4142549e21daSmrg      int orig_value_len = strlen (orig_value);
4143549e21daSmrg      int add_len = strlen (add);
4144549e21daSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4145549e21daSmrg      if (to_end)
4146549e21daSmrg        {
4147549e21daSmrg          strcpy (new_value, orig_value);
4148549e21daSmrg          strcpy (new_value + orig_value_len, add);
4149549e21daSmrg        }
4150549e21daSmrg      else
4151549e21daSmrg        {
4152549e21daSmrg          strcpy (new_value, add);
4153549e21daSmrg          strcpy (new_value + add_len, orig_value);
4154549e21daSmrg        }
4155549e21daSmrg    }
4156549e21daSmrg  else
4157549e21daSmrg    {
4158549e21daSmrg      new_value = xstrdup (add);
4159549e21daSmrg    }
4160549e21daSmrg  return new_value;
4161549e21daSmrg}
4162ba6a1819Smrg
4163549e21daSmrgvoid
4164549e21daSmrglt_update_exe_path (const char *name, const char *value)
4165549e21daSmrg{
4166549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
4167549e21daSmrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4168549e21daSmrg                  nonnull (name), nonnull (value));
4169ba6a1819Smrg
4170549e21daSmrg  if (name && *name && value && *value)
4171549e21daSmrg    {
4172549e21daSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4173549e21daSmrg      /* some systems can't cope with a ':'-terminated path #' */
4174549e21daSmrg      int len = strlen (new_value);
4175549e21daSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4176549e21daSmrg        {
4177549e21daSmrg          new_value[len-1] = '\0';
4178549e21daSmrg        }
4179549e21daSmrg      lt_setenv (name, new_value);
4180549e21daSmrg      XFREE (new_value);
4181549e21daSmrg    }
4182549e21daSmrg}
4183ba6a1819Smrg
4184549e21daSmrgvoid
4185549e21daSmrglt_update_lib_path (const char *name, const char *value)
4186549e21daSmrg{
4187549e21daSmrg  lt_debugprintf (__FILE__, __LINE__,
4188549e21daSmrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4189549e21daSmrg                  nonnull (name), nonnull (value));
4190ba6a1819Smrg
4191549e21daSmrg  if (name && *name && value && *value)
4192549e21daSmrg    {
4193549e21daSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4194549e21daSmrg      lt_setenv (name, new_value);
4195549e21daSmrg      XFREE (new_value);
4196549e21daSmrg    }
4197549e21daSmrg}
4198ba6a1819Smrg
4199549e21daSmrgEOF
4200549e21daSmrg	    case $host_os in
4201549e21daSmrg	      mingw*)
4202549e21daSmrg		cat <<"EOF"
4203549e21daSmrg
4204549e21daSmrg/* Prepares an argument vector before calling spawn().
4205549e21daSmrg   Note that spawn() does not by itself call the command interpreter
4206549e21daSmrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4207549e21daSmrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4208549e21daSmrg         GetVersionEx(&v);
4209549e21daSmrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4210549e21daSmrg      }) ? "cmd.exe" : "command.com").
4211549e21daSmrg   Instead it simply concatenates the arguments, separated by ' ', and calls
4212549e21daSmrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4213549e21daSmrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4214549e21daSmrg   special way:
4215549e21daSmrg   - Space and tab are interpreted as delimiters. They are not treated as
4216549e21daSmrg     delimiters if they are surrounded by double quotes: "...".
4217549e21daSmrg   - Unescaped double quotes are removed from the input. Their only effect is
4218549e21daSmrg     that within double quotes, space and tab are treated like normal
4219549e21daSmrg     characters.
4220549e21daSmrg   - Backslashes not followed by double quotes are not special.
4221549e21daSmrg   - But 2*n+1 backslashes followed by a double quote become
4222549e21daSmrg     n backslashes followed by a double quote (n >= 0):
4223549e21daSmrg       \" -> "
4224549e21daSmrg       \\\" -> \"
4225549e21daSmrg       \\\\\" -> \\"
4226549e21daSmrg */
4227549e21daSmrg#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4228549e21daSmrg#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4229549e21daSmrgchar **
4230549e21daSmrgprepare_spawn (char **argv)
4231549e21daSmrg{
4232549e21daSmrg  size_t argc;
4233549e21daSmrg  char **new_argv;
4234549e21daSmrg  size_t i;
4235ba6a1819Smrg
4236549e21daSmrg  /* Count number of arguments.  */
4237549e21daSmrg  for (argc = 0; argv[argc] != NULL; argc++)
4238549e21daSmrg    ;
4239ba6a1819Smrg
4240549e21daSmrg  /* Allocate new argument vector.  */
4241549e21daSmrg  new_argv = XMALLOC (char *, argc + 1);
4242ba6a1819Smrg
4243549e21daSmrg  /* Put quoted arguments into the new argument vector.  */
4244549e21daSmrg  for (i = 0; i < argc; i++)
4245549e21daSmrg    {
4246549e21daSmrg      const char *string = argv[i];
4247549e21daSmrg
4248549e21daSmrg      if (string[0] == '\0')
4249549e21daSmrg	new_argv[i] = xstrdup ("\"\"");
4250549e21daSmrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4251549e21daSmrg	{
4252549e21daSmrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4253549e21daSmrg	  size_t length;
4254549e21daSmrg	  unsigned int backslashes;
4255549e21daSmrg	  const char *s;
4256549e21daSmrg	  char *quoted_string;
4257549e21daSmrg	  char *p;
4258549e21daSmrg
4259549e21daSmrg	  length = 0;
4260549e21daSmrg	  backslashes = 0;
4261549e21daSmrg	  if (quote_around)
4262549e21daSmrg	    length++;
4263549e21daSmrg	  for (s = string; *s != '\0'; s++)
4264549e21daSmrg	    {
4265549e21daSmrg	      char c = *s;
4266549e21daSmrg	      if (c == '"')
4267549e21daSmrg		length += backslashes + 1;
4268549e21daSmrg	      length++;
4269549e21daSmrg	      if (c == '\\')
4270549e21daSmrg		backslashes++;
4271549e21daSmrg	      else
4272549e21daSmrg		backslashes = 0;
4273549e21daSmrg	    }
4274549e21daSmrg	  if (quote_around)
4275549e21daSmrg	    length += backslashes + 1;
4276549e21daSmrg
4277549e21daSmrg	  quoted_string = XMALLOC (char, length + 1);
4278549e21daSmrg
4279549e21daSmrg	  p = quoted_string;
4280549e21daSmrg	  backslashes = 0;
4281549e21daSmrg	  if (quote_around)
4282549e21daSmrg	    *p++ = '"';
4283549e21daSmrg	  for (s = string; *s != '\0'; s++)
4284549e21daSmrg	    {
4285549e21daSmrg	      char c = *s;
4286549e21daSmrg	      if (c == '"')
4287549e21daSmrg		{
4288549e21daSmrg		  unsigned int j;
4289549e21daSmrg		  for (j = backslashes + 1; j > 0; j--)
4290549e21daSmrg		    *p++ = '\\';
4291549e21daSmrg		}
4292549e21daSmrg	      *p++ = c;
4293549e21daSmrg	      if (c == '\\')
4294549e21daSmrg		backslashes++;
4295549e21daSmrg	      else
4296549e21daSmrg		backslashes = 0;
4297549e21daSmrg	    }
4298549e21daSmrg	  if (quote_around)
4299549e21daSmrg	    {
4300549e21daSmrg	      unsigned int j;
4301549e21daSmrg	      for (j = backslashes; j > 0; j--)
4302549e21daSmrg		*p++ = '\\';
4303549e21daSmrg	      *p++ = '"';
4304549e21daSmrg	    }
4305549e21daSmrg	  *p = '\0';
4306ba6a1819Smrg
4307549e21daSmrg	  new_argv[i] = quoted_string;
4308549e21daSmrg	}
4309549e21daSmrg      else
4310549e21daSmrg	new_argv[i] = (char *) string;
4311549e21daSmrg    }
4312549e21daSmrg  new_argv[argc] = NULL;
4313ba6a1819Smrg
4314549e21daSmrg  return new_argv;
4315549e21daSmrg}
4316549e21daSmrgEOF
4317ba6a1819Smrg		;;
4318549e21daSmrg	    esac
4319ba6a1819Smrg
4320549e21daSmrg            cat <<"EOF"
4321549e21daSmrgvoid lt_dump_script (FILE* f)
4322549e21daSmrg{
4323549e21daSmrgEOF
4324549e21daSmrg	    func_emit_wrapper yes |
4325549e21daSmrg              $SED -e 's/\([\\"]\)/\\\1/g' \
4326549e21daSmrg	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
4327ba6a1819Smrg
4328549e21daSmrg            cat <<"EOF"
4329549e21daSmrg}
4330549e21daSmrgEOF
4331549e21daSmrg}
4332549e21daSmrg# end: func_emit_cwrapperexe_src
4333ba6a1819Smrg
4334549e21daSmrg# func_win32_import_lib_p ARG
4335549e21daSmrg# True if ARG is an import lib, as indicated by $file_magic_cmd
4336549e21daSmrgfunc_win32_import_lib_p ()
4337549e21daSmrg{
4338549e21daSmrg    $opt_debug
4339549e21daSmrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
4340549e21daSmrg    *import*) : ;;
4341549e21daSmrg    *) false ;;
4342549e21daSmrg    esac
4343549e21daSmrg}
4344ba6a1819Smrg
4345549e21daSmrg# func_mode_link arg...
4346549e21daSmrgfunc_mode_link ()
4347549e21daSmrg{
4348549e21daSmrg    $opt_debug
4349549e21daSmrg    case $host in
4350549e21daSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4351549e21daSmrg      # It is impossible to link a dll without this setting, and
4352549e21daSmrg      # we shouldn't force the makefile maintainer to figure out
4353549e21daSmrg      # which system we are compiling for in order to pass an extra
4354549e21daSmrg      # flag for every libtool invocation.
4355549e21daSmrg      # allow_undefined=no
4356ba6a1819Smrg
4357549e21daSmrg      # FIXME: Unfortunately, there are problems with the above when trying
4358549e21daSmrg      # to make a dll which has undefined symbols, in which case not
4359549e21daSmrg      # even a static library is built.  For now, we need to specify
4360549e21daSmrg      # -no-undefined on the libtool link line when we can be certain
4361549e21daSmrg      # that all symbols are satisfied, otherwise we get a static library.
4362549e21daSmrg      allow_undefined=yes
4363549e21daSmrg      ;;
4364549e21daSmrg    *)
4365549e21daSmrg      allow_undefined=yes
4366549e21daSmrg      ;;
4367549e21daSmrg    esac
4368549e21daSmrg    libtool_args=$nonopt
4369549e21daSmrg    base_compile="$nonopt $@"
4370549e21daSmrg    compile_command=$nonopt
4371549e21daSmrg    finalize_command=$nonopt
4372ba6a1819Smrg
4373549e21daSmrg    compile_rpath=
4374549e21daSmrg    finalize_rpath=
4375549e21daSmrg    compile_shlibpath=
4376549e21daSmrg    finalize_shlibpath=
4377549e21daSmrg    convenience=
4378549e21daSmrg    old_convenience=
4379549e21daSmrg    deplibs=
4380549e21daSmrg    old_deplibs=
4381549e21daSmrg    compiler_flags=
4382549e21daSmrg    linker_flags=
4383549e21daSmrg    dllsearchpath=
4384549e21daSmrg    lib_search_path=`pwd`
4385549e21daSmrg    inst_prefix_dir=
4386549e21daSmrg    new_inherited_linker_flags=
4387ba6a1819Smrg
4388549e21daSmrg    avoid_version=no
4389549e21daSmrg    bindir=
4390549e21daSmrg    dlfiles=
4391549e21daSmrg    dlprefiles=
4392549e21daSmrg    dlself=no
4393549e21daSmrg    export_dynamic=no
4394549e21daSmrg    export_symbols=
4395549e21daSmrg    export_symbols_regex=
4396549e21daSmrg    generated=
4397549e21daSmrg    libobjs=
4398549e21daSmrg    ltlibs=
4399549e21daSmrg    module=no
4400549e21daSmrg    no_install=no
4401549e21daSmrg    objs=
4402549e21daSmrg    non_pic_objects=
4403549e21daSmrg    precious_files_regex=
4404549e21daSmrg    prefer_static_libs=no
4405549e21daSmrg    preload=no
4406549e21daSmrg    prev=
4407549e21daSmrg    prevarg=
4408549e21daSmrg    release=
4409549e21daSmrg    rpath=
4410549e21daSmrg    xrpath=
4411549e21daSmrg    perm_rpath=
4412549e21daSmrg    temp_rpath=
4413549e21daSmrg    thread_safe=no
4414549e21daSmrg    vinfo=
4415549e21daSmrg    vinfo_number=no
4416549e21daSmrg    weak_libs=
4417549e21daSmrg    single_module="${wl}-single_module"
4418549e21daSmrg    func_infer_tag $base_compile
4419ba6a1819Smrg
4420549e21daSmrg    # We need to know -static, to get the right output filenames.
4421549e21daSmrg    for arg
4422549e21daSmrg    do
4423549e21daSmrg      case $arg in
4424549e21daSmrg      -shared)
4425549e21daSmrg	test "$build_libtool_libs" != yes && \
4426549e21daSmrg	  func_fatal_configuration "can not build a shared library"
4427549e21daSmrg	build_old_libs=no
4428549e21daSmrg	break
4429549e21daSmrg	;;
4430549e21daSmrg      -all-static | -static | -static-libtool-libs)
4431549e21daSmrg	case $arg in
4432549e21daSmrg	-all-static)
4433549e21daSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4434549e21daSmrg	    func_warning "complete static linking is impossible in this configuration"
4435549e21daSmrg	  fi
4436549e21daSmrg	  if test -n "$link_static_flag"; then
4437549e21daSmrg	    dlopen_self=$dlopen_self_static
4438549e21daSmrg	  fi
4439549e21daSmrg	  prefer_static_libs=yes
4440549e21daSmrg	  ;;
4441549e21daSmrg	-static)
4442549e21daSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4443549e21daSmrg	    dlopen_self=$dlopen_self_static
4444549e21daSmrg	  fi
4445549e21daSmrg	  prefer_static_libs=built
4446549e21daSmrg	  ;;
4447549e21daSmrg	-static-libtool-libs)
4448549e21daSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4449549e21daSmrg	    dlopen_self=$dlopen_self_static
4450549e21daSmrg	  fi
4451549e21daSmrg	  prefer_static_libs=yes
4452549e21daSmrg	  ;;
4453549e21daSmrg	esac
4454549e21daSmrg	build_libtool_libs=no
4455549e21daSmrg	build_old_libs=yes
4456549e21daSmrg	break
4457549e21daSmrg	;;
4458549e21daSmrg      esac
4459549e21daSmrg    done
4460ba6a1819Smrg
4461549e21daSmrg    # See if our shared archives depend on static archives.
4462549e21daSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4463ba6a1819Smrg
4464549e21daSmrg    # Go through the arguments, transforming them on the way.
4465549e21daSmrg    while test "$#" -gt 0; do
4466549e21daSmrg      arg="$1"
4467549e21daSmrg      shift
4468549e21daSmrg      func_quote_for_eval "$arg"
4469549e21daSmrg      qarg=$func_quote_for_eval_unquoted_result
4470549e21daSmrg      func_append libtool_args " $func_quote_for_eval_result"
4471ba6a1819Smrg
4472549e21daSmrg      # If the previous option needs an argument, assign it.
4473549e21daSmrg      if test -n "$prev"; then
4474549e21daSmrg	case $prev in
4475549e21daSmrg	output)
4476549e21daSmrg	  func_append compile_command " @OUTPUT@"
4477549e21daSmrg	  func_append finalize_command " @OUTPUT@"
4478549e21daSmrg	  ;;
4479549e21daSmrg	esac
4480ba6a1819Smrg
4481549e21daSmrg	case $prev in
4482549e21daSmrg	bindir)
4483549e21daSmrg	  bindir="$arg"
4484549e21daSmrg	  prev=
4485549e21daSmrg	  continue
4486549e21daSmrg	  ;;
4487549e21daSmrg	dlfiles|dlprefiles)
4488549e21daSmrg	  if test "$preload" = no; then
4489549e21daSmrg	    # Add the symbol object into the linking commands.
4490549e21daSmrg	    func_append compile_command " @SYMFILE@"
4491549e21daSmrg	    func_append finalize_command " @SYMFILE@"
4492549e21daSmrg	    preload=yes
4493ba6a1819Smrg	  fi
4494549e21daSmrg	  case $arg in
4495549e21daSmrg	  *.la | *.lo) ;;  # We handle these cases below.
4496549e21daSmrg	  force)
4497549e21daSmrg	    if test "$dlself" = no; then
4498549e21daSmrg	      dlself=needless
4499549e21daSmrg	      export_dynamic=yes
4500ba6a1819Smrg	    fi
4501549e21daSmrg	    prev=
4502549e21daSmrg	    continue
4503549e21daSmrg	    ;;
4504549e21daSmrg	  self)
4505549e21daSmrg	    if test "$prev" = dlprefiles; then
4506549e21daSmrg	      dlself=yes
4507549e21daSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4508549e21daSmrg	      dlself=yes
4509ba6a1819Smrg	    else
4510549e21daSmrg	      dlself=needless
4511549e21daSmrg	      export_dynamic=yes
4512ba6a1819Smrg	    fi
4513549e21daSmrg	    prev=
4514549e21daSmrg	    continue
4515549e21daSmrg	    ;;
4516549e21daSmrg	  *)
4517549e21daSmrg	    if test "$prev" = dlfiles; then
4518549e21daSmrg	      dlfiles="$dlfiles $arg"
4519ba6a1819Smrg	    else
4520549e21daSmrg	      dlprefiles="$dlprefiles $arg"
4521ba6a1819Smrg	    fi
4522549e21daSmrg	    prev=
4523549e21daSmrg	    continue
4524549e21daSmrg	    ;;
4525549e21daSmrg	  esac
4526549e21daSmrg	  ;;
4527549e21daSmrg	expsyms)
4528549e21daSmrg	  export_symbols="$arg"
4529549e21daSmrg	  test -f "$arg" \
4530549e21daSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4531549e21daSmrg	  prev=
4532549e21daSmrg	  continue
4533549e21daSmrg	  ;;
4534549e21daSmrg	expsyms_regex)
4535549e21daSmrg	  export_symbols_regex="$arg"
4536549e21daSmrg	  prev=
4537549e21daSmrg	  continue
4538549e21daSmrg	  ;;
4539549e21daSmrg	framework)
4540549e21daSmrg	  case $host in
4541549e21daSmrg	    *-*-darwin*)
4542549e21daSmrg	      case "$deplibs " in
4543549e21daSmrg		*" $qarg.ltframework "*) ;;
4544549e21daSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4545549e21daSmrg		   ;;
4546549e21daSmrg	      esac
4547549e21daSmrg	      ;;
4548549e21daSmrg	  esac
4549549e21daSmrg	  prev=
4550549e21daSmrg	  continue
4551549e21daSmrg	  ;;
4552549e21daSmrg	inst_prefix)
4553549e21daSmrg	  inst_prefix_dir="$arg"
4554549e21daSmrg	  prev=
4555549e21daSmrg	  continue
4556549e21daSmrg	  ;;
4557549e21daSmrg	objectlist)
4558549e21daSmrg	  if test -f "$arg"; then
4559549e21daSmrg	    save_arg=$arg
4560549e21daSmrg	    moreargs=
4561549e21daSmrg	    for fil in `cat "$save_arg"`
4562549e21daSmrg	    do
4563549e21daSmrg#	      moreargs="$moreargs $fil"
4564549e21daSmrg	      arg=$fil
4565549e21daSmrg	      # A libtool-controlled object.
4566ba6a1819Smrg
4567549e21daSmrg	      # Check to see that this really is a libtool object.
4568549e21daSmrg	      if func_lalib_unsafe_p "$arg"; then
4569549e21daSmrg		pic_object=
4570549e21daSmrg		non_pic_object=
4571ba6a1819Smrg
4572549e21daSmrg		# Read the .lo file
4573549e21daSmrg		func_source "$arg"
4574ba6a1819Smrg
4575549e21daSmrg		if test -z "$pic_object" ||
4576549e21daSmrg		   test -z "$non_pic_object" ||
4577549e21daSmrg		   test "$pic_object" = none &&
4578549e21daSmrg		   test "$non_pic_object" = none; then
4579549e21daSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
4580549e21daSmrg		fi
4581ba6a1819Smrg
4582549e21daSmrg		# Extract subdirectory from the argument.
4583549e21daSmrg		func_dirname "$arg" "/" ""
4584549e21daSmrg		xdir="$func_dirname_result"
4585ba6a1819Smrg
4586549e21daSmrg		if test "$pic_object" != none; then
4587549e21daSmrg		  # Prepend the subdirectory the object is found in.
4588549e21daSmrg		  pic_object="$xdir$pic_object"
4589ba6a1819Smrg
4590549e21daSmrg		  if test "$prev" = dlfiles; then
4591549e21daSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4592549e21daSmrg		      dlfiles="$dlfiles $pic_object"
4593549e21daSmrg		      prev=
4594549e21daSmrg		      continue
4595549e21daSmrg		    else
4596549e21daSmrg		      # If libtool objects are unsupported, then we need to preload.
4597549e21daSmrg		      prev=dlprefiles
4598549e21daSmrg		    fi
4599549e21daSmrg		  fi
4600ba6a1819Smrg
4601549e21daSmrg		  # CHECK ME:  I think I busted this.  -Ossama
4602549e21daSmrg		  if test "$prev" = dlprefiles; then
4603549e21daSmrg		    # Preload the old-style object.
4604549e21daSmrg		    dlprefiles="$dlprefiles $pic_object"
4605549e21daSmrg		    prev=
4606549e21daSmrg		  fi
4607ba6a1819Smrg
4608549e21daSmrg		  # A PIC object.
4609549e21daSmrg		  func_append libobjs " $pic_object"
4610549e21daSmrg		  arg="$pic_object"
4611549e21daSmrg		fi
4612ba6a1819Smrg
4613549e21daSmrg		# Non-PIC object.
4614549e21daSmrg		if test "$non_pic_object" != none; then
4615549e21daSmrg		  # Prepend the subdirectory the object is found in.
4616549e21daSmrg		  non_pic_object="$xdir$non_pic_object"
4617ba6a1819Smrg
4618549e21daSmrg		  # A standard non-PIC object
4619549e21daSmrg		  func_append non_pic_objects " $non_pic_object"
4620549e21daSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4621549e21daSmrg		    arg="$non_pic_object"
4622549e21daSmrg		  fi
4623549e21daSmrg		else
4624549e21daSmrg		  # If the PIC object exists, use it instead.
4625549e21daSmrg		  # $xdir was prepended to $pic_object above.
4626549e21daSmrg		  non_pic_object="$pic_object"
4627549e21daSmrg		  func_append non_pic_objects " $non_pic_object"
4628549e21daSmrg		fi
4629549e21daSmrg	      else
4630549e21daSmrg		# Only an error if not doing a dry-run.
4631549e21daSmrg		if $opt_dry_run; then
4632549e21daSmrg		  # Extract subdirectory from the argument.
4633549e21daSmrg		  func_dirname "$arg" "/" ""
4634549e21daSmrg		  xdir="$func_dirname_result"
4635549e21daSmrg
4636549e21daSmrg		  func_lo2o "$arg"
4637549e21daSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
4638549e21daSmrg		  non_pic_object=$xdir$func_lo2o_result
4639549e21daSmrg		  func_append libobjs " $pic_object"
4640549e21daSmrg		  func_append non_pic_objects " $non_pic_object"
4641549e21daSmrg	        else
4642549e21daSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4643549e21daSmrg		fi
4644549e21daSmrg	      fi
4645549e21daSmrg	    done
4646549e21daSmrg	  else
4647549e21daSmrg	    func_fatal_error "link input file \`$arg' does not exist"
4648ba6a1819Smrg	  fi
4649549e21daSmrg	  arg=$save_arg
4650549e21daSmrg	  prev=
4651549e21daSmrg	  continue
4652549e21daSmrg	  ;;
4653549e21daSmrg	precious_regex)
4654549e21daSmrg	  precious_files_regex="$arg"
4655549e21daSmrg	  prev=
4656549e21daSmrg	  continue
4657549e21daSmrg	  ;;
4658549e21daSmrg	release)
4659549e21daSmrg	  release="-$arg"
4660549e21daSmrg	  prev=
4661549e21daSmrg	  continue
4662549e21daSmrg	  ;;
4663549e21daSmrg	rpath | xrpath)
4664549e21daSmrg	  # We need an absolute path.
4665549e21daSmrg	  case $arg in
4666549e21daSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4667549e21daSmrg	  *)
4668549e21daSmrg	    func_fatal_error "only absolute run-paths are allowed"
4669549e21daSmrg	    ;;
4670ba6a1819Smrg	  esac
4671549e21daSmrg	  if test "$prev" = rpath; then
4672549e21daSmrg	    case "$rpath " in
4673549e21daSmrg	    *" $arg "*) ;;
4674549e21daSmrg	    *) rpath="$rpath $arg" ;;
4675549e21daSmrg	    esac
4676549e21daSmrg	  else
4677549e21daSmrg	    case "$xrpath " in
4678549e21daSmrg	    *" $arg "*) ;;
4679549e21daSmrg	    *) xrpath="$xrpath $arg" ;;
4680549e21daSmrg	    esac
4681549e21daSmrg	  fi
4682549e21daSmrg	  prev=
4683549e21daSmrg	  continue
4684549e21daSmrg	  ;;
4685549e21daSmrg	shrext)
4686549e21daSmrg	  shrext_cmds="$arg"
4687549e21daSmrg	  prev=
4688549e21daSmrg	  continue
4689549e21daSmrg	  ;;
4690549e21daSmrg	weak)
4691549e21daSmrg	  weak_libs="$weak_libs $arg"
4692549e21daSmrg	  prev=
4693549e21daSmrg	  continue
4694549e21daSmrg	  ;;
4695549e21daSmrg	xcclinker)
4696549e21daSmrg	  linker_flags="$linker_flags $qarg"
4697549e21daSmrg	  compiler_flags="$compiler_flags $qarg"
4698549e21daSmrg	  prev=
4699549e21daSmrg	  func_append compile_command " $qarg"
4700549e21daSmrg	  func_append finalize_command " $qarg"
4701549e21daSmrg	  continue
4702549e21daSmrg	  ;;
4703549e21daSmrg	xcompiler)
4704549e21daSmrg	  compiler_flags="$compiler_flags $qarg"
4705549e21daSmrg	  prev=
4706549e21daSmrg	  func_append compile_command " $qarg"
4707549e21daSmrg	  func_append finalize_command " $qarg"
4708549e21daSmrg	  continue
4709549e21daSmrg	  ;;
4710549e21daSmrg	xlinker)
4711549e21daSmrg	  linker_flags="$linker_flags $qarg"
4712549e21daSmrg	  compiler_flags="$compiler_flags $wl$qarg"
4713549e21daSmrg	  prev=
4714549e21daSmrg	  func_append compile_command " $wl$qarg"
4715549e21daSmrg	  func_append finalize_command " $wl$qarg"
4716549e21daSmrg	  continue
4717ba6a1819Smrg	  ;;
4718ba6a1819Smrg	*)
4719549e21daSmrg	  eval "$prev=\"\$arg\""
4720549e21daSmrg	  prev=
4721549e21daSmrg	  continue
4722ba6a1819Smrg	  ;;
4723ba6a1819Smrg	esac
4724549e21daSmrg      fi # test -n "$prev"
4725ba6a1819Smrg
4726549e21daSmrg      prevarg="$arg"
4727ba6a1819Smrg
4728549e21daSmrg      case $arg in
4729549e21daSmrg      -all-static)
4730549e21daSmrg	if test -n "$link_static_flag"; then
4731549e21daSmrg	  # See comment for -static flag below, for more details.
4732549e21daSmrg	  func_append compile_command " $link_static_flag"
4733549e21daSmrg	  func_append finalize_command " $link_static_flag"
4734ba6a1819Smrg	fi
4735549e21daSmrg	continue
4736549e21daSmrg	;;
4737ba6a1819Smrg
4738549e21daSmrg      -allow-undefined)
4739549e21daSmrg	# FIXME: remove this flag sometime in the future.
4740549e21daSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4741549e21daSmrg	;;
4742ba6a1819Smrg
4743549e21daSmrg      -avoid-version)
4744549e21daSmrg	avoid_version=yes
4745549e21daSmrg	continue
4746549e21daSmrg	;;
4747ba6a1819Smrg
4748549e21daSmrg      -bindir)
4749549e21daSmrg	prev=bindir
4750549e21daSmrg	continue
4751549e21daSmrg	;;
4752ba6a1819Smrg
4753549e21daSmrg      -dlopen)
4754549e21daSmrg	prev=dlfiles
4755549e21daSmrg	continue
4756549e21daSmrg	;;
4757ba6a1819Smrg
4758549e21daSmrg      -dlpreopen)
4759549e21daSmrg	prev=dlprefiles
4760549e21daSmrg	continue
4761549e21daSmrg	;;
4762ba6a1819Smrg
4763549e21daSmrg      -export-dynamic)
4764549e21daSmrg	export_dynamic=yes
4765549e21daSmrg	continue
4766549e21daSmrg	;;
4767ba6a1819Smrg
4768549e21daSmrg      -export-symbols | -export-symbols-regex)
4769549e21daSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4770549e21daSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4771549e21daSmrg	fi
4772549e21daSmrg	if test "X$arg" = "X-export-symbols"; then
4773549e21daSmrg	  prev=expsyms
4774ba6a1819Smrg	else
4775549e21daSmrg	  prev=expsyms_regex
4776ba6a1819Smrg	fi
4777549e21daSmrg	continue
4778549e21daSmrg	;;
4779ba6a1819Smrg
4780549e21daSmrg      -framework)
4781549e21daSmrg	prev=framework
4782549e21daSmrg	continue
4783549e21daSmrg	;;
4784ba6a1819Smrg
4785549e21daSmrg      -inst-prefix-dir)
4786549e21daSmrg	prev=inst_prefix
4787549e21daSmrg	continue
4788549e21daSmrg	;;
4789ba6a1819Smrg
4790549e21daSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4791549e21daSmrg      # so, if we see these flags be careful not to treat them like -L
4792549e21daSmrg      -L[A-Z][A-Z]*:*)
4793549e21daSmrg	case $with_gcc/$host in
4794549e21daSmrg	no/*-*-irix* | /*-*-irix*)
4795549e21daSmrg	  func_append compile_command " $arg"
4796549e21daSmrg	  func_append finalize_command " $arg"
4797549e21daSmrg	  ;;
4798549e21daSmrg	esac
4799549e21daSmrg	continue
4800549e21daSmrg	;;
4801ba6a1819Smrg
4802549e21daSmrg      -L*)
4803549e21daSmrg	func_stripname '-L' '' "$arg"
4804549e21daSmrg	dir=$func_stripname_result
4805549e21daSmrg	if test -z "$dir"; then
4806549e21daSmrg	  if test "$#" -gt 0; then
4807549e21daSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4808ba6a1819Smrg	  else
4809549e21daSmrg	    func_fatal_error "need path for \`-L' option"
4810ba6a1819Smrg	  fi
4811549e21daSmrg	fi
4812549e21daSmrg	# We need an absolute path.
4813549e21daSmrg	case $dir in
4814549e21daSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4815549e21daSmrg	*)
4816549e21daSmrg	  absdir=`cd "$dir" && pwd`
4817549e21daSmrg	  test -z "$absdir" && \
4818549e21daSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4819549e21daSmrg	  dir="$absdir"
4820549e21daSmrg	  ;;
4821ba6a1819Smrg	esac
4822549e21daSmrg	case "$deplibs " in
4823549e21daSmrg	*" -L$dir "*) ;;
4824549e21daSmrg	*)
4825549e21daSmrg	  deplibs="$deplibs -L$dir"
4826549e21daSmrg	  lib_search_path="$lib_search_path $dir"
4827549e21daSmrg	  ;;
4828ba6a1819Smrg	esac
4829ba6a1819Smrg	case $host in
4830549e21daSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4831549e21daSmrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
4832549e21daSmrg	  case :$dllsearchpath: in
4833549e21daSmrg	  *":$dir:"*) ;;
4834549e21daSmrg	  ::) dllsearchpath=$dir;;
4835549e21daSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4836549e21daSmrg	  esac
4837549e21daSmrg	  case :$dllsearchpath: in
4838549e21daSmrg	  *":$testbindir:"*) ;;
4839549e21daSmrg	  ::) dllsearchpath=$testbindir;;
4840549e21daSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4841549e21daSmrg	  esac
4842549e21daSmrg	  ;;
4843ba6a1819Smrg	esac
4844549e21daSmrg	continue
4845549e21daSmrg	;;
4846ba6a1819Smrg
4847549e21daSmrg      -l*)
4848549e21daSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4849549e21daSmrg	  case $host in
4850549e21daSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
4851549e21daSmrg	    # These systems don't actually have a C or math library (as such)
4852549e21daSmrg	    continue
4853549e21daSmrg	    ;;
4854549e21daSmrg	  *-*-os2*)
4855549e21daSmrg	    # These systems don't actually have a C library (as such)
4856549e21daSmrg	    test "X$arg" = "X-lc" && continue
4857549e21daSmrg	    ;;
4858549e21daSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4859549e21daSmrg	    # Do not include libc due to us having libc/libc_r.
4860549e21daSmrg	    test "X$arg" = "X-lc" && continue
4861549e21daSmrg	    ;;
4862549e21daSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
4863549e21daSmrg	    # Rhapsody C and math libraries are in the System framework
4864549e21daSmrg	    deplibs="$deplibs System.ltframework"
4865549e21daSmrg	    continue
4866549e21daSmrg	    ;;
4867549e21daSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4868549e21daSmrg	    # Causes problems with __ctype
4869549e21daSmrg	    test "X$arg" = "X-lc" && continue
4870549e21daSmrg	    ;;
4871549e21daSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4872549e21daSmrg	    # Compiler inserts libc in the correct place for threads to work
4873549e21daSmrg	    test "X$arg" = "X-lc" && continue
4874549e21daSmrg	    ;;
4875549e21daSmrg	  esac
4876549e21daSmrg	elif test "X$arg" = "X-lc_r"; then
4877549e21daSmrg	 case $host in
4878549e21daSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4879549e21daSmrg	   # Do not include libc_r directly, use -pthread flag.
4880549e21daSmrg	   continue
4881549e21daSmrg	   ;;
4882549e21daSmrg	 esac
4883549e21daSmrg	fi
4884549e21daSmrg	deplibs="$deplibs $arg"
4885549e21daSmrg	continue
4886549e21daSmrg	;;
4887ba6a1819Smrg
4888549e21daSmrg      -module)
4889549e21daSmrg	module=yes
4890549e21daSmrg	continue
4891549e21daSmrg	;;
4892ba6a1819Smrg
4893549e21daSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4894549e21daSmrg      # classes, name mangling, and exception handling.
4895549e21daSmrg      # Darwin uses the -arch flag to determine output architecture.
4896549e21daSmrg      -model|-arch|-isysroot)
4897549e21daSmrg	compiler_flags="$compiler_flags $arg"
4898549e21daSmrg	func_append compile_command " $arg"
4899549e21daSmrg	func_append finalize_command " $arg"
4900549e21daSmrg	prev=xcompiler
4901549e21daSmrg	continue
4902549e21daSmrg	;;
4903ba6a1819Smrg
4904549e21daSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4905549e21daSmrg	compiler_flags="$compiler_flags $arg"
4906549e21daSmrg	func_append compile_command " $arg"
4907549e21daSmrg	func_append finalize_command " $arg"
4908549e21daSmrg	case "$new_inherited_linker_flags " in
4909549e21daSmrg	    *" $arg "*) ;;
4910549e21daSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4911549e21daSmrg	esac
4912549e21daSmrg	continue
4913549e21daSmrg	;;
4914ba6a1819Smrg
4915549e21daSmrg      -multi_module)
4916549e21daSmrg	single_module="${wl}-multi_module"
4917549e21daSmrg	continue
4918549e21daSmrg	;;
4919ba6a1819Smrg
4920549e21daSmrg      -no-fast-install)
4921549e21daSmrg	fast_install=no
4922549e21daSmrg	continue
4923549e21daSmrg	;;
4924ba6a1819Smrg
4925549e21daSmrg      -no-install)
4926549e21daSmrg	case $host in
4927549e21daSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4928549e21daSmrg	  # The PATH hackery in wrapper scripts is required on Windows
4929549e21daSmrg	  # and Darwin in order for the loader to find any dlls it needs.
4930549e21daSmrg	  func_warning "\`-no-install' is ignored for $host"
4931549e21daSmrg	  func_warning "assuming \`-no-fast-install' instead"
4932549e21daSmrg	  fast_install=no
4933549e21daSmrg	  ;;
4934549e21daSmrg	*) no_install=yes ;;
4935549e21daSmrg	esac
4936549e21daSmrg	continue
4937549e21daSmrg	;;
4938ba6a1819Smrg
4939549e21daSmrg      -no-undefined)
4940549e21daSmrg	allow_undefined=no
4941549e21daSmrg	continue
4942549e21daSmrg	;;
4943ba6a1819Smrg
4944549e21daSmrg      -objectlist)
4945549e21daSmrg	prev=objectlist
4946549e21daSmrg	continue
4947549e21daSmrg	;;
4948ba6a1819Smrg
4949549e21daSmrg      -o) prev=output ;;
4950ba6a1819Smrg
4951549e21daSmrg      -precious-files-regex)
4952549e21daSmrg	prev=precious_regex
4953549e21daSmrg	continue
4954549e21daSmrg	;;
4955ba6a1819Smrg
4956549e21daSmrg      -release)
4957549e21daSmrg	prev=release
4958549e21daSmrg	continue
4959549e21daSmrg	;;
4960ba6a1819Smrg
4961549e21daSmrg      -rpath)
4962549e21daSmrg	prev=rpath
4963549e21daSmrg	continue
4964549e21daSmrg	;;
4965ba6a1819Smrg
4966549e21daSmrg      -R)
4967549e21daSmrg	prev=xrpath
4968549e21daSmrg	continue
4969549e21daSmrg	;;
4970ba6a1819Smrg
4971549e21daSmrg      -R*)
4972549e21daSmrg	func_stripname '-R' '' "$arg"
4973549e21daSmrg	dir=$func_stripname_result
4974549e21daSmrg	# We need an absolute path.
4975549e21daSmrg	case $dir in
4976549e21daSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4977549e21daSmrg	*)
4978549e21daSmrg	  func_fatal_error "only absolute run-paths are allowed"
4979549e21daSmrg	  ;;
4980549e21daSmrg	esac
4981549e21daSmrg	case "$xrpath " in
4982549e21daSmrg	*" $dir "*) ;;
4983549e21daSmrg	*) xrpath="$xrpath $dir" ;;
4984549e21daSmrg	esac
4985549e21daSmrg	continue
4986549e21daSmrg	;;
4987ba6a1819Smrg
4988549e21daSmrg      -shared)
4989549e21daSmrg	# The effects of -shared are defined in a previous loop.
4990549e21daSmrg	continue
4991549e21daSmrg	;;
4992ba6a1819Smrg
4993549e21daSmrg      -shrext)
4994549e21daSmrg	prev=shrext
4995549e21daSmrg	continue
4996549e21daSmrg	;;
4997ba6a1819Smrg
4998549e21daSmrg      -static | -static-libtool-libs)
4999549e21daSmrg	# The effects of -static are defined in a previous loop.
5000549e21daSmrg	# We used to do the same as -all-static on platforms that
5001549e21daSmrg	# didn't have a PIC flag, but the assumption that the effects
5002549e21daSmrg	# would be equivalent was wrong.  It would break on at least
5003549e21daSmrg	# Digital Unix and AIX.
5004549e21daSmrg	continue
5005549e21daSmrg	;;
5006ba6a1819Smrg
5007549e21daSmrg      -thread-safe)
5008549e21daSmrg	thread_safe=yes
5009549e21daSmrg	continue
5010549e21daSmrg	;;
5011ba6a1819Smrg
5012549e21daSmrg      -version-info)
5013549e21daSmrg	prev=vinfo
5014549e21daSmrg	continue
5015549e21daSmrg	;;
5016ba6a1819Smrg
5017549e21daSmrg      -version-number)
5018549e21daSmrg	prev=vinfo
5019549e21daSmrg	vinfo_number=yes
5020549e21daSmrg	continue
5021549e21daSmrg	;;
5022ba6a1819Smrg
5023549e21daSmrg      -weak)
5024549e21daSmrg        prev=weak
5025549e21daSmrg	continue
5026549e21daSmrg	;;
5027ba6a1819Smrg
5028549e21daSmrg      -Wc,*)
5029549e21daSmrg	func_stripname '-Wc,' '' "$arg"
5030549e21daSmrg	args=$func_stripname_result
5031549e21daSmrg	arg=
5032549e21daSmrg	save_ifs="$IFS"; IFS=','
5033549e21daSmrg	for flag in $args; do
5034549e21daSmrg	  IFS="$save_ifs"
5035549e21daSmrg          func_quote_for_eval "$flag"
5036549e21daSmrg	  arg="$arg $func_quote_for_eval_result"
5037549e21daSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
5038549e21daSmrg	done
5039549e21daSmrg	IFS="$save_ifs"
5040549e21daSmrg	func_stripname ' ' '' "$arg"
5041549e21daSmrg	arg=$func_stripname_result
5042549e21daSmrg	;;
5043ba6a1819Smrg
5044549e21daSmrg      -Wl,*)
5045549e21daSmrg	func_stripname '-Wl,' '' "$arg"
5046549e21daSmrg	args=$func_stripname_result
5047549e21daSmrg	arg=
5048549e21daSmrg	save_ifs="$IFS"; IFS=','
5049549e21daSmrg	for flag in $args; do
5050549e21daSmrg	  IFS="$save_ifs"
5051549e21daSmrg          func_quote_for_eval "$flag"
5052549e21daSmrg	  arg="$arg $wl$func_quote_for_eval_result"
5053549e21daSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
5054549e21daSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
5055549e21daSmrg	done
5056549e21daSmrg	IFS="$save_ifs"
5057549e21daSmrg	func_stripname ' ' '' "$arg"
5058549e21daSmrg	arg=$func_stripname_result
5059549e21daSmrg	;;
5060ba6a1819Smrg
5061549e21daSmrg      -Xcompiler)
5062549e21daSmrg	prev=xcompiler
5063549e21daSmrg	continue
5064549e21daSmrg	;;
5065ba6a1819Smrg
5066549e21daSmrg      -Xlinker)
5067549e21daSmrg	prev=xlinker
5068549e21daSmrg	continue
5069549e21daSmrg	;;
5070ba6a1819Smrg
5071549e21daSmrg      -XCClinker)
5072549e21daSmrg	prev=xcclinker
5073549e21daSmrg	continue
5074549e21daSmrg	;;
5075ba6a1819Smrg
5076549e21daSmrg      # -msg_* for osf cc
5077549e21daSmrg      -msg_*)
5078549e21daSmrg	func_quote_for_eval "$arg"
5079549e21daSmrg	arg="$func_quote_for_eval_result"
5080549e21daSmrg	;;
5081ba6a1819Smrg
5082549e21daSmrg      # Flags to be passed through unchanged, with rationale:
5083549e21daSmrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5084549e21daSmrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
5085549e21daSmrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5086549e21daSmrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5087549e21daSmrg      # -q*                  compiler args for the IBM compiler
5088549e21daSmrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5089549e21daSmrg      # -F/path              path to uninstalled frameworks, gcc on darwin
5090549e21daSmrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5091549e21daSmrg      # @file                GCC response files
5092549e21daSmrg      # -tp=*                Portland pgcc target processor selection
5093549e21daSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5094549e21daSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
5095549e21daSmrg        func_quote_for_eval "$arg"
5096549e21daSmrg	arg="$func_quote_for_eval_result"
5097549e21daSmrg        func_append compile_command " $arg"
5098549e21daSmrg        func_append finalize_command " $arg"
5099549e21daSmrg        compiler_flags="$compiler_flags $arg"
5100549e21daSmrg        continue
5101549e21daSmrg        ;;
5102ba6a1819Smrg
5103549e21daSmrg      # Some other compiler flag.
5104549e21daSmrg      -* | +*)
5105549e21daSmrg        func_quote_for_eval "$arg"
5106549e21daSmrg	arg="$func_quote_for_eval_result"
5107549e21daSmrg	;;
5108ba6a1819Smrg
5109549e21daSmrg      *.$objext)
5110549e21daSmrg	# A standard object.
5111549e21daSmrg	objs="$objs $arg"
5112549e21daSmrg	;;
5113ba6a1819Smrg
5114549e21daSmrg      *.lo)
5115549e21daSmrg	# A libtool-controlled object.
5116ba6a1819Smrg
5117549e21daSmrg	# Check to see that this really is a libtool object.
5118549e21daSmrg	if func_lalib_unsafe_p "$arg"; then
5119549e21daSmrg	  pic_object=
5120549e21daSmrg	  non_pic_object=
5121ba6a1819Smrg
5122549e21daSmrg	  # Read the .lo file
5123549e21daSmrg	  func_source "$arg"
5124ba6a1819Smrg
5125549e21daSmrg	  if test -z "$pic_object" ||
5126549e21daSmrg	     test -z "$non_pic_object" ||
5127549e21daSmrg	     test "$pic_object" = none &&
5128549e21daSmrg	     test "$non_pic_object" = none; then
5129549e21daSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
5130549e21daSmrg	  fi
5131ba6a1819Smrg
5132549e21daSmrg	  # Extract subdirectory from the argument.
5133549e21daSmrg	  func_dirname "$arg" "/" ""
5134549e21daSmrg	  xdir="$func_dirname_result"
5135ba6a1819Smrg
5136549e21daSmrg	  if test "$pic_object" != none; then
5137549e21daSmrg	    # Prepend the subdirectory the object is found in.
5138549e21daSmrg	    pic_object="$xdir$pic_object"
5139ba6a1819Smrg
5140549e21daSmrg	    if test "$prev" = dlfiles; then
5141549e21daSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5142549e21daSmrg		dlfiles="$dlfiles $pic_object"
5143549e21daSmrg		prev=
5144549e21daSmrg		continue
5145549e21daSmrg	      else
5146549e21daSmrg		# If libtool objects are unsupported, then we need to preload.
5147549e21daSmrg		prev=dlprefiles
5148549e21daSmrg	      fi
5149549e21daSmrg	    fi
5150ba6a1819Smrg
5151549e21daSmrg	    # CHECK ME:  I think I busted this.  -Ossama
5152549e21daSmrg	    if test "$prev" = dlprefiles; then
5153549e21daSmrg	      # Preload the old-style object.
5154549e21daSmrg	      dlprefiles="$dlprefiles $pic_object"
5155549e21daSmrg	      prev=
5156549e21daSmrg	    fi
5157ba6a1819Smrg
5158549e21daSmrg	    # A PIC object.
5159549e21daSmrg	    func_append libobjs " $pic_object"
5160549e21daSmrg	    arg="$pic_object"
5161549e21daSmrg	  fi
5162ba6a1819Smrg
5163549e21daSmrg	  # Non-PIC object.
5164549e21daSmrg	  if test "$non_pic_object" != none; then
5165549e21daSmrg	    # Prepend the subdirectory the object is found in.
5166549e21daSmrg	    non_pic_object="$xdir$non_pic_object"
5167ba6a1819Smrg
5168549e21daSmrg	    # A standard non-PIC object
5169549e21daSmrg	    func_append non_pic_objects " $non_pic_object"
5170549e21daSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
5171549e21daSmrg	      arg="$non_pic_object"
5172549e21daSmrg	    fi
5173549e21daSmrg	  else
5174549e21daSmrg	    # If the PIC object exists, use it instead.
5175549e21daSmrg	    # $xdir was prepended to $pic_object above.
5176549e21daSmrg	    non_pic_object="$pic_object"
5177549e21daSmrg	    func_append non_pic_objects " $non_pic_object"
5178549e21daSmrg	  fi
5179549e21daSmrg	else
5180549e21daSmrg	  # Only an error if not doing a dry-run.
5181549e21daSmrg	  if $opt_dry_run; then
5182549e21daSmrg	    # Extract subdirectory from the argument.
5183549e21daSmrg	    func_dirname "$arg" "/" ""
5184549e21daSmrg	    xdir="$func_dirname_result"
5185549e21daSmrg
5186549e21daSmrg	    func_lo2o "$arg"
5187549e21daSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
5188549e21daSmrg	    non_pic_object=$xdir$func_lo2o_result
5189549e21daSmrg	    func_append libobjs " $pic_object"
5190549e21daSmrg	    func_append non_pic_objects " $non_pic_object"
5191549e21daSmrg	  else
5192549e21daSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
5193549e21daSmrg	  fi
5194549e21daSmrg	fi
5195549e21daSmrg	;;
5196ba6a1819Smrg
5197549e21daSmrg      *.$libext)
5198549e21daSmrg	# An archive.
5199549e21daSmrg	deplibs="$deplibs $arg"
5200549e21daSmrg	old_deplibs="$old_deplibs $arg"
5201549e21daSmrg	continue
5202549e21daSmrg	;;
5203ba6a1819Smrg
5204549e21daSmrg      *.la)
5205549e21daSmrg	# A libtool-controlled library.
5206ba6a1819Smrg
5207549e21daSmrg	if test "$prev" = dlfiles; then
5208549e21daSmrg	  # This library was specified with -dlopen.
5209549e21daSmrg	  dlfiles="$dlfiles $arg"
5210549e21daSmrg	  prev=
5211549e21daSmrg	elif test "$prev" = dlprefiles; then
5212549e21daSmrg	  # The library was specified with -dlpreopen.
5213549e21daSmrg	  dlprefiles="$dlprefiles $arg"
5214549e21daSmrg	  prev=
5215549e21daSmrg	else
5216549e21daSmrg	  deplibs="$deplibs $arg"
5217549e21daSmrg	fi
5218549e21daSmrg	continue
5219549e21daSmrg	;;
5220ba6a1819Smrg
5221549e21daSmrg      # Some other compiler argument.
5222549e21daSmrg      *)
5223549e21daSmrg	# Unknown arguments in both finalize_command and compile_command need
5224549e21daSmrg	# to be aesthetically quoted because they are evaled later.
5225549e21daSmrg	func_quote_for_eval "$arg"
5226549e21daSmrg	arg="$func_quote_for_eval_result"
5227549e21daSmrg	;;
5228549e21daSmrg      esac # arg
5229ba6a1819Smrg
5230549e21daSmrg      # Now actually substitute the argument into the commands.
5231549e21daSmrg      if test -n "$arg"; then
5232549e21daSmrg	func_append compile_command " $arg"
5233549e21daSmrg	func_append finalize_command " $arg"
5234549e21daSmrg      fi
5235549e21daSmrg    done # argument parsing loop
5236ba6a1819Smrg
5237549e21daSmrg    test -n "$prev" && \
5238549e21daSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
5239ba6a1819Smrg
5240549e21daSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5241549e21daSmrg      eval arg=\"$export_dynamic_flag_spec\"
5242549e21daSmrg      func_append compile_command " $arg"
5243549e21daSmrg      func_append finalize_command " $arg"
5244549e21daSmrg    fi
5245ba6a1819Smrg
5246549e21daSmrg    oldlibs=
5247549e21daSmrg    # calculate the name of the file, without its directory
5248549e21daSmrg    func_basename "$output"
5249549e21daSmrg    outputname="$func_basename_result"
5250549e21daSmrg    libobjs_save="$libobjs"
5251549e21daSmrg
5252549e21daSmrg    if test -n "$shlibpath_var"; then
5253549e21daSmrg      # get the directories listed in $shlibpath_var
5254549e21daSmrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
5255ba6a1819Smrg    else
5256549e21daSmrg      shlib_search_path=
5257ba6a1819Smrg    fi
5258549e21daSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
5259549e21daSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
5260ba6a1819Smrg
5261549e21daSmrg    func_dirname "$output" "/" ""
5262549e21daSmrg    output_objdir="$func_dirname_result$objdir"
5263549e21daSmrg    # Create the object directory.
5264549e21daSmrg    func_mkdir_p "$output_objdir"
5265549e21daSmrg
5266549e21daSmrg    # Determine the type of output
5267549e21daSmrg    case $output in
5268549e21daSmrg    "")
5269549e21daSmrg      func_fatal_help "you must specify an output file"
5270549e21daSmrg      ;;
5271549e21daSmrg    *.$libext) linkmode=oldlib ;;
5272549e21daSmrg    *.lo | *.$objext) linkmode=obj ;;
5273549e21daSmrg    *.la) linkmode=lib ;;
5274549e21daSmrg    *) linkmode=prog ;; # Anything else should be a program.
5275549e21daSmrg    esac
5276549e21daSmrg
5277549e21daSmrg    specialdeplibs=
5278549e21daSmrg
5279549e21daSmrg    libs=
5280549e21daSmrg    # Find all interdependent deplibs by searching for libraries
5281549e21daSmrg    # that are linked more than once (e.g. -la -lb -la)
5282549e21daSmrg    for deplib in $deplibs; do
5283549e21daSmrg      if $opt_duplicate_deps ; then
5284549e21daSmrg	case "$libs " in
5285549e21daSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5286549e21daSmrg	esac
5287549e21daSmrg      fi
5288549e21daSmrg      libs="$libs $deplib"
5289549e21daSmrg    done
5290549e21daSmrg
5291549e21daSmrg    if test "$linkmode" = lib; then
5292549e21daSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
5293549e21daSmrg
5294549e21daSmrg      # Compute libraries that are listed more than once in $predeps
5295549e21daSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
5296549e21daSmrg      # not to be eliminated).
5297549e21daSmrg      pre_post_deps=
5298549e21daSmrg      if $opt_duplicate_compiler_generated_deps; then
5299549e21daSmrg	for pre_post_dep in $predeps $postdeps; do
5300549e21daSmrg	  case "$pre_post_deps " in
5301549e21daSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
5302549e21daSmrg	  esac
5303549e21daSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
5304549e21daSmrg	done
5305549e21daSmrg      fi
5306549e21daSmrg      pre_post_deps=
5307549e21daSmrg    fi
5308549e21daSmrg
5309549e21daSmrg    deplibs=
5310549e21daSmrg    newdependency_libs=
5311549e21daSmrg    newlib_search_path=
5312549e21daSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
5313549e21daSmrg    notinst_deplibs= # not-installed libtool libraries
5314549e21daSmrg    notinst_path= # paths that contain not-installed libtool libraries
5315549e21daSmrg
5316549e21daSmrg    case $linkmode in
5317549e21daSmrg    lib)
5318549e21daSmrg	passes="conv dlpreopen link"
5319549e21daSmrg	for file in $dlfiles $dlprefiles; do
5320549e21daSmrg	  case $file in
5321549e21daSmrg	  *.la) ;;
5322549e21daSmrg	  *)
5323549e21daSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5324549e21daSmrg	    ;;
5325549e21daSmrg	  esac
5326549e21daSmrg	done
5327549e21daSmrg	;;
5328549e21daSmrg    prog)
5329549e21daSmrg	compile_deplibs=
5330549e21daSmrg	finalize_deplibs=
5331549e21daSmrg	alldeplibs=no
5332549e21daSmrg	newdlfiles=
5333549e21daSmrg	newdlprefiles=
5334549e21daSmrg	passes="conv scan dlopen dlpreopen link"
5335549e21daSmrg	;;
5336549e21daSmrg    *)  passes="conv"
5337549e21daSmrg	;;
5338549e21daSmrg    esac
5339549e21daSmrg
5340549e21daSmrg    for pass in $passes; do
5341549e21daSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5342549e21daSmrg      # so that -L comes before libs that need it for instance...
5343549e21daSmrg      if test "$linkmode,$pass" = "lib,link"; then
5344549e21daSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
5345549e21daSmrg	##        order, and fix it there properly
5346549e21daSmrg        tmp_deplibs=
5347549e21daSmrg	for deplib in $deplibs; do
5348549e21daSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
5349549e21daSmrg	done
5350549e21daSmrg	deplibs="$tmp_deplibs"
5351549e21daSmrg      fi
5352549e21daSmrg
5353549e21daSmrg      if test "$linkmode,$pass" = "lib,link" ||
5354549e21daSmrg	 test "$linkmode,$pass" = "prog,scan"; then
5355549e21daSmrg	libs="$deplibs"
5356549e21daSmrg	deplibs=
5357549e21daSmrg      fi
5358549e21daSmrg      if test "$linkmode" = prog; then
5359549e21daSmrg	case $pass in
5360549e21daSmrg	dlopen) libs="$dlfiles" ;;
5361549e21daSmrg	dlpreopen) libs="$dlprefiles" ;;
5362549e21daSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5363549e21daSmrg	esac
5364549e21daSmrg      fi
5365549e21daSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5366549e21daSmrg	# Collect and forward deplibs of preopened libtool libs
5367549e21daSmrg	for lib in $dlprefiles; do
5368549e21daSmrg	  # Ignore non-libtool-libs
5369549e21daSmrg	  dependency_libs=
5370549e21daSmrg	  case $lib in
5371549e21daSmrg	  *.la)	func_source "$lib" ;;
5372549e21daSmrg	  esac
5373549e21daSmrg
5374549e21daSmrg	  # Collect preopened libtool deplibs, except any this library
5375549e21daSmrg	  # has declared as weak libs
5376549e21daSmrg	  for deplib in $dependency_libs; do
5377549e21daSmrg	    func_basename "$deplib"
5378549e21daSmrg            deplib_base=$func_basename_result
5379549e21daSmrg	    case " $weak_libs " in
5380549e21daSmrg	    *" $deplib_base "*) ;;
5381549e21daSmrg	    *) deplibs="$deplibs $deplib" ;;
5382549e21daSmrg	    esac
5383549e21daSmrg	  done
5384549e21daSmrg	done
5385549e21daSmrg	libs="$dlprefiles"
5386549e21daSmrg      fi
5387549e21daSmrg      if test "$pass" = dlopen; then
5388549e21daSmrg	# Collect dlpreopened libraries
5389549e21daSmrg	save_deplibs="$deplibs"
5390549e21daSmrg	deplibs=
5391549e21daSmrg      fi
5392549e21daSmrg
5393549e21daSmrg      for deplib in $libs; do
5394549e21daSmrg	lib=
5395549e21daSmrg	found=no
5396549e21daSmrg	case $deplib in
5397549e21daSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5398549e21daSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5399549e21daSmrg	    compile_deplibs="$deplib $compile_deplibs"
5400549e21daSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5401549e21daSmrg	  else
5402549e21daSmrg	    compiler_flags="$compiler_flags $deplib"
5403549e21daSmrg	    if test "$linkmode" = lib ; then
5404549e21daSmrg		case "$new_inherited_linker_flags " in
5405549e21daSmrg		    *" $deplib "*) ;;
5406549e21daSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5407549e21daSmrg		esac
5408549e21daSmrg	    fi
5409549e21daSmrg	  fi
5410549e21daSmrg	  continue
5411549e21daSmrg	  ;;
5412549e21daSmrg	-l*)
5413549e21daSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5414549e21daSmrg	    func_warning "\`-l' is ignored for archives/objects"
5415549e21daSmrg	    continue
5416549e21daSmrg	  fi
5417549e21daSmrg	  func_stripname '-l' '' "$deplib"
5418549e21daSmrg	  name=$func_stripname_result
5419549e21daSmrg	  if test "$linkmode" = lib; then
5420549e21daSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5421549e21daSmrg	  else
5422549e21daSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5423549e21daSmrg	  fi
5424549e21daSmrg	  for searchdir in $searchdirs; do
5425549e21daSmrg	    for search_ext in .la $std_shrext .so .a; do
5426549e21daSmrg	      # Search the libtool library
5427549e21daSmrg	      lib="$searchdir/lib${name}${search_ext}"
5428549e21daSmrg	      if test -f "$lib"; then
5429549e21daSmrg		if test "$search_ext" = ".la"; then
5430549e21daSmrg		  found=yes
5431549e21daSmrg		else
5432549e21daSmrg		  found=no
5433549e21daSmrg		fi
5434549e21daSmrg		break 2
5435549e21daSmrg	      fi
5436549e21daSmrg	    done
5437549e21daSmrg	  done
5438549e21daSmrg	  if test "$found" != yes; then
5439549e21daSmrg	    # deplib doesn't seem to be a libtool library
5440549e21daSmrg	    if test "$linkmode,$pass" = "prog,link"; then
5441549e21daSmrg	      compile_deplibs="$deplib $compile_deplibs"
5442549e21daSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5443549e21daSmrg	    else
5444549e21daSmrg	      deplibs="$deplib $deplibs"
5445549e21daSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5446549e21daSmrg	    fi
5447549e21daSmrg	    continue
5448549e21daSmrg	  else # deplib is a libtool library
5449549e21daSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5450549e21daSmrg	    # We need to do some special things here, and not later.
5451549e21daSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5452549e21daSmrg	      case " $predeps $postdeps " in
5453549e21daSmrg	      *" $deplib "*)
5454549e21daSmrg		if func_lalib_p "$lib"; then
5455549e21daSmrg		  library_names=
5456549e21daSmrg		  old_library=
5457549e21daSmrg		  func_source "$lib"
5458549e21daSmrg		  for l in $old_library $library_names; do
5459549e21daSmrg		    ll="$l"
5460549e21daSmrg		  done
5461549e21daSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5462549e21daSmrg		    found=no
5463549e21daSmrg		    func_dirname "$lib" "" "."
5464549e21daSmrg		    ladir="$func_dirname_result"
5465549e21daSmrg		    lib=$ladir/$old_library
5466549e21daSmrg		    if test "$linkmode,$pass" = "prog,link"; then
5467549e21daSmrg		      compile_deplibs="$deplib $compile_deplibs"
5468549e21daSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
5469549e21daSmrg		    else
5470549e21daSmrg		      deplibs="$deplib $deplibs"
5471549e21daSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5472549e21daSmrg		    fi
5473549e21daSmrg		    continue
5474549e21daSmrg		  fi
5475549e21daSmrg		fi
5476549e21daSmrg		;;
5477549e21daSmrg	      *) ;;
5478549e21daSmrg	      esac
5479549e21daSmrg	    fi
5480549e21daSmrg	  fi
5481549e21daSmrg	  ;; # -l
5482549e21daSmrg	*.ltframework)
5483549e21daSmrg	  if test "$linkmode,$pass" = "prog,link"; then
5484549e21daSmrg	    compile_deplibs="$deplib $compile_deplibs"
5485549e21daSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
5486549e21daSmrg	  else
5487549e21daSmrg	    deplibs="$deplib $deplibs"
5488549e21daSmrg	    if test "$linkmode" = lib ; then
5489549e21daSmrg		case "$new_inherited_linker_flags " in
5490549e21daSmrg		    *" $deplib "*) ;;
5491549e21daSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5492549e21daSmrg		esac
5493549e21daSmrg	    fi
5494549e21daSmrg	  fi
5495549e21daSmrg	  continue
5496549e21daSmrg	  ;;
5497549e21daSmrg	-L*)
5498549e21daSmrg	  case $linkmode in
5499549e21daSmrg	  lib)
5500549e21daSmrg	    deplibs="$deplib $deplibs"
5501549e21daSmrg	    test "$pass" = conv && continue
5502549e21daSmrg	    newdependency_libs="$deplib $newdependency_libs"
5503549e21daSmrg	    func_stripname '-L' '' "$deplib"
5504549e21daSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5505549e21daSmrg	    ;;
5506549e21daSmrg	  prog)
5507549e21daSmrg	    if test "$pass" = conv; then
5508549e21daSmrg	      deplibs="$deplib $deplibs"
5509549e21daSmrg	      continue
5510549e21daSmrg	    fi
5511549e21daSmrg	    if test "$pass" = scan; then
5512549e21daSmrg	      deplibs="$deplib $deplibs"
5513549e21daSmrg	    else
5514549e21daSmrg	      compile_deplibs="$deplib $compile_deplibs"
5515549e21daSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5516549e21daSmrg	    fi
5517549e21daSmrg	    func_stripname '-L' '' "$deplib"
5518549e21daSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5519549e21daSmrg	    ;;
5520549e21daSmrg	  *)
5521549e21daSmrg	    func_warning "\`-L' is ignored for archives/objects"
5522549e21daSmrg	    ;;
5523549e21daSmrg	  esac # linkmode
5524549e21daSmrg	  continue
5525549e21daSmrg	  ;; # -L
5526549e21daSmrg	-R*)
5527549e21daSmrg	  if test "$pass" = link; then
5528549e21daSmrg	    func_stripname '-R' '' "$deplib"
5529549e21daSmrg	    dir=$func_stripname_result
5530549e21daSmrg	    # Make sure the xrpath contains only unique directories.
5531549e21daSmrg	    case "$xrpath " in
5532549e21daSmrg	    *" $dir "*) ;;
5533549e21daSmrg	    *) xrpath="$xrpath $dir" ;;
5534549e21daSmrg	    esac
5535549e21daSmrg	  fi
5536549e21daSmrg	  deplibs="$deplib $deplibs"
5537549e21daSmrg	  continue
5538549e21daSmrg	  ;;
5539549e21daSmrg	*.la) lib="$deplib" ;;
5540549e21daSmrg	*.$libext)
5541549e21daSmrg	  if test "$pass" = conv; then
5542549e21daSmrg	    deplibs="$deplib $deplibs"
5543549e21daSmrg	    continue
5544549e21daSmrg	  fi
5545549e21daSmrg	  case $linkmode in
5546549e21daSmrg	  lib)
5547549e21daSmrg	    # Linking convenience modules into shared libraries is allowed,
5548549e21daSmrg	    # but linking other static libraries is non-portable.
5549549e21daSmrg	    case " $dlpreconveniencelibs " in
5550549e21daSmrg	    *" $deplib "*) ;;
5551549e21daSmrg	    *)
5552549e21daSmrg	      valid_a_lib=no
5553549e21daSmrg	      case $deplibs_check_method in
5554549e21daSmrg		match_pattern*)
5555549e21daSmrg		  set dummy $deplibs_check_method; shift
5556549e21daSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5557549e21daSmrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
5558549e21daSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5559549e21daSmrg		    valid_a_lib=yes
5560549e21daSmrg		  fi
5561549e21daSmrg		;;
5562549e21daSmrg		pass_all)
5563549e21daSmrg		  valid_a_lib=yes
5564549e21daSmrg		;;
5565549e21daSmrg	      esac
5566549e21daSmrg	      if test "$valid_a_lib" != yes; then
5567549e21daSmrg		echo
5568549e21daSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
5569549e21daSmrg		echo "*** I have the capability to make that library automatically link in when"
5570549e21daSmrg		echo "*** you link to this library.  But I can only do this if you have a"
5571549e21daSmrg		echo "*** shared version of the library, which you do not appear to have"
5572549e21daSmrg		echo "*** because the file extensions .$libext of this argument makes me believe"
5573549e21daSmrg		echo "*** that it is just a static archive that I should not use here."
5574549e21daSmrg	      else
5575549e21daSmrg		echo
5576549e21daSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
5577549e21daSmrg		$ECHO "*** static library $deplib is not portable!"
5578549e21daSmrg		deplibs="$deplib $deplibs"
5579549e21daSmrg	      fi
5580549e21daSmrg	      ;;
5581549e21daSmrg	    esac
5582549e21daSmrg	    continue
5583549e21daSmrg	    ;;
5584549e21daSmrg	  prog)
5585549e21daSmrg	    if test "$pass" != link; then
5586549e21daSmrg	      deplibs="$deplib $deplibs"
5587549e21daSmrg	    else
5588549e21daSmrg	      compile_deplibs="$deplib $compile_deplibs"
5589549e21daSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5590549e21daSmrg	    fi
5591549e21daSmrg	    continue
5592549e21daSmrg	    ;;
5593549e21daSmrg	  esac # linkmode
5594549e21daSmrg	  ;; # *.$libext
5595549e21daSmrg	*.lo | *.$objext)
5596549e21daSmrg	  if test "$pass" = conv; then
5597549e21daSmrg	    deplibs="$deplib $deplibs"
5598549e21daSmrg	  elif test "$linkmode" = prog; then
5599549e21daSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5600549e21daSmrg	      # If there is no dlopen support or we're linking statically,
5601549e21daSmrg	      # we need to preload.
5602549e21daSmrg	      newdlprefiles="$newdlprefiles $deplib"
5603549e21daSmrg	      compile_deplibs="$deplib $compile_deplibs"
5604549e21daSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
5605549e21daSmrg	    else
5606549e21daSmrg	      newdlfiles="$newdlfiles $deplib"
5607549e21daSmrg	    fi
5608549e21daSmrg	  fi
5609549e21daSmrg	  continue
5610549e21daSmrg	  ;;
5611549e21daSmrg	%DEPLIBS%)
5612549e21daSmrg	  alldeplibs=yes
5613549e21daSmrg	  continue
5614549e21daSmrg	  ;;
5615549e21daSmrg	esac # case $deplib
5616549e21daSmrg
5617549e21daSmrg	if test "$found" = yes || test -f "$lib"; then :
5618549e21daSmrg	else
5619549e21daSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5620549e21daSmrg	fi
5621549e21daSmrg
5622549e21daSmrg	# Check to see that this really is a libtool archive.
5623549e21daSmrg	func_lalib_unsafe_p "$lib" \
5624549e21daSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5625549e21daSmrg
5626549e21daSmrg	func_dirname "$lib" "" "."
5627549e21daSmrg	ladir="$func_dirname_result"
5628549e21daSmrg
5629549e21daSmrg	dlname=
5630549e21daSmrg	dlopen=
5631549e21daSmrg	dlpreopen=
5632549e21daSmrg	libdir=
5633549e21daSmrg	library_names=
5634549e21daSmrg	old_library=
5635549e21daSmrg	inherited_linker_flags=
5636549e21daSmrg	# If the library was installed with an old release of libtool,
5637549e21daSmrg	# it will not redefine variables installed, or shouldnotlink
5638549e21daSmrg	installed=yes
5639549e21daSmrg	shouldnotlink=no
5640549e21daSmrg	avoidtemprpath=
5641549e21daSmrg
5642549e21daSmrg
5643549e21daSmrg	# Read the .la file
5644549e21daSmrg	func_source "$lib"
5645549e21daSmrg
5646549e21daSmrg	# Convert "-framework foo" to "foo.ltframework"
5647549e21daSmrg	if test -n "$inherited_linker_flags"; then
5648549e21daSmrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
5649549e21daSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5650549e21daSmrg	    case " $new_inherited_linker_flags " in
5651549e21daSmrg	      *" $tmp_inherited_linker_flag "*) ;;
5652549e21daSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5653549e21daSmrg	    esac
5654549e21daSmrg	  done
5655549e21daSmrg	fi
5656549e21daSmrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
5657549e21daSmrg	if test "$linkmode,$pass" = "lib,link" ||
5658549e21daSmrg	   test "$linkmode,$pass" = "prog,scan" ||
5659549e21daSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5660549e21daSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5661549e21daSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5662549e21daSmrg	fi
5663549e21daSmrg
5664549e21daSmrg	if test "$pass" = conv; then
5665549e21daSmrg	  # Only check for convenience libraries
5666549e21daSmrg	  deplibs="$lib $deplibs"
5667549e21daSmrg	  if test -z "$libdir"; then
5668549e21daSmrg	    if test -z "$old_library"; then
5669549e21daSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5670549e21daSmrg	    fi
5671549e21daSmrg	    # It is a libtool convenience library, so add in its objects.
5672549e21daSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
5673549e21daSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5674549e21daSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5675549e21daSmrg	    func_fatal_error "\`$lib' is not a convenience library"
5676549e21daSmrg	  fi
5677549e21daSmrg	  tmp_libs=
5678549e21daSmrg	  for deplib in $dependency_libs; do
5679549e21daSmrg	    deplibs="$deplib $deplibs"
5680549e21daSmrg	    if $opt_duplicate_deps ; then
5681549e21daSmrg	      case "$tmp_libs " in
5682549e21daSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5683549e21daSmrg	      esac
5684549e21daSmrg	    fi
5685549e21daSmrg	    tmp_libs="$tmp_libs $deplib"
5686549e21daSmrg	  done
5687549e21daSmrg	  continue
5688549e21daSmrg	fi # $pass = conv
5689549e21daSmrg
5690549e21daSmrg
5691549e21daSmrg	# Get the name of the library we link against.
5692549e21daSmrg	linklib=
5693549e21daSmrg	for l in $old_library $library_names; do
5694549e21daSmrg	  linklib="$l"
5695549e21daSmrg	done
5696549e21daSmrg	if test -z "$linklib"; then
5697549e21daSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5698549e21daSmrg	fi
5699549e21daSmrg
5700549e21daSmrg	# This library was specified with -dlopen.
5701549e21daSmrg	if test "$pass" = dlopen; then
5702549e21daSmrg	  if test -z "$libdir"; then
5703549e21daSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5704549e21daSmrg	  fi
5705549e21daSmrg	  if test -z "$dlname" ||
5706549e21daSmrg	     test "$dlopen_support" != yes ||
5707549e21daSmrg	     test "$build_libtool_libs" = no; then
5708549e21daSmrg	    # If there is no dlname, no dlopen support or we're linking
5709549e21daSmrg	    # statically, we need to preload.  We also need to preload any
5710549e21daSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
5711549e21daSmrg	    # bomb out in the load deplibs phase.
5712549e21daSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5713549e21daSmrg	  else
5714549e21daSmrg	    newdlfiles="$newdlfiles $lib"
5715549e21daSmrg	  fi
5716549e21daSmrg	  continue
5717549e21daSmrg	fi # $pass = dlopen
5718549e21daSmrg
5719549e21daSmrg	# We need an absolute path.
5720549e21daSmrg	case $ladir in
5721549e21daSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5722549e21daSmrg	*)
5723549e21daSmrg	  abs_ladir=`cd "$ladir" && pwd`
5724549e21daSmrg	  if test -z "$abs_ladir"; then
5725549e21daSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5726549e21daSmrg	    func_warning "passing it literally to the linker, although it might fail"
5727549e21daSmrg	    abs_ladir="$ladir"
5728549e21daSmrg	  fi
5729549e21daSmrg	  ;;
5730549e21daSmrg	esac
5731549e21daSmrg	func_basename "$lib"
5732549e21daSmrg	laname="$func_basename_result"
5733549e21daSmrg
5734549e21daSmrg	# Find the relevant object directory and library name.
5735549e21daSmrg	if test "X$installed" = Xyes; then
5736549e21daSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5737549e21daSmrg	    func_warning "library \`$lib' was moved."
5738549e21daSmrg	    dir="$ladir"
5739549e21daSmrg	    absdir="$abs_ladir"
5740549e21daSmrg	    libdir="$abs_ladir"
5741549e21daSmrg	  else
5742549e21daSmrg	    dir="$libdir"
5743549e21daSmrg	    absdir="$libdir"
5744549e21daSmrg	  fi
5745549e21daSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5746549e21daSmrg	else
5747549e21daSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5748549e21daSmrg	    dir="$ladir"
5749549e21daSmrg	    absdir="$abs_ladir"
5750549e21daSmrg	    # Remove this search path later
5751549e21daSmrg	    notinst_path="$notinst_path $abs_ladir"
5752549e21daSmrg	  else
5753549e21daSmrg	    dir="$ladir/$objdir"
5754549e21daSmrg	    absdir="$abs_ladir/$objdir"
5755549e21daSmrg	    # Remove this search path later
5756549e21daSmrg	    notinst_path="$notinst_path $abs_ladir"
5757549e21daSmrg	  fi
5758549e21daSmrg	fi # $installed = yes
5759549e21daSmrg	func_stripname 'lib' '.la' "$laname"
5760549e21daSmrg	name=$func_stripname_result
5761549e21daSmrg
5762549e21daSmrg	# This library was specified with -dlpreopen.
5763549e21daSmrg	if test "$pass" = dlpreopen; then
5764549e21daSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5765549e21daSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5766549e21daSmrg	  fi
5767549e21daSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5768549e21daSmrg	  # are required to link).
5769549e21daSmrg	  if test -n "$old_library"; then
5770549e21daSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5771549e21daSmrg	    # Keep a list of preopened convenience libraries to check
5772549e21daSmrg	    # that they are being used correctly in the link pass.
5773549e21daSmrg	    test -z "$libdir" && \
5774549e21daSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5775549e21daSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5776549e21daSmrg	  elif test -n "$dlname"; then
5777549e21daSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5778549e21daSmrg	  else
5779549e21daSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5780549e21daSmrg	  fi
5781549e21daSmrg	fi # $pass = dlpreopen
5782549e21daSmrg
5783549e21daSmrg	if test -z "$libdir"; then
5784549e21daSmrg	  # Link the convenience library
5785549e21daSmrg	  if test "$linkmode" = lib; then
5786549e21daSmrg	    deplibs="$dir/$old_library $deplibs"
5787549e21daSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
5788549e21daSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5789549e21daSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5790549e21daSmrg	  else
5791549e21daSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5792549e21daSmrg	  fi
5793549e21daSmrg	  continue
5794549e21daSmrg	fi
5795549e21daSmrg
5796549e21daSmrg
5797549e21daSmrg	if test "$linkmode" = prog && test "$pass" != link; then
5798549e21daSmrg	  newlib_search_path="$newlib_search_path $ladir"
5799549e21daSmrg	  deplibs="$lib $deplibs"
5800549e21daSmrg
5801549e21daSmrg	  linkalldeplibs=no
5802549e21daSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5803549e21daSmrg	     test "$build_libtool_libs" = no; then
5804549e21daSmrg	    linkalldeplibs=yes
5805549e21daSmrg	  fi
5806549e21daSmrg
5807549e21daSmrg	  tmp_libs=
5808549e21daSmrg	  for deplib in $dependency_libs; do
5809549e21daSmrg	    case $deplib in
5810549e21daSmrg	    -L*) func_stripname '-L' '' "$deplib"
5811549e21daSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5812549e21daSmrg		 ;;
5813549e21daSmrg	    esac
5814549e21daSmrg	    # Need to link against all dependency_libs?
5815549e21daSmrg	    if test "$linkalldeplibs" = yes; then
5816549e21daSmrg	      deplibs="$deplib $deplibs"
5817549e21daSmrg	    else
5818549e21daSmrg	      # Need to hardcode shared library paths
5819549e21daSmrg	      # or/and link against static libraries
5820549e21daSmrg	      newdependency_libs="$deplib $newdependency_libs"
5821549e21daSmrg	    fi
5822549e21daSmrg	    if $opt_duplicate_deps ; then
5823549e21daSmrg	      case "$tmp_libs " in
5824549e21daSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5825549e21daSmrg	      esac
5826549e21daSmrg	    fi
5827549e21daSmrg	    tmp_libs="$tmp_libs $deplib"
5828549e21daSmrg	  done # for deplib
5829549e21daSmrg	  continue
5830549e21daSmrg	fi # $linkmode = prog...
5831549e21daSmrg
5832549e21daSmrg	if test "$linkmode,$pass" = "prog,link"; then
5833549e21daSmrg	  if test -n "$library_names" &&
5834549e21daSmrg	     { { test "$prefer_static_libs" = no ||
5835549e21daSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5836549e21daSmrg	       test -z "$old_library"; }; then
5837549e21daSmrg	    # We need to hardcode the library path
5838549e21daSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5839549e21daSmrg	      # Make sure the rpath contains only unique directories.
5840549e21daSmrg	      case "$temp_rpath:" in
5841549e21daSmrg	      *"$absdir:"*) ;;
5842549e21daSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5843549e21daSmrg	      esac
5844549e21daSmrg	    fi
5845549e21daSmrg
5846549e21daSmrg	    # Hardcode the library path.
5847549e21daSmrg	    # Skip directories that are in the system default run-time
5848549e21daSmrg	    # search path.
5849549e21daSmrg	    case " $sys_lib_dlsearch_path " in
5850549e21daSmrg	    *" $absdir "*) ;;
5851549e21daSmrg	    *)
5852549e21daSmrg	      case "$compile_rpath " in
5853549e21daSmrg	      *" $absdir "*) ;;
5854549e21daSmrg	      *) compile_rpath="$compile_rpath $absdir"
5855549e21daSmrg	      esac
5856549e21daSmrg	      ;;
5857549e21daSmrg	    esac
5858549e21daSmrg	    case " $sys_lib_dlsearch_path " in
5859549e21daSmrg	    *" $libdir "*) ;;
5860549e21daSmrg	    *)
5861549e21daSmrg	      case "$finalize_rpath " in
5862549e21daSmrg	      *" $libdir "*) ;;
5863549e21daSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5864549e21daSmrg	      esac
5865549e21daSmrg	      ;;
5866549e21daSmrg	    esac
5867549e21daSmrg	  fi # $linkmode,$pass = prog,link...
5868549e21daSmrg
5869549e21daSmrg	  if test "$alldeplibs" = yes &&
5870549e21daSmrg	     { test "$deplibs_check_method" = pass_all ||
5871549e21daSmrg	       { test "$build_libtool_libs" = yes &&
5872549e21daSmrg		 test -n "$library_names"; }; }; then
5873549e21daSmrg	    # We only need to search for static libraries
5874549e21daSmrg	    continue
5875549e21daSmrg	  fi
5876549e21daSmrg	fi
5877549e21daSmrg
5878549e21daSmrg	link_static=no # Whether the deplib will be linked statically
5879549e21daSmrg	use_static_libs=$prefer_static_libs
5880549e21daSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5881549e21daSmrg	  use_static_libs=no
5882549e21daSmrg	fi
5883549e21daSmrg	if test -n "$library_names" &&
5884549e21daSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5885549e21daSmrg	  case $host in
5886549e21daSmrg	  *cygwin* | *mingw* | *cegcc*)
5887549e21daSmrg	      # No point in relinking DLLs because paths are not encoded
5888549e21daSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5889549e21daSmrg	      need_relink=no
5890549e21daSmrg	    ;;
5891549e21daSmrg	  *)
5892549e21daSmrg	    if test "$installed" = no; then
5893549e21daSmrg	      notinst_deplibs="$notinst_deplibs $lib"
5894549e21daSmrg	      need_relink=yes
5895549e21daSmrg	    fi
5896549e21daSmrg	    ;;
5897549e21daSmrg	  esac
5898549e21daSmrg	  # This is a shared library
5899549e21daSmrg
5900549e21daSmrg	  # Warn about portability, can't link against -module's on some
5901549e21daSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5902549e21daSmrg	  dlopenmodule=""
5903549e21daSmrg	  for dlpremoduletest in $dlprefiles; do
5904549e21daSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
5905549e21daSmrg	      dlopenmodule="$dlpremoduletest"
5906549e21daSmrg	      break
5907549e21daSmrg	    fi
5908549e21daSmrg	  done
5909549e21daSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5910549e21daSmrg	    echo
5911549e21daSmrg	    if test "$linkmode" = prog; then
5912549e21daSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5913549e21daSmrg	    else
5914549e21daSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5915549e21daSmrg	    fi
5916549e21daSmrg	    $ECHO "*** $linklib is not portable!"
5917549e21daSmrg	  fi
5918549e21daSmrg	  if test "$linkmode" = lib &&
5919549e21daSmrg	     test "$hardcode_into_libs" = yes; then
5920549e21daSmrg	    # Hardcode the library path.
5921549e21daSmrg	    # Skip directories that are in the system default run-time
5922549e21daSmrg	    # search path.
5923549e21daSmrg	    case " $sys_lib_dlsearch_path " in
5924549e21daSmrg	    *" $absdir "*) ;;
5925549e21daSmrg	    *)
5926549e21daSmrg	      case "$compile_rpath " in
5927549e21daSmrg	      *" $absdir "*) ;;
5928549e21daSmrg	      *) compile_rpath="$compile_rpath $absdir"
5929549e21daSmrg	      esac
5930549e21daSmrg	      ;;
5931549e21daSmrg	    esac
5932549e21daSmrg	    case " $sys_lib_dlsearch_path " in
5933549e21daSmrg	    *" $libdir "*) ;;
5934549e21daSmrg	    *)
5935549e21daSmrg	      case "$finalize_rpath " in
5936549e21daSmrg	      *" $libdir "*) ;;
5937549e21daSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
5938549e21daSmrg	      esac
5939549e21daSmrg	      ;;
5940549e21daSmrg	    esac
5941549e21daSmrg	  fi
5942549e21daSmrg
5943549e21daSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5944549e21daSmrg	    # figure out the soname
5945549e21daSmrg	    set dummy $library_names
5946549e21daSmrg	    shift
5947549e21daSmrg	    realname="$1"
5948549e21daSmrg	    shift
5949549e21daSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5950549e21daSmrg	    # use dlname if we got it. it's perfectly good, no?
5951549e21daSmrg	    if test -n "$dlname"; then
5952549e21daSmrg	      soname="$dlname"
5953549e21daSmrg	    elif test -n "$soname_spec"; then
5954549e21daSmrg	      # bleh windows
5955549e21daSmrg	      case $host in
5956549e21daSmrg	      *cygwin* | mingw* | *cegcc*)
5957549e21daSmrg	        func_arith $current - $age
5958549e21daSmrg		major=$func_arith_result
5959549e21daSmrg		versuffix="-$major"
5960549e21daSmrg		;;
5961549e21daSmrg	      esac
5962549e21daSmrg	      eval soname=\"$soname_spec\"
5963549e21daSmrg	    else
5964549e21daSmrg	      soname="$realname"
5965549e21daSmrg	    fi
5966549e21daSmrg
5967549e21daSmrg	    # Make a new name for the extract_expsyms_cmds to use
5968549e21daSmrg	    soroot="$soname"
5969549e21daSmrg	    func_basename "$soroot"
5970549e21daSmrg	    soname="$func_basename_result"
5971549e21daSmrg	    func_stripname 'lib' '.dll' "$soname"
5972549e21daSmrg	    newlib=libimp-$func_stripname_result.a
5973549e21daSmrg
5974549e21daSmrg	    # If the library has no export list, then create one now
5975549e21daSmrg	    if test -f "$output_objdir/$soname-def"; then :
5976549e21daSmrg	    else
5977549e21daSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
5978549e21daSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5979549e21daSmrg	    fi
5980549e21daSmrg
5981549e21daSmrg	    # Create $newlib
5982549e21daSmrg	    if test -f "$output_objdir/$newlib"; then :; else
5983549e21daSmrg	      func_verbose "generating import library for \`$soname'"
5984549e21daSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5985549e21daSmrg	    fi
5986549e21daSmrg	    # make sure the library variables are pointing to the new library
5987549e21daSmrg	    dir=$output_objdir
5988549e21daSmrg	    linklib=$newlib
5989549e21daSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5990549e21daSmrg
5991549e21daSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5992549e21daSmrg	    add_shlibpath=
5993549e21daSmrg	    add_dir=
5994549e21daSmrg	    add=
5995549e21daSmrg	    lib_linked=yes
5996549e21daSmrg	    case $hardcode_action in
5997549e21daSmrg	    immediate | unsupported)
5998549e21daSmrg	      if test "$hardcode_direct" = no; then
5999549e21daSmrg		add="$dir/$linklib"
6000549e21daSmrg		case $host in
6001549e21daSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6002549e21daSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6003549e21daSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6004549e21daSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
6005549e21daSmrg		  *-*-darwin* )
6006549e21daSmrg		    # if the lib is a (non-dlopened) module then we can not
6007549e21daSmrg		    # link against it, someone is ignoring the earlier warnings
6008549e21daSmrg		    if /usr/bin/file -L $add 2> /dev/null |
6009549e21daSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
6010549e21daSmrg		      if test "X$dlopenmodule" != "X$lib"; then
6011549e21daSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6012549e21daSmrg			if test -z "$old_library" ; then
6013549e21daSmrg			  echo
6014549e21daSmrg			  echo "*** And there doesn't seem to be a static archive available"
6015549e21daSmrg			  echo "*** The link will probably fail, sorry"
6016549e21daSmrg			else
6017549e21daSmrg			  add="$dir/$old_library"
6018549e21daSmrg			fi
6019549e21daSmrg		      elif test -n "$old_library"; then
6020549e21daSmrg			add="$dir/$old_library"
6021549e21daSmrg		      fi
6022549e21daSmrg		    fi
6023549e21daSmrg		esac
6024549e21daSmrg	      elif test "$hardcode_minus_L" = no; then
6025549e21daSmrg		case $host in
6026549e21daSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
6027549e21daSmrg		esac
6028549e21daSmrg		add_dir="-L$dir"
6029549e21daSmrg		add="-l$name"
6030549e21daSmrg	      elif test "$hardcode_shlibpath_var" = no; then
6031549e21daSmrg		add_shlibpath="$dir"
6032549e21daSmrg		add="-l$name"
6033549e21daSmrg	      else
6034549e21daSmrg		lib_linked=no
6035549e21daSmrg	      fi
6036549e21daSmrg	      ;;
6037549e21daSmrg	    relink)
6038549e21daSmrg	      if test "$hardcode_direct" = yes &&
6039549e21daSmrg	         test "$hardcode_direct_absolute" = no; then
6040549e21daSmrg		add="$dir/$linklib"
6041549e21daSmrg	      elif test "$hardcode_minus_L" = yes; then
6042549e21daSmrg		add_dir="-L$dir"
6043549e21daSmrg		# Try looking first in the location we're being installed to.
6044549e21daSmrg		if test -n "$inst_prefix_dir"; then
6045549e21daSmrg		  case $libdir in
6046549e21daSmrg		    [\\/]*)
6047549e21daSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
6048549e21daSmrg		      ;;
6049549e21daSmrg		  esac
6050549e21daSmrg		fi
6051549e21daSmrg		add="-l$name"
6052549e21daSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
6053549e21daSmrg		add_shlibpath="$dir"
6054549e21daSmrg		add="-l$name"
6055549e21daSmrg	      else
6056549e21daSmrg		lib_linked=no
6057549e21daSmrg	      fi
6058549e21daSmrg	      ;;
6059549e21daSmrg	    *) lib_linked=no ;;
6060549e21daSmrg	    esac
6061549e21daSmrg
6062549e21daSmrg	    if test "$lib_linked" != yes; then
6063549e21daSmrg	      func_fatal_configuration "unsupported hardcode properties"
6064549e21daSmrg	    fi
6065549e21daSmrg
6066549e21daSmrg	    if test -n "$add_shlibpath"; then
6067549e21daSmrg	      case :$compile_shlibpath: in
6068549e21daSmrg	      *":$add_shlibpath:"*) ;;
6069549e21daSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
6070549e21daSmrg	      esac
6071549e21daSmrg	    fi
6072549e21daSmrg	    if test "$linkmode" = prog; then
6073549e21daSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6074549e21daSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6075549e21daSmrg	    else
6076549e21daSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6077549e21daSmrg	      test -n "$add" && deplibs="$add $deplibs"
6078549e21daSmrg	      if test "$hardcode_direct" != yes &&
6079549e21daSmrg		 test "$hardcode_minus_L" != yes &&
6080549e21daSmrg		 test "$hardcode_shlibpath_var" = yes; then
6081549e21daSmrg		case :$finalize_shlibpath: in
6082549e21daSmrg		*":$libdir:"*) ;;
6083549e21daSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6084549e21daSmrg		esac
6085549e21daSmrg	      fi
6086549e21daSmrg	    fi
6087549e21daSmrg	  fi
6088549e21daSmrg
6089549e21daSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
6090549e21daSmrg	    add_shlibpath=
6091549e21daSmrg	    add_dir=
6092549e21daSmrg	    add=
6093549e21daSmrg	    # Finalize command for both is simple: just hardcode it.
6094549e21daSmrg	    if test "$hardcode_direct" = yes &&
6095549e21daSmrg	       test "$hardcode_direct_absolute" = no; then
6096549e21daSmrg	      add="$libdir/$linklib"
6097549e21daSmrg	    elif test "$hardcode_minus_L" = yes; then
6098549e21daSmrg	      add_dir="-L$libdir"
6099549e21daSmrg	      add="-l$name"
6100549e21daSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
6101549e21daSmrg	      case :$finalize_shlibpath: in
6102549e21daSmrg	      *":$libdir:"*) ;;
6103549e21daSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6104549e21daSmrg	      esac
6105549e21daSmrg	      add="-l$name"
6106549e21daSmrg	    elif test "$hardcode_automatic" = yes; then
6107549e21daSmrg	      if test -n "$inst_prefix_dir" &&
6108549e21daSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6109549e21daSmrg		add="$inst_prefix_dir$libdir/$linklib"
6110549e21daSmrg	      else
6111549e21daSmrg		add="$libdir/$linklib"
6112549e21daSmrg	      fi
6113549e21daSmrg	    else
6114549e21daSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
6115549e21daSmrg	      add_dir="-L$libdir"
6116549e21daSmrg	      # Try looking first in the location we're being installed to.
6117549e21daSmrg	      if test -n "$inst_prefix_dir"; then
6118549e21daSmrg		case $libdir in
6119549e21daSmrg		  [\\/]*)
6120549e21daSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
6121549e21daSmrg		    ;;
6122549e21daSmrg		esac
6123549e21daSmrg	      fi
6124549e21daSmrg	      add="-l$name"
6125549e21daSmrg	    fi
6126549e21daSmrg
6127549e21daSmrg	    if test "$linkmode" = prog; then
6128549e21daSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6129549e21daSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6130549e21daSmrg	    else
6131549e21daSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6132549e21daSmrg	      test -n "$add" && deplibs="$add $deplibs"
6133549e21daSmrg	    fi
6134549e21daSmrg	  fi
6135549e21daSmrg	elif test "$linkmode" = prog; then
6136549e21daSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6137549e21daSmrg	  # is not unsupported.  This is valid on all known static and
6138549e21daSmrg	  # shared platforms.
6139549e21daSmrg	  if test "$hardcode_direct" != unsupported; then
6140549e21daSmrg	    test -n "$old_library" && linklib="$old_library"
6141549e21daSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
6142549e21daSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6143549e21daSmrg	  else
6144549e21daSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6145549e21daSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6146549e21daSmrg	  fi
6147549e21daSmrg	elif test "$build_libtool_libs" = yes; then
6148549e21daSmrg	  # Not a shared library
6149549e21daSmrg	  if test "$deplibs_check_method" != pass_all; then
6150549e21daSmrg	    # We're trying link a shared library against a static one
6151549e21daSmrg	    # but the system doesn't support it.
6152549e21daSmrg
6153549e21daSmrg	    # Just print a warning and add the library to dependency_libs so
6154549e21daSmrg	    # that the program can be linked against the static library.
6155549e21daSmrg	    echo
6156549e21daSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6157549e21daSmrg	    echo "*** I have the capability to make that library automatically link in when"
6158549e21daSmrg	    echo "*** you link to this library.  But I can only do this if you have a"
6159549e21daSmrg	    echo "*** shared version of the library, which you do not appear to have."
6160549e21daSmrg	    if test "$module" = yes; then
6161549e21daSmrg	      echo "*** But as you try to build a module library, libtool will still create "
6162549e21daSmrg	      echo "*** a static module, that should work as long as the dlopening application"
6163549e21daSmrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6164549e21daSmrg	      if test -z "$global_symbol_pipe"; then
6165549e21daSmrg		echo
6166549e21daSmrg		echo "*** However, this would only work if libtool was able to extract symbol"
6167549e21daSmrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6168549e21daSmrg		echo "*** not find such a program.  So, this module is probably useless."
6169549e21daSmrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6170549e21daSmrg	      fi
6171549e21daSmrg	      if test "$build_old_libs" = no; then
6172549e21daSmrg		build_libtool_libs=module
6173549e21daSmrg		build_old_libs=yes
6174549e21daSmrg	      else
6175549e21daSmrg		build_libtool_libs=no
6176549e21daSmrg	      fi
6177549e21daSmrg	    fi
6178549e21daSmrg	  else
6179549e21daSmrg	    deplibs="$dir/$old_library $deplibs"
6180549e21daSmrg	    link_static=yes
6181549e21daSmrg	  fi
6182549e21daSmrg	fi # link shared/static library?
6183549e21daSmrg
6184549e21daSmrg	if test "$linkmode" = lib; then
6185549e21daSmrg	  if test -n "$dependency_libs" &&
6186549e21daSmrg	     { test "$hardcode_into_libs" != yes ||
6187549e21daSmrg	       test "$build_old_libs" = yes ||
6188549e21daSmrg	       test "$link_static" = yes; }; then
6189549e21daSmrg	    # Extract -R from dependency_libs
6190549e21daSmrg	    temp_deplibs=
6191549e21daSmrg	    for libdir in $dependency_libs; do
6192549e21daSmrg	      case $libdir in
6193549e21daSmrg	      -R*) func_stripname '-R' '' "$libdir"
6194549e21daSmrg	           temp_xrpath=$func_stripname_result
6195549e21daSmrg		   case " $xrpath " in
6196549e21daSmrg		   *" $temp_xrpath "*) ;;
6197549e21daSmrg		   *) xrpath="$xrpath $temp_xrpath";;
6198549e21daSmrg		   esac;;
6199549e21daSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
6200549e21daSmrg	      esac
6201549e21daSmrg	    done
6202549e21daSmrg	    dependency_libs="$temp_deplibs"
6203549e21daSmrg	  fi
6204549e21daSmrg
6205549e21daSmrg	  newlib_search_path="$newlib_search_path $absdir"
6206549e21daSmrg	  # Link against this library
6207549e21daSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
6208549e21daSmrg	  # ... and its dependency_libs
6209549e21daSmrg	  tmp_libs=
6210549e21daSmrg	  for deplib in $dependency_libs; do
6211549e21daSmrg	    newdependency_libs="$deplib $newdependency_libs"
6212549e21daSmrg	    if $opt_duplicate_deps ; then
6213549e21daSmrg	      case "$tmp_libs " in
6214549e21daSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6215549e21daSmrg	      esac
6216549e21daSmrg	    fi
6217549e21daSmrg	    tmp_libs="$tmp_libs $deplib"
6218549e21daSmrg	  done
6219549e21daSmrg
6220549e21daSmrg	  if test "$link_all_deplibs" != no; then
6221549e21daSmrg	    # Add the search paths of all dependency libraries
6222549e21daSmrg	    for deplib in $dependency_libs; do
6223549e21daSmrg	      path=
6224549e21daSmrg	      case $deplib in
6225549e21daSmrg	      -L*) path="$deplib" ;;
6226549e21daSmrg	      *.la)
6227549e21daSmrg	        func_dirname "$deplib" "" "."
6228549e21daSmrg		dir="$func_dirname_result"
6229549e21daSmrg		# We need an absolute path.
6230549e21daSmrg		case $dir in
6231549e21daSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
6232549e21daSmrg		*)
6233549e21daSmrg		  absdir=`cd "$dir" && pwd`
6234549e21daSmrg		  if test -z "$absdir"; then
6235549e21daSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
6236549e21daSmrg		    absdir="$dir"
6237549e21daSmrg		  fi
6238549e21daSmrg		  ;;
6239549e21daSmrg		esac
6240549e21daSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
6241549e21daSmrg		case $host in
6242549e21daSmrg		*-*-darwin*)
6243549e21daSmrg		  depdepl=
6244549e21daSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
6245549e21daSmrg		  if test -n "$deplibrary_names" ; then
6246549e21daSmrg		    for tmp in $deplibrary_names ; do
6247549e21daSmrg		      depdepl=$tmp
6248549e21daSmrg		    done
6249549e21daSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
6250549e21daSmrg		      depdepl="$absdir/$objdir/$depdepl"
6251549e21daSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6252549e21daSmrg                      if test -z "$darwin_install_name"; then
6253549e21daSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
6254549e21daSmrg                      fi
6255549e21daSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6256549e21daSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
6257549e21daSmrg		      path=
6258549e21daSmrg		    fi
6259549e21daSmrg		  fi
6260549e21daSmrg		  ;;
6261549e21daSmrg		*)
6262549e21daSmrg		  path="-L$absdir/$objdir"
6263549e21daSmrg		  ;;
6264549e21daSmrg		esac
6265549e21daSmrg		else
6266549e21daSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
6267549e21daSmrg		  test -z "$libdir" && \
6268549e21daSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
6269549e21daSmrg		  test "$absdir" != "$libdir" && \
6270549e21daSmrg		    func_warning "\`$deplib' seems to be moved"
6271549e21daSmrg
6272549e21daSmrg		  path="-L$absdir"
6273549e21daSmrg		fi
6274549e21daSmrg		;;
6275549e21daSmrg	      esac
6276549e21daSmrg	      case " $deplibs " in
6277549e21daSmrg	      *" $path "*) ;;
6278549e21daSmrg	      *) deplibs="$path $deplibs" ;;
6279549e21daSmrg	      esac
6280549e21daSmrg	    done
6281549e21daSmrg	  fi # link_all_deplibs != no
6282549e21daSmrg	fi # linkmode = lib
6283549e21daSmrg      done # for deplib in $libs
6284549e21daSmrg      if test "$pass" = link; then
6285549e21daSmrg	if test "$linkmode" = "prog"; then
6286549e21daSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
6287549e21daSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
6288549e21daSmrg	else
6289549e21daSmrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6290549e21daSmrg	fi
6291549e21daSmrg      fi
6292549e21daSmrg      dependency_libs="$newdependency_libs"
6293549e21daSmrg      if test "$pass" = dlpreopen; then
6294549e21daSmrg	# Link the dlpreopened libraries before other libraries
6295549e21daSmrg	for deplib in $save_deplibs; do
6296549e21daSmrg	  deplibs="$deplib $deplibs"
6297549e21daSmrg	done
6298549e21daSmrg      fi
6299549e21daSmrg      if test "$pass" != dlopen; then
6300549e21daSmrg	if test "$pass" != conv; then
6301549e21daSmrg	  # Make sure lib_search_path contains only unique directories.
6302549e21daSmrg	  lib_search_path=
6303549e21daSmrg	  for dir in $newlib_search_path; do
6304549e21daSmrg	    case "$lib_search_path " in
6305549e21daSmrg	    *" $dir "*) ;;
6306549e21daSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
6307549e21daSmrg	    esac
6308549e21daSmrg	  done
6309549e21daSmrg	  newlib_search_path=
6310549e21daSmrg	fi
6311549e21daSmrg
6312549e21daSmrg	if test "$linkmode,$pass" != "prog,link"; then
6313549e21daSmrg	  vars="deplibs"
6314549e21daSmrg	else
6315549e21daSmrg	  vars="compile_deplibs finalize_deplibs"
6316549e21daSmrg	fi
6317549e21daSmrg	for var in $vars dependency_libs; do
6318549e21daSmrg	  # Add libraries to $var in reverse order
6319549e21daSmrg	  eval tmp_libs=\"\$$var\"
6320549e21daSmrg	  new_libs=
6321549e21daSmrg	  for deplib in $tmp_libs; do
6322549e21daSmrg	    # FIXME: Pedantically, this is the right thing to do, so
6323549e21daSmrg	    #        that some nasty dependency loop isn't accidentally
6324549e21daSmrg	    #        broken:
6325549e21daSmrg	    #new_libs="$deplib $new_libs"
6326549e21daSmrg	    # Pragmatically, this seems to cause very few problems in
6327549e21daSmrg	    # practice:
6328549e21daSmrg	    case $deplib in
6329549e21daSmrg	    -L*) new_libs="$deplib $new_libs" ;;
6330549e21daSmrg	    -R*) ;;
6331549e21daSmrg	    *)
6332549e21daSmrg	      # And here is the reason: when a library appears more
6333549e21daSmrg	      # than once as an explicit dependence of a library, or
6334549e21daSmrg	      # is implicitly linked in more than once by the
6335549e21daSmrg	      # compiler, it is considered special, and multiple
6336549e21daSmrg	      # occurrences thereof are not removed.  Compare this
6337549e21daSmrg	      # with having the same library being listed as a
6338549e21daSmrg	      # dependency of multiple other libraries: in this case,
6339549e21daSmrg	      # we know (pedantically, we assume) the library does not
6340549e21daSmrg	      # need to be listed more than once, so we keep only the
6341549e21daSmrg	      # last copy.  This is not always right, but it is rare
6342549e21daSmrg	      # enough that we require users that really mean to play
6343549e21daSmrg	      # such unportable linking tricks to link the library
6344549e21daSmrg	      # using -Wl,-lname, so that libtool does not consider it
6345549e21daSmrg	      # for duplicate removal.
6346549e21daSmrg	      case " $specialdeplibs " in
6347549e21daSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6348549e21daSmrg	      *)
6349549e21daSmrg		case " $new_libs " in
6350549e21daSmrg		*" $deplib "*) ;;
6351549e21daSmrg		*) new_libs="$deplib $new_libs" ;;
6352549e21daSmrg		esac
6353549e21daSmrg		;;
6354549e21daSmrg	      esac
6355549e21daSmrg	      ;;
6356549e21daSmrg	    esac
6357549e21daSmrg	  done
6358549e21daSmrg	  tmp_libs=
6359549e21daSmrg	  for deplib in $new_libs; do
6360549e21daSmrg	    case $deplib in
6361549e21daSmrg	    -L*)
6362549e21daSmrg	      case " $tmp_libs " in
6363549e21daSmrg	      *" $deplib "*) ;;
6364549e21daSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6365549e21daSmrg	      esac
6366549e21daSmrg	      ;;
6367549e21daSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6368549e21daSmrg	    esac
6369549e21daSmrg	  done
6370549e21daSmrg	  eval $var=\"$tmp_libs\"
6371549e21daSmrg	done # for var
6372549e21daSmrg      fi
6373549e21daSmrg      # Last step: remove runtime libs from dependency_libs
6374549e21daSmrg      # (they stay in deplibs)
6375549e21daSmrg      tmp_libs=
6376549e21daSmrg      for i in $dependency_libs ; do
6377549e21daSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
6378549e21daSmrg	*" $i "*)
6379549e21daSmrg	  i=""
6380549e21daSmrg	  ;;
6381549e21daSmrg	esac
6382549e21daSmrg	if test -n "$i" ; then
6383549e21daSmrg	  tmp_libs="$tmp_libs $i"
6384549e21daSmrg	fi
6385549e21daSmrg      done
6386549e21daSmrg      dependency_libs=$tmp_libs
6387549e21daSmrg    done # for pass
6388549e21daSmrg    if test "$linkmode" = prog; then
6389549e21daSmrg      dlfiles="$newdlfiles"
6390549e21daSmrg    fi
6391549e21daSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6392549e21daSmrg      dlprefiles="$newdlprefiles"
6393549e21daSmrg    fi
6394549e21daSmrg
6395549e21daSmrg    case $linkmode in
6396549e21daSmrg    oldlib)
6397549e21daSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6398549e21daSmrg	func_warning "\`-dlopen' is ignored for archives"
6399549e21daSmrg      fi
6400549e21daSmrg
6401549e21daSmrg      case " $deplibs" in
6402549e21daSmrg      *\ -l* | *\ -L*)
6403549e21daSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6404549e21daSmrg      esac
6405549e21daSmrg
6406549e21daSmrg      test -n "$rpath" && \
6407549e21daSmrg	func_warning "\`-rpath' is ignored for archives"
6408549e21daSmrg
6409549e21daSmrg      test -n "$xrpath" && \
6410549e21daSmrg	func_warning "\`-R' is ignored for archives"
6411549e21daSmrg
6412549e21daSmrg      test -n "$vinfo" && \
6413549e21daSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6414549e21daSmrg
6415549e21daSmrg      test -n "$release" && \
6416549e21daSmrg	func_warning "\`-release' is ignored for archives"
6417549e21daSmrg
6418549e21daSmrg      test -n "$export_symbols$export_symbols_regex" && \
6419549e21daSmrg	func_warning "\`-export-symbols' is ignored for archives"
6420549e21daSmrg
6421549e21daSmrg      # Now set the variables for building old libraries.
6422549e21daSmrg      build_libtool_libs=no
6423549e21daSmrg      oldlibs="$output"
6424549e21daSmrg      objs="$objs$old_deplibs"
6425549e21daSmrg      ;;
6426549e21daSmrg
6427549e21daSmrg    lib)
6428549e21daSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
6429549e21daSmrg      case $outputname in
6430549e21daSmrg      lib*)
6431549e21daSmrg	func_stripname 'lib' '.la' "$outputname"
6432549e21daSmrg	name=$func_stripname_result
6433549e21daSmrg	eval shared_ext=\"$shrext_cmds\"
6434549e21daSmrg	eval libname=\"$libname_spec\"
6435549e21daSmrg	;;
6436549e21daSmrg      *)
6437549e21daSmrg	test "$module" = no && \
6438549e21daSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6439549e21daSmrg
6440549e21daSmrg	if test "$need_lib_prefix" != no; then
6441549e21daSmrg	  # Add the "lib" prefix for modules if required
6442549e21daSmrg	  func_stripname '' '.la' "$outputname"
6443549e21daSmrg	  name=$func_stripname_result
6444549e21daSmrg	  eval shared_ext=\"$shrext_cmds\"
6445549e21daSmrg	  eval libname=\"$libname_spec\"
6446549e21daSmrg	else
6447549e21daSmrg	  func_stripname '' '.la' "$outputname"
6448549e21daSmrg	  libname=$func_stripname_result
6449549e21daSmrg	fi
6450549e21daSmrg	;;
6451549e21daSmrg      esac
6452549e21daSmrg
6453549e21daSmrg      if test -n "$objs"; then
6454549e21daSmrg	if test "$deplibs_check_method" != pass_all; then
6455549e21daSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6456549e21daSmrg	else
6457549e21daSmrg	  echo
6458549e21daSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6459549e21daSmrg	  $ECHO "*** objects $objs is not portable!"
6460549e21daSmrg	  libobjs="$libobjs $objs"
6461549e21daSmrg	fi
6462549e21daSmrg      fi
6463549e21daSmrg
6464549e21daSmrg      test "$dlself" != no && \
6465549e21daSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6466549e21daSmrg
6467549e21daSmrg      set dummy $rpath
6468549e21daSmrg      shift
6469549e21daSmrg      test "$#" -gt 1 && \
6470549e21daSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6471549e21daSmrg
6472549e21daSmrg      install_libdir="$1"
6473549e21daSmrg
6474549e21daSmrg      oldlibs=
6475549e21daSmrg      if test -z "$rpath"; then
6476549e21daSmrg	if test "$build_libtool_libs" = yes; then
6477549e21daSmrg	  # Building a libtool convenience library.
6478549e21daSmrg	  # Some compilers have problems with a `.al' extension so
6479549e21daSmrg	  # convenience libraries should have the same extension an
6480549e21daSmrg	  # archive normally would.
6481549e21daSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6482549e21daSmrg	  build_libtool_libs=convenience
6483549e21daSmrg	  build_old_libs=yes
6484549e21daSmrg	fi
6485549e21daSmrg
6486549e21daSmrg	test -n "$vinfo" && \
6487549e21daSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6488549e21daSmrg
6489549e21daSmrg	test -n "$release" && \
6490549e21daSmrg	  func_warning "\`-release' is ignored for convenience libraries"
6491549e21daSmrg      else
6492549e21daSmrg
6493549e21daSmrg	# Parse the version information argument.
6494549e21daSmrg	save_ifs="$IFS"; IFS=':'
6495549e21daSmrg	set dummy $vinfo 0 0 0
6496549e21daSmrg	shift
6497549e21daSmrg	IFS="$save_ifs"
6498549e21daSmrg
6499549e21daSmrg	test -n "$7" && \
6500549e21daSmrg	  func_fatal_help "too many parameters to \`-version-info'"
6501549e21daSmrg
6502549e21daSmrg	# convert absolute version numbers to libtool ages
6503549e21daSmrg	# this retains compatibility with .la files and attempts
6504549e21daSmrg	# to make the code below a bit more comprehensible
6505549e21daSmrg
6506549e21daSmrg	case $vinfo_number in
6507549e21daSmrg	yes)
6508549e21daSmrg	  number_major="$1"
6509549e21daSmrg	  number_minor="$2"
6510549e21daSmrg	  number_revision="$3"
6511549e21daSmrg	  #
6512549e21daSmrg	  # There are really only two kinds -- those that
6513549e21daSmrg	  # use the current revision as the major version
6514549e21daSmrg	  # and those that subtract age and use age as
6515549e21daSmrg	  # a minor version.  But, then there is irix
6516549e21daSmrg	  # which has an extra 1 added just for fun
6517549e21daSmrg	  #
6518549e21daSmrg	  case $version_type in
6519549e21daSmrg	  darwin|linux|osf|windows|none)
6520549e21daSmrg	    func_arith $number_major + $number_minor
6521549e21daSmrg	    current=$func_arith_result
6522549e21daSmrg	    age="$number_minor"
6523549e21daSmrg	    revision="$number_revision"
6524549e21daSmrg	    ;;
6525549e21daSmrg	  freebsd-aout|freebsd-elf|qnx|sunos)
6526549e21daSmrg	    current="$number_major"
6527549e21daSmrg	    revision="$number_minor"
6528549e21daSmrg	    age="0"
6529549e21daSmrg	    ;;
6530549e21daSmrg	  irix|nonstopux)
6531549e21daSmrg	    func_arith $number_major + $number_minor
6532549e21daSmrg	    current=$func_arith_result
6533549e21daSmrg	    age="$number_minor"
6534549e21daSmrg	    revision="$number_minor"
6535549e21daSmrg	    lt_irix_increment=no
6536549e21daSmrg	    ;;
6537549e21daSmrg	  esac
6538549e21daSmrg	  ;;
6539549e21daSmrg	no)
6540549e21daSmrg	  current="$1"
6541549e21daSmrg	  revision="$2"
6542549e21daSmrg	  age="$3"
6543549e21daSmrg	  ;;
6544549e21daSmrg	esac
6545549e21daSmrg
6546549e21daSmrg	# Check that each of the things are valid numbers.
6547549e21daSmrg	case $current in
6548549e21daSmrg	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]) ;;
6549549e21daSmrg	*)
6550549e21daSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6551549e21daSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6552549e21daSmrg	  ;;
6553549e21daSmrg	esac
6554549e21daSmrg
6555549e21daSmrg	case $revision in
6556549e21daSmrg	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]) ;;
6557549e21daSmrg	*)
6558549e21daSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6559549e21daSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6560549e21daSmrg	  ;;
6561549e21daSmrg	esac
6562549e21daSmrg
6563549e21daSmrg	case $age in
6564549e21daSmrg	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]) ;;
6565549e21daSmrg	*)
6566549e21daSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
6567549e21daSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6568549e21daSmrg	  ;;
6569549e21daSmrg	esac
6570549e21daSmrg
6571549e21daSmrg	if test "$age" -gt "$current"; then
6572549e21daSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6573549e21daSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
6574549e21daSmrg	fi
6575549e21daSmrg
6576549e21daSmrg	# Calculate the version variables.
6577549e21daSmrg	major=
6578549e21daSmrg	versuffix=
6579549e21daSmrg	verstring=
6580549e21daSmrg	case $version_type in
6581549e21daSmrg	none) ;;
6582549e21daSmrg
6583549e21daSmrg	darwin)
6584549e21daSmrg	  # Like Linux, but with the current version available in
6585549e21daSmrg	  # verstring for coding it into the library header
6586549e21daSmrg	  func_arith $current - $age
6587549e21daSmrg	  major=.$func_arith_result
6588549e21daSmrg	  versuffix="$major.$age.$revision"
6589549e21daSmrg	  # Darwin ld doesn't like 0 for these options...
6590549e21daSmrg	  func_arith $current + 1
6591549e21daSmrg	  minor_current=$func_arith_result
6592549e21daSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6593549e21daSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6594549e21daSmrg	  ;;
6595549e21daSmrg
6596549e21daSmrg	freebsd-aout)
6597549e21daSmrg	  major=".$current"
6598549e21daSmrg	  versuffix=".$current.$revision";
6599549e21daSmrg	  ;;
6600549e21daSmrg
6601549e21daSmrg	freebsd-elf)
6602549e21daSmrg	  major=".$current"
6603549e21daSmrg	  versuffix=".$current"
6604549e21daSmrg	  ;;
6605549e21daSmrg
6606549e21daSmrg	irix | nonstopux)
6607549e21daSmrg	  if test "X$lt_irix_increment" = "Xno"; then
6608549e21daSmrg	    func_arith $current - $age
6609549e21daSmrg	  else
6610549e21daSmrg	    func_arith $current - $age + 1
6611549e21daSmrg	  fi
6612549e21daSmrg	  major=$func_arith_result
6613549e21daSmrg
6614549e21daSmrg	  case $version_type in
6615549e21daSmrg	    nonstopux) verstring_prefix=nonstopux ;;
6616549e21daSmrg	    *)         verstring_prefix=sgi ;;
6617549e21daSmrg	  esac
6618549e21daSmrg	  verstring="$verstring_prefix$major.$revision"
6619549e21daSmrg
6620549e21daSmrg	  # Add in all the interfaces that we are compatible with.
6621549e21daSmrg	  loop=$revision
6622549e21daSmrg	  while test "$loop" -ne 0; do
6623549e21daSmrg	    func_arith $revision - $loop
6624549e21daSmrg	    iface=$func_arith_result
6625549e21daSmrg	    func_arith $loop - 1
6626549e21daSmrg	    loop=$func_arith_result
6627549e21daSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6628549e21daSmrg	  done
6629549e21daSmrg
6630549e21daSmrg	  # Before this point, $major must not contain `.'.
6631549e21daSmrg	  major=.$major
6632549e21daSmrg	  versuffix="$major.$revision"
6633549e21daSmrg	  ;;
6634549e21daSmrg
6635549e21daSmrg	linux)
6636549e21daSmrg	  func_arith $current - $age
6637549e21daSmrg	  major=.$func_arith_result
6638549e21daSmrg	  versuffix="$major.$age.$revision"
6639549e21daSmrg	  ;;
6640549e21daSmrg
6641549e21daSmrg	osf)
6642549e21daSmrg	  func_arith $current - $age
6643549e21daSmrg	  major=.$func_arith_result
6644549e21daSmrg	  versuffix=".$current.$age.$revision"
6645549e21daSmrg	  verstring="$current.$age.$revision"
6646549e21daSmrg
6647549e21daSmrg	  # Add in all the interfaces that we are compatible with.
6648549e21daSmrg	  loop=$age
6649549e21daSmrg	  while test "$loop" -ne 0; do
6650549e21daSmrg	    func_arith $current - $loop
6651549e21daSmrg	    iface=$func_arith_result
6652549e21daSmrg	    func_arith $loop - 1
6653549e21daSmrg	    loop=$func_arith_result
6654549e21daSmrg	    verstring="$verstring:${iface}.0"
6655549e21daSmrg	  done
6656549e21daSmrg
6657549e21daSmrg	  # Make executables depend on our current version.
6658549e21daSmrg	  verstring="$verstring:${current}.0"
6659549e21daSmrg	  ;;
6660549e21daSmrg
6661549e21daSmrg	qnx)
6662549e21daSmrg	  major=".$current"
6663549e21daSmrg	  versuffix=".$current"
6664549e21daSmrg	  ;;
6665549e21daSmrg
6666549e21daSmrg	sunos)
6667549e21daSmrg	  major=".$current"
6668549e21daSmrg	  versuffix=".$current.$revision"
6669549e21daSmrg	  ;;
6670549e21daSmrg
6671549e21daSmrg	windows)
6672549e21daSmrg	  # Use '-' rather than '.', since we only want one
6673549e21daSmrg	  # extension on DOS 8.3 filesystems.
6674549e21daSmrg	  func_arith $current - $age
6675549e21daSmrg	  major=$func_arith_result
6676549e21daSmrg	  versuffix="-$major"
6677549e21daSmrg	  ;;
6678549e21daSmrg
6679549e21daSmrg	*)
6680549e21daSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6681549e21daSmrg	  ;;
6682549e21daSmrg	esac
6683549e21daSmrg
6684549e21daSmrg	# Clear the version info if we defaulted, and they specified a release.
6685549e21daSmrg	if test -z "$vinfo" && test -n "$release"; then
6686549e21daSmrg	  major=
6687549e21daSmrg	  case $version_type in
6688549e21daSmrg	  darwin)
6689549e21daSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
6690549e21daSmrg	    # problems, so we reset it completely
6691549e21daSmrg	    verstring=
6692549e21daSmrg	    ;;
6693549e21daSmrg	  *)
6694549e21daSmrg	    verstring="0.0"
6695549e21daSmrg	    ;;
6696549e21daSmrg	  esac
6697549e21daSmrg	  if test "$need_version" = no; then
6698549e21daSmrg	    versuffix=
6699549e21daSmrg	  else
6700549e21daSmrg	    versuffix=".0.0"
6701549e21daSmrg	  fi
6702549e21daSmrg	fi
6703549e21daSmrg
6704549e21daSmrg	# Remove version info from name if versioning should be avoided
6705549e21daSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6706549e21daSmrg	  major=
6707549e21daSmrg	  versuffix=
6708549e21daSmrg	  verstring=""
6709549e21daSmrg	fi
6710549e21daSmrg
6711549e21daSmrg	# Check to see if the archive will have undefined symbols.
6712549e21daSmrg	if test "$allow_undefined" = yes; then
6713549e21daSmrg	  if test "$allow_undefined_flag" = unsupported; then
6714549e21daSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6715549e21daSmrg	    build_libtool_libs=no
6716549e21daSmrg	    build_old_libs=yes
6717549e21daSmrg	  fi
6718549e21daSmrg	else
6719549e21daSmrg	  # Don't allow undefined symbols.
6720549e21daSmrg	  allow_undefined_flag="$no_undefined_flag"
6721549e21daSmrg	fi
6722549e21daSmrg
6723549e21daSmrg      fi
6724549e21daSmrg
6725549e21daSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
6726549e21daSmrg      libobjs="$libobjs $symfileobj"
6727549e21daSmrg      test "X$libobjs" = "X " && libobjs=
6728549e21daSmrg
6729549e21daSmrg      if test "$mode" != relink; then
6730549e21daSmrg	# Remove our outputs, but don't remove object files since they
6731549e21daSmrg	# may have been created when compiling PIC objects.
6732549e21daSmrg	removelist=
6733549e21daSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
6734549e21daSmrg	for p in $tempremovelist; do
6735549e21daSmrg	  case $p in
6736549e21daSmrg	    *.$objext | *.gcno)
6737549e21daSmrg	       ;;
6738549e21daSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6739549e21daSmrg	       if test "X$precious_files_regex" != "X"; then
6740549e21daSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6741549e21daSmrg		 then
6742549e21daSmrg		   continue
6743549e21daSmrg		 fi
6744549e21daSmrg	       fi
6745549e21daSmrg	       removelist="$removelist $p"
6746549e21daSmrg	       ;;
6747549e21daSmrg	    *) ;;
6748549e21daSmrg	  esac
6749549e21daSmrg	done
6750549e21daSmrg	test -n "$removelist" && \
6751549e21daSmrg	  func_show_eval "${RM}r \$removelist"
6752549e21daSmrg      fi
6753549e21daSmrg
6754549e21daSmrg      # Now set the variables for building old libraries.
6755549e21daSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6756549e21daSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6757549e21daSmrg
6758549e21daSmrg	# Transform .lo files to .o files.
6759549e21daSmrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
6760549e21daSmrg      fi
6761549e21daSmrg
6762549e21daSmrg      # Eliminate all temporary directories.
6763549e21daSmrg      #for path in $notinst_path; do
6764549e21daSmrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
6765549e21daSmrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
6766549e21daSmrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
6767549e21daSmrg      #done
6768549e21daSmrg
6769549e21daSmrg      if test -n "$xrpath"; then
6770549e21daSmrg	# If the user specified any rpath flags, then add them.
6771549e21daSmrg	temp_xrpath=
6772549e21daSmrg	for libdir in $xrpath; do
6773549e21daSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
6774549e21daSmrg	  case "$finalize_rpath " in
6775549e21daSmrg	  *" $libdir "*) ;;
6776549e21daSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6777549e21daSmrg	  esac
6778549e21daSmrg	done
6779549e21daSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6780549e21daSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
6781549e21daSmrg	fi
6782549e21daSmrg      fi
6783549e21daSmrg
6784549e21daSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6785549e21daSmrg      old_dlfiles="$dlfiles"
6786549e21daSmrg      dlfiles=
6787549e21daSmrg      for lib in $old_dlfiles; do
6788549e21daSmrg	case " $dlprefiles $dlfiles " in
6789549e21daSmrg	*" $lib "*) ;;
6790549e21daSmrg	*) dlfiles="$dlfiles $lib" ;;
6791549e21daSmrg	esac
6792549e21daSmrg      done
6793549e21daSmrg
6794549e21daSmrg      # Make sure dlprefiles contains only unique files
6795549e21daSmrg      old_dlprefiles="$dlprefiles"
6796549e21daSmrg      dlprefiles=
6797549e21daSmrg      for lib in $old_dlprefiles; do
6798549e21daSmrg	case "$dlprefiles " in
6799549e21daSmrg	*" $lib "*) ;;
6800549e21daSmrg	*) dlprefiles="$dlprefiles $lib" ;;
6801549e21daSmrg	esac
6802549e21daSmrg      done
6803549e21daSmrg
6804549e21daSmrg      if test "$build_libtool_libs" = yes; then
6805549e21daSmrg	if test -n "$rpath"; then
6806549e21daSmrg	  case $host in
6807549e21daSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
6808549e21daSmrg	    # these systems don't actually have a c library (as such)!
6809549e21daSmrg	    ;;
6810549e21daSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
6811549e21daSmrg	    # Rhapsody C library is in the System framework
6812549e21daSmrg	    deplibs="$deplibs System.ltframework"
6813549e21daSmrg	    ;;
6814549e21daSmrg	  *-*-netbsd*)
6815549e21daSmrg	    # Don't link with libc until the a.out ld.so is fixed.
6816549e21daSmrg	    ;;
6817549e21daSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6818549e21daSmrg	    # Do not include libc due to us having libc/libc_r.
6819549e21daSmrg	    ;;
6820549e21daSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6821549e21daSmrg	    # Causes problems with __ctype
6822549e21daSmrg	    ;;
6823549e21daSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6824549e21daSmrg	    # Compiler inserts libc in the correct place for threads to work
6825549e21daSmrg	    ;;
6826549e21daSmrg	  *)
6827549e21daSmrg	    # Add libc to deplibs on all other systems if necessary.
6828549e21daSmrg	    if test "$build_libtool_need_lc" = "yes"; then
6829549e21daSmrg	      deplibs="$deplibs -lc"
6830549e21daSmrg	    fi
6831549e21daSmrg	    ;;
6832549e21daSmrg	  esac
6833549e21daSmrg	fi
6834549e21daSmrg
6835549e21daSmrg	# Transform deplibs into only deplibs that can be linked in shared.
6836549e21daSmrg	name_save=$name
6837549e21daSmrg	libname_save=$libname
6838549e21daSmrg	release_save=$release
6839549e21daSmrg	versuffix_save=$versuffix
6840549e21daSmrg	major_save=$major
6841549e21daSmrg	# I'm not sure if I'm treating the release correctly.  I think
6842549e21daSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6843549e21daSmrg	# add it in twice.  Is that correct?
6844549e21daSmrg	release=""
6845549e21daSmrg	versuffix=""
6846549e21daSmrg	major=""
6847549e21daSmrg	newdeplibs=
6848549e21daSmrg	droppeddeps=no
6849549e21daSmrg	case $deplibs_check_method in
6850549e21daSmrg	pass_all)
6851549e21daSmrg	  # Don't check for shared/static.  Everything works.
6852549e21daSmrg	  # This might be a little naive.  We might want to check
6853549e21daSmrg	  # whether the library exists or not.  But this is on
6854549e21daSmrg	  # osf3 & osf4 and I'm not really sure... Just
6855549e21daSmrg	  # implementing what was already the behavior.
6856549e21daSmrg	  newdeplibs=$deplibs
6857549e21daSmrg	  ;;
6858549e21daSmrg	test_compile)
6859549e21daSmrg	  # This code stresses the "libraries are programs" paradigm to its
6860549e21daSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6861549e21daSmrg	  # against the deplibs as a proxy for the library.  Then we can check
6862549e21daSmrg	  # whether they linked in statically or dynamically with ldd.
6863549e21daSmrg	  $opt_dry_run || $RM conftest.c
6864549e21daSmrg	  cat > conftest.c <<EOF
6865549e21daSmrg	  int main() { return 0; }
6866549e21daSmrgEOF
6867549e21daSmrg	  $opt_dry_run || $RM conftest
6868549e21daSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6869549e21daSmrg	    ldd_output=`ldd conftest`
6870549e21daSmrg	    for i in $deplibs; do
6871549e21daSmrg	      case $i in
6872549e21daSmrg	      -l*)
6873549e21daSmrg		func_stripname -l '' "$i"
6874549e21daSmrg		name=$func_stripname_result
6875549e21daSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6876549e21daSmrg		  case " $predeps $postdeps " in
6877549e21daSmrg		  *" $i "*)
6878549e21daSmrg		    newdeplibs="$newdeplibs $i"
6879549e21daSmrg		    i=""
6880549e21daSmrg		    ;;
6881549e21daSmrg		  esac
6882549e21daSmrg		fi
6883549e21daSmrg		if test -n "$i" ; then
6884549e21daSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6885549e21daSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6886549e21daSmrg		  set dummy $deplib_matches; shift
6887549e21daSmrg		  deplib_match=$1
6888549e21daSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6889549e21daSmrg		    newdeplibs="$newdeplibs $i"
6890549e21daSmrg		  else
6891549e21daSmrg		    droppeddeps=yes
6892549e21daSmrg		    echo
6893549e21daSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6894549e21daSmrg		    echo "*** I have the capability to make that library automatically link in when"
6895549e21daSmrg		    echo "*** you link to this library.  But I can only do this if you have a"
6896549e21daSmrg		    echo "*** shared version of the library, which I believe you do not have"
6897549e21daSmrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
6898549e21daSmrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
6899549e21daSmrg		  fi
6900549e21daSmrg		fi
6901549e21daSmrg		;;
6902549e21daSmrg	      *)
6903549e21daSmrg		newdeplibs="$newdeplibs $i"
6904549e21daSmrg		;;
6905549e21daSmrg	      esac
6906549e21daSmrg	    done
6907549e21daSmrg	  else
6908549e21daSmrg	    # Error occurred in the first compile.  Let's try to salvage
6909549e21daSmrg	    # the situation: Compile a separate program for each library.
6910549e21daSmrg	    for i in $deplibs; do
6911549e21daSmrg	      case $i in
6912549e21daSmrg	      -l*)
6913549e21daSmrg		func_stripname -l '' "$i"
6914549e21daSmrg		name=$func_stripname_result
6915549e21daSmrg		$opt_dry_run || $RM conftest
6916549e21daSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6917549e21daSmrg		  ldd_output=`ldd conftest`
6918549e21daSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6919549e21daSmrg		    case " $predeps $postdeps " in
6920549e21daSmrg		    *" $i "*)
6921549e21daSmrg		      newdeplibs="$newdeplibs $i"
6922549e21daSmrg		      i=""
6923549e21daSmrg		      ;;
6924549e21daSmrg		    esac
6925549e21daSmrg		  fi
6926549e21daSmrg		  if test -n "$i" ; then
6927549e21daSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6928549e21daSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6929549e21daSmrg		    set dummy $deplib_matches; shift
6930549e21daSmrg		    deplib_match=$1
6931549e21daSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6932549e21daSmrg		      newdeplibs="$newdeplibs $i"
6933549e21daSmrg		    else
6934549e21daSmrg		      droppeddeps=yes
6935549e21daSmrg		      echo
6936549e21daSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6937549e21daSmrg		      echo "*** I have the capability to make that library automatically link in when"
6938549e21daSmrg		      echo "*** you link to this library.  But I can only do this if you have a"
6939549e21daSmrg		      echo "*** shared version of the library, which you do not appear to have"
6940549e21daSmrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
6941549e21daSmrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
6942549e21daSmrg		    fi
6943549e21daSmrg		  fi
6944549e21daSmrg		else
6945549e21daSmrg		  droppeddeps=yes
6946549e21daSmrg		  echo
6947549e21daSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6948549e21daSmrg		  echo "*** make it link in!  You will probably need to install it or some"
6949549e21daSmrg		  echo "*** library that it depends on before this library will be fully"
6950549e21daSmrg		  echo "*** functional.  Installing it before continuing would be even better."
6951549e21daSmrg		fi
6952549e21daSmrg		;;
6953549e21daSmrg	      *)
6954549e21daSmrg		newdeplibs="$newdeplibs $i"
6955549e21daSmrg		;;
6956549e21daSmrg	      esac
6957549e21daSmrg	    done
6958549e21daSmrg	  fi
6959549e21daSmrg	  ;;
6960549e21daSmrg	file_magic*)
6961549e21daSmrg	  set dummy $deplibs_check_method; shift
6962549e21daSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6963549e21daSmrg	  for a_deplib in $deplibs; do
6964549e21daSmrg	    case $a_deplib in
6965549e21daSmrg	    -l*)
6966549e21daSmrg	      func_stripname -l '' "$a_deplib"
6967549e21daSmrg	      name=$func_stripname_result
6968549e21daSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6969549e21daSmrg		case " $predeps $postdeps " in
6970549e21daSmrg		*" $a_deplib "*)
6971549e21daSmrg		  newdeplibs="$newdeplibs $a_deplib"
6972549e21daSmrg		  a_deplib=""
6973549e21daSmrg		  ;;
6974549e21daSmrg		esac
6975549e21daSmrg	      fi
6976549e21daSmrg	      if test -n "$a_deplib" ; then
6977549e21daSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6978549e21daSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6979549e21daSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6980549e21daSmrg		  for potent_lib in $potential_libs; do
6981549e21daSmrg		      # Follow soft links.
6982549e21daSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6983549e21daSmrg			 $GREP " -> " >/dev/null; then
6984549e21daSmrg			continue
6985549e21daSmrg		      fi
6986549e21daSmrg		      # The statement above tries to avoid entering an
6987549e21daSmrg		      # endless loop below, in case of cyclic links.
6988549e21daSmrg		      # We might still enter an endless loop, since a link
6989549e21daSmrg		      # loop can be closed while we follow links,
6990549e21daSmrg		      # but so what?
6991549e21daSmrg		      potlib="$potent_lib"
6992549e21daSmrg		      while test -h "$potlib" 2>/dev/null; do
6993549e21daSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6994549e21daSmrg			case $potliblink in
6995549e21daSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6996549e21daSmrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
6997549e21daSmrg			esac
6998549e21daSmrg		      done
6999549e21daSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7000549e21daSmrg			 $SED -e 10q |
7001549e21daSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
7002549e21daSmrg			newdeplibs="$newdeplibs $a_deplib"
7003549e21daSmrg			a_deplib=""
7004549e21daSmrg			break 2
7005549e21daSmrg		      fi
7006549e21daSmrg		  done
7007549e21daSmrg		done
7008549e21daSmrg	      fi
7009549e21daSmrg	      if test -n "$a_deplib" ; then
7010549e21daSmrg		droppeddeps=yes
7011549e21daSmrg		echo
7012549e21daSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7013549e21daSmrg		echo "*** I have the capability to make that library automatically link in when"
7014549e21daSmrg		echo "*** you link to this library.  But I can only do this if you have a"
7015549e21daSmrg		echo "*** shared version of the library, which you do not appear to have"
7016549e21daSmrg		echo "*** because I did check the linker path looking for a file starting"
7017549e21daSmrg		if test -z "$potlib" ; then
7018549e21daSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7019549e21daSmrg		else
7020549e21daSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7021549e21daSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
7022549e21daSmrg		fi
7023549e21daSmrg	      fi
7024549e21daSmrg	      ;;
7025549e21daSmrg	    *)
7026549e21daSmrg	      # Add a -L argument.
7027549e21daSmrg	      newdeplibs="$newdeplibs $a_deplib"
7028549e21daSmrg	      ;;
7029549e21daSmrg	    esac
7030549e21daSmrg	  done # Gone through all deplibs.
7031549e21daSmrg	  ;;
7032549e21daSmrg	match_pattern*)
7033549e21daSmrg	  set dummy $deplibs_check_method; shift
7034549e21daSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7035549e21daSmrg	  for a_deplib in $deplibs; do
7036549e21daSmrg	    case $a_deplib in
7037549e21daSmrg	    -l*)
7038549e21daSmrg	      func_stripname -l '' "$a_deplib"
7039549e21daSmrg	      name=$func_stripname_result
7040549e21daSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7041549e21daSmrg		case " $predeps $postdeps " in
7042549e21daSmrg		*" $a_deplib "*)
7043549e21daSmrg		  newdeplibs="$newdeplibs $a_deplib"
7044549e21daSmrg		  a_deplib=""
7045549e21daSmrg		  ;;
7046549e21daSmrg		esac
7047549e21daSmrg	      fi
7048549e21daSmrg	      if test -n "$a_deplib" ; then
7049549e21daSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
7050549e21daSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7051549e21daSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7052549e21daSmrg		  for potent_lib in $potential_libs; do
7053549e21daSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
7054549e21daSmrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7055549e21daSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
7056549e21daSmrg		      newdeplibs="$newdeplibs $a_deplib"
7057549e21daSmrg		      a_deplib=""
7058549e21daSmrg		      break 2
7059549e21daSmrg		    fi
7060549e21daSmrg		  done
7061549e21daSmrg		done
7062549e21daSmrg	      fi
7063549e21daSmrg	      if test -n "$a_deplib" ; then
7064549e21daSmrg		droppeddeps=yes
7065549e21daSmrg		echo
7066549e21daSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7067549e21daSmrg		echo "*** I have the capability to make that library automatically link in when"
7068549e21daSmrg		echo "*** you link to this library.  But I can only do this if you have a"
7069549e21daSmrg		echo "*** shared version of the library, which you do not appear to have"
7070549e21daSmrg		echo "*** because I did check the linker path looking for a file starting"
7071549e21daSmrg		if test -z "$potlib" ; then
7072549e21daSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7073549e21daSmrg		else
7074549e21daSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7075549e21daSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7076549e21daSmrg		fi
7077549e21daSmrg	      fi
7078549e21daSmrg	      ;;
7079549e21daSmrg	    *)
7080549e21daSmrg	      # Add a -L argument.
7081549e21daSmrg	      newdeplibs="$newdeplibs $a_deplib"
7082549e21daSmrg	      ;;
7083549e21daSmrg	    esac
7084549e21daSmrg	  done # Gone through all deplibs.
7085549e21daSmrg	  ;;
7086549e21daSmrg	none | unknown | *)
7087549e21daSmrg	  newdeplibs=""
7088549e21daSmrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7089549e21daSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7090549e21daSmrg	    for i in $predeps $postdeps ; do
7091549e21daSmrg	      # can't use Xsed below, because $i might contain '/'
7092549e21daSmrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7093549e21daSmrg	    done
7094549e21daSmrg	  fi
7095549e21daSmrg	  case $tmp_deplibs in
7096549e21daSmrg	  *[!\	\ ]*)
7097549e21daSmrg	    echo
7098549e21daSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
7099549e21daSmrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7100549e21daSmrg	    else
7101549e21daSmrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
7102549e21daSmrg	    fi
7103549e21daSmrg	    echo "*** All declared inter-library dependencies are being dropped."
7104549e21daSmrg	    droppeddeps=yes
7105549e21daSmrg	    ;;
7106549e21daSmrg	  esac
7107549e21daSmrg	  ;;
7108549e21daSmrg	esac
7109549e21daSmrg	versuffix=$versuffix_save
7110549e21daSmrg	major=$major_save
7111549e21daSmrg	release=$release_save
7112549e21daSmrg	libname=$libname_save
7113549e21daSmrg	name=$name_save
7114549e21daSmrg
7115549e21daSmrg	case $host in
7116549e21daSmrg	*-*-rhapsody* | *-*-darwin1.[012])
7117549e21daSmrg	  # On Rhapsody replace the C library with the System framework
7118549e21daSmrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7119549e21daSmrg	  ;;
7120549e21daSmrg	esac
7121549e21daSmrg
7122549e21daSmrg	if test "$droppeddeps" = yes; then
7123549e21daSmrg	  if test "$module" = yes; then
7124549e21daSmrg	    echo
7125549e21daSmrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7126549e21daSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7127549e21daSmrg	    echo "*** a static module, that should work as long as the dlopening"
7128549e21daSmrg	    echo "*** application is linked with the -dlopen flag."
7129549e21daSmrg	    if test -z "$global_symbol_pipe"; then
7130549e21daSmrg	      echo
7131549e21daSmrg	      echo "*** However, this would only work if libtool was able to extract symbol"
7132549e21daSmrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7133549e21daSmrg	      echo "*** not find such a program.  So, this module is probably useless."
7134549e21daSmrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7135549e21daSmrg	    fi
7136549e21daSmrg	    if test "$build_old_libs" = no; then
7137549e21daSmrg	      oldlibs="$output_objdir/$libname.$libext"
7138549e21daSmrg	      build_libtool_libs=module
7139549e21daSmrg	      build_old_libs=yes
7140549e21daSmrg	    else
7141549e21daSmrg	      build_libtool_libs=no
7142549e21daSmrg	    fi
7143549e21daSmrg	  else
7144549e21daSmrg	    echo "*** The inter-library dependencies that have been dropped here will be"
7145549e21daSmrg	    echo "*** automatically added whenever a program is linked with this library"
7146549e21daSmrg	    echo "*** or is declared to -dlopen it."
7147549e21daSmrg
7148549e21daSmrg	    if test "$allow_undefined" = no; then
7149549e21daSmrg	      echo
7150549e21daSmrg	      echo "*** Since this library must not contain undefined symbols,"
7151549e21daSmrg	      echo "*** because either the platform does not support them or"
7152549e21daSmrg	      echo "*** it was explicitly requested with -no-undefined,"
7153549e21daSmrg	      echo "*** libtool will only create a static version of it."
7154549e21daSmrg	      if test "$build_old_libs" = no; then
7155549e21daSmrg		oldlibs="$output_objdir/$libname.$libext"
7156549e21daSmrg		build_libtool_libs=module
7157549e21daSmrg		build_old_libs=yes
7158549e21daSmrg	      else
7159549e21daSmrg		build_libtool_libs=no
7160549e21daSmrg	      fi
7161549e21daSmrg	    fi
7162549e21daSmrg	  fi
7163549e21daSmrg	fi
7164549e21daSmrg	# Done checking deplibs!
7165549e21daSmrg	deplibs=$newdeplibs
7166549e21daSmrg      fi
7167549e21daSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7168549e21daSmrg      case $host in
7169549e21daSmrg	*-*-darwin*)
7170549e21daSmrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7171549e21daSmrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7172549e21daSmrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7173549e21daSmrg	  ;;
7174549e21daSmrg      esac
7175549e21daSmrg
7176549e21daSmrg      # move library search paths that coincide with paths to not yet
7177549e21daSmrg      # installed libraries to the beginning of the library search list
7178549e21daSmrg      new_libs=
7179549e21daSmrg      for path in $notinst_path; do
7180549e21daSmrg	case " $new_libs " in
7181549e21daSmrg	*" -L$path/$objdir "*) ;;
7182549e21daSmrg	*)
7183549e21daSmrg	  case " $deplibs " in
7184549e21daSmrg	  *" -L$path/$objdir "*)
7185549e21daSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
7186549e21daSmrg	  esac
7187549e21daSmrg	  ;;
7188549e21daSmrg	esac
7189549e21daSmrg      done
7190549e21daSmrg      for deplib in $deplibs; do
7191549e21daSmrg	case $deplib in
7192549e21daSmrg	-L*)
7193549e21daSmrg	  case " $new_libs " in
7194549e21daSmrg	  *" $deplib "*) ;;
7195549e21daSmrg	  *) new_libs="$new_libs $deplib" ;;
7196549e21daSmrg	  esac
7197549e21daSmrg	  ;;
7198549e21daSmrg	*) new_libs="$new_libs $deplib" ;;
7199549e21daSmrg	esac
7200549e21daSmrg      done
7201549e21daSmrg      deplibs="$new_libs"
7202549e21daSmrg
7203549e21daSmrg      # All the library-specific variables (install_libdir is set above).
7204549e21daSmrg      library_names=
7205549e21daSmrg      old_library=
7206549e21daSmrg      dlname=
7207ba6a1819Smrg
7208549e21daSmrg      # Test again, we may have decided not to build it any more
7209549e21daSmrg      if test "$build_libtool_libs" = yes; then
7210549e21daSmrg	if test "$hardcode_into_libs" = yes; then
7211549e21daSmrg	  # Hardcode the library paths
7212549e21daSmrg	  hardcode_libdirs=
7213549e21daSmrg	  dep_rpath=
7214549e21daSmrg	  rpath="$finalize_rpath"
7215549e21daSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
7216549e21daSmrg	  for libdir in $rpath; do
7217549e21daSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
7218549e21daSmrg	      if test -n "$hardcode_libdir_separator"; then
7219549e21daSmrg		if test -z "$hardcode_libdirs"; then
7220549e21daSmrg		  hardcode_libdirs="$libdir"
7221549e21daSmrg		else
7222549e21daSmrg		  # Just accumulate the unique libdirs.
7223549e21daSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7224549e21daSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7225549e21daSmrg		    ;;
7226549e21daSmrg		  *)
7227549e21daSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7228549e21daSmrg		    ;;
7229549e21daSmrg		  esac
7230549e21daSmrg		fi
7231549e21daSmrg	      else
7232549e21daSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
7233549e21daSmrg		dep_rpath="$dep_rpath $flag"
7234549e21daSmrg	      fi
7235549e21daSmrg	    elif test -n "$runpath_var"; then
7236549e21daSmrg	      case "$perm_rpath " in
7237549e21daSmrg	      *" $libdir "*) ;;
7238549e21daSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
7239549e21daSmrg	      esac
7240549e21daSmrg	    fi
7241549e21daSmrg	  done
7242549e21daSmrg	  # Substitute the hardcoded libdirs into the rpath.
7243549e21daSmrg	  if test -n "$hardcode_libdir_separator" &&
7244549e21daSmrg	     test -n "$hardcode_libdirs"; then
7245549e21daSmrg	    libdir="$hardcode_libdirs"
7246549e21daSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
7247549e21daSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7248549e21daSmrg	    else
7249549e21daSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
7250549e21daSmrg	    fi
7251549e21daSmrg	  fi
7252549e21daSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
7253549e21daSmrg	    # We should set the runpath_var.
7254549e21daSmrg	    rpath=
7255549e21daSmrg	    for dir in $perm_rpath; do
7256549e21daSmrg	      rpath="$rpath$dir:"
7257549e21daSmrg	    done
7258549e21daSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
7259549e21daSmrg	  fi
7260549e21daSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
7261549e21daSmrg	fi
7262ba6a1819Smrg
7263549e21daSmrg	shlibpath="$finalize_shlibpath"
7264549e21daSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
7265549e21daSmrg	if test -n "$shlibpath"; then
7266549e21daSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
7267549e21daSmrg	fi
7268ba6a1819Smrg
7269549e21daSmrg	# Get the real and link names of the library.
7270549e21daSmrg	eval shared_ext=\"$shrext_cmds\"
7271549e21daSmrg	eval library_names=\"$library_names_spec\"
7272549e21daSmrg	set dummy $library_names
7273549e21daSmrg	shift
7274549e21daSmrg	realname="$1"
7275549e21daSmrg	shift
7276ba6a1819Smrg
7277549e21daSmrg	if test -n "$soname_spec"; then
7278549e21daSmrg	  eval soname=\"$soname_spec\"
7279549e21daSmrg	else
7280549e21daSmrg	  soname="$realname"
7281549e21daSmrg	fi
7282549e21daSmrg	if test -z "$dlname"; then
7283549e21daSmrg	  dlname=$soname
7284549e21daSmrg	fi
7285ba6a1819Smrg
7286549e21daSmrg	lib="$output_objdir/$realname"
7287549e21daSmrg	linknames=
7288549e21daSmrg	for link
7289549e21daSmrg	do
7290549e21daSmrg	  linknames="$linknames $link"
7291549e21daSmrg	done
7292ba6a1819Smrg
7293549e21daSmrg	# Use standard objects if they are pic
7294549e21daSmrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
7295549e21daSmrg	test "X$libobjs" = "X " && libobjs=
7296ba6a1819Smrg
7297549e21daSmrg	delfiles=
7298549e21daSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7299549e21daSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
7300549e21daSmrg	  export_symbols="$output_objdir/$libname.uexp"
7301549e21daSmrg	  delfiles="$delfiles $export_symbols"
7302549e21daSmrg	fi
7303ba6a1819Smrg
7304549e21daSmrg	orig_export_symbols=
7305549e21daSmrg	case $host_os in
7306549e21daSmrg	cygwin* | mingw* | cegcc*)
7307549e21daSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
7308549e21daSmrg	    # exporting using user supplied symfile
7309549e21daSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
7310549e21daSmrg	      # and it's NOT already a .def file. Must figure out
7311549e21daSmrg	      # which of the given symbols are data symbols and tag
7312549e21daSmrg	      # them as such. So, trigger use of export_symbols_cmds.
7313549e21daSmrg	      # export_symbols gets reassigned inside the "prepare
7314549e21daSmrg	      # the list of exported symbols" if statement, so the
7315549e21daSmrg	      # include_expsyms logic still works.
7316549e21daSmrg	      orig_export_symbols="$export_symbols"
7317549e21daSmrg	      export_symbols=
7318549e21daSmrg	      always_export_symbols=yes
7319549e21daSmrg	    fi
7320549e21daSmrg	  fi
7321549e21daSmrg	  ;;
7322549e21daSmrg	esac
7323ba6a1819Smrg
7324549e21daSmrg	# Prepare the list of exported symbols
7325549e21daSmrg	if test -z "$export_symbols"; then
7326549e21daSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
7327549e21daSmrg	    func_verbose "generating symbol list for \`$libname.la'"
7328549e21daSmrg	    export_symbols="$output_objdir/$libname.exp"
7329549e21daSmrg	    $opt_dry_run || $RM $export_symbols
7330549e21daSmrg	    cmds=$export_symbols_cmds
7331549e21daSmrg	    save_ifs="$IFS"; IFS='~'
7332549e21daSmrg	    for cmd in $cmds; do
7333549e21daSmrg	      IFS="$save_ifs"
7334549e21daSmrg	      eval cmd=\"$cmd\"
7335549e21daSmrg	      func_len " $cmd"
7336549e21daSmrg	      len=$func_len_result
7337549e21daSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7338549e21daSmrg		func_show_eval "$cmd" 'exit $?'
7339549e21daSmrg		skipped_export=false
7340549e21daSmrg	      else
7341549e21daSmrg		# The command line is too long to execute in one step.
7342549e21daSmrg		func_verbose "using reloadable object file for export list..."
7343549e21daSmrg		skipped_export=:
7344549e21daSmrg		# Break out early, otherwise skipped_export may be
7345549e21daSmrg		# set to false by a later but shorter cmd.
7346549e21daSmrg		break
7347549e21daSmrg	      fi
7348549e21daSmrg	    done
7349549e21daSmrg	    IFS="$save_ifs"
7350549e21daSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7351549e21daSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7352549e21daSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7353549e21daSmrg	    fi
7354549e21daSmrg	  fi
7355549e21daSmrg	fi
7356ba6a1819Smrg
7357549e21daSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7358549e21daSmrg	  tmp_export_symbols="$export_symbols"
7359549e21daSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7360549e21daSmrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7361549e21daSmrg	fi
7362ba6a1819Smrg
7363549e21daSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7364549e21daSmrg	  # The given exports_symbols file has to be filtered, so filter it.
7365549e21daSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7366549e21daSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7367549e21daSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7368549e21daSmrg	  # though. Also, the filter scales superlinearly with the number of
7369549e21daSmrg	  # global variables. join(1) would be nice here, but unfortunately
7370549e21daSmrg	  # isn't a blessed tool.
7371549e21daSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7372549e21daSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7373549e21daSmrg	  export_symbols=$output_objdir/$libname.def
7374549e21daSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7375ba6a1819Smrg	fi
7376ba6a1819Smrg
7377549e21daSmrg	tmp_deplibs=
7378549e21daSmrg	for test_deplib in $deplibs; do
7379549e21daSmrg	  case " $convenience " in
7380549e21daSmrg	  *" $test_deplib "*) ;;
7381549e21daSmrg	  *)
7382549e21daSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7383549e21daSmrg	    ;;
7384549e21daSmrg	  esac
7385549e21daSmrg	done
7386549e21daSmrg	deplibs="$tmp_deplibs"
7387ba6a1819Smrg
7388549e21daSmrg	if test -n "$convenience"; then
7389549e21daSmrg	  if test -n "$whole_archive_flag_spec" &&
7390549e21daSmrg	    test "$compiler_needs_object" = yes &&
7391549e21daSmrg	    test -z "$libobjs"; then
7392549e21daSmrg	    # extract the archives, so we have objects to list.
7393549e21daSmrg	    # TODO: could optimize this to just extract one archive.
7394549e21daSmrg	    whole_archive_flag_spec=
7395549e21daSmrg	  fi
7396549e21daSmrg	  if test -n "$whole_archive_flag_spec"; then
7397549e21daSmrg	    save_libobjs=$libobjs
7398549e21daSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7399549e21daSmrg	    test "X$libobjs" = "X " && libobjs=
7400549e21daSmrg	  else
7401549e21daSmrg	    gentop="$output_objdir/${outputname}x"
7402549e21daSmrg	    generated="$generated $gentop"
7403ba6a1819Smrg
7404549e21daSmrg	    func_extract_archives $gentop $convenience
7405549e21daSmrg	    libobjs="$libobjs $func_extract_archives_result"
7406549e21daSmrg	    test "X$libobjs" = "X " && libobjs=
7407549e21daSmrg	  fi
7408549e21daSmrg	fi
7409ba6a1819Smrg
7410549e21daSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7411549e21daSmrg	  eval flag=\"$thread_safe_flag_spec\"
7412549e21daSmrg	  linker_flags="$linker_flags $flag"
7413549e21daSmrg	fi
7414ba6a1819Smrg
7415549e21daSmrg	# Make a backup of the uninstalled library when relinking
7416549e21daSmrg	if test "$mode" = relink; then
7417549e21daSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7418ba6a1819Smrg	fi
7419ba6a1819Smrg
7420549e21daSmrg	# Do each of the archive commands.
7421549e21daSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
7422549e21daSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7423549e21daSmrg	    eval test_cmds=\"$module_expsym_cmds\"
7424549e21daSmrg	    cmds=$module_expsym_cmds
7425549e21daSmrg	  else
7426549e21daSmrg	    eval test_cmds=\"$module_cmds\"
7427549e21daSmrg	    cmds=$module_cmds
7428549e21daSmrg	  fi
7429549e21daSmrg	else
7430549e21daSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7431549e21daSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
7432549e21daSmrg	    cmds=$archive_expsym_cmds
7433549e21daSmrg	  else
7434549e21daSmrg	    eval test_cmds=\"$archive_cmds\"
7435549e21daSmrg	    cmds=$archive_cmds
7436549e21daSmrg	  fi
7437ba6a1819Smrg	fi
7438ba6a1819Smrg
7439549e21daSmrg	if test "X$skipped_export" != "X:" &&
7440549e21daSmrg	   func_len " $test_cmds" &&
7441549e21daSmrg	   len=$func_len_result &&
7442549e21daSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7443549e21daSmrg	  :
7444549e21daSmrg	else
7445549e21daSmrg	  # The command line is too long to link in one step, link piecewise
7446549e21daSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7447549e21daSmrg	  # script.
7448ba6a1819Smrg
7449549e21daSmrg	  # Save the value of $output and $libobjs because we want to
7450549e21daSmrg	  # use them later.  If we have whole_archive_flag_spec, we
7451549e21daSmrg	  # want to use save_libobjs as it was before
7452549e21daSmrg	  # whole_archive_flag_spec was expanded, because we can't
7453549e21daSmrg	  # assume the linker understands whole_archive_flag_spec.
7454549e21daSmrg	  # This may have to be revisited, in case too many
7455549e21daSmrg	  # convenience libraries get linked in and end up exceeding
7456549e21daSmrg	  # the spec.
7457549e21daSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7458549e21daSmrg	    save_libobjs=$libobjs
7459549e21daSmrg	  fi
7460549e21daSmrg	  save_output=$output
7461549e21daSmrg	  func_basename "$output"
7462549e21daSmrg	  output_la=$func_basename_result
7463ba6a1819Smrg
7464549e21daSmrg	  # Clear the reloadable object creation command queue and
7465549e21daSmrg	  # initialize k to one.
7466549e21daSmrg	  test_cmds=
7467549e21daSmrg	  concat_cmds=
7468549e21daSmrg	  objlist=
7469549e21daSmrg	  last_robj=
7470549e21daSmrg	  k=1
7471549e21daSmrg
7472549e21daSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7473549e21daSmrg	    output=${output_objdir}/${output_la}.lnkscript
7474549e21daSmrg	    func_verbose "creating GNU ld script: $output"
7475549e21daSmrg	    echo 'INPUT (' > $output
7476549e21daSmrg	    for obj in $save_libobjs
7477549e21daSmrg	    do
7478549e21daSmrg	      $ECHO "$obj" >> $output
7479549e21daSmrg	    done
7480549e21daSmrg	    echo ')' >> $output
7481549e21daSmrg	    delfiles="$delfiles $output"
7482549e21daSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7483549e21daSmrg	    output=${output_objdir}/${output_la}.lnk
7484549e21daSmrg	    func_verbose "creating linker input file list: $output"
7485549e21daSmrg	    : > $output
7486549e21daSmrg	    set x $save_libobjs
7487549e21daSmrg	    shift
7488549e21daSmrg	    firstobj=
7489549e21daSmrg	    if test "$compiler_needs_object" = yes; then
7490549e21daSmrg	      firstobj="$1 "
7491549e21daSmrg	      shift
7492549e21daSmrg	    fi
7493549e21daSmrg	    for obj
7494549e21daSmrg	    do
7495549e21daSmrg	      $ECHO "$obj" >> $output
7496549e21daSmrg	    done
7497549e21daSmrg	    delfiles="$delfiles $output"
7498549e21daSmrg	    output=$firstobj\"$file_list_spec$output\"
7499549e21daSmrg	  else
7500549e21daSmrg	    if test -n "$save_libobjs"; then
7501549e21daSmrg	      func_verbose "creating reloadable object files..."
7502549e21daSmrg	      output=$output_objdir/$output_la-${k}.$objext
7503549e21daSmrg	      eval test_cmds=\"$reload_cmds\"
7504549e21daSmrg	      func_len " $test_cmds"
7505549e21daSmrg	      len0=$func_len_result
7506549e21daSmrg	      len=$len0
7507549e21daSmrg
7508549e21daSmrg	      # Loop over the list of objects to be linked.
7509549e21daSmrg	      for obj in $save_libobjs
7510549e21daSmrg	      do
7511549e21daSmrg		func_len " $obj"
7512549e21daSmrg		func_arith $len + $func_len_result
7513549e21daSmrg		len=$func_arith_result
7514549e21daSmrg		if test "X$objlist" = X ||
7515549e21daSmrg		   test "$len" -lt "$max_cmd_len"; then
7516549e21daSmrg		  func_append objlist " $obj"
7517549e21daSmrg		else
7518549e21daSmrg		  # The command $test_cmds is almost too long, add a
7519549e21daSmrg		  # command to the queue.
7520549e21daSmrg		  if test "$k" -eq 1 ; then
7521549e21daSmrg		    # The first file doesn't have a previous command to add.
7522549e21daSmrg		    reload_objs=$objlist
7523549e21daSmrg		    eval concat_cmds=\"$reload_cmds\"
7524549e21daSmrg		  else
7525549e21daSmrg		    # All subsequent reloadable object files will link in
7526549e21daSmrg		    # the last one created.
7527549e21daSmrg		    reload_objs="$objlist $last_robj"
7528549e21daSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
7529549e21daSmrg		  fi
7530549e21daSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7531549e21daSmrg		  func_arith $k + 1
7532549e21daSmrg		  k=$func_arith_result
7533549e21daSmrg		  output=$output_objdir/$output_la-${k}.$objext
7534549e21daSmrg		  objlist=" $obj"
7535549e21daSmrg		  func_len " $last_robj"
7536549e21daSmrg		  func_arith $len0 + $func_len_result
7537549e21daSmrg		  len=$func_arith_result
7538549e21daSmrg		fi
7539549e21daSmrg	      done
7540549e21daSmrg	      # Handle the remaining objects by creating one last
7541549e21daSmrg	      # reloadable object file.  All subsequent reloadable object
7542549e21daSmrg	      # files will link in the last one created.
7543549e21daSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7544549e21daSmrg	      reload_objs="$objlist $last_robj"
7545549e21daSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
7546549e21daSmrg	      if test -n "$last_robj"; then
7547549e21daSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7548549e21daSmrg	      fi
7549549e21daSmrg	      delfiles="$delfiles $output"
7550ba6a1819Smrg
7551549e21daSmrg	    else
7552549e21daSmrg	      output=
7553549e21daSmrg	    fi
7554ba6a1819Smrg
7555549e21daSmrg	    if ${skipped_export-false}; then
7556549e21daSmrg	      func_verbose "generating symbol list for \`$libname.la'"
7557549e21daSmrg	      export_symbols="$output_objdir/$libname.exp"
7558549e21daSmrg	      $opt_dry_run || $RM $export_symbols
7559549e21daSmrg	      libobjs=$output
7560549e21daSmrg	      # Append the command to create the export file.
7561549e21daSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7562549e21daSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7563549e21daSmrg	      if test -n "$last_robj"; then
7564549e21daSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7565549e21daSmrg	      fi
7566549e21daSmrg	    fi
7567ba6a1819Smrg
7568549e21daSmrg	    test -n "$save_libobjs" &&
7569549e21daSmrg	      func_verbose "creating a temporary reloadable object file: $output"
7570ba6a1819Smrg
7571549e21daSmrg	    # Loop through the commands generated above and execute them.
7572549e21daSmrg	    save_ifs="$IFS"; IFS='~'
7573549e21daSmrg	    for cmd in $concat_cmds; do
7574549e21daSmrg	      IFS="$save_ifs"
7575549e21daSmrg	      $opt_silent || {
7576549e21daSmrg		  func_quote_for_expand "$cmd"
7577549e21daSmrg		  eval "func_echo $func_quote_for_expand_result"
7578549e21daSmrg	      }
7579549e21daSmrg	      $opt_dry_run || eval "$cmd" || {
7580549e21daSmrg		lt_exit=$?
7581549e21daSmrg
7582549e21daSmrg		# Restore the uninstalled library and exit
7583549e21daSmrg		if test "$mode" = relink; then
7584549e21daSmrg		  ( cd "$output_objdir" && \
7585549e21daSmrg		    $RM "${realname}T" && \
7586549e21daSmrg		    $MV "${realname}U" "$realname" )
7587549e21daSmrg		fi
7588ba6a1819Smrg
7589549e21daSmrg		exit $lt_exit
7590549e21daSmrg	      }
7591549e21daSmrg	    done
7592549e21daSmrg	    IFS="$save_ifs"
7593ba6a1819Smrg
7594549e21daSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7595549e21daSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7596549e21daSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7597ba6a1819Smrg	    fi
7598ba6a1819Smrg	  fi
7599ba6a1819Smrg
7600549e21daSmrg          if ${skipped_export-false}; then
7601549e21daSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7602549e21daSmrg	      tmp_export_symbols="$export_symbols"
7603549e21daSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7604549e21daSmrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7605549e21daSmrg	    fi
7606ba6a1819Smrg
7607549e21daSmrg	    if test -n "$orig_export_symbols"; then
7608549e21daSmrg	      # The given exports_symbols file has to be filtered, so filter it.
7609549e21daSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7610549e21daSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7611549e21daSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7612549e21daSmrg	      # though. Also, the filter scales superlinearly with the number of
7613549e21daSmrg	      # global variables. join(1) would be nice here, but unfortunately
7614549e21daSmrg	      # isn't a blessed tool.
7615549e21daSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7616549e21daSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7617549e21daSmrg	      export_symbols=$output_objdir/$libname.def
7618549e21daSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7619549e21daSmrg	    fi
7620549e21daSmrg	  fi
7621ba6a1819Smrg
7622549e21daSmrg	  libobjs=$output
7623549e21daSmrg	  # Restore the value of output.
7624549e21daSmrg	  output=$save_output
7625ba6a1819Smrg
7626549e21daSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7627549e21daSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7628549e21daSmrg	    test "X$libobjs" = "X " && libobjs=
7629549e21daSmrg	  fi
7630549e21daSmrg	  # Expand the library linking commands again to reset the
7631549e21daSmrg	  # value of $libobjs for piecewise linking.
7632549e21daSmrg
7633549e21daSmrg	  # Do each of the archive commands.
7634549e21daSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7635549e21daSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7636549e21daSmrg	      cmds=$module_expsym_cmds
7637ba6a1819Smrg	    else
7638549e21daSmrg	      cmds=$module_cmds
7639ba6a1819Smrg	    fi
7640ba6a1819Smrg	  else
7641549e21daSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7642549e21daSmrg	      cmds=$archive_expsym_cmds
7643549e21daSmrg	    else
7644549e21daSmrg	      cmds=$archive_cmds
7645549e21daSmrg	    fi
7646ba6a1819Smrg	  fi
7647ba6a1819Smrg	fi
7648ba6a1819Smrg
7649549e21daSmrg	if test -n "$delfiles"; then
7650549e21daSmrg	  # Append the command to remove temporary files to $cmds.
7651549e21daSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7652549e21daSmrg	fi
7653ba6a1819Smrg
7654549e21daSmrg	# Add any objects from preloaded convenience libraries
7655549e21daSmrg	if test -n "$dlprefiles"; then
7656549e21daSmrg	  gentop="$output_objdir/${outputname}x"
7657549e21daSmrg	  generated="$generated $gentop"
7658ba6a1819Smrg
7659549e21daSmrg	  func_extract_archives $gentop $dlprefiles
7660549e21daSmrg	  libobjs="$libobjs $func_extract_archives_result"
7661549e21daSmrg	  test "X$libobjs" = "X " && libobjs=
7662ba6a1819Smrg	fi
7663ba6a1819Smrg
7664549e21daSmrg	save_ifs="$IFS"; IFS='~'
7665549e21daSmrg	for cmd in $cmds; do
7666549e21daSmrg	  IFS="$save_ifs"
7667549e21daSmrg	  eval cmd=\"$cmd\"
7668549e21daSmrg	  $opt_silent || {
7669549e21daSmrg	    func_quote_for_expand "$cmd"
7670549e21daSmrg	    eval "func_echo $func_quote_for_expand_result"
7671549e21daSmrg	  }
7672549e21daSmrg	  $opt_dry_run || eval "$cmd" || {
7673549e21daSmrg	    lt_exit=$?
7674ba6a1819Smrg
7675549e21daSmrg	    # Restore the uninstalled library and exit
7676549e21daSmrg	    if test "$mode" = relink; then
7677549e21daSmrg	      ( cd "$output_objdir" && \
7678549e21daSmrg	        $RM "${realname}T" && \
7679549e21daSmrg		$MV "${realname}U" "$realname" )
7680ba6a1819Smrg	    fi
7681ba6a1819Smrg
7682549e21daSmrg	    exit $lt_exit
7683549e21daSmrg	  }
7684549e21daSmrg	done
7685549e21daSmrg	IFS="$save_ifs"
7686ba6a1819Smrg
7687549e21daSmrg	# Restore the uninstalled library and exit
7688549e21daSmrg	if test "$mode" = relink; then
7689549e21daSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7690ba6a1819Smrg
7691549e21daSmrg	  if test -n "$convenience"; then
7692549e21daSmrg	    if test -z "$whole_archive_flag_spec"; then
7693549e21daSmrg	      func_show_eval '${RM}r "$gentop"'
7694549e21daSmrg	    fi
7695549e21daSmrg	  fi
7696ba6a1819Smrg
7697549e21daSmrg	  exit $EXIT_SUCCESS
7698549e21daSmrg	fi
7699ba6a1819Smrg
7700549e21daSmrg	# Create links to the real library.
7701549e21daSmrg	for linkname in $linknames; do
7702549e21daSmrg	  if test "$realname" != "$linkname"; then
7703549e21daSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7704ba6a1819Smrg	  fi
7705ba6a1819Smrg	done
7706549e21daSmrg
7707549e21daSmrg	# If -module or -export-dynamic was specified, set the dlname.
7708549e21daSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7709549e21daSmrg	  # On all known operating systems, these are identical.
7710549e21daSmrg	  dlname="$soname"
7711549e21daSmrg	fi
7712ba6a1819Smrg      fi
7713ba6a1819Smrg      ;;
7714ba6a1819Smrg
7715549e21daSmrg    obj)
7716549e21daSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7717549e21daSmrg	func_warning "\`-dlopen' is ignored for objects"
7718549e21daSmrg      fi
7719ba6a1819Smrg
7720549e21daSmrg      case " $deplibs" in
7721549e21daSmrg      *\ -l* | *\ -L*)
7722549e21daSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7723ba6a1819Smrg      esac
7724ba6a1819Smrg
7725549e21daSmrg      test -n "$rpath" && \
7726549e21daSmrg	func_warning "\`-rpath' is ignored for objects"
7727ba6a1819Smrg
7728549e21daSmrg      test -n "$xrpath" && \
7729549e21daSmrg	func_warning "\`-R' is ignored for objects"
7730ba6a1819Smrg
7731549e21daSmrg      test -n "$vinfo" && \
7732549e21daSmrg	func_warning "\`-version-info' is ignored for objects"
7733549e21daSmrg
7734549e21daSmrg      test -n "$release" && \
7735549e21daSmrg	func_warning "\`-release' is ignored for objects"
7736549e21daSmrg
7737549e21daSmrg      case $output in
7738549e21daSmrg      *.lo)
7739549e21daSmrg	test -n "$objs$old_deplibs" && \
7740549e21daSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7741549e21daSmrg
7742549e21daSmrg	libobj=$output
7743549e21daSmrg	func_lo2o "$libobj"
7744549e21daSmrg	obj=$func_lo2o_result
7745ba6a1819Smrg	;;
7746ba6a1819Smrg      *)
7747549e21daSmrg	libobj=
7748549e21daSmrg	obj="$output"
7749ba6a1819Smrg	;;
7750ba6a1819Smrg      esac
7751ba6a1819Smrg
7752549e21daSmrg      # Delete the old objects.
7753549e21daSmrg      $opt_dry_run || $RM $obj $libobj
7754ba6a1819Smrg
7755549e21daSmrg      # Objects from convenience libraries.  This assumes
7756549e21daSmrg      # single-version convenience libraries.  Whenever we create
7757549e21daSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7758549e21daSmrg      # the extraction.
7759549e21daSmrg      reload_conv_objs=
7760549e21daSmrg      gentop=
7761549e21daSmrg      # reload_cmds runs $LD directly, so let us get rid of
7762549e21daSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7763549e21daSmrg      # turning comma into space..
7764549e21daSmrg      wl=
7765ba6a1819Smrg
7766549e21daSmrg      if test -n "$convenience"; then
7767549e21daSmrg	if test -n "$whole_archive_flag_spec"; then
7768549e21daSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7769549e21daSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
7770549e21daSmrg	else
7771549e21daSmrg	  gentop="$output_objdir/${obj}x"
7772549e21daSmrg	  generated="$generated $gentop"
7773ba6a1819Smrg
7774549e21daSmrg	  func_extract_archives $gentop $convenience
7775549e21daSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7776549e21daSmrg	fi
7777ba6a1819Smrg      fi
7778ba6a1819Smrg
7779549e21daSmrg      # Create the old-style object.
7780549e21daSmrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7781ba6a1819Smrg
7782549e21daSmrg      output="$obj"
7783549e21daSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
7784ba6a1819Smrg
7785549e21daSmrg      # Exit if we aren't doing a library object file.
7786549e21daSmrg      if test -z "$libobj"; then
7787549e21daSmrg	if test -n "$gentop"; then
7788549e21daSmrg	  func_show_eval '${RM}r "$gentop"'
7789549e21daSmrg	fi
7790549e21daSmrg
7791549e21daSmrg	exit $EXIT_SUCCESS
7792ba6a1819Smrg      fi
7793549e21daSmrg
7794549e21daSmrg      if test "$build_libtool_libs" != yes; then
7795549e21daSmrg	if test -n "$gentop"; then
7796549e21daSmrg	  func_show_eval '${RM}r "$gentop"'
7797549e21daSmrg	fi
7798549e21daSmrg
7799549e21daSmrg	# Create an invalid libtool object if no PIC, so that we don't
7800549e21daSmrg	# accidentally link it into a program.
7801549e21daSmrg	# $show "echo timestamp > $libobj"
7802549e21daSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7803549e21daSmrg	exit $EXIT_SUCCESS
7804549e21daSmrg      fi
7805549e21daSmrg
7806549e21daSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7807549e21daSmrg	# Only do commands if we really have different PIC objects.
7808549e21daSmrg	reload_objs="$libobjs $reload_conv_objs"
7809549e21daSmrg	output="$libobj"
7810549e21daSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
7811549e21daSmrg      fi
7812549e21daSmrg
7813549e21daSmrg      if test -n "$gentop"; then
7814549e21daSmrg	func_show_eval '${RM}r "$gentop"'
7815549e21daSmrg      fi
7816549e21daSmrg
7817549e21daSmrg      exit $EXIT_SUCCESS
7818ba6a1819Smrg      ;;
7819ba6a1819Smrg
7820549e21daSmrg    prog)
7821549e21daSmrg      case $host in
7822549e21daSmrg	*cygwin*) func_stripname '' '.exe' "$output"
7823549e21daSmrg	          output=$func_stripname_result.exe;;
7824549e21daSmrg      esac
7825549e21daSmrg      test -n "$vinfo" && \
7826549e21daSmrg	func_warning "\`-version-info' is ignored for programs"
7827ba6a1819Smrg
7828549e21daSmrg      test -n "$release" && \
7829549e21daSmrg	func_warning "\`-release' is ignored for programs"
7830ba6a1819Smrg
7831549e21daSmrg      test "$preload" = yes \
7832549e21daSmrg        && test "$dlopen_support" = unknown \
7833549e21daSmrg	&& test "$dlopen_self" = unknown \
7834549e21daSmrg	&& test "$dlopen_self_static" = unknown && \
7835549e21daSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7836549e21daSmrg
7837549e21daSmrg      case $host in
7838549e21daSmrg      *-*-rhapsody* | *-*-darwin1.[012])
7839549e21daSmrg	# On Rhapsody replace the C library is the System framework
7840549e21daSmrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
7841549e21daSmrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
7842ba6a1819Smrg	;;
7843549e21daSmrg      esac
7844ba6a1819Smrg
7845549e21daSmrg      case $host in
7846549e21daSmrg      *-*-darwin*)
7847549e21daSmrg	# Don't allow lazy linking, it breaks C++ global constructors
7848549e21daSmrg	# But is supposedly fixed on 10.4 or later (yay!).
7849549e21daSmrg	if test "$tagname" = CXX ; then
7850549e21daSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7851549e21daSmrg	    10.[0123])
7852549e21daSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
7853549e21daSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7854549e21daSmrg	    ;;
7855549e21daSmrg	  esac
7856ba6a1819Smrg	fi
7857549e21daSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
7858549e21daSmrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7859549e21daSmrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7860549e21daSmrg	;;
7861549e21daSmrg      esac
7862ba6a1819Smrg
7863ba6a1819Smrg
7864549e21daSmrg      # move library search paths that coincide with paths to not yet
7865549e21daSmrg      # installed libraries to the beginning of the library search list
7866549e21daSmrg      new_libs=
7867549e21daSmrg      for path in $notinst_path; do
7868549e21daSmrg	case " $new_libs " in
7869549e21daSmrg	*" -L$path/$objdir "*) ;;
7870549e21daSmrg	*)
7871549e21daSmrg	  case " $compile_deplibs " in
7872549e21daSmrg	  *" -L$path/$objdir "*)
7873549e21daSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
7874ba6a1819Smrg	  esac
7875549e21daSmrg	  ;;
7876549e21daSmrg	esac
7877549e21daSmrg      done
7878549e21daSmrg      for deplib in $compile_deplibs; do
7879549e21daSmrg	case $deplib in
7880549e21daSmrg	-L*)
7881549e21daSmrg	  case " $new_libs " in
7882549e21daSmrg	  *" $deplib "*) ;;
7883549e21daSmrg	  *) new_libs="$new_libs $deplib" ;;
7884ba6a1819Smrg	  esac
7885549e21daSmrg	  ;;
7886549e21daSmrg	*) new_libs="$new_libs $deplib" ;;
7887549e21daSmrg	esac
7888549e21daSmrg      done
7889549e21daSmrg      compile_deplibs="$new_libs"
7890ba6a1819Smrg
7891ba6a1819Smrg
7892549e21daSmrg      compile_command="$compile_command $compile_deplibs"
7893549e21daSmrg      finalize_command="$finalize_command $finalize_deplibs"
7894ba6a1819Smrg
7895549e21daSmrg      if test -n "$rpath$xrpath"; then
7896549e21daSmrg	# If the user specified any rpath flags, then add them.
7897549e21daSmrg	for libdir in $rpath $xrpath; do
7898549e21daSmrg	  # This is the magic to use -rpath.
7899549e21daSmrg	  case "$finalize_rpath " in
7900549e21daSmrg	  *" $libdir "*) ;;
7901549e21daSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7902549e21daSmrg	  esac
7903549e21daSmrg	done
7904549e21daSmrg      fi
7905ba6a1819Smrg
7906549e21daSmrg      # Now hardcode the library paths
7907549e21daSmrg      rpath=
7908549e21daSmrg      hardcode_libdirs=
7909549e21daSmrg      for libdir in $compile_rpath $finalize_rpath; do
7910549e21daSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7911549e21daSmrg	  if test -n "$hardcode_libdir_separator"; then
7912549e21daSmrg	    if test -z "$hardcode_libdirs"; then
7913549e21daSmrg	      hardcode_libdirs="$libdir"
7914549e21daSmrg	    else
7915549e21daSmrg	      # Just accumulate the unique libdirs.
7916549e21daSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7917549e21daSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7918549e21daSmrg		;;
7919549e21daSmrg	      *)
7920549e21daSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7921549e21daSmrg		;;
7922549e21daSmrg	      esac
7923549e21daSmrg	    fi
7924ba6a1819Smrg	  else
7925549e21daSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7926549e21daSmrg	    rpath="$rpath $flag"
7927ba6a1819Smrg	  fi
7928549e21daSmrg	elif test -n "$runpath_var"; then
7929549e21daSmrg	  case "$perm_rpath " in
7930549e21daSmrg	  *" $libdir "*) ;;
7931549e21daSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
7932549e21daSmrg	  esac
7933549e21daSmrg	fi
7934549e21daSmrg	case $host in
7935549e21daSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7936549e21daSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7937549e21daSmrg	  case :$dllsearchpath: in
7938549e21daSmrg	  *":$libdir:"*) ;;
7939549e21daSmrg	  ::) dllsearchpath=$libdir;;
7940549e21daSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7941549e21daSmrg	  esac
7942549e21daSmrg	  case :$dllsearchpath: in
7943549e21daSmrg	  *":$testbindir:"*) ;;
7944549e21daSmrg	  ::) dllsearchpath=$testbindir;;
7945549e21daSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7946549e21daSmrg	  esac
7947549e21daSmrg	  ;;
7948549e21daSmrg	esac
7949549e21daSmrg      done
7950549e21daSmrg      # Substitute the hardcoded libdirs into the rpath.
7951549e21daSmrg      if test -n "$hardcode_libdir_separator" &&
7952549e21daSmrg	 test -n "$hardcode_libdirs"; then
7953549e21daSmrg	libdir="$hardcode_libdirs"
7954549e21daSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7955549e21daSmrg      fi
7956549e21daSmrg      compile_rpath="$rpath"
7957ba6a1819Smrg
7958549e21daSmrg      rpath=
7959549e21daSmrg      hardcode_libdirs=
7960549e21daSmrg      for libdir in $finalize_rpath; do
7961549e21daSmrg	if test -n "$hardcode_libdir_flag_spec"; then
7962549e21daSmrg	  if test -n "$hardcode_libdir_separator"; then
7963549e21daSmrg	    if test -z "$hardcode_libdirs"; then
7964549e21daSmrg	      hardcode_libdirs="$libdir"
7965549e21daSmrg	    else
7966549e21daSmrg	      # Just accumulate the unique libdirs.
7967549e21daSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7968549e21daSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7969549e21daSmrg		;;
7970549e21daSmrg	      *)
7971549e21daSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7972549e21daSmrg		;;
7973549e21daSmrg	      esac
7974549e21daSmrg	    fi
7975ba6a1819Smrg	  else
7976549e21daSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7977549e21daSmrg	    rpath="$rpath $flag"
7978ba6a1819Smrg	  fi
7979549e21daSmrg	elif test -n "$runpath_var"; then
7980549e21daSmrg	  case "$finalize_perm_rpath " in
7981549e21daSmrg	  *" $libdir "*) ;;
7982549e21daSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7983549e21daSmrg	  esac
7984ba6a1819Smrg	fi
7985549e21daSmrg      done
7986549e21daSmrg      # Substitute the hardcoded libdirs into the rpath.
7987549e21daSmrg      if test -n "$hardcode_libdir_separator" &&
7988549e21daSmrg	 test -n "$hardcode_libdirs"; then
7989549e21daSmrg	libdir="$hardcode_libdirs"
7990549e21daSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7991549e21daSmrg      fi
7992549e21daSmrg      finalize_rpath="$rpath"
7993ba6a1819Smrg
7994549e21daSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7995549e21daSmrg	# Transform all the library objects into standard objects.
7996549e21daSmrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7997549e21daSmrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7998549e21daSmrg      fi
7999ba6a1819Smrg
8000549e21daSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8001ba6a1819Smrg
8002549e21daSmrg      # template prelinking step
8003549e21daSmrg      if test -n "$prelink_cmds"; then
8004549e21daSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
8005549e21daSmrg      fi
8006ba6a1819Smrg
8007549e21daSmrg      wrappers_required=yes
8008549e21daSmrg      case $host in
8009549e21daSmrg      *cegcc* | *mingw32ce*)
8010549e21daSmrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8011549e21daSmrg        wrappers_required=no
8012549e21daSmrg        ;;
8013549e21daSmrg      *cygwin* | *mingw* )
8014549e21daSmrg        if test "$build_libtool_libs" != yes; then
8015549e21daSmrg          wrappers_required=no
8016549e21daSmrg        fi
8017549e21daSmrg        ;;
8018549e21daSmrg      *)
8019549e21daSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8020549e21daSmrg          wrappers_required=no
8021549e21daSmrg        fi
8022549e21daSmrg        ;;
8023549e21daSmrg      esac
8024549e21daSmrg      if test "$wrappers_required" = no; then
8025549e21daSmrg	# Replace the output file specification.
8026549e21daSmrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8027549e21daSmrg	link_command="$compile_command$compile_rpath"
8028ba6a1819Smrg
8029549e21daSmrg	# We have no uninstalled library dependencies, so finalize right now.
8030549e21daSmrg	exit_status=0
8031549e21daSmrg	func_show_eval "$link_command" 'exit_status=$?'
8032ba6a1819Smrg
8033549e21daSmrg	# Delete the generated files.
8034549e21daSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
8035549e21daSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8036ba6a1819Smrg	fi
8037ba6a1819Smrg
8038549e21daSmrg	exit $exit_status
8039549e21daSmrg      fi
8040ba6a1819Smrg
8041549e21daSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8042549e21daSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8043549e21daSmrg      fi
8044549e21daSmrg      if test -n "$finalize_shlibpath"; then
8045549e21daSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8046549e21daSmrg      fi
8047ba6a1819Smrg
8048549e21daSmrg      compile_var=
8049549e21daSmrg      finalize_var=
8050549e21daSmrg      if test -n "$runpath_var"; then
8051549e21daSmrg	if test -n "$perm_rpath"; then
8052549e21daSmrg	  # We should set the runpath_var.
8053549e21daSmrg	  rpath=
8054549e21daSmrg	  for dir in $perm_rpath; do
8055549e21daSmrg	    rpath="$rpath$dir:"
8056549e21daSmrg	  done
8057549e21daSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8058ba6a1819Smrg	fi
8059549e21daSmrg	if test -n "$finalize_perm_rpath"; then
8060549e21daSmrg	  # We should set the runpath_var.
8061549e21daSmrg	  rpath=
8062549e21daSmrg	  for dir in $finalize_perm_rpath; do
8063549e21daSmrg	    rpath="$rpath$dir:"
8064549e21daSmrg	  done
8065549e21daSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8066ba6a1819Smrg	fi
8067549e21daSmrg      fi
8068ba6a1819Smrg
8069549e21daSmrg      if test "$no_install" = yes; then
8070549e21daSmrg	# We don't need to create a wrapper script.
8071549e21daSmrg	link_command="$compile_var$compile_command$compile_rpath"
8072549e21daSmrg	# Replace the output file specification.
8073549e21daSmrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8074549e21daSmrg	# Delete the old output file.
8075549e21daSmrg	$opt_dry_run || $RM $output
8076549e21daSmrg	# Link the executable and exit
8077549e21daSmrg	func_show_eval "$link_command" 'exit $?'
8078ba6a1819Smrg	exit $EXIT_SUCCESS
8079549e21daSmrg      fi
8080ba6a1819Smrg
8081549e21daSmrg      if test "$hardcode_action" = relink; then
8082549e21daSmrg	# Fast installation is not supported
8083549e21daSmrg	link_command="$compile_var$compile_command$compile_rpath"
8084549e21daSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
8085549e21daSmrg
8086549e21daSmrg	func_warning "this platform does not like uninstalled shared libraries"
8087549e21daSmrg	func_warning "\`$output' will be relinked during installation"
8088549e21daSmrg      else
8089549e21daSmrg	if test "$fast_install" != no; then
8090549e21daSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
8091549e21daSmrg	  if test "$fast_install" = yes; then
8092549e21daSmrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8093549e21daSmrg	  else
8094549e21daSmrg	    # fast_install is set to needless
8095549e21daSmrg	    relink_command=
8096549e21daSmrg	  fi
8097ba6a1819Smrg	else
8098549e21daSmrg	  link_command="$compile_var$compile_command$compile_rpath"
8099549e21daSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8100ba6a1819Smrg	fi
8101549e21daSmrg      fi
8102ba6a1819Smrg
8103549e21daSmrg      # Replace the output file specification.
8104549e21daSmrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8105ba6a1819Smrg
8106549e21daSmrg      # Delete the old output files.
8107549e21daSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8108ba6a1819Smrg
8109549e21daSmrg      func_show_eval "$link_command" 'exit $?'
8110ba6a1819Smrg
8111549e21daSmrg      # Now create the wrapper script.
8112549e21daSmrg      func_verbose "creating $output"
8113ba6a1819Smrg
8114549e21daSmrg      # Quote the relink command for shipping.
8115549e21daSmrg      if test -n "$relink_command"; then
8116549e21daSmrg	# Preserve any variables that may affect compiler behavior
8117549e21daSmrg	for var in $variables_saved_for_relink; do
8118549e21daSmrg	  if eval test -z \"\${$var+set}\"; then
8119549e21daSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8120549e21daSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
8121549e21daSmrg	    relink_command="$var=; export $var; $relink_command"
8122549e21daSmrg	  else
8123549e21daSmrg	    func_quote_for_eval "$var_value"
8124549e21daSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8125549e21daSmrg	  fi
8126549e21daSmrg	done
8127549e21daSmrg	relink_command="(cd `pwd`; $relink_command)"
8128549e21daSmrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8129549e21daSmrg      fi
8130ba6a1819Smrg
8131549e21daSmrg      # Only actually do things if not in dry run mode.
8132549e21daSmrg      $opt_dry_run || {
8133549e21daSmrg	# win32 will think the script is a binary if it has
8134549e21daSmrg	# a .exe suffix, so we strip it off here.
8135549e21daSmrg	case $output in
8136549e21daSmrg	  *.exe) func_stripname '' '.exe' "$output"
8137549e21daSmrg	         output=$func_stripname_result ;;
8138549e21daSmrg	esac
8139549e21daSmrg	# test for cygwin because mv fails w/o .exe extensions
8140549e21daSmrg	case $host in
8141549e21daSmrg	  *cygwin*)
8142549e21daSmrg	    exeext=.exe
8143549e21daSmrg	    func_stripname '' '.exe' "$outputname"
8144549e21daSmrg	    outputname=$func_stripname_result ;;
8145549e21daSmrg	  *) exeext= ;;
8146549e21daSmrg	esac
8147549e21daSmrg	case $host in
8148549e21daSmrg	  *cygwin* | *mingw* )
8149549e21daSmrg	    func_dirname_and_basename "$output" "" "."
8150549e21daSmrg	    output_name=$func_basename_result
8151549e21daSmrg	    output_path=$func_dirname_result
8152549e21daSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
8153549e21daSmrg	    cwrapper="$output_path/$output_name.exe"
8154549e21daSmrg	    $RM $cwrappersource $cwrapper
8155549e21daSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
8156549e21daSmrg
8157549e21daSmrg	    func_emit_cwrapperexe_src > $cwrappersource
8158549e21daSmrg
8159549e21daSmrg	    # The wrapper executable is built using the $host compiler,
8160549e21daSmrg	    # because it contains $host paths and files. If cross-
8161549e21daSmrg	    # compiling, it, like the target executable, must be
8162549e21daSmrg	    # executed on the $host or under an emulation environment.
8163549e21daSmrg	    $opt_dry_run || {
8164549e21daSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
8165549e21daSmrg	      $STRIP $cwrapper
8166549e21daSmrg	    }
8167549e21daSmrg
8168549e21daSmrg	    # Now, create the wrapper script for func_source use:
8169549e21daSmrg	    func_ltwrapper_scriptname $cwrapper
8170549e21daSmrg	    $RM $func_ltwrapper_scriptname_result
8171549e21daSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
8172549e21daSmrg	    $opt_dry_run || {
8173549e21daSmrg	      # note: this script will not be executed, so do not chmod.
8174549e21daSmrg	      if test "x$build" = "x$host" ; then
8175549e21daSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
8176ba6a1819Smrg	      else
8177549e21daSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
8178ba6a1819Smrg	      fi
8179549e21daSmrg	    }
8180549e21daSmrg	  ;;
8181549e21daSmrg	  * )
8182549e21daSmrg	    $RM $output
8183549e21daSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
8184ba6a1819Smrg
8185549e21daSmrg	    func_emit_wrapper no > $output
8186549e21daSmrg	    chmod +x $output
8187ba6a1819Smrg	  ;;
8188ba6a1819Smrg	esac
8189549e21daSmrg      }
8190549e21daSmrg      exit $EXIT_SUCCESS
8191549e21daSmrg      ;;
8192549e21daSmrg    esac
8193ba6a1819Smrg
8194549e21daSmrg    # See if we need to build an old-fashioned archive.
8195549e21daSmrg    for oldlib in $oldlibs; do
8196ba6a1819Smrg
8197549e21daSmrg      if test "$build_libtool_libs" = convenience; then
8198549e21daSmrg	oldobjs="$libobjs_save $symfileobj"
8199549e21daSmrg	addlibs="$convenience"
8200549e21daSmrg	build_libtool_libs=no
8201549e21daSmrg      else
8202549e21daSmrg	if test "$build_libtool_libs" = module; then
8203549e21daSmrg	  oldobjs="$libobjs_save"
8204549e21daSmrg	  build_libtool_libs=no
8205549e21daSmrg	else
8206549e21daSmrg	  oldobjs="$old_deplibs $non_pic_objects"
8207549e21daSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
8208549e21daSmrg	    oldobjs="$oldobjs $symfileobj"
8209549e21daSmrg	  fi
8210549e21daSmrg	fi
8211549e21daSmrg	addlibs="$old_convenience"
8212ba6a1819Smrg      fi
8213ba6a1819Smrg
8214549e21daSmrg      if test -n "$addlibs"; then
8215549e21daSmrg	gentop="$output_objdir/${outputname}x"
8216549e21daSmrg	generated="$generated $gentop"
8217ba6a1819Smrg
8218549e21daSmrg	func_extract_archives $gentop $addlibs
8219549e21daSmrg	oldobjs="$oldobjs $func_extract_archives_result"
8220549e21daSmrg      fi
8221ba6a1819Smrg
8222549e21daSmrg      # Do each command in the archive commands.
8223549e21daSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
8224549e21daSmrg	cmds=$old_archive_from_new_cmds
8225549e21daSmrg      else
8226ba6a1819Smrg
8227549e21daSmrg	# Add any objects from preloaded convenience libraries
8228549e21daSmrg	if test -n "$dlprefiles"; then
8229549e21daSmrg	  gentop="$output_objdir/${outputname}x"
8230549e21daSmrg	  generated="$generated $gentop"
8231ba6a1819Smrg
8232549e21daSmrg	  func_extract_archives $gentop $dlprefiles
8233549e21daSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
8234549e21daSmrg	fi
8235ba6a1819Smrg
8236549e21daSmrg	# POSIX demands no paths to be encoded in archives.  We have
8237549e21daSmrg	# to avoid creating archives with duplicate basenames if we
8238549e21daSmrg	# might have to extract them afterwards, e.g., when creating a
8239549e21daSmrg	# static archive out of a convenience library, or when linking
8240549e21daSmrg	# the entirety of a libtool archive into another (currently
8241549e21daSmrg	# not supported by libtool).
8242549e21daSmrg	if (for obj in $oldobjs
8243549e21daSmrg	    do
8244549e21daSmrg	      func_basename "$obj"
8245549e21daSmrg	      $ECHO "$func_basename_result"
8246549e21daSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
8247549e21daSmrg	  :
8248549e21daSmrg	else
8249549e21daSmrg	  echo "copying selected object files to avoid basename conflicts..."
8250549e21daSmrg	  gentop="$output_objdir/${outputname}x"
8251549e21daSmrg	  generated="$generated $gentop"
8252549e21daSmrg	  func_mkdir_p "$gentop"
8253549e21daSmrg	  save_oldobjs=$oldobjs
8254549e21daSmrg	  oldobjs=
8255549e21daSmrg	  counter=1
8256549e21daSmrg	  for obj in $save_oldobjs
8257549e21daSmrg	  do
8258549e21daSmrg	    func_basename "$obj"
8259549e21daSmrg	    objbase="$func_basename_result"
8260549e21daSmrg	    case " $oldobjs " in
8261549e21daSmrg	    " ") oldobjs=$obj ;;
8262549e21daSmrg	    *[\ /]"$objbase "*)
8263549e21daSmrg	      while :; do
8264549e21daSmrg		# Make sure we don't pick an alternate name that also
8265549e21daSmrg		# overlaps.
8266549e21daSmrg		newobj=lt$counter-$objbase
8267549e21daSmrg		func_arith $counter + 1
8268549e21daSmrg		counter=$func_arith_result
8269549e21daSmrg		case " $oldobjs " in
8270549e21daSmrg		*[\ /]"$newobj "*) ;;
8271549e21daSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
8272549e21daSmrg		esac
8273549e21daSmrg	      done
8274549e21daSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8275549e21daSmrg	      oldobjs="$oldobjs $gentop/$newobj"
8276549e21daSmrg	      ;;
8277549e21daSmrg	    *) oldobjs="$oldobjs $obj" ;;
8278549e21daSmrg	    esac
8279ba6a1819Smrg	  done
8280ba6a1819Smrg	fi
8281549e21daSmrg	eval cmds=\"$old_archive_cmds\"
8282ba6a1819Smrg
8283549e21daSmrg	func_len " $cmds"
8284549e21daSmrg	len=$func_len_result
8285549e21daSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8286549e21daSmrg	  cmds=$old_archive_cmds
8287549e21daSmrg	else
8288549e21daSmrg	  # the command line is too long to link in one step, link in parts
8289549e21daSmrg	  func_verbose "using piecewise archive linking..."
8290549e21daSmrg	  save_RANLIB=$RANLIB
8291549e21daSmrg	  RANLIB=:
8292549e21daSmrg	  objlist=
8293549e21daSmrg	  concat_cmds=
8294549e21daSmrg	  save_oldobjs=$oldobjs
8295549e21daSmrg	  oldobjs=
8296549e21daSmrg	  # Is there a better way of finding the last object in the list?
8297549e21daSmrg	  for obj in $save_oldobjs
8298549e21daSmrg	  do
8299549e21daSmrg	    last_oldobj=$obj
8300549e21daSmrg	  done
8301549e21daSmrg	  eval test_cmds=\"$old_archive_cmds\"
8302549e21daSmrg	  func_len " $test_cmds"
8303549e21daSmrg	  len0=$func_len_result
8304549e21daSmrg	  len=$len0
8305549e21daSmrg	  for obj in $save_oldobjs
8306549e21daSmrg	  do
8307549e21daSmrg	    func_len " $obj"
8308549e21daSmrg	    func_arith $len + $func_len_result
8309549e21daSmrg	    len=$func_arith_result
8310549e21daSmrg	    func_append objlist " $obj"
8311549e21daSmrg	    if test "$len" -lt "$max_cmd_len"; then
8312549e21daSmrg	      :
8313549e21daSmrg	    else
8314549e21daSmrg	      # the above command should be used before it gets too long
8315549e21daSmrg	      oldobjs=$objlist
8316549e21daSmrg	      if test "$obj" = "$last_oldobj" ; then
8317549e21daSmrg		RANLIB=$save_RANLIB
8318549e21daSmrg	      fi
8319549e21daSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8320549e21daSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8321549e21daSmrg	      objlist=
8322549e21daSmrg	      len=$len0
8323549e21daSmrg	    fi
8324549e21daSmrg	  done
8325549e21daSmrg	  RANLIB=$save_RANLIB
8326549e21daSmrg	  oldobjs=$objlist
8327549e21daSmrg	  if test "X$oldobjs" = "X" ; then
8328549e21daSmrg	    eval cmds=\"\$concat_cmds\"
8329549e21daSmrg	  else
8330549e21daSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8331549e21daSmrg	  fi
8332549e21daSmrg	fi
8333549e21daSmrg      fi
8334549e21daSmrg      func_execute_cmds "$cmds" 'exit $?'
8335ba6a1819Smrg    done
8336ba6a1819Smrg
8337549e21daSmrg    test -n "$generated" && \
8338549e21daSmrg      func_show_eval "${RM}r$generated"
8339ba6a1819Smrg
8340549e21daSmrg    # Now create the libtool archive.
8341549e21daSmrg    case $output in
8342549e21daSmrg    *.la)
8343549e21daSmrg      old_library=
8344549e21daSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8345549e21daSmrg      func_verbose "creating $output"
8346ba6a1819Smrg
8347549e21daSmrg      # Preserve any variables that may affect compiler behavior
8348549e21daSmrg      for var in $variables_saved_for_relink; do
8349549e21daSmrg	if eval test -z \"\${$var+set}\"; then
8350549e21daSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8351549e21daSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
8352549e21daSmrg	  relink_command="$var=; export $var; $relink_command"
8353ba6a1819Smrg	else
8354549e21daSmrg	  func_quote_for_eval "$var_value"
8355549e21daSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8356ba6a1819Smrg	fi
8357549e21daSmrg      done
8358549e21daSmrg      # Quote the link command for shipping.
8359549e21daSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8360549e21daSmrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8361549e21daSmrg      if test "$hardcode_automatic" = yes ; then
8362549e21daSmrg	relink_command=
8363549e21daSmrg      fi
8364ba6a1819Smrg
8365549e21daSmrg      # Only create the output if not a dry run.
8366549e21daSmrg      $opt_dry_run || {
8367549e21daSmrg	for installed in no yes; do
8368549e21daSmrg	  if test "$installed" = yes; then
8369549e21daSmrg	    if test -z "$install_libdir"; then
8370549e21daSmrg	      break
8371549e21daSmrg	    fi
8372549e21daSmrg	    output="$output_objdir/$outputname"i
8373549e21daSmrg	    # Replace all uninstalled libtool libraries with the installed ones
8374549e21daSmrg	    newdependency_libs=
8375549e21daSmrg	    for deplib in $dependency_libs; do
8376549e21daSmrg	      case $deplib in
8377549e21daSmrg	      *.la)
8378549e21daSmrg		func_basename "$deplib"
8379549e21daSmrg		name="$func_basename_result"
8380549e21daSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8381549e21daSmrg		test -z "$libdir" && \
8382549e21daSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8383549e21daSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
8384549e21daSmrg		;;
8385549e21daSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8386549e21daSmrg	      esac
8387549e21daSmrg	    done
8388549e21daSmrg	    dependency_libs="$newdependency_libs"
8389549e21daSmrg	    newdlfiles=
8390549e21daSmrg
8391549e21daSmrg	    for lib in $dlfiles; do
8392549e21daSmrg	      case $lib in
8393549e21daSmrg	      *.la)
8394549e21daSmrg	        func_basename "$lib"
8395549e21daSmrg		name="$func_basename_result"
8396549e21daSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8397549e21daSmrg		test -z "$libdir" && \
8398549e21daSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8399549e21daSmrg		newdlfiles="$newdlfiles $libdir/$name"
8400549e21daSmrg		;;
8401549e21daSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
8402549e21daSmrg	      esac
8403549e21daSmrg	    done
8404549e21daSmrg	    dlfiles="$newdlfiles"
8405549e21daSmrg	    newdlprefiles=
8406549e21daSmrg	    for lib in $dlprefiles; do
8407549e21daSmrg	      case $lib in
8408549e21daSmrg	      *.la)
8409549e21daSmrg		# Only pass preopened files to the pseudo-archive (for
8410549e21daSmrg		# eventual linking with the app. that links it) if we
8411549e21daSmrg		# didn't already link the preopened objects directly into
8412549e21daSmrg		# the library:
8413549e21daSmrg		func_basename "$lib"
8414549e21daSmrg		name="$func_basename_result"
8415549e21daSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8416549e21daSmrg		test -z "$libdir" && \
8417549e21daSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8418549e21daSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
8419549e21daSmrg		;;
8420549e21daSmrg	      esac
8421549e21daSmrg	    done
8422549e21daSmrg	    dlprefiles="$newdlprefiles"
8423549e21daSmrg	  else
8424549e21daSmrg	    newdlfiles=
8425549e21daSmrg	    for lib in $dlfiles; do
8426549e21daSmrg	      case $lib in
8427549e21daSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8428549e21daSmrg		*) abs=`pwd`"/$lib" ;;
8429549e21daSmrg	      esac
8430549e21daSmrg	      newdlfiles="$newdlfiles $abs"
8431549e21daSmrg	    done
8432549e21daSmrg	    dlfiles="$newdlfiles"
8433549e21daSmrg	    newdlprefiles=
8434549e21daSmrg	    for lib in $dlprefiles; do
8435549e21daSmrg	      case $lib in
8436549e21daSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8437549e21daSmrg		*) abs=`pwd`"/$lib" ;;
8438549e21daSmrg	      esac
8439549e21daSmrg	      newdlprefiles="$newdlprefiles $abs"
8440549e21daSmrg	    done
8441549e21daSmrg	    dlprefiles="$newdlprefiles"
8442549e21daSmrg	  fi
8443549e21daSmrg	  $RM $output
8444549e21daSmrg	  # place dlname in correct position for cygwin
8445549e21daSmrg	  # In fact, it would be nice if we could use this code for all target
8446549e21daSmrg	  # systems that can't hard-code library paths into their executables
8447549e21daSmrg	  # and that have no shared library path variable independent of PATH,
8448549e21daSmrg	  # but it turns out we can't easily determine that from inspecting
8449549e21daSmrg	  # libtool variables, so we have to hard-code the OSs to which it
8450549e21daSmrg	  # applies here; at the moment, that means platforms that use the PE
8451549e21daSmrg	  # object format with DLL files.  See the long comment at the top of
8452549e21daSmrg	  # tests/bindir.at for full details.
8453549e21daSmrg	  tdlname=$dlname
8454549e21daSmrg	  case $host,$output,$installed,$module,$dlname in
8455549e21daSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
8456549e21daSmrg	      # If a -bindir argument was supplied, place the dll there.
8457549e21daSmrg	      if test "x$bindir" != x ;
8458549e21daSmrg	      then
8459549e21daSmrg		func_relative_path "$install_libdir" "$bindir"
8460549e21daSmrg		tdlname=$func_relative_path_result$dlname
8461549e21daSmrg	      else
8462549e21daSmrg		# Otherwise fall back on heuristic.
8463549e21daSmrg		tdlname=../bin/$dlname
8464549e21daSmrg	      fi
8465549e21daSmrg	      ;;
8466549e21daSmrg	  esac
8467549e21daSmrg	  $ECHO > $output "\
8468549e21daSmrg# $outputname - a libtool library file
8469549e21daSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8470549e21daSmrg#
8471549e21daSmrg# Please DO NOT delete this file!
8472549e21daSmrg# It is necessary for linking the library.
8473ba6a1819Smrg
8474549e21daSmrg# The name that we can dlopen(3).
8475549e21daSmrgdlname='$tdlname'
8476ba6a1819Smrg
8477549e21daSmrg# Names of this library.
8478549e21daSmrglibrary_names='$library_names'
8479ba6a1819Smrg
8480549e21daSmrg# The name of the static archive.
8481549e21daSmrgold_library='$old_library'
8482ba6a1819Smrg
8483549e21daSmrg# Linker flags that can not go in dependency_libs.
8484549e21daSmrginherited_linker_flags='$new_inherited_linker_flags'
8485ba6a1819Smrg
8486549e21daSmrg# Libraries that this one depends upon.
8487549e21daSmrgdependency_libs='$dependency_libs'
8488ba6a1819Smrg
8489549e21daSmrg# Names of additional weak libraries provided by this library
8490549e21daSmrgweak_library_names='$weak_libs'
8491ba6a1819Smrg
8492549e21daSmrg# Version information for $libname.
8493549e21daSmrgcurrent=$current
8494549e21daSmrgage=$age
8495549e21daSmrgrevision=$revision
8496ba6a1819Smrg
8497549e21daSmrg# Is this an already installed library?
8498549e21daSmrginstalled=$installed
8499ba6a1819Smrg
8500549e21daSmrg# Should we warn about portability when linking against -modules?
8501549e21daSmrgshouldnotlink=$module
8502ba6a1819Smrg
8503549e21daSmrg# Files to dlopen/dlpreopen
8504549e21daSmrgdlopen='$dlfiles'
8505549e21daSmrgdlpreopen='$dlprefiles'
8506ba6a1819Smrg
8507549e21daSmrg# Directory that this library needs to be installed in:
8508549e21daSmrglibdir='$install_libdir'"
8509549e21daSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
8510549e21daSmrg	    $ECHO >> $output "\
8511549e21daSmrgrelink_command=\"$relink_command\""
8512549e21daSmrg	  fi
8513549e21daSmrg	done
8514549e21daSmrg      }
8515ba6a1819Smrg
8516549e21daSmrg      # Do a symbolic link so that the libtool archive can be found in
8517549e21daSmrg      # LD_LIBRARY_PATH before the program is installed.
8518549e21daSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8519549e21daSmrg      ;;
8520549e21daSmrg    esac
8521549e21daSmrg    exit $EXIT_SUCCESS
8522549e21daSmrg}
8523ba6a1819Smrg
8524549e21daSmrg{ test "$mode" = link || test "$mode" = relink; } &&
8525549e21daSmrg    func_mode_link ${1+"$@"}
8526ba6a1819Smrg
8527ba6a1819Smrg
8528549e21daSmrg# func_mode_uninstall arg...
8529549e21daSmrgfunc_mode_uninstall ()
8530549e21daSmrg{
8531549e21daSmrg    $opt_debug
8532549e21daSmrg    RM="$nonopt"
8533ba6a1819Smrg    files=
8534ba6a1819Smrg    rmforce=
8535ba6a1819Smrg    exit_status=0
8536ba6a1819Smrg
8537ba6a1819Smrg    # This variable tells wrapper scripts just to set variables rather
8538ba6a1819Smrg    # than running their programs.
8539ba6a1819Smrg    libtool_install_magic="$magic"
8540ba6a1819Smrg
8541ba6a1819Smrg    for arg
8542ba6a1819Smrg    do
8543ba6a1819Smrg      case $arg in
8544549e21daSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
8545549e21daSmrg      -*) RM="$RM $arg" ;;
8546ba6a1819Smrg      *) files="$files $arg" ;;
8547ba6a1819Smrg      esac
8548ba6a1819Smrg    done
8549ba6a1819Smrg
8550549e21daSmrg    test -z "$RM" && \
8551549e21daSmrg      func_fatal_help "you must specify an RM program"
8552ba6a1819Smrg
8553ba6a1819Smrg    rmdirs=
8554ba6a1819Smrg
8555ba6a1819Smrg    origobjdir="$objdir"
8556ba6a1819Smrg    for file in $files; do
8557549e21daSmrg      func_dirname "$file" "" "."
8558549e21daSmrg      dir="$func_dirname_result"
8559549e21daSmrg      if test "X$dir" = X.; then
8560ba6a1819Smrg	objdir="$origobjdir"
8561ba6a1819Smrg      else
8562ba6a1819Smrg	objdir="$dir/$origobjdir"
8563ba6a1819Smrg      fi
8564549e21daSmrg      func_basename "$file"
8565549e21daSmrg      name="$func_basename_result"
8566ba6a1819Smrg      test "$mode" = uninstall && objdir="$dir"
8567ba6a1819Smrg
8568ba6a1819Smrg      # Remember objdir for removal later, being careful to avoid duplicates
8569ba6a1819Smrg      if test "$mode" = clean; then
8570ba6a1819Smrg	case " $rmdirs " in
8571ba6a1819Smrg	  *" $objdir "*) ;;
8572ba6a1819Smrg	  *) rmdirs="$rmdirs $objdir" ;;
8573ba6a1819Smrg	esac
8574ba6a1819Smrg      fi
8575ba6a1819Smrg
8576ba6a1819Smrg      # Don't error if the file doesn't exist and rm -f was used.
8577549e21daSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8578549e21daSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8579549e21daSmrg	 test -f "$file"; then
8580ba6a1819Smrg	:
8581ba6a1819Smrg      elif test -d "$file"; then
8582ba6a1819Smrg	exit_status=1
8583ba6a1819Smrg	continue
8584ba6a1819Smrg      elif test "$rmforce" = yes; then
8585ba6a1819Smrg	continue
8586ba6a1819Smrg      fi
8587ba6a1819Smrg
8588ba6a1819Smrg      rmfiles="$file"
8589ba6a1819Smrg
8590ba6a1819Smrg      case $name in
8591ba6a1819Smrg      *.la)
8592ba6a1819Smrg	# Possibly a libtool archive, so verify it.
8593549e21daSmrg	if func_lalib_p "$file"; then
8594549e21daSmrg	  func_source $dir/$name
8595ba6a1819Smrg
8596ba6a1819Smrg	  # Delete the libtool libraries and symlinks.
8597ba6a1819Smrg	  for n in $library_names; do
8598ba6a1819Smrg	    rmfiles="$rmfiles $objdir/$n"
8599ba6a1819Smrg	  done
8600ba6a1819Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8601ba6a1819Smrg
8602ba6a1819Smrg	  case "$mode" in
8603ba6a1819Smrg	  clean)
8604ba6a1819Smrg	    case "  $library_names " in
8605ba6a1819Smrg	    # "  " in the beginning catches empty $dlname
8606ba6a1819Smrg	    *" $dlname "*) ;;
8607ba6a1819Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
8608ba6a1819Smrg	    esac
8609549e21daSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8610ba6a1819Smrg	    ;;
8611ba6a1819Smrg	  uninstall)
8612ba6a1819Smrg	    if test -n "$library_names"; then
8613ba6a1819Smrg	      # Do each command in the postuninstall commands.
8614549e21daSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8615ba6a1819Smrg	    fi
8616ba6a1819Smrg
8617ba6a1819Smrg	    if test -n "$old_library"; then
8618ba6a1819Smrg	      # Do each command in the old_postuninstall commands.
8619549e21daSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8620ba6a1819Smrg	    fi
8621ba6a1819Smrg	    # FIXME: should reinstall the best remaining shared library.
8622ba6a1819Smrg	    ;;
8623ba6a1819Smrg	  esac
8624ba6a1819Smrg	fi
8625ba6a1819Smrg	;;
8626ba6a1819Smrg
8627ba6a1819Smrg      *.lo)
8628ba6a1819Smrg	# Possibly a libtool object, so verify it.
8629549e21daSmrg	if func_lalib_p "$file"; then
8630ba6a1819Smrg
8631ba6a1819Smrg	  # Read the .lo file
8632549e21daSmrg	  func_source $dir/$name
8633ba6a1819Smrg
8634ba6a1819Smrg	  # Add PIC object to the list of files to remove.
8635549e21daSmrg	  if test -n "$pic_object" &&
8636549e21daSmrg	     test "$pic_object" != none; then
8637ba6a1819Smrg	    rmfiles="$rmfiles $dir/$pic_object"
8638ba6a1819Smrg	  fi
8639ba6a1819Smrg
8640ba6a1819Smrg	  # Add non-PIC object to the list of files to remove.
8641549e21daSmrg	  if test -n "$non_pic_object" &&
8642549e21daSmrg	     test "$non_pic_object" != none; then
8643ba6a1819Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
8644ba6a1819Smrg	  fi
8645ba6a1819Smrg	fi
8646ba6a1819Smrg	;;
8647ba6a1819Smrg
8648ba6a1819Smrg      *)
8649ba6a1819Smrg	if test "$mode" = clean ; then
8650ba6a1819Smrg	  noexename=$name
8651ba6a1819Smrg	  case $file in
8652ba6a1819Smrg	  *.exe)
8653549e21daSmrg	    func_stripname '' '.exe' "$file"
8654549e21daSmrg	    file=$func_stripname_result
8655549e21daSmrg	    func_stripname '' '.exe' "$name"
8656549e21daSmrg	    noexename=$func_stripname_result
8657ba6a1819Smrg	    # $file with .exe has already been added to rmfiles,
8658ba6a1819Smrg	    # add $file without .exe
8659ba6a1819Smrg	    rmfiles="$rmfiles $file"
8660ba6a1819Smrg	    ;;
8661ba6a1819Smrg	  esac
8662ba6a1819Smrg	  # Do a test to see if this is a libtool program.
8663549e21daSmrg	  if func_ltwrapper_p "$file"; then
8664549e21daSmrg	    if func_ltwrapper_executable_p "$file"; then
8665549e21daSmrg	      func_ltwrapper_scriptname "$file"
8666549e21daSmrg	      relink_command=
8667549e21daSmrg	      func_source $func_ltwrapper_scriptname_result
8668549e21daSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8669549e21daSmrg	    else
8670549e21daSmrg	      relink_command=
8671549e21daSmrg	      func_source $dir/$noexename
8672549e21daSmrg	    fi
8673ba6a1819Smrg
8674ba6a1819Smrg	    # note $name still contains .exe if it was in $file originally
8675ba6a1819Smrg	    # as does the version of $file that was added into $rmfiles
8676ba6a1819Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8677ba6a1819Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8678ba6a1819Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
8679ba6a1819Smrg	    fi
8680ba6a1819Smrg	    if test "X$noexename" != "X$name" ; then
8681ba6a1819Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8682ba6a1819Smrg	    fi
8683ba6a1819Smrg	  fi
8684ba6a1819Smrg	fi
8685ba6a1819Smrg	;;
8686ba6a1819Smrg      esac
8687549e21daSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
8688ba6a1819Smrg    done
8689ba6a1819Smrg    objdir="$origobjdir"
8690ba6a1819Smrg
8691ba6a1819Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
8692ba6a1819Smrg    for dir in $rmdirs; do
8693ba6a1819Smrg      if test -d "$dir"; then
8694549e21daSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
8695ba6a1819Smrg      fi
8696ba6a1819Smrg    done
8697ba6a1819Smrg
8698ba6a1819Smrg    exit $exit_status
8699549e21daSmrg}
8700ba6a1819Smrg
8701549e21daSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8702549e21daSmrg    func_mode_uninstall ${1+"$@"}
8703ba6a1819Smrg
8704549e21daSmrgtest -z "$mode" && {
8705549e21daSmrg  help="$generic_help"
8706549e21daSmrg  func_fatal_help "you must specify a MODE"
8707549e21daSmrg}
8708549e21daSmrg
8709549e21daSmrgtest -z "$exec_cmd" && \
8710549e21daSmrg  func_fatal_help "invalid operation mode \`$mode'"
8711ba6a1819Smrg
8712ba6a1819Smrgif test -n "$exec_cmd"; then
8713549e21daSmrg  eval exec "$exec_cmd"
8714ba6a1819Smrg  exit $EXIT_FAILURE
8715ba6a1819Smrgfi
8716ba6a1819Smrg
8717549e21daSmrgexit $exit_status
8718ba6a1819Smrg
8719ba6a1819Smrg
8720ba6a1819Smrg# The TAGs below are defined such that we never get into a situation
8721ba6a1819Smrg# in which we disable both kinds of libraries.  Given conflicting
8722ba6a1819Smrg# choices, we go for a static library, that is the most portable,
8723ba6a1819Smrg# since we can't tell whether shared libraries were disabled because
8724ba6a1819Smrg# the user asked for that or because the platform doesn't support
8725ba6a1819Smrg# them.  This is particularly important on AIX, because we don't
8726ba6a1819Smrg# support having both static and shared libraries enabled at the same
8727ba6a1819Smrg# time on that platform, so we default to a shared-only configuration.
8728ba6a1819Smrg# If a disable-shared tag is given, we'll fallback to a static-only
8729ba6a1819Smrg# configuration.  But we'll never go from static-only to shared-only.
8730ba6a1819Smrg
8731ba6a1819Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8732549e21daSmrgbuild_libtool_libs=no
8733549e21daSmrgbuild_old_libs=yes
8734ba6a1819Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
8735ba6a1819Smrg
8736ba6a1819Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8737549e21daSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8738ba6a1819Smrg# ### END LIBTOOL TAG CONFIG: disable-static
8739ba6a1819Smrg
8740ba6a1819Smrg# Local Variables:
8741ba6a1819Smrg# mode:shell-script
8742ba6a1819Smrg# sh-indentation:2
8743ba6a1819Smrg# End:
8744549e21daSmrg# vi:sw=2
8745549e21daSmrg
8746