xref: /aosp_15_r20/external/libexif/ltmain.sh (revision 735d6239c16e246968a03ef6e2db00d67bad6cdc)
1*735d6239SKiyoung Kim
2*735d6239SKiyoung Kim# libtool (GNU libtool) 2.4
3*735d6239SKiyoung Kim# Written by Gordon Matzigkeit <[email protected]>, 1996
4*735d6239SKiyoung Kim
5*735d6239SKiyoung Kim# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6*735d6239SKiyoung Kim# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
7*735d6239SKiyoung Kim# This is free software; see the source for copying conditions.  There is NO
8*735d6239SKiyoung Kim# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9*735d6239SKiyoung Kim
10*735d6239SKiyoung Kim# GNU Libtool is free software; you can redistribute it and/or modify
11*735d6239SKiyoung Kim# it under the terms of the GNU General Public License as published by
12*735d6239SKiyoung Kim# the Free Software Foundation; either version 2 of the License, or
13*735d6239SKiyoung Kim# (at your option) any later version.
14*735d6239SKiyoung Kim#
15*735d6239SKiyoung Kim# As a special exception to the GNU General Public License,
16*735d6239SKiyoung Kim# if you distribute this file as part of a program or library that
17*735d6239SKiyoung Kim# is built using GNU Libtool, you may include this file under the
18*735d6239SKiyoung Kim# same distribution terms that you use for the rest of that program.
19*735d6239SKiyoung Kim#
20*735d6239SKiyoung Kim# GNU Libtool is distributed in the hope that it will be useful, but
21*735d6239SKiyoung Kim# WITHOUT ANY WARRANTY; without even the implied warranty of
22*735d6239SKiyoung Kim# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23*735d6239SKiyoung Kim# General Public License for more details.
24*735d6239SKiyoung Kim#
25*735d6239SKiyoung Kim# You should have received a copy of the GNU General Public License
26*735d6239SKiyoung Kim# along with GNU Libtool; see the file COPYING.  If not, a copy
27*735d6239SKiyoung Kim# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28*735d6239SKiyoung Kim# or obtained by writing to the Free Software Foundation, Inc.,
29*735d6239SKiyoung Kim# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30*735d6239SKiyoung Kim
31*735d6239SKiyoung Kim# Usage: $progname [OPTION]... [MODE-ARG]...
32*735d6239SKiyoung Kim#
33*735d6239SKiyoung Kim# Provide generalized library-building support services.
34*735d6239SKiyoung Kim#
35*735d6239SKiyoung Kim#       --config             show all configuration variables
36*735d6239SKiyoung Kim#       --debug              enable verbose shell tracing
37*735d6239SKiyoung Kim#   -n, --dry-run            display commands without modifying any files
38*735d6239SKiyoung Kim#       --features           display basic configuration information and exit
39*735d6239SKiyoung Kim#       --mode=MODE          use operation mode MODE
40*735d6239SKiyoung Kim#       --preserve-dup-deps  don't remove duplicate dependency libraries
41*735d6239SKiyoung Kim#       --quiet, --silent    don't print informational messages
42*735d6239SKiyoung Kim#       --no-quiet, --no-silent
43*735d6239SKiyoung Kim#                            print informational messages (default)
44*735d6239SKiyoung Kim#       --tag=TAG            use configuration variables from tag TAG
45*735d6239SKiyoung Kim#   -v, --verbose            print more informational messages than default
46*735d6239SKiyoung Kim#       --no-verbose         don't print the extra informational messages
47*735d6239SKiyoung Kim#       --version            print version information
48*735d6239SKiyoung Kim#   -h, --help, --help-all   print short, long, or detailed help message
49*735d6239SKiyoung Kim#
50*735d6239SKiyoung Kim# MODE must be one of the following:
51*735d6239SKiyoung Kim#
52*735d6239SKiyoung Kim#         clean              remove files from the build directory
53*735d6239SKiyoung Kim#         compile            compile a source file into a libtool object
54*735d6239SKiyoung Kim#         execute            automatically set library path, then run a program
55*735d6239SKiyoung Kim#         finish             complete the installation of libtool libraries
56*735d6239SKiyoung Kim#         install            install libraries or executables
57*735d6239SKiyoung Kim#         link               create a library or an executable
58*735d6239SKiyoung Kim#         uninstall          remove libraries from an installed directory
59*735d6239SKiyoung Kim#
60*735d6239SKiyoung Kim# MODE-ARGS vary depending on the MODE.  When passed as first option,
61*735d6239SKiyoung Kim# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
62*735d6239SKiyoung Kim# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
63*735d6239SKiyoung Kim#
64*735d6239SKiyoung Kim# When reporting a bug, please describe a test case to reproduce it and
65*735d6239SKiyoung Kim# include the following information:
66*735d6239SKiyoung Kim#
67*735d6239SKiyoung Kim#         host-triplet:	$host
68*735d6239SKiyoung Kim#         shell:		$SHELL
69*735d6239SKiyoung Kim#         compiler:		$LTCC
70*735d6239SKiyoung Kim#         compiler flags:		$LTCFLAGS
71*735d6239SKiyoung Kim#         linker:		$LD (gnu? $with_gnu_ld)
72*735d6239SKiyoung Kim#         $progname:	(GNU libtool) 2.4
73*735d6239SKiyoung Kim#         automake:	$automake_version
74*735d6239SKiyoung Kim#         autoconf:	$autoconf_version
75*735d6239SKiyoung Kim#
76*735d6239SKiyoung Kim# Report bugs to <[email protected]>.
77*735d6239SKiyoung Kim# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
78*735d6239SKiyoung Kim# General help using GNU software: <http://www.gnu.org/gethelp/>.
79*735d6239SKiyoung Kim
80*735d6239SKiyoung KimPROGRAM=libtool
81*735d6239SKiyoung KimPACKAGE=libtool
82*735d6239SKiyoung KimVERSION=2.4
83*735d6239SKiyoung KimTIMESTAMP=""
84*735d6239SKiyoung Kimpackage_revision=1.3293
85*735d6239SKiyoung Kim
86*735d6239SKiyoung Kim# define SED for historic ltconfig's generated by Libtool 1.3
87*735d6239SKiyoung Kimtest -z "$SED" && SED=sed
88*735d6239SKiyoung Kim
89*735d6239SKiyoung Kim# Be Bourne compatible
90*735d6239SKiyoung Kimif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
91*735d6239SKiyoung Kim  emulate sh
92*735d6239SKiyoung Kim  NULLCMD=:
93*735d6239SKiyoung Kim  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
94*735d6239SKiyoung Kim  # is contrary to our usage.  Disable this feature.
95*735d6239SKiyoung Kim  alias -g '${1+"$@"}'='"$@"'
96*735d6239SKiyoung Kim  setopt NO_GLOB_SUBST
97*735d6239SKiyoung Kimelse
98*735d6239SKiyoung Kim  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
99*735d6239SKiyoung Kimfi
100*735d6239SKiyoung KimBIN_SH=xpg4; export BIN_SH # for Tru64
101*735d6239SKiyoung KimDUALCASE=1; export DUALCASE # for MKS sh
102*735d6239SKiyoung Kim
103*735d6239SKiyoung Kim# A function that is used when there is no print builtin or printf.
104*735d6239SKiyoung Kimfunc_fallback_echo ()
105*735d6239SKiyoung Kim{
106*735d6239SKiyoung Kim  eval 'cat <<_LTECHO_EOF
107*735d6239SKiyoung Kim$1
108*735d6239SKiyoung Kim_LTECHO_EOF'
109*735d6239SKiyoung Kim}
110*735d6239SKiyoung Kim
111*735d6239SKiyoung Kim# NLS nuisances: We save the old values to restore during execute mode.
112*735d6239SKiyoung Kimlt_user_locale=
113*735d6239SKiyoung Kimlt_safe_locale=
114*735d6239SKiyoung Kimfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
115*735d6239SKiyoung Kimdo
116*735d6239SKiyoung Kim  eval "if test \"\${$lt_var+set}\" = set; then
117*735d6239SKiyoung Kim          save_$lt_var=\$$lt_var
118*735d6239SKiyoung Kim          $lt_var=C
119*735d6239SKiyoung Kim	  export $lt_var
120*735d6239SKiyoung Kim	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
121*735d6239SKiyoung Kim	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
122*735d6239SKiyoung Kim	fi"
123*735d6239SKiyoung Kimdone
124*735d6239SKiyoung KimLC_ALL=C
125*735d6239SKiyoung KimLANGUAGE=C
126*735d6239SKiyoung Kimexport LANGUAGE LC_ALL
127*735d6239SKiyoung Kim
128*735d6239SKiyoung Kim$lt_unset CDPATH
129*735d6239SKiyoung Kim
130*735d6239SKiyoung Kim
131*735d6239SKiyoung Kim# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
132*735d6239SKiyoung Kim# is ksh but when the shell is invoked as "sh" and the current value of
133*735d6239SKiyoung Kim# the _XPG environment variable is not equal to 1 (one), the special
134*735d6239SKiyoung Kim# positional parameter $0, within a function call, is the name of the
135*735d6239SKiyoung Kim# function.
136*735d6239SKiyoung Kimprogpath="$0"
137*735d6239SKiyoung Kim
138*735d6239SKiyoung Kim
139*735d6239SKiyoung Kim
140*735d6239SKiyoung Kim: ${CP="cp -f"}
141*735d6239SKiyoung Kimtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
142*735d6239SKiyoung Kim: ${EGREP="/bin/grep -E"}
143*735d6239SKiyoung Kim: ${FGREP="/bin/grep -F"}
144*735d6239SKiyoung Kim: ${GREP="/bin/grep"}
145*735d6239SKiyoung Kim: ${LN_S="ln -s"}
146*735d6239SKiyoung Kim: ${MAKE="make"}
147*735d6239SKiyoung Kim: ${MKDIR="mkdir"}
148*735d6239SKiyoung Kim: ${MV="mv -f"}
149*735d6239SKiyoung Kim: ${RM="rm -f"}
150*735d6239SKiyoung Kim: ${SED="/bin/sed"}
151*735d6239SKiyoung Kim: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
152*735d6239SKiyoung Kim: ${Xsed="$SED -e 1s/^X//"}
153*735d6239SKiyoung Kim
154*735d6239SKiyoung Kim# Global variables:
155*735d6239SKiyoung KimEXIT_SUCCESS=0
156*735d6239SKiyoung KimEXIT_FAILURE=1
157*735d6239SKiyoung KimEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
158*735d6239SKiyoung KimEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
159*735d6239SKiyoung Kim
160*735d6239SKiyoung Kimexit_status=$EXIT_SUCCESS
161*735d6239SKiyoung Kim
162*735d6239SKiyoung Kim# Make sure IFS has a sensible default
163*735d6239SKiyoung Kimlt_nl='
164*735d6239SKiyoung Kim'
165*735d6239SKiyoung KimIFS=" 	$lt_nl"
166*735d6239SKiyoung Kim
167*735d6239SKiyoung Kimdirname="s,/[^/]*$,,"
168*735d6239SKiyoung Kimbasename="s,^.*/,,"
169*735d6239SKiyoung Kim
170*735d6239SKiyoung Kim# func_dirname file append nondir_replacement
171*735d6239SKiyoung Kim# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
172*735d6239SKiyoung Kim# otherwise set result to NONDIR_REPLACEMENT.
173*735d6239SKiyoung Kimfunc_dirname ()
174*735d6239SKiyoung Kim{
175*735d6239SKiyoung Kim    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
176*735d6239SKiyoung Kim    if test "X$func_dirname_result" = "X${1}"; then
177*735d6239SKiyoung Kim      func_dirname_result="${3}"
178*735d6239SKiyoung Kim    else
179*735d6239SKiyoung Kim      func_dirname_result="$func_dirname_result${2}"
180*735d6239SKiyoung Kim    fi
181*735d6239SKiyoung Kim} # func_dirname may be replaced by extended shell implementation
182*735d6239SKiyoung Kim
183*735d6239SKiyoung Kim
184*735d6239SKiyoung Kim# func_basename file
185*735d6239SKiyoung Kimfunc_basename ()
186*735d6239SKiyoung Kim{
187*735d6239SKiyoung Kim    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
188*735d6239SKiyoung Kim} # func_basename may be replaced by extended shell implementation
189*735d6239SKiyoung Kim
190*735d6239SKiyoung Kim
191*735d6239SKiyoung Kim# func_dirname_and_basename file append nondir_replacement
192*735d6239SKiyoung Kim# perform func_basename and func_dirname in a single function
193*735d6239SKiyoung Kim# call:
194*735d6239SKiyoung Kim#   dirname:  Compute the dirname of FILE.  If nonempty,
195*735d6239SKiyoung Kim#             add APPEND to the result, otherwise set result
196*735d6239SKiyoung Kim#             to NONDIR_REPLACEMENT.
197*735d6239SKiyoung Kim#             value returned in "$func_dirname_result"
198*735d6239SKiyoung Kim#   basename: Compute filename of FILE.
199*735d6239SKiyoung Kim#             value retuned in "$func_basename_result"
200*735d6239SKiyoung Kim# Implementation must be kept synchronized with func_dirname
201*735d6239SKiyoung Kim# and func_basename. For efficiency, we do not delegate to
202*735d6239SKiyoung Kim# those functions but instead duplicate the functionality here.
203*735d6239SKiyoung Kimfunc_dirname_and_basename ()
204*735d6239SKiyoung Kim{
205*735d6239SKiyoung Kim    # Extract subdirectory from the argument.
206*735d6239SKiyoung Kim    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
207*735d6239SKiyoung Kim    if test "X$func_dirname_result" = "X${1}"; then
208*735d6239SKiyoung Kim      func_dirname_result="${3}"
209*735d6239SKiyoung Kim    else
210*735d6239SKiyoung Kim      func_dirname_result="$func_dirname_result${2}"
211*735d6239SKiyoung Kim    fi
212*735d6239SKiyoung Kim    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
213*735d6239SKiyoung Kim} # func_dirname_and_basename may be replaced by extended shell implementation
214*735d6239SKiyoung Kim
215*735d6239SKiyoung Kim
216*735d6239SKiyoung Kim# func_stripname prefix suffix name
217*735d6239SKiyoung Kim# strip PREFIX and SUFFIX off of NAME.
218*735d6239SKiyoung Kim# PREFIX and SUFFIX must not contain globbing or regex special
219*735d6239SKiyoung Kim# characters, hashes, percent signs, but SUFFIX may contain a leading
220*735d6239SKiyoung Kim# dot (in which case that matches only a dot).
221*735d6239SKiyoung Kim# func_strip_suffix prefix name
222*735d6239SKiyoung Kimfunc_stripname ()
223*735d6239SKiyoung Kim{
224*735d6239SKiyoung Kim    case ${2} in
225*735d6239SKiyoung Kim      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
226*735d6239SKiyoung Kim      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
227*735d6239SKiyoung Kim    esac
228*735d6239SKiyoung Kim} # func_stripname may be replaced by extended shell implementation
229*735d6239SKiyoung Kim
230*735d6239SKiyoung Kim
231*735d6239SKiyoung Kim# These SED scripts presuppose an absolute path with a trailing slash.
232*735d6239SKiyoung Kimpathcar='s,^/\([^/]*\).*$,\1,'
233*735d6239SKiyoung Kimpathcdr='s,^/[^/]*,,'
234*735d6239SKiyoung Kimremovedotparts=':dotsl
235*735d6239SKiyoung Kim		s@/\./@/@g
236*735d6239SKiyoung Kim		t dotsl
237*735d6239SKiyoung Kim		s,/\.$,/,'
238*735d6239SKiyoung Kimcollapseslashes='s@/\{1,\}@/@g'
239*735d6239SKiyoung Kimfinalslash='s,/*$,/,'
240*735d6239SKiyoung Kim
241*735d6239SKiyoung Kim# func_normal_abspath PATH
242*735d6239SKiyoung Kim# Remove doubled-up and trailing slashes, "." path components,
243*735d6239SKiyoung Kim# and cancel out any ".." path components in PATH after making
244*735d6239SKiyoung Kim# it an absolute path.
245*735d6239SKiyoung Kim#             value returned in "$func_normal_abspath_result"
246*735d6239SKiyoung Kimfunc_normal_abspath ()
247*735d6239SKiyoung Kim{
248*735d6239SKiyoung Kim  # Start from root dir and reassemble the path.
249*735d6239SKiyoung Kim  func_normal_abspath_result=
250*735d6239SKiyoung Kim  func_normal_abspath_tpath=$1
251*735d6239SKiyoung Kim  func_normal_abspath_altnamespace=
252*735d6239SKiyoung Kim  case $func_normal_abspath_tpath in
253*735d6239SKiyoung Kim    "")
254*735d6239SKiyoung Kim      # Empty path, that just means $cwd.
255*735d6239SKiyoung Kim      func_stripname '' '/' "`pwd`"
256*735d6239SKiyoung Kim      func_normal_abspath_result=$func_stripname_result
257*735d6239SKiyoung Kim      return
258*735d6239SKiyoung Kim    ;;
259*735d6239SKiyoung Kim    # The next three entries are used to spot a run of precisely
260*735d6239SKiyoung Kim    # two leading slashes without using negated character classes;
261*735d6239SKiyoung Kim    # we take advantage of case's first-match behaviour.
262*735d6239SKiyoung Kim    ///*)
263*735d6239SKiyoung Kim      # Unusual form of absolute path, do nothing.
264*735d6239SKiyoung Kim    ;;
265*735d6239SKiyoung Kim    //*)
266*735d6239SKiyoung Kim      # Not necessarily an ordinary path; POSIX reserves leading '//'
267*735d6239SKiyoung Kim      # and for example Cygwin uses it to access remote file shares
268*735d6239SKiyoung Kim      # over CIFS/SMB, so we conserve a leading double slash if found.
269*735d6239SKiyoung Kim      func_normal_abspath_altnamespace=/
270*735d6239SKiyoung Kim    ;;
271*735d6239SKiyoung Kim    /*)
272*735d6239SKiyoung Kim      # Absolute path, do nothing.
273*735d6239SKiyoung Kim    ;;
274*735d6239SKiyoung Kim    *)
275*735d6239SKiyoung Kim      # Relative path, prepend $cwd.
276*735d6239SKiyoung Kim      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
277*735d6239SKiyoung Kim    ;;
278*735d6239SKiyoung Kim  esac
279*735d6239SKiyoung Kim  # Cancel out all the simple stuff to save iterations.  We also want
280*735d6239SKiyoung Kim  # the path to end with a slash for ease of parsing, so make sure
281*735d6239SKiyoung Kim  # there is one (and only one) here.
282*735d6239SKiyoung Kim  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
283*735d6239SKiyoung Kim        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
284*735d6239SKiyoung Kim  while :; do
285*735d6239SKiyoung Kim    # Processed it all yet?
286*735d6239SKiyoung Kim    if test "$func_normal_abspath_tpath" = / ; then
287*735d6239SKiyoung Kim      # If we ascended to the root using ".." the result may be empty now.
288*735d6239SKiyoung Kim      if test -z "$func_normal_abspath_result" ; then
289*735d6239SKiyoung Kim        func_normal_abspath_result=/
290*735d6239SKiyoung Kim      fi
291*735d6239SKiyoung Kim      break
292*735d6239SKiyoung Kim    fi
293*735d6239SKiyoung Kim    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
294*735d6239SKiyoung Kim        -e "$pathcar"`
295*735d6239SKiyoung Kim    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
296*735d6239SKiyoung Kim        -e "$pathcdr"`
297*735d6239SKiyoung Kim    # Figure out what to do with it
298*735d6239SKiyoung Kim    case $func_normal_abspath_tcomponent in
299*735d6239SKiyoung Kim      "")
300*735d6239SKiyoung Kim        # Trailing empty path component, ignore it.
301*735d6239SKiyoung Kim      ;;
302*735d6239SKiyoung Kim      ..)
303*735d6239SKiyoung Kim        # Parent dir; strip last assembled component from result.
304*735d6239SKiyoung Kim        func_dirname "$func_normal_abspath_result"
305*735d6239SKiyoung Kim        func_normal_abspath_result=$func_dirname_result
306*735d6239SKiyoung Kim      ;;
307*735d6239SKiyoung Kim      *)
308*735d6239SKiyoung Kim        # Actual path component, append it.
309*735d6239SKiyoung Kim        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
310*735d6239SKiyoung Kim      ;;
311*735d6239SKiyoung Kim    esac
312*735d6239SKiyoung Kim  done
313*735d6239SKiyoung Kim  # Restore leading double-slash if one was found on entry.
314*735d6239SKiyoung Kim  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
315*735d6239SKiyoung Kim}
316*735d6239SKiyoung Kim
317*735d6239SKiyoung Kim# func_relative_path SRCDIR DSTDIR
318*735d6239SKiyoung Kim# generates a relative path from SRCDIR to DSTDIR, with a trailing
319*735d6239SKiyoung Kim# slash if non-empty, suitable for immediately appending a filename
320*735d6239SKiyoung Kim# without needing to append a separator.
321*735d6239SKiyoung Kim#             value returned in "$func_relative_path_result"
322*735d6239SKiyoung Kimfunc_relative_path ()
323*735d6239SKiyoung Kim{
324*735d6239SKiyoung Kim  func_relative_path_result=
325*735d6239SKiyoung Kim  func_normal_abspath "$1"
326*735d6239SKiyoung Kim  func_relative_path_tlibdir=$func_normal_abspath_result
327*735d6239SKiyoung Kim  func_normal_abspath "$2"
328*735d6239SKiyoung Kim  func_relative_path_tbindir=$func_normal_abspath_result
329*735d6239SKiyoung Kim
330*735d6239SKiyoung Kim  # Ascend the tree starting from libdir
331*735d6239SKiyoung Kim  while :; do
332*735d6239SKiyoung Kim    # check if we have found a prefix of bindir
333*735d6239SKiyoung Kim    case $func_relative_path_tbindir in
334*735d6239SKiyoung Kim      $func_relative_path_tlibdir)
335*735d6239SKiyoung Kim        # found an exact match
336*735d6239SKiyoung Kim        func_relative_path_tcancelled=
337*735d6239SKiyoung Kim        break
338*735d6239SKiyoung Kim        ;;
339*735d6239SKiyoung Kim      $func_relative_path_tlibdir*)
340*735d6239SKiyoung Kim        # found a matching prefix
341*735d6239SKiyoung Kim        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
342*735d6239SKiyoung Kim        func_relative_path_tcancelled=$func_stripname_result
343*735d6239SKiyoung Kim        if test -z "$func_relative_path_result"; then
344*735d6239SKiyoung Kim          func_relative_path_result=.
345*735d6239SKiyoung Kim        fi
346*735d6239SKiyoung Kim        break
347*735d6239SKiyoung Kim        ;;
348*735d6239SKiyoung Kim      *)
349*735d6239SKiyoung Kim        func_dirname $func_relative_path_tlibdir
350*735d6239SKiyoung Kim        func_relative_path_tlibdir=${func_dirname_result}
351*735d6239SKiyoung Kim        if test "x$func_relative_path_tlibdir" = x ; then
352*735d6239SKiyoung Kim          # Have to descend all the way to the root!
353*735d6239SKiyoung Kim          func_relative_path_result=../$func_relative_path_result
354*735d6239SKiyoung Kim          func_relative_path_tcancelled=$func_relative_path_tbindir
355*735d6239SKiyoung Kim          break
356*735d6239SKiyoung Kim        fi
357*735d6239SKiyoung Kim        func_relative_path_result=../$func_relative_path_result
358*735d6239SKiyoung Kim        ;;
359*735d6239SKiyoung Kim    esac
360*735d6239SKiyoung Kim  done
361*735d6239SKiyoung Kim
362*735d6239SKiyoung Kim  # Now calculate path; take care to avoid doubling-up slashes.
363*735d6239SKiyoung Kim  func_stripname '' '/' "$func_relative_path_result"
364*735d6239SKiyoung Kim  func_relative_path_result=$func_stripname_result
365*735d6239SKiyoung Kim  func_stripname '/' '/' "$func_relative_path_tcancelled"
366*735d6239SKiyoung Kim  if test "x$func_stripname_result" != x ; then
367*735d6239SKiyoung Kim    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
368*735d6239SKiyoung Kim  fi
369*735d6239SKiyoung Kim
370*735d6239SKiyoung Kim  # Normalisation. If bindir is libdir, return empty string,
371*735d6239SKiyoung Kim  # else relative path ending with a slash; either way, target
372*735d6239SKiyoung Kim  # file name can be directly appended.
373*735d6239SKiyoung Kim  if test ! -z "$func_relative_path_result"; then
374*735d6239SKiyoung Kim    func_stripname './' '' "$func_relative_path_result/"
375*735d6239SKiyoung Kim    func_relative_path_result=$func_stripname_result
376*735d6239SKiyoung Kim  fi
377*735d6239SKiyoung Kim}
378*735d6239SKiyoung Kim
379*735d6239SKiyoung Kim# The name of this program:
380*735d6239SKiyoung Kimfunc_dirname_and_basename "$progpath"
381*735d6239SKiyoung Kimprogname=$func_basename_result
382*735d6239SKiyoung Kim
383*735d6239SKiyoung Kim# Make sure we have an absolute path for reexecution:
384*735d6239SKiyoung Kimcase $progpath in
385*735d6239SKiyoung Kim  [\\/]*|[A-Za-z]:\\*) ;;
386*735d6239SKiyoung Kim  *[\\/]*)
387*735d6239SKiyoung Kim     progdir=$func_dirname_result
388*735d6239SKiyoung Kim     progdir=`cd "$progdir" && pwd`
389*735d6239SKiyoung Kim     progpath="$progdir/$progname"
390*735d6239SKiyoung Kim     ;;
391*735d6239SKiyoung Kim  *)
392*735d6239SKiyoung Kim     save_IFS="$IFS"
393*735d6239SKiyoung Kim     IFS=:
394*735d6239SKiyoung Kim     for progdir in $PATH; do
395*735d6239SKiyoung Kim       IFS="$save_IFS"
396*735d6239SKiyoung Kim       test -x "$progdir/$progname" && break
397*735d6239SKiyoung Kim     done
398*735d6239SKiyoung Kim     IFS="$save_IFS"
399*735d6239SKiyoung Kim     test -n "$progdir" || progdir=`pwd`
400*735d6239SKiyoung Kim     progpath="$progdir/$progname"
401*735d6239SKiyoung Kim     ;;
402*735d6239SKiyoung Kimesac
403*735d6239SKiyoung Kim
404*735d6239SKiyoung Kim# Sed substitution that helps us do robust quoting.  It backslashifies
405*735d6239SKiyoung Kim# metacharacters that are still active within double-quoted strings.
406*735d6239SKiyoung KimXsed="${SED}"' -e 1s/^X//'
407*735d6239SKiyoung Kimsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
408*735d6239SKiyoung Kim
409*735d6239SKiyoung Kim# Same as above, but do not quote variable references.
410*735d6239SKiyoung Kimdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
411*735d6239SKiyoung Kim
412*735d6239SKiyoung Kim# Sed substitution that turns a string into a regex matching for the
413*735d6239SKiyoung Kim# string literally.
414*735d6239SKiyoung Kimsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
415*735d6239SKiyoung Kim
416*735d6239SKiyoung Kim# Sed substitution that converts a w32 file name or path
417*735d6239SKiyoung Kim# which contains forward slashes, into one that contains
418*735d6239SKiyoung Kim# (escaped) backslashes.  A very naive implementation.
419*735d6239SKiyoung Kimlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
420*735d6239SKiyoung Kim
421*735d6239SKiyoung Kim# Re-`\' parameter expansions in output of double_quote_subst that were
422*735d6239SKiyoung Kim# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
423*735d6239SKiyoung Kim# in input to double_quote_subst, that '$' was protected from expansion.
424*735d6239SKiyoung Kim# Since each input `\' is now two `\'s, look for any number of runs of
425*735d6239SKiyoung Kim# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
426*735d6239SKiyoung Kimbs='\\'
427*735d6239SKiyoung Kimbs2='\\\\'
428*735d6239SKiyoung Kimbs4='\\\\\\\\'
429*735d6239SKiyoung Kimdollar='\$'
430*735d6239SKiyoung Kimsed_double_backslash="\
431*735d6239SKiyoung Kim  s/$bs4/&\\
432*735d6239SKiyoung Kim/g
433*735d6239SKiyoung Kim  s/^$bs2$dollar/$bs&/
434*735d6239SKiyoung Kim  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
435*735d6239SKiyoung Kim  s/\n//g"
436*735d6239SKiyoung Kim
437*735d6239SKiyoung Kim# Standard options:
438*735d6239SKiyoung Kimopt_dry_run=false
439*735d6239SKiyoung Kimopt_help=false
440*735d6239SKiyoung Kimopt_quiet=false
441*735d6239SKiyoung Kimopt_verbose=false
442*735d6239SKiyoung Kimopt_warning=:
443*735d6239SKiyoung Kim
444*735d6239SKiyoung Kim# func_echo arg...
445*735d6239SKiyoung Kim# Echo program name prefixed message, along with the current mode
446*735d6239SKiyoung Kim# name if it has been set yet.
447*735d6239SKiyoung Kimfunc_echo ()
448*735d6239SKiyoung Kim{
449*735d6239SKiyoung Kim    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
450*735d6239SKiyoung Kim}
451*735d6239SKiyoung Kim
452*735d6239SKiyoung Kim# func_verbose arg...
453*735d6239SKiyoung Kim# Echo program name prefixed message in verbose mode only.
454*735d6239SKiyoung Kimfunc_verbose ()
455*735d6239SKiyoung Kim{
456*735d6239SKiyoung Kim    $opt_verbose && func_echo ${1+"$@"}
457*735d6239SKiyoung Kim
458*735d6239SKiyoung Kim    # A bug in bash halts the script if the last line of a function
459*735d6239SKiyoung Kim    # fails when set -e is in force, so we need another command to
460*735d6239SKiyoung Kim    # work around that:
461*735d6239SKiyoung Kim    :
462*735d6239SKiyoung Kim}
463*735d6239SKiyoung Kim
464*735d6239SKiyoung Kim# func_echo_all arg...
465*735d6239SKiyoung Kim# Invoke $ECHO with all args, space-separated.
466*735d6239SKiyoung Kimfunc_echo_all ()
467*735d6239SKiyoung Kim{
468*735d6239SKiyoung Kim    $ECHO "$*"
469*735d6239SKiyoung Kim}
470*735d6239SKiyoung Kim
471*735d6239SKiyoung Kim# func_error arg...
472*735d6239SKiyoung Kim# Echo program name prefixed message to standard error.
473*735d6239SKiyoung Kimfunc_error ()
474*735d6239SKiyoung Kim{
475*735d6239SKiyoung Kim    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
476*735d6239SKiyoung Kim}
477*735d6239SKiyoung Kim
478*735d6239SKiyoung Kim# func_warning arg...
479*735d6239SKiyoung Kim# Echo program name prefixed warning message to standard error.
480*735d6239SKiyoung Kimfunc_warning ()
481*735d6239SKiyoung Kim{
482*735d6239SKiyoung Kim    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
483*735d6239SKiyoung Kim
484*735d6239SKiyoung Kim    # bash bug again:
485*735d6239SKiyoung Kim    :
486*735d6239SKiyoung Kim}
487*735d6239SKiyoung Kim
488*735d6239SKiyoung Kim# func_fatal_error arg...
489*735d6239SKiyoung Kim# Echo program name prefixed message to standard error, and exit.
490*735d6239SKiyoung Kimfunc_fatal_error ()
491*735d6239SKiyoung Kim{
492*735d6239SKiyoung Kim    func_error ${1+"$@"}
493*735d6239SKiyoung Kim    exit $EXIT_FAILURE
494*735d6239SKiyoung Kim}
495*735d6239SKiyoung Kim
496*735d6239SKiyoung Kim# func_fatal_help arg...
497*735d6239SKiyoung Kim# Echo program name prefixed message to standard error, followed by
498*735d6239SKiyoung Kim# a help hint, and exit.
499*735d6239SKiyoung Kimfunc_fatal_help ()
500*735d6239SKiyoung Kim{
501*735d6239SKiyoung Kim    func_error ${1+"$@"}
502*735d6239SKiyoung Kim    func_fatal_error "$help"
503*735d6239SKiyoung Kim}
504*735d6239SKiyoung Kimhelp="Try \`$progname --help' for more information."  ## default
505*735d6239SKiyoung Kim
506*735d6239SKiyoung Kim
507*735d6239SKiyoung Kim# func_grep expression filename
508*735d6239SKiyoung Kim# Check whether EXPRESSION matches any line of FILENAME, without output.
509*735d6239SKiyoung Kimfunc_grep ()
510*735d6239SKiyoung Kim{
511*735d6239SKiyoung Kim    $GREP "$1" "$2" >/dev/null 2>&1
512*735d6239SKiyoung Kim}
513*735d6239SKiyoung Kim
514*735d6239SKiyoung Kim
515*735d6239SKiyoung Kim# func_mkdir_p directory-path
516*735d6239SKiyoung Kim# Make sure the entire path to DIRECTORY-PATH is available.
517*735d6239SKiyoung Kimfunc_mkdir_p ()
518*735d6239SKiyoung Kim{
519*735d6239SKiyoung Kim    my_directory_path="$1"
520*735d6239SKiyoung Kim    my_dir_list=
521*735d6239SKiyoung Kim
522*735d6239SKiyoung Kim    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
523*735d6239SKiyoung Kim
524*735d6239SKiyoung Kim      # Protect directory names starting with `-'
525*735d6239SKiyoung Kim      case $my_directory_path in
526*735d6239SKiyoung Kim        -*) my_directory_path="./$my_directory_path" ;;
527*735d6239SKiyoung Kim      esac
528*735d6239SKiyoung Kim
529*735d6239SKiyoung Kim      # While some portion of DIR does not yet exist...
530*735d6239SKiyoung Kim      while test ! -d "$my_directory_path"; do
531*735d6239SKiyoung Kim        # ...make a list in topmost first order.  Use a colon delimited
532*735d6239SKiyoung Kim	# list incase some portion of path contains whitespace.
533*735d6239SKiyoung Kim        my_dir_list="$my_directory_path:$my_dir_list"
534*735d6239SKiyoung Kim
535*735d6239SKiyoung Kim        # If the last portion added has no slash in it, the list is done
536*735d6239SKiyoung Kim        case $my_directory_path in */*) ;; *) break ;; esac
537*735d6239SKiyoung Kim
538*735d6239SKiyoung Kim        # ...otherwise throw away the child directory and loop
539*735d6239SKiyoung Kim        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
540*735d6239SKiyoung Kim      done
541*735d6239SKiyoung Kim      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
542*735d6239SKiyoung Kim
543*735d6239SKiyoung Kim      save_mkdir_p_IFS="$IFS"; IFS=':'
544*735d6239SKiyoung Kim      for my_dir in $my_dir_list; do
545*735d6239SKiyoung Kim	IFS="$save_mkdir_p_IFS"
546*735d6239SKiyoung Kim        # mkdir can fail with a `File exist' error if two processes
547*735d6239SKiyoung Kim        # try to create one of the directories concurrently.  Don't
548*735d6239SKiyoung Kim        # stop in that case!
549*735d6239SKiyoung Kim        $MKDIR "$my_dir" 2>/dev/null || :
550*735d6239SKiyoung Kim      done
551*735d6239SKiyoung Kim      IFS="$save_mkdir_p_IFS"
552*735d6239SKiyoung Kim
553*735d6239SKiyoung Kim      # Bail out if we (or some other process) failed to create a directory.
554*735d6239SKiyoung Kim      test -d "$my_directory_path" || \
555*735d6239SKiyoung Kim        func_fatal_error "Failed to create \`$1'"
556*735d6239SKiyoung Kim    fi
557*735d6239SKiyoung Kim}
558*735d6239SKiyoung Kim
559*735d6239SKiyoung Kim
560*735d6239SKiyoung Kim# func_mktempdir [string]
561*735d6239SKiyoung Kim# Make a temporary directory that won't clash with other running
562*735d6239SKiyoung Kim# libtool processes, and avoids race conditions if possible.  If
563*735d6239SKiyoung Kim# given, STRING is the basename for that directory.
564*735d6239SKiyoung Kimfunc_mktempdir ()
565*735d6239SKiyoung Kim{
566*735d6239SKiyoung Kim    my_template="${TMPDIR-/tmp}/${1-$progname}"
567*735d6239SKiyoung Kim
568*735d6239SKiyoung Kim    if test "$opt_dry_run" = ":"; then
569*735d6239SKiyoung Kim      # Return a directory name, but don't create it in dry-run mode
570*735d6239SKiyoung Kim      my_tmpdir="${my_template}-$$"
571*735d6239SKiyoung Kim    else
572*735d6239SKiyoung Kim
573*735d6239SKiyoung Kim      # If mktemp works, use that first and foremost
574*735d6239SKiyoung Kim      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
575*735d6239SKiyoung Kim
576*735d6239SKiyoung Kim      if test ! -d "$my_tmpdir"; then
577*735d6239SKiyoung Kim        # Failing that, at least try and use $RANDOM to avoid a race
578*735d6239SKiyoung Kim        my_tmpdir="${my_template}-${RANDOM-0}$$"
579*735d6239SKiyoung Kim
580*735d6239SKiyoung Kim        save_mktempdir_umask=`umask`
581*735d6239SKiyoung Kim        umask 0077
582*735d6239SKiyoung Kim        $MKDIR "$my_tmpdir"
583*735d6239SKiyoung Kim        umask $save_mktempdir_umask
584*735d6239SKiyoung Kim      fi
585*735d6239SKiyoung Kim
586*735d6239SKiyoung Kim      # If we're not in dry-run mode, bomb out on failure
587*735d6239SKiyoung Kim      test -d "$my_tmpdir" || \
588*735d6239SKiyoung Kim        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
589*735d6239SKiyoung Kim    fi
590*735d6239SKiyoung Kim
591*735d6239SKiyoung Kim    $ECHO "$my_tmpdir"
592*735d6239SKiyoung Kim}
593*735d6239SKiyoung Kim
594*735d6239SKiyoung Kim
595*735d6239SKiyoung Kim# func_quote_for_eval arg
596*735d6239SKiyoung Kim# Aesthetically quote ARG to be evaled later.
597*735d6239SKiyoung Kim# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
598*735d6239SKiyoung Kim# is double-quoted, suitable for a subsequent eval, whereas
599*735d6239SKiyoung Kim# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
600*735d6239SKiyoung Kim# which are still active within double quotes backslashified.
601*735d6239SKiyoung Kimfunc_quote_for_eval ()
602*735d6239SKiyoung Kim{
603*735d6239SKiyoung Kim    case $1 in
604*735d6239SKiyoung Kim      *[\\\`\"\$]*)
605*735d6239SKiyoung Kim	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
606*735d6239SKiyoung Kim      *)
607*735d6239SKiyoung Kim        func_quote_for_eval_unquoted_result="$1" ;;
608*735d6239SKiyoung Kim    esac
609*735d6239SKiyoung Kim
610*735d6239SKiyoung Kim    case $func_quote_for_eval_unquoted_result in
611*735d6239SKiyoung Kim      # Double-quote args containing shell metacharacters to delay
612*735d6239SKiyoung Kim      # word splitting, command substitution and and variable
613*735d6239SKiyoung Kim      # expansion for a subsequent eval.
614*735d6239SKiyoung Kim      # Many Bourne shells cannot handle close brackets correctly
615*735d6239SKiyoung Kim      # in scan sets, so we specify it separately.
616*735d6239SKiyoung Kim      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
617*735d6239SKiyoung Kim        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
618*735d6239SKiyoung Kim        ;;
619*735d6239SKiyoung Kim      *)
620*735d6239SKiyoung Kim        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
621*735d6239SKiyoung Kim    esac
622*735d6239SKiyoung Kim}
623*735d6239SKiyoung Kim
624*735d6239SKiyoung Kim
625*735d6239SKiyoung Kim# func_quote_for_expand arg
626*735d6239SKiyoung Kim# Aesthetically quote ARG to be evaled later; same as above,
627*735d6239SKiyoung Kim# but do not quote variable references.
628*735d6239SKiyoung Kimfunc_quote_for_expand ()
629*735d6239SKiyoung Kim{
630*735d6239SKiyoung Kim    case $1 in
631*735d6239SKiyoung Kim      *[\\\`\"]*)
632*735d6239SKiyoung Kim	my_arg=`$ECHO "$1" | $SED \
633*735d6239SKiyoung Kim	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
634*735d6239SKiyoung Kim      *)
635*735d6239SKiyoung Kim        my_arg="$1" ;;
636*735d6239SKiyoung Kim    esac
637*735d6239SKiyoung Kim
638*735d6239SKiyoung Kim    case $my_arg in
639*735d6239SKiyoung Kim      # Double-quote args containing shell metacharacters to delay
640*735d6239SKiyoung Kim      # word splitting and command substitution for a subsequent eval.
641*735d6239SKiyoung Kim      # Many Bourne shells cannot handle close brackets correctly
642*735d6239SKiyoung Kim      # in scan sets, so we specify it separately.
643*735d6239SKiyoung Kim      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
644*735d6239SKiyoung Kim        my_arg="\"$my_arg\""
645*735d6239SKiyoung Kim        ;;
646*735d6239SKiyoung Kim    esac
647*735d6239SKiyoung Kim
648*735d6239SKiyoung Kim    func_quote_for_expand_result="$my_arg"
649*735d6239SKiyoung Kim}
650*735d6239SKiyoung Kim
651*735d6239SKiyoung Kim
652*735d6239SKiyoung Kim# func_show_eval cmd [fail_exp]
653*735d6239SKiyoung Kim# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
654*735d6239SKiyoung Kim# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
655*735d6239SKiyoung Kim# is given, then evaluate it.
656*735d6239SKiyoung Kimfunc_show_eval ()
657*735d6239SKiyoung Kim{
658*735d6239SKiyoung Kim    my_cmd="$1"
659*735d6239SKiyoung Kim    my_fail_exp="${2-:}"
660*735d6239SKiyoung Kim
661*735d6239SKiyoung Kim    ${opt_silent-false} || {
662*735d6239SKiyoung Kim      func_quote_for_expand "$my_cmd"
663*735d6239SKiyoung Kim      eval "func_echo $func_quote_for_expand_result"
664*735d6239SKiyoung Kim    }
665*735d6239SKiyoung Kim
666*735d6239SKiyoung Kim    if ${opt_dry_run-false}; then :; else
667*735d6239SKiyoung Kim      eval "$my_cmd"
668*735d6239SKiyoung Kim      my_status=$?
669*735d6239SKiyoung Kim      if test "$my_status" -eq 0; then :; else
670*735d6239SKiyoung Kim	eval "(exit $my_status); $my_fail_exp"
671*735d6239SKiyoung Kim      fi
672*735d6239SKiyoung Kim    fi
673*735d6239SKiyoung Kim}
674*735d6239SKiyoung Kim
675*735d6239SKiyoung Kim
676*735d6239SKiyoung Kim# func_show_eval_locale cmd [fail_exp]
677*735d6239SKiyoung Kim# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
678*735d6239SKiyoung Kim# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
679*735d6239SKiyoung Kim# is given, then evaluate it.  Use the saved locale for evaluation.
680*735d6239SKiyoung Kimfunc_show_eval_locale ()
681*735d6239SKiyoung Kim{
682*735d6239SKiyoung Kim    my_cmd="$1"
683*735d6239SKiyoung Kim    my_fail_exp="${2-:}"
684*735d6239SKiyoung Kim
685*735d6239SKiyoung Kim    ${opt_silent-false} || {
686*735d6239SKiyoung Kim      func_quote_for_expand "$my_cmd"
687*735d6239SKiyoung Kim      eval "func_echo $func_quote_for_expand_result"
688*735d6239SKiyoung Kim    }
689*735d6239SKiyoung Kim
690*735d6239SKiyoung Kim    if ${opt_dry_run-false}; then :; else
691*735d6239SKiyoung Kim      eval "$lt_user_locale
692*735d6239SKiyoung Kim	    $my_cmd"
693*735d6239SKiyoung Kim      my_status=$?
694*735d6239SKiyoung Kim      eval "$lt_safe_locale"
695*735d6239SKiyoung Kim      if test "$my_status" -eq 0; then :; else
696*735d6239SKiyoung Kim	eval "(exit $my_status); $my_fail_exp"
697*735d6239SKiyoung Kim      fi
698*735d6239SKiyoung Kim    fi
699*735d6239SKiyoung Kim}
700*735d6239SKiyoung Kim
701*735d6239SKiyoung Kim# func_tr_sh
702*735d6239SKiyoung Kim# Turn $1 into a string suitable for a shell variable name.
703*735d6239SKiyoung Kim# Result is stored in $func_tr_sh_result.  All characters
704*735d6239SKiyoung Kim# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
705*735d6239SKiyoung Kim# if $1 begins with a digit, a '_' is prepended as well.
706*735d6239SKiyoung Kimfunc_tr_sh ()
707*735d6239SKiyoung Kim{
708*735d6239SKiyoung Kim  case $1 in
709*735d6239SKiyoung Kim  [0-9]* | *[!a-zA-Z0-9_]*)
710*735d6239SKiyoung Kim    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
711*735d6239SKiyoung Kim    ;;
712*735d6239SKiyoung Kim  * )
713*735d6239SKiyoung Kim    func_tr_sh_result=$1
714*735d6239SKiyoung Kim    ;;
715*735d6239SKiyoung Kim  esac
716*735d6239SKiyoung Kim}
717*735d6239SKiyoung Kim
718*735d6239SKiyoung Kim
719*735d6239SKiyoung Kim# func_version
720*735d6239SKiyoung Kim# Echo version message to standard output and exit.
721*735d6239SKiyoung Kimfunc_version ()
722*735d6239SKiyoung Kim{
723*735d6239SKiyoung Kim    $opt_debug
724*735d6239SKiyoung Kim
725*735d6239SKiyoung Kim    $SED -n '/(C)/!b go
726*735d6239SKiyoung Kim	:more
727*735d6239SKiyoung Kim	/\./!{
728*735d6239SKiyoung Kim	  N
729*735d6239SKiyoung Kim	  s/\n# / /
730*735d6239SKiyoung Kim	  b more
731*735d6239SKiyoung Kim	}
732*735d6239SKiyoung Kim	:go
733*735d6239SKiyoung Kim	/^# '$PROGRAM' (GNU /,/# warranty; / {
734*735d6239SKiyoung Kim        s/^# //
735*735d6239SKiyoung Kim	s/^# *$//
736*735d6239SKiyoung Kim        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
737*735d6239SKiyoung Kim        p
738*735d6239SKiyoung Kim     }' < "$progpath"
739*735d6239SKiyoung Kim     exit $?
740*735d6239SKiyoung Kim}
741*735d6239SKiyoung Kim
742*735d6239SKiyoung Kim# func_usage
743*735d6239SKiyoung Kim# Echo short help message to standard output and exit.
744*735d6239SKiyoung Kimfunc_usage ()
745*735d6239SKiyoung Kim{
746*735d6239SKiyoung Kim    $opt_debug
747*735d6239SKiyoung Kim
748*735d6239SKiyoung Kim    $SED -n '/^# Usage:/,/^#  *.*--help/ {
749*735d6239SKiyoung Kim        s/^# //
750*735d6239SKiyoung Kim	s/^# *$//
751*735d6239SKiyoung Kim	s/\$progname/'$progname'/
752*735d6239SKiyoung Kim	p
753*735d6239SKiyoung Kim    }' < "$progpath"
754*735d6239SKiyoung Kim    echo
755*735d6239SKiyoung Kim    $ECHO "run \`$progname --help | more' for full usage"
756*735d6239SKiyoung Kim    exit $?
757*735d6239SKiyoung Kim}
758*735d6239SKiyoung Kim
759*735d6239SKiyoung Kim# func_help [NOEXIT]
760*735d6239SKiyoung Kim# Echo long help message to standard output and exit,
761*735d6239SKiyoung Kim# unless 'noexit' is passed as argument.
762*735d6239SKiyoung Kimfunc_help ()
763*735d6239SKiyoung Kim{
764*735d6239SKiyoung Kim    $opt_debug
765*735d6239SKiyoung Kim
766*735d6239SKiyoung Kim    $SED -n '/^# Usage:/,/# Report bugs to/ {
767*735d6239SKiyoung Kim	:print
768*735d6239SKiyoung Kim        s/^# //
769*735d6239SKiyoung Kim	s/^# *$//
770*735d6239SKiyoung Kim	s*\$progname*'$progname'*
771*735d6239SKiyoung Kim	s*\$host*'"$host"'*
772*735d6239SKiyoung Kim	s*\$SHELL*'"$SHELL"'*
773*735d6239SKiyoung Kim	s*\$LTCC*'"$LTCC"'*
774*735d6239SKiyoung Kim	s*\$LTCFLAGS*'"$LTCFLAGS"'*
775*735d6239SKiyoung Kim	s*\$LD*'"$LD"'*
776*735d6239SKiyoung Kim	s/\$with_gnu_ld/'"$with_gnu_ld"'/
777*735d6239SKiyoung Kim	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
778*735d6239SKiyoung Kim	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
779*735d6239SKiyoung Kim	p
780*735d6239SKiyoung Kim	d
781*735d6239SKiyoung Kim     }
782*735d6239SKiyoung Kim     /^# .* home page:/b print
783*735d6239SKiyoung Kim     /^# General help using/b print
784*735d6239SKiyoung Kim     ' < "$progpath"
785*735d6239SKiyoung Kim    ret=$?
786*735d6239SKiyoung Kim    if test -z "$1"; then
787*735d6239SKiyoung Kim      exit $ret
788*735d6239SKiyoung Kim    fi
789*735d6239SKiyoung Kim}
790*735d6239SKiyoung Kim
791*735d6239SKiyoung Kim# func_missing_arg argname
792*735d6239SKiyoung Kim# Echo program name prefixed message to standard error and set global
793*735d6239SKiyoung Kim# exit_cmd.
794*735d6239SKiyoung Kimfunc_missing_arg ()
795*735d6239SKiyoung Kim{
796*735d6239SKiyoung Kim    $opt_debug
797*735d6239SKiyoung Kim
798*735d6239SKiyoung Kim    func_error "missing argument for $1."
799*735d6239SKiyoung Kim    exit_cmd=exit
800*735d6239SKiyoung Kim}
801*735d6239SKiyoung Kim
802*735d6239SKiyoung Kim
803*735d6239SKiyoung Kim# func_split_short_opt shortopt
804*735d6239SKiyoung Kim# Set func_split_short_opt_name and func_split_short_opt_arg shell
805*735d6239SKiyoung Kim# variables after splitting SHORTOPT after the 2nd character.
806*735d6239SKiyoung Kimfunc_split_short_opt ()
807*735d6239SKiyoung Kim{
808*735d6239SKiyoung Kim    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
809*735d6239SKiyoung Kim    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
810*735d6239SKiyoung Kim
811*735d6239SKiyoung Kim    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
812*735d6239SKiyoung Kim    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
813*735d6239SKiyoung Kim} # func_split_short_opt may be replaced by extended shell implementation
814*735d6239SKiyoung Kim
815*735d6239SKiyoung Kim
816*735d6239SKiyoung Kim# func_split_long_opt longopt
817*735d6239SKiyoung Kim# Set func_split_long_opt_name and func_split_long_opt_arg shell
818*735d6239SKiyoung Kim# variables after splitting LONGOPT at the `=' sign.
819*735d6239SKiyoung Kimfunc_split_long_opt ()
820*735d6239SKiyoung Kim{
821*735d6239SKiyoung Kim    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
822*735d6239SKiyoung Kim    my_sed_long_arg='1s/^--[^=]*=//'
823*735d6239SKiyoung Kim
824*735d6239SKiyoung Kim    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
825*735d6239SKiyoung Kim    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
826*735d6239SKiyoung Kim} # func_split_long_opt may be replaced by extended shell implementation
827*735d6239SKiyoung Kim
828*735d6239SKiyoung Kimexit_cmd=:
829*735d6239SKiyoung Kim
830*735d6239SKiyoung Kim
831*735d6239SKiyoung Kim
832*735d6239SKiyoung Kim
833*735d6239SKiyoung Kim
834*735d6239SKiyoung Kimmagic="%%%MAGIC variable%%%"
835*735d6239SKiyoung Kimmagic_exe="%%%MAGIC EXE variable%%%"
836*735d6239SKiyoung Kim
837*735d6239SKiyoung Kim# Global variables.
838*735d6239SKiyoung Kimnonopt=
839*735d6239SKiyoung Kimpreserve_args=
840*735d6239SKiyoung Kimlo2o="s/\\.lo\$/.${objext}/"
841*735d6239SKiyoung Kimo2lo="s/\\.${objext}\$/.lo/"
842*735d6239SKiyoung Kimextracted_archives=
843*735d6239SKiyoung Kimextracted_serial=0
844*735d6239SKiyoung Kim
845*735d6239SKiyoung Kim# If this variable is set in any of the actions, the command in it
846*735d6239SKiyoung Kim# will be execed at the end.  This prevents here-documents from being
847*735d6239SKiyoung Kim# left over by shells.
848*735d6239SKiyoung Kimexec_cmd=
849*735d6239SKiyoung Kim
850*735d6239SKiyoung Kim# func_append var value
851*735d6239SKiyoung Kim# Append VALUE to the end of shell variable VAR.
852*735d6239SKiyoung Kimfunc_append ()
853*735d6239SKiyoung Kim{
854*735d6239SKiyoung Kim    eval "${1}=\$${1}\${2}"
855*735d6239SKiyoung Kim} # func_append may be replaced by extended shell implementation
856*735d6239SKiyoung Kim
857*735d6239SKiyoung Kim# func_append_quoted var value
858*735d6239SKiyoung Kim# Quote VALUE and append to the end of shell variable VAR, separated
859*735d6239SKiyoung Kim# by a space.
860*735d6239SKiyoung Kimfunc_append_quoted ()
861*735d6239SKiyoung Kim{
862*735d6239SKiyoung Kim    func_quote_for_eval "${2}"
863*735d6239SKiyoung Kim    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
864*735d6239SKiyoung Kim} # func_append_quoted may be replaced by extended shell implementation
865*735d6239SKiyoung Kim
866*735d6239SKiyoung Kim
867*735d6239SKiyoung Kim# func_arith arithmetic-term...
868*735d6239SKiyoung Kimfunc_arith ()
869*735d6239SKiyoung Kim{
870*735d6239SKiyoung Kim    func_arith_result=`expr "${@}"`
871*735d6239SKiyoung Kim} # func_arith may be replaced by extended shell implementation
872*735d6239SKiyoung Kim
873*735d6239SKiyoung Kim
874*735d6239SKiyoung Kim# func_len string
875*735d6239SKiyoung Kim# STRING may not start with a hyphen.
876*735d6239SKiyoung Kimfunc_len ()
877*735d6239SKiyoung Kim{
878*735d6239SKiyoung Kim    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
879*735d6239SKiyoung Kim} # func_len may be replaced by extended shell implementation
880*735d6239SKiyoung Kim
881*735d6239SKiyoung Kim
882*735d6239SKiyoung Kim# func_lo2o object
883*735d6239SKiyoung Kimfunc_lo2o ()
884*735d6239SKiyoung Kim{
885*735d6239SKiyoung Kim    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
886*735d6239SKiyoung Kim} # func_lo2o may be replaced by extended shell implementation
887*735d6239SKiyoung Kim
888*735d6239SKiyoung Kim
889*735d6239SKiyoung Kim# func_xform libobj-or-source
890*735d6239SKiyoung Kimfunc_xform ()
891*735d6239SKiyoung Kim{
892*735d6239SKiyoung Kim    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
893*735d6239SKiyoung Kim} # func_xform may be replaced by extended shell implementation
894*735d6239SKiyoung Kim
895*735d6239SKiyoung Kim
896*735d6239SKiyoung Kim# func_fatal_configuration arg...
897*735d6239SKiyoung Kim# Echo program name prefixed message to standard error, followed by
898*735d6239SKiyoung Kim# a configuration failure hint, and exit.
899*735d6239SKiyoung Kimfunc_fatal_configuration ()
900*735d6239SKiyoung Kim{
901*735d6239SKiyoung Kim    func_error ${1+"$@"}
902*735d6239SKiyoung Kim    func_error "See the $PACKAGE documentation for more information."
903*735d6239SKiyoung Kim    func_fatal_error "Fatal configuration error."
904*735d6239SKiyoung Kim}
905*735d6239SKiyoung Kim
906*735d6239SKiyoung Kim
907*735d6239SKiyoung Kim# func_config
908*735d6239SKiyoung Kim# Display the configuration for all the tags in this script.
909*735d6239SKiyoung Kimfunc_config ()
910*735d6239SKiyoung Kim{
911*735d6239SKiyoung Kim    re_begincf='^# ### BEGIN LIBTOOL'
912*735d6239SKiyoung Kim    re_endcf='^# ### END LIBTOOL'
913*735d6239SKiyoung Kim
914*735d6239SKiyoung Kim    # Default configuration.
915*735d6239SKiyoung Kim    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
916*735d6239SKiyoung Kim
917*735d6239SKiyoung Kim    # Now print the configurations for the tags.
918*735d6239SKiyoung Kim    for tagname in $taglist; do
919*735d6239SKiyoung Kim      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
920*735d6239SKiyoung Kim    done
921*735d6239SKiyoung Kim
922*735d6239SKiyoung Kim    exit $?
923*735d6239SKiyoung Kim}
924*735d6239SKiyoung Kim
925*735d6239SKiyoung Kim# func_features
926*735d6239SKiyoung Kim# Display the features supported by this script.
927*735d6239SKiyoung Kimfunc_features ()
928*735d6239SKiyoung Kim{
929*735d6239SKiyoung Kim    echo "host: $host"
930*735d6239SKiyoung Kim    if test "$build_libtool_libs" = yes; then
931*735d6239SKiyoung Kim      echo "enable shared libraries"
932*735d6239SKiyoung Kim    else
933*735d6239SKiyoung Kim      echo "disable shared libraries"
934*735d6239SKiyoung Kim    fi
935*735d6239SKiyoung Kim    if test "$build_old_libs" = yes; then
936*735d6239SKiyoung Kim      echo "enable static libraries"
937*735d6239SKiyoung Kim    else
938*735d6239SKiyoung Kim      echo "disable static libraries"
939*735d6239SKiyoung Kim    fi
940*735d6239SKiyoung Kim
941*735d6239SKiyoung Kim    exit $?
942*735d6239SKiyoung Kim}
943*735d6239SKiyoung Kim
944*735d6239SKiyoung Kim# func_enable_tag tagname
945*735d6239SKiyoung Kim# Verify that TAGNAME is valid, and either flag an error and exit, or
946*735d6239SKiyoung Kim# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
947*735d6239SKiyoung Kim# variable here.
948*735d6239SKiyoung Kimfunc_enable_tag ()
949*735d6239SKiyoung Kim{
950*735d6239SKiyoung Kim  # Global variable:
951*735d6239SKiyoung Kim  tagname="$1"
952*735d6239SKiyoung Kim
953*735d6239SKiyoung Kim  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
954*735d6239SKiyoung Kim  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
955*735d6239SKiyoung Kim  sed_extractcf="/$re_begincf/,/$re_endcf/p"
956*735d6239SKiyoung Kim
957*735d6239SKiyoung Kim  # Validate tagname.
958*735d6239SKiyoung Kim  case $tagname in
959*735d6239SKiyoung Kim    *[!-_A-Za-z0-9,/]*)
960*735d6239SKiyoung Kim      func_fatal_error "invalid tag name: $tagname"
961*735d6239SKiyoung Kim      ;;
962*735d6239SKiyoung Kim  esac
963*735d6239SKiyoung Kim
964*735d6239SKiyoung Kim  # Don't test for the "default" C tag, as we know it's
965*735d6239SKiyoung Kim  # there but not specially marked.
966*735d6239SKiyoung Kim  case $tagname in
967*735d6239SKiyoung Kim    CC) ;;
968*735d6239SKiyoung Kim    *)
969*735d6239SKiyoung Kim      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
970*735d6239SKiyoung Kim	taglist="$taglist $tagname"
971*735d6239SKiyoung Kim
972*735d6239SKiyoung Kim	# Evaluate the configuration.  Be careful to quote the path
973*735d6239SKiyoung Kim	# and the sed script, to avoid splitting on whitespace, but
974*735d6239SKiyoung Kim	# also don't use non-portable quotes within backquotes within
975*735d6239SKiyoung Kim	# quotes we have to do it in 2 steps:
976*735d6239SKiyoung Kim	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
977*735d6239SKiyoung Kim	eval "$extractedcf"
978*735d6239SKiyoung Kim      else
979*735d6239SKiyoung Kim	func_error "ignoring unknown tag $tagname"
980*735d6239SKiyoung Kim      fi
981*735d6239SKiyoung Kim      ;;
982*735d6239SKiyoung Kim  esac
983*735d6239SKiyoung Kim}
984*735d6239SKiyoung Kim
985*735d6239SKiyoung Kim# func_check_version_match
986*735d6239SKiyoung Kim# Ensure that we are using m4 macros, and libtool script from the same
987*735d6239SKiyoung Kim# release of libtool.
988*735d6239SKiyoung Kimfunc_check_version_match ()
989*735d6239SKiyoung Kim{
990*735d6239SKiyoung Kim  if test "$package_revision" != "$macro_revision"; then
991*735d6239SKiyoung Kim    if test "$VERSION" != "$macro_version"; then
992*735d6239SKiyoung Kim      if test -z "$macro_version"; then
993*735d6239SKiyoung Kim        cat >&2 <<_LT_EOF
994*735d6239SKiyoung Kim$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995*735d6239SKiyoung Kim$progname: definition of this LT_INIT comes from an older release.
996*735d6239SKiyoung Kim$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997*735d6239SKiyoung Kim$progname: and run autoconf again.
998*735d6239SKiyoung Kim_LT_EOF
999*735d6239SKiyoung Kim      else
1000*735d6239SKiyoung Kim        cat >&2 <<_LT_EOF
1001*735d6239SKiyoung Kim$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1002*735d6239SKiyoung Kim$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1003*735d6239SKiyoung Kim$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1004*735d6239SKiyoung Kim$progname: and run autoconf again.
1005*735d6239SKiyoung Kim_LT_EOF
1006*735d6239SKiyoung Kim      fi
1007*735d6239SKiyoung Kim    else
1008*735d6239SKiyoung Kim      cat >&2 <<_LT_EOF
1009*735d6239SKiyoung Kim$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1010*735d6239SKiyoung Kim$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1011*735d6239SKiyoung Kim$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1012*735d6239SKiyoung Kim$progname: of $PACKAGE $VERSION and run autoconf again.
1013*735d6239SKiyoung Kim_LT_EOF
1014*735d6239SKiyoung Kim    fi
1015*735d6239SKiyoung Kim
1016*735d6239SKiyoung Kim    exit $EXIT_MISMATCH
1017*735d6239SKiyoung Kim  fi
1018*735d6239SKiyoung Kim}
1019*735d6239SKiyoung Kim
1020*735d6239SKiyoung Kim
1021*735d6239SKiyoung Kim# Shorthand for --mode=foo, only valid as the first argument
1022*735d6239SKiyoung Kimcase $1 in
1023*735d6239SKiyoung Kimclean|clea|cle|cl)
1024*735d6239SKiyoung Kim  shift; set dummy --mode clean ${1+"$@"}; shift
1025*735d6239SKiyoung Kim  ;;
1026*735d6239SKiyoung Kimcompile|compil|compi|comp|com|co|c)
1027*735d6239SKiyoung Kim  shift; set dummy --mode compile ${1+"$@"}; shift
1028*735d6239SKiyoung Kim  ;;
1029*735d6239SKiyoung Kimexecute|execut|execu|exec|exe|ex|e)
1030*735d6239SKiyoung Kim  shift; set dummy --mode execute ${1+"$@"}; shift
1031*735d6239SKiyoung Kim  ;;
1032*735d6239SKiyoung Kimfinish|finis|fini|fin|fi|f)
1033*735d6239SKiyoung Kim  shift; set dummy --mode finish ${1+"$@"}; shift
1034*735d6239SKiyoung Kim  ;;
1035*735d6239SKiyoung Kiminstall|instal|insta|inst|ins|in|i)
1036*735d6239SKiyoung Kim  shift; set dummy --mode install ${1+"$@"}; shift
1037*735d6239SKiyoung Kim  ;;
1038*735d6239SKiyoung Kimlink|lin|li|l)
1039*735d6239SKiyoung Kim  shift; set dummy --mode link ${1+"$@"}; shift
1040*735d6239SKiyoung Kim  ;;
1041*735d6239SKiyoung Kimuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1042*735d6239SKiyoung Kim  shift; set dummy --mode uninstall ${1+"$@"}; shift
1043*735d6239SKiyoung Kim  ;;
1044*735d6239SKiyoung Kimesac
1045*735d6239SKiyoung Kim
1046*735d6239SKiyoung Kim
1047*735d6239SKiyoung Kim
1048*735d6239SKiyoung Kim# Option defaults:
1049*735d6239SKiyoung Kimopt_debug=:
1050*735d6239SKiyoung Kimopt_dry_run=false
1051*735d6239SKiyoung Kimopt_config=false
1052*735d6239SKiyoung Kimopt_preserve_dup_deps=false
1053*735d6239SKiyoung Kimopt_features=false
1054*735d6239SKiyoung Kimopt_finish=false
1055*735d6239SKiyoung Kimopt_help=false
1056*735d6239SKiyoung Kimopt_help_all=false
1057*735d6239SKiyoung Kimopt_silent=:
1058*735d6239SKiyoung Kimopt_verbose=:
1059*735d6239SKiyoung Kimopt_silent=false
1060*735d6239SKiyoung Kimopt_verbose=false
1061*735d6239SKiyoung Kim
1062*735d6239SKiyoung Kim
1063*735d6239SKiyoung Kim# Parse options once, thoroughly.  This comes as soon as possible in the
1064*735d6239SKiyoung Kim# script to make things like `--version' happen as quickly as we can.
1065*735d6239SKiyoung Kim{
1066*735d6239SKiyoung Kim  # this just eases exit handling
1067*735d6239SKiyoung Kim  while test $# -gt 0; do
1068*735d6239SKiyoung Kim    opt="$1"
1069*735d6239SKiyoung Kim    shift
1070*735d6239SKiyoung Kim    case $opt in
1071*735d6239SKiyoung Kim      --debug|-x)	opt_debug='set -x'
1072*735d6239SKiyoung Kim			func_echo "enabling shell trace mode"
1073*735d6239SKiyoung Kim			$opt_debug
1074*735d6239SKiyoung Kim			;;
1075*735d6239SKiyoung Kim      --dry-run|--dryrun|-n)
1076*735d6239SKiyoung Kim			opt_dry_run=:
1077*735d6239SKiyoung Kim			;;
1078*735d6239SKiyoung Kim      --config)
1079*735d6239SKiyoung Kim			opt_config=:
1080*735d6239SKiyoung Kimfunc_config
1081*735d6239SKiyoung Kim			;;
1082*735d6239SKiyoung Kim      --dlopen|-dlopen)
1083*735d6239SKiyoung Kim			optarg="$1"
1084*735d6239SKiyoung Kim			opt_dlopen="${opt_dlopen+$opt_dlopen
1085*735d6239SKiyoung Kim}$optarg"
1086*735d6239SKiyoung Kim			shift
1087*735d6239SKiyoung Kim			;;
1088*735d6239SKiyoung Kim      --preserve-dup-deps)
1089*735d6239SKiyoung Kim			opt_preserve_dup_deps=:
1090*735d6239SKiyoung Kim			;;
1091*735d6239SKiyoung Kim      --features)
1092*735d6239SKiyoung Kim			opt_features=:
1093*735d6239SKiyoung Kimfunc_features
1094*735d6239SKiyoung Kim			;;
1095*735d6239SKiyoung Kim      --finish)
1096*735d6239SKiyoung Kim			opt_finish=:
1097*735d6239SKiyoung Kimset dummy --mode finish ${1+"$@"}; shift
1098*735d6239SKiyoung Kim			;;
1099*735d6239SKiyoung Kim      --help)
1100*735d6239SKiyoung Kim			opt_help=:
1101*735d6239SKiyoung Kim			;;
1102*735d6239SKiyoung Kim      --help-all)
1103*735d6239SKiyoung Kim			opt_help_all=:
1104*735d6239SKiyoung Kimopt_help=': help-all'
1105*735d6239SKiyoung Kim			;;
1106*735d6239SKiyoung Kim      --mode)
1107*735d6239SKiyoung Kim			test $# = 0 && func_missing_arg $opt && break
1108*735d6239SKiyoung Kim			optarg="$1"
1109*735d6239SKiyoung Kim			opt_mode="$optarg"
1110*735d6239SKiyoung Kimcase $optarg in
1111*735d6239SKiyoung Kim  # Valid mode arguments:
1112*735d6239SKiyoung Kim  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1113*735d6239SKiyoung Kim
1114*735d6239SKiyoung Kim  # Catch anything else as an error
1115*735d6239SKiyoung Kim  *) func_error "invalid argument for $opt"
1116*735d6239SKiyoung Kim     exit_cmd=exit
1117*735d6239SKiyoung Kim     break
1118*735d6239SKiyoung Kim     ;;
1119*735d6239SKiyoung Kimesac
1120*735d6239SKiyoung Kim			shift
1121*735d6239SKiyoung Kim			;;
1122*735d6239SKiyoung Kim      --no-silent|--no-quiet)
1123*735d6239SKiyoung Kim			opt_silent=false
1124*735d6239SKiyoung Kimfunc_append preserve_args " $opt"
1125*735d6239SKiyoung Kim			;;
1126*735d6239SKiyoung Kim      --no-verbose)
1127*735d6239SKiyoung Kim			opt_verbose=false
1128*735d6239SKiyoung Kimfunc_append preserve_args " $opt"
1129*735d6239SKiyoung Kim			;;
1130*735d6239SKiyoung Kim      --silent|--quiet)
1131*735d6239SKiyoung Kim			opt_silent=:
1132*735d6239SKiyoung Kimfunc_append preserve_args " $opt"
1133*735d6239SKiyoung Kim        opt_verbose=false
1134*735d6239SKiyoung Kim			;;
1135*735d6239SKiyoung Kim      --verbose|-v)
1136*735d6239SKiyoung Kim			opt_verbose=:
1137*735d6239SKiyoung Kimfunc_append preserve_args " $opt"
1138*735d6239SKiyoung Kimopt_silent=false
1139*735d6239SKiyoung Kim			;;
1140*735d6239SKiyoung Kim      --tag)
1141*735d6239SKiyoung Kim			test $# = 0 && func_missing_arg $opt && break
1142*735d6239SKiyoung Kim			optarg="$1"
1143*735d6239SKiyoung Kim			opt_tag="$optarg"
1144*735d6239SKiyoung Kimfunc_append preserve_args " $opt $optarg"
1145*735d6239SKiyoung Kimfunc_enable_tag "$optarg"
1146*735d6239SKiyoung Kim			shift
1147*735d6239SKiyoung Kim			;;
1148*735d6239SKiyoung Kim
1149*735d6239SKiyoung Kim      -\?|-h)		func_usage				;;
1150*735d6239SKiyoung Kim      --help)		func_help				;;
1151*735d6239SKiyoung Kim      --version)	func_version				;;
1152*735d6239SKiyoung Kim
1153*735d6239SKiyoung Kim      # Separate optargs to long options:
1154*735d6239SKiyoung Kim      --*=*)
1155*735d6239SKiyoung Kim			func_split_long_opt "$opt"
1156*735d6239SKiyoung Kim			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1157*735d6239SKiyoung Kim			shift
1158*735d6239SKiyoung Kim			;;
1159*735d6239SKiyoung Kim
1160*735d6239SKiyoung Kim      # Separate non-argument short options:
1161*735d6239SKiyoung Kim      -\?*|-h*|-n*|-v*)
1162*735d6239SKiyoung Kim			func_split_short_opt "$opt"
1163*735d6239SKiyoung Kim			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1164*735d6239SKiyoung Kim			shift
1165*735d6239SKiyoung Kim			;;
1166*735d6239SKiyoung Kim
1167*735d6239SKiyoung Kim      --)		break					;;
1168*735d6239SKiyoung Kim      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1169*735d6239SKiyoung Kim      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1170*735d6239SKiyoung Kim    esac
1171*735d6239SKiyoung Kim  done
1172*735d6239SKiyoung Kim
1173*735d6239SKiyoung Kim  # Validate options:
1174*735d6239SKiyoung Kim
1175*735d6239SKiyoung Kim  # save first non-option argument
1176*735d6239SKiyoung Kim  if test "$#" -gt 0; then
1177*735d6239SKiyoung Kim    nonopt="$opt"
1178*735d6239SKiyoung Kim    shift
1179*735d6239SKiyoung Kim  fi
1180*735d6239SKiyoung Kim
1181*735d6239SKiyoung Kim  # preserve --debug
1182*735d6239SKiyoung Kim  test "$opt_debug" = : || func_append preserve_args " --debug"
1183*735d6239SKiyoung Kim
1184*735d6239SKiyoung Kim  case $host in
1185*735d6239SKiyoung Kim    *cygwin* | *mingw* | *pw32* | *cegcc*)
1186*735d6239SKiyoung Kim      # don't eliminate duplications in $postdeps and $predeps
1187*735d6239SKiyoung Kim      opt_duplicate_compiler_generated_deps=:
1188*735d6239SKiyoung Kim      ;;
1189*735d6239SKiyoung Kim    *)
1190*735d6239SKiyoung Kim      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1191*735d6239SKiyoung Kim      ;;
1192*735d6239SKiyoung Kim  esac
1193*735d6239SKiyoung Kim
1194*735d6239SKiyoung Kim  $opt_help || {
1195*735d6239SKiyoung Kim    # Sanity checks first:
1196*735d6239SKiyoung Kim    func_check_version_match
1197*735d6239SKiyoung Kim
1198*735d6239SKiyoung Kim    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1199*735d6239SKiyoung Kim      func_fatal_configuration "not configured to build any kind of library"
1200*735d6239SKiyoung Kim    fi
1201*735d6239SKiyoung Kim
1202*735d6239SKiyoung Kim    # Darwin sucks
1203*735d6239SKiyoung Kim    eval std_shrext=\"$shrext_cmds\"
1204*735d6239SKiyoung Kim
1205*735d6239SKiyoung Kim    # Only execute mode is allowed to have -dlopen flags.
1206*735d6239SKiyoung Kim    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1207*735d6239SKiyoung Kim      func_error "unrecognized option \`-dlopen'"
1208*735d6239SKiyoung Kim      $ECHO "$help" 1>&2
1209*735d6239SKiyoung Kim      exit $EXIT_FAILURE
1210*735d6239SKiyoung Kim    fi
1211*735d6239SKiyoung Kim
1212*735d6239SKiyoung Kim    # Change the help message to a mode-specific one.
1213*735d6239SKiyoung Kim    generic_help="$help"
1214*735d6239SKiyoung Kim    help="Try \`$progname --help --mode=$opt_mode' for more information."
1215*735d6239SKiyoung Kim  }
1216*735d6239SKiyoung Kim
1217*735d6239SKiyoung Kim
1218*735d6239SKiyoung Kim  # Bail if the options were screwed
1219*735d6239SKiyoung Kim  $exit_cmd $EXIT_FAILURE
1220*735d6239SKiyoung Kim}
1221*735d6239SKiyoung Kim
1222*735d6239SKiyoung Kim
1223*735d6239SKiyoung Kim
1224*735d6239SKiyoung Kim
1225*735d6239SKiyoung Kim## ----------- ##
1226*735d6239SKiyoung Kim##    Main.    ##
1227*735d6239SKiyoung Kim## ----------- ##
1228*735d6239SKiyoung Kim
1229*735d6239SKiyoung Kim# func_lalib_p file
1230*735d6239SKiyoung Kim# True iff FILE is a libtool `.la' library or `.lo' object file.
1231*735d6239SKiyoung Kim# This function is only a basic sanity check; it will hardly flush out
1232*735d6239SKiyoung Kim# determined imposters.
1233*735d6239SKiyoung Kimfunc_lalib_p ()
1234*735d6239SKiyoung Kim{
1235*735d6239SKiyoung Kim    test -f "$1" &&
1236*735d6239SKiyoung Kim      $SED -e 4q "$1" 2>/dev/null \
1237*735d6239SKiyoung Kim        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1238*735d6239SKiyoung Kim}
1239*735d6239SKiyoung Kim
1240*735d6239SKiyoung Kim# func_lalib_unsafe_p file
1241*735d6239SKiyoung Kim# True iff FILE is a libtool `.la' library or `.lo' object file.
1242*735d6239SKiyoung Kim# This function implements the same check as func_lalib_p without
1243*735d6239SKiyoung Kim# resorting to external programs.  To this end, it redirects stdin and
1244*735d6239SKiyoung Kim# closes it afterwards, without saving the original file descriptor.
1245*735d6239SKiyoung Kim# As a safety measure, use it only where a negative result would be
1246*735d6239SKiyoung Kim# fatal anyway.  Works if `file' does not exist.
1247*735d6239SKiyoung Kimfunc_lalib_unsafe_p ()
1248*735d6239SKiyoung Kim{
1249*735d6239SKiyoung Kim    lalib_p=no
1250*735d6239SKiyoung Kim    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1251*735d6239SKiyoung Kim	for lalib_p_l in 1 2 3 4
1252*735d6239SKiyoung Kim	do
1253*735d6239SKiyoung Kim	    read lalib_p_line
1254*735d6239SKiyoung Kim	    case "$lalib_p_line" in
1255*735d6239SKiyoung Kim		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1256*735d6239SKiyoung Kim	    esac
1257*735d6239SKiyoung Kim	done
1258*735d6239SKiyoung Kim	exec 0<&5 5<&-
1259*735d6239SKiyoung Kim    fi
1260*735d6239SKiyoung Kim    test "$lalib_p" = yes
1261*735d6239SKiyoung Kim}
1262*735d6239SKiyoung Kim
1263*735d6239SKiyoung Kim# func_ltwrapper_script_p file
1264*735d6239SKiyoung Kim# True iff FILE is a libtool wrapper script
1265*735d6239SKiyoung Kim# This function is only a basic sanity check; it will hardly flush out
1266*735d6239SKiyoung Kim# determined imposters.
1267*735d6239SKiyoung Kimfunc_ltwrapper_script_p ()
1268*735d6239SKiyoung Kim{
1269*735d6239SKiyoung Kim    func_lalib_p "$1"
1270*735d6239SKiyoung Kim}
1271*735d6239SKiyoung Kim
1272*735d6239SKiyoung Kim# func_ltwrapper_executable_p file
1273*735d6239SKiyoung Kim# True iff FILE is a libtool wrapper executable
1274*735d6239SKiyoung Kim# This function is only a basic sanity check; it will hardly flush out
1275*735d6239SKiyoung Kim# determined imposters.
1276*735d6239SKiyoung Kimfunc_ltwrapper_executable_p ()
1277*735d6239SKiyoung Kim{
1278*735d6239SKiyoung Kim    func_ltwrapper_exec_suffix=
1279*735d6239SKiyoung Kim    case $1 in
1280*735d6239SKiyoung Kim    *.exe) ;;
1281*735d6239SKiyoung Kim    *) func_ltwrapper_exec_suffix=.exe ;;
1282*735d6239SKiyoung Kim    esac
1283*735d6239SKiyoung Kim    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1284*735d6239SKiyoung Kim}
1285*735d6239SKiyoung Kim
1286*735d6239SKiyoung Kim# func_ltwrapper_scriptname file
1287*735d6239SKiyoung Kim# Assumes file is an ltwrapper_executable
1288*735d6239SKiyoung Kim# uses $file to determine the appropriate filename for a
1289*735d6239SKiyoung Kim# temporary ltwrapper_script.
1290*735d6239SKiyoung Kimfunc_ltwrapper_scriptname ()
1291*735d6239SKiyoung Kim{
1292*735d6239SKiyoung Kim    func_dirname_and_basename "$1" "" "."
1293*735d6239SKiyoung Kim    func_stripname '' '.exe' "$func_basename_result"
1294*735d6239SKiyoung Kim    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1295*735d6239SKiyoung Kim}
1296*735d6239SKiyoung Kim
1297*735d6239SKiyoung Kim# func_ltwrapper_p file
1298*735d6239SKiyoung Kim# True iff FILE is a libtool wrapper script or wrapper executable
1299*735d6239SKiyoung Kim# This function is only a basic sanity check; it will hardly flush out
1300*735d6239SKiyoung Kim# determined imposters.
1301*735d6239SKiyoung Kimfunc_ltwrapper_p ()
1302*735d6239SKiyoung Kim{
1303*735d6239SKiyoung Kim    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1304*735d6239SKiyoung Kim}
1305*735d6239SKiyoung Kim
1306*735d6239SKiyoung Kim
1307*735d6239SKiyoung Kim# func_execute_cmds commands fail_cmd
1308*735d6239SKiyoung Kim# Execute tilde-delimited COMMANDS.
1309*735d6239SKiyoung Kim# If FAIL_CMD is given, eval that upon failure.
1310*735d6239SKiyoung Kim# FAIL_CMD may read-access the current command in variable CMD!
1311*735d6239SKiyoung Kimfunc_execute_cmds ()
1312*735d6239SKiyoung Kim{
1313*735d6239SKiyoung Kim    $opt_debug
1314*735d6239SKiyoung Kim    save_ifs=$IFS; IFS='~'
1315*735d6239SKiyoung Kim    for cmd in $1; do
1316*735d6239SKiyoung Kim      IFS=$save_ifs
1317*735d6239SKiyoung Kim      eval cmd=\"$cmd\"
1318*735d6239SKiyoung Kim      func_show_eval "$cmd" "${2-:}"
1319*735d6239SKiyoung Kim    done
1320*735d6239SKiyoung Kim    IFS=$save_ifs
1321*735d6239SKiyoung Kim}
1322*735d6239SKiyoung Kim
1323*735d6239SKiyoung Kim
1324*735d6239SKiyoung Kim# func_source file
1325*735d6239SKiyoung Kim# Source FILE, adding directory component if necessary.
1326*735d6239SKiyoung Kim# Note that it is not necessary on cygwin/mingw to append a dot to
1327*735d6239SKiyoung Kim# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1328*735d6239SKiyoung Kim# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1329*735d6239SKiyoung Kim# `FILE.' does not work on cygwin managed mounts.
1330*735d6239SKiyoung Kimfunc_source ()
1331*735d6239SKiyoung Kim{
1332*735d6239SKiyoung Kim    $opt_debug
1333*735d6239SKiyoung Kim    case $1 in
1334*735d6239SKiyoung Kim    */* | *\\*)	. "$1" ;;
1335*735d6239SKiyoung Kim    *)		. "./$1" ;;
1336*735d6239SKiyoung Kim    esac
1337*735d6239SKiyoung Kim}
1338*735d6239SKiyoung Kim
1339*735d6239SKiyoung Kim
1340*735d6239SKiyoung Kim# func_resolve_sysroot PATH
1341*735d6239SKiyoung Kim# Replace a leading = in PATH with a sysroot.  Store the result into
1342*735d6239SKiyoung Kim# func_resolve_sysroot_result
1343*735d6239SKiyoung Kimfunc_resolve_sysroot ()
1344*735d6239SKiyoung Kim{
1345*735d6239SKiyoung Kim  func_resolve_sysroot_result=$1
1346*735d6239SKiyoung Kim  case $func_resolve_sysroot_result in
1347*735d6239SKiyoung Kim  =*)
1348*735d6239SKiyoung Kim    func_stripname '=' '' "$func_resolve_sysroot_result"
1349*735d6239SKiyoung Kim    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1350*735d6239SKiyoung Kim    ;;
1351*735d6239SKiyoung Kim  esac
1352*735d6239SKiyoung Kim}
1353*735d6239SKiyoung Kim
1354*735d6239SKiyoung Kim# func_replace_sysroot PATH
1355*735d6239SKiyoung Kim# If PATH begins with the sysroot, replace it with = and
1356*735d6239SKiyoung Kim# store the result into func_replace_sysroot_result.
1357*735d6239SKiyoung Kimfunc_replace_sysroot ()
1358*735d6239SKiyoung Kim{
1359*735d6239SKiyoung Kim  case "$lt_sysroot:$1" in
1360*735d6239SKiyoung Kim  ?*:"$lt_sysroot"*)
1361*735d6239SKiyoung Kim    func_stripname "$lt_sysroot" '' "$1"
1362*735d6239SKiyoung Kim    func_replace_sysroot_result="=$func_stripname_result"
1363*735d6239SKiyoung Kim    ;;
1364*735d6239SKiyoung Kim  *)
1365*735d6239SKiyoung Kim    # Including no sysroot.
1366*735d6239SKiyoung Kim    func_replace_sysroot_result=$1
1367*735d6239SKiyoung Kim    ;;
1368*735d6239SKiyoung Kim  esac
1369*735d6239SKiyoung Kim}
1370*735d6239SKiyoung Kim
1371*735d6239SKiyoung Kim# func_infer_tag arg
1372*735d6239SKiyoung Kim# Infer tagged configuration to use if any are available and
1373*735d6239SKiyoung Kim# if one wasn't chosen via the "--tag" command line option.
1374*735d6239SKiyoung Kim# Only attempt this if the compiler in the base compile
1375*735d6239SKiyoung Kim# command doesn't match the default compiler.
1376*735d6239SKiyoung Kim# arg is usually of the form 'gcc ...'
1377*735d6239SKiyoung Kimfunc_infer_tag ()
1378*735d6239SKiyoung Kim{
1379*735d6239SKiyoung Kim    $opt_debug
1380*735d6239SKiyoung Kim    if test -n "$available_tags" && test -z "$tagname"; then
1381*735d6239SKiyoung Kim      CC_quoted=
1382*735d6239SKiyoung Kim      for arg in $CC; do
1383*735d6239SKiyoung Kim	func_append_quoted CC_quoted "$arg"
1384*735d6239SKiyoung Kim      done
1385*735d6239SKiyoung Kim      CC_expanded=`func_echo_all $CC`
1386*735d6239SKiyoung Kim      CC_quoted_expanded=`func_echo_all $CC_quoted`
1387*735d6239SKiyoung Kim      case $@ in
1388*735d6239SKiyoung Kim      # Blanks in the command may have been stripped by the calling shell,
1389*735d6239SKiyoung Kim      # but not from the CC environment variable when configure was run.
1390*735d6239SKiyoung Kim      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1391*735d6239SKiyoung Kim      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1392*735d6239SKiyoung Kim      # Blanks at the start of $base_compile will cause this to fail
1393*735d6239SKiyoung Kim      # if we don't check for them as well.
1394*735d6239SKiyoung Kim      *)
1395*735d6239SKiyoung Kim	for z in $available_tags; do
1396*735d6239SKiyoung Kim	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1397*735d6239SKiyoung Kim	    # Evaluate the configuration.
1398*735d6239SKiyoung Kim	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1399*735d6239SKiyoung Kim	    CC_quoted=
1400*735d6239SKiyoung Kim	    for arg in $CC; do
1401*735d6239SKiyoung Kim	      # Double-quote args containing other shell metacharacters.
1402*735d6239SKiyoung Kim	      func_append_quoted CC_quoted "$arg"
1403*735d6239SKiyoung Kim	    done
1404*735d6239SKiyoung Kim	    CC_expanded=`func_echo_all $CC`
1405*735d6239SKiyoung Kim	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1406*735d6239SKiyoung Kim	    case "$@ " in
1407*735d6239SKiyoung Kim	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1408*735d6239SKiyoung Kim	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1409*735d6239SKiyoung Kim	      # The compiler in the base compile command matches
1410*735d6239SKiyoung Kim	      # the one in the tagged configuration.
1411*735d6239SKiyoung Kim	      # Assume this is the tagged configuration we want.
1412*735d6239SKiyoung Kim	      tagname=$z
1413*735d6239SKiyoung Kim	      break
1414*735d6239SKiyoung Kim	      ;;
1415*735d6239SKiyoung Kim	    esac
1416*735d6239SKiyoung Kim	  fi
1417*735d6239SKiyoung Kim	done
1418*735d6239SKiyoung Kim	# If $tagname still isn't set, then no tagged configuration
1419*735d6239SKiyoung Kim	# was found and let the user know that the "--tag" command
1420*735d6239SKiyoung Kim	# line option must be used.
1421*735d6239SKiyoung Kim	if test -z "$tagname"; then
1422*735d6239SKiyoung Kim	  func_echo "unable to infer tagged configuration"
1423*735d6239SKiyoung Kim	  func_fatal_error "specify a tag with \`--tag'"
1424*735d6239SKiyoung Kim#	else
1425*735d6239SKiyoung Kim#	  func_verbose "using $tagname tagged configuration"
1426*735d6239SKiyoung Kim	fi
1427*735d6239SKiyoung Kim	;;
1428*735d6239SKiyoung Kim      esac
1429*735d6239SKiyoung Kim    fi
1430*735d6239SKiyoung Kim}
1431*735d6239SKiyoung Kim
1432*735d6239SKiyoung Kim
1433*735d6239SKiyoung Kim
1434*735d6239SKiyoung Kim# func_write_libtool_object output_name pic_name nonpic_name
1435*735d6239SKiyoung Kim# Create a libtool object file (analogous to a ".la" file),
1436*735d6239SKiyoung Kim# but don't create it if we're doing a dry run.
1437*735d6239SKiyoung Kimfunc_write_libtool_object ()
1438*735d6239SKiyoung Kim{
1439*735d6239SKiyoung Kim    write_libobj=${1}
1440*735d6239SKiyoung Kim    if test "$build_libtool_libs" = yes; then
1441*735d6239SKiyoung Kim      write_lobj=\'${2}\'
1442*735d6239SKiyoung Kim    else
1443*735d6239SKiyoung Kim      write_lobj=none
1444*735d6239SKiyoung Kim    fi
1445*735d6239SKiyoung Kim
1446*735d6239SKiyoung Kim    if test "$build_old_libs" = yes; then
1447*735d6239SKiyoung Kim      write_oldobj=\'${3}\'
1448*735d6239SKiyoung Kim    else
1449*735d6239SKiyoung Kim      write_oldobj=none
1450*735d6239SKiyoung Kim    fi
1451*735d6239SKiyoung Kim
1452*735d6239SKiyoung Kim    $opt_dry_run || {
1453*735d6239SKiyoung Kim      cat >${write_libobj}T <<EOF
1454*735d6239SKiyoung Kim# $write_libobj - a libtool object file
1455*735d6239SKiyoung Kim# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1456*735d6239SKiyoung Kim#
1457*735d6239SKiyoung Kim# Please DO NOT delete this file!
1458*735d6239SKiyoung Kim# It is necessary for linking the library.
1459*735d6239SKiyoung Kim
1460*735d6239SKiyoung Kim# Name of the PIC object.
1461*735d6239SKiyoung Kimpic_object=$write_lobj
1462*735d6239SKiyoung Kim
1463*735d6239SKiyoung Kim# Name of the non-PIC object
1464*735d6239SKiyoung Kimnon_pic_object=$write_oldobj
1465*735d6239SKiyoung Kim
1466*735d6239SKiyoung KimEOF
1467*735d6239SKiyoung Kim      $MV "${write_libobj}T" "${write_libobj}"
1468*735d6239SKiyoung Kim    }
1469*735d6239SKiyoung Kim}
1470*735d6239SKiyoung Kim
1471*735d6239SKiyoung Kim
1472*735d6239SKiyoung Kim##################################################
1473*735d6239SKiyoung Kim# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1474*735d6239SKiyoung Kim##################################################
1475*735d6239SKiyoung Kim
1476*735d6239SKiyoung Kim# func_convert_core_file_wine_to_w32 ARG
1477*735d6239SKiyoung Kim# Helper function used by file name conversion functions when $build is *nix,
1478*735d6239SKiyoung Kim# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1479*735d6239SKiyoung Kim# correctly configured wine environment available, with the winepath program
1480*735d6239SKiyoung Kim# in $build's $PATH.
1481*735d6239SKiyoung Kim#
1482*735d6239SKiyoung Kim# ARG is the $build file name to be converted to w32 format.
1483*735d6239SKiyoung Kim# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1484*735d6239SKiyoung Kim# be empty on error (or when ARG is empty)
1485*735d6239SKiyoung Kimfunc_convert_core_file_wine_to_w32 ()
1486*735d6239SKiyoung Kim{
1487*735d6239SKiyoung Kim  $opt_debug
1488*735d6239SKiyoung Kim  func_convert_core_file_wine_to_w32_result="$1"
1489*735d6239SKiyoung Kim  if test -n "$1"; then
1490*735d6239SKiyoung Kim    # Unfortunately, winepath does not exit with a non-zero error code, so we
1491*735d6239SKiyoung Kim    # are forced to check the contents of stdout. On the other hand, if the
1492*735d6239SKiyoung Kim    # command is not found, the shell will set an exit code of 127 and print
1493*735d6239SKiyoung Kim    # *an error message* to stdout. So we must check for both error code of
1494*735d6239SKiyoung Kim    # zero AND non-empty stdout, which explains the odd construction:
1495*735d6239SKiyoung Kim    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1496*735d6239SKiyoung Kim    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1497*735d6239SKiyoung Kim      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1498*735d6239SKiyoung Kim        $SED -e "$lt_sed_naive_backslashify"`
1499*735d6239SKiyoung Kim    else
1500*735d6239SKiyoung Kim      func_convert_core_file_wine_to_w32_result=
1501*735d6239SKiyoung Kim    fi
1502*735d6239SKiyoung Kim  fi
1503*735d6239SKiyoung Kim}
1504*735d6239SKiyoung Kim# end: func_convert_core_file_wine_to_w32
1505*735d6239SKiyoung Kim
1506*735d6239SKiyoung Kim
1507*735d6239SKiyoung Kim# func_convert_core_path_wine_to_w32 ARG
1508*735d6239SKiyoung Kim# Helper function used by path conversion functions when $build is *nix, and
1509*735d6239SKiyoung Kim# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1510*735d6239SKiyoung Kim# configured wine environment available, with the winepath program in $build's
1511*735d6239SKiyoung Kim# $PATH. Assumes ARG has no leading or trailing path separator characters.
1512*735d6239SKiyoung Kim#
1513*735d6239SKiyoung Kim# ARG is path to be converted from $build format to win32.
1514*735d6239SKiyoung Kim# Result is available in $func_convert_core_path_wine_to_w32_result.
1515*735d6239SKiyoung Kim# Unconvertible file (directory) names in ARG are skipped; if no directory names
1516*735d6239SKiyoung Kim# are convertible, then the result may be empty.
1517*735d6239SKiyoung Kimfunc_convert_core_path_wine_to_w32 ()
1518*735d6239SKiyoung Kim{
1519*735d6239SKiyoung Kim  $opt_debug
1520*735d6239SKiyoung Kim  # unfortunately, winepath doesn't convert paths, only file names
1521*735d6239SKiyoung Kim  func_convert_core_path_wine_to_w32_result=""
1522*735d6239SKiyoung Kim  if test -n "$1"; then
1523*735d6239SKiyoung Kim    oldIFS=$IFS
1524*735d6239SKiyoung Kim    IFS=:
1525*735d6239SKiyoung Kim    for func_convert_core_path_wine_to_w32_f in $1; do
1526*735d6239SKiyoung Kim      IFS=$oldIFS
1527*735d6239SKiyoung Kim      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1528*735d6239SKiyoung Kim      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1529*735d6239SKiyoung Kim        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1530*735d6239SKiyoung Kim          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1531*735d6239SKiyoung Kim        else
1532*735d6239SKiyoung Kim          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1533*735d6239SKiyoung Kim        fi
1534*735d6239SKiyoung Kim      fi
1535*735d6239SKiyoung Kim    done
1536*735d6239SKiyoung Kim    IFS=$oldIFS
1537*735d6239SKiyoung Kim  fi
1538*735d6239SKiyoung Kim}
1539*735d6239SKiyoung Kim# end: func_convert_core_path_wine_to_w32
1540*735d6239SKiyoung Kim
1541*735d6239SKiyoung Kim
1542*735d6239SKiyoung Kim# func_cygpath ARGS...
1543*735d6239SKiyoung Kim# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1544*735d6239SKiyoung Kim# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1545*735d6239SKiyoung Kim# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1546*735d6239SKiyoung Kim# (2), returns the Cygwin file name or path in func_cygpath_result (input
1547*735d6239SKiyoung Kim# file name or path is assumed to be in w32 format, as previously converted
1548*735d6239SKiyoung Kim# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1549*735d6239SKiyoung Kim# or path in func_cygpath_result (input file name or path is assumed to be in
1550*735d6239SKiyoung Kim# Cygwin format). Returns an empty string on error.
1551*735d6239SKiyoung Kim#
1552*735d6239SKiyoung Kim# ARGS are passed to cygpath, with the last one being the file name or path to
1553*735d6239SKiyoung Kim# be converted.
1554*735d6239SKiyoung Kim#
1555*735d6239SKiyoung Kim# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1556*735d6239SKiyoung Kim# environment variable; do not put it in $PATH.
1557*735d6239SKiyoung Kimfunc_cygpath ()
1558*735d6239SKiyoung Kim{
1559*735d6239SKiyoung Kim  $opt_debug
1560*735d6239SKiyoung Kim  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1561*735d6239SKiyoung Kim    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1562*735d6239SKiyoung Kim    if test "$?" -ne 0; then
1563*735d6239SKiyoung Kim      # on failure, ensure result is empty
1564*735d6239SKiyoung Kim      func_cygpath_result=
1565*735d6239SKiyoung Kim    fi
1566*735d6239SKiyoung Kim  else
1567*735d6239SKiyoung Kim    func_cygpath_result=
1568*735d6239SKiyoung Kim    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1569*735d6239SKiyoung Kim  fi
1570*735d6239SKiyoung Kim}
1571*735d6239SKiyoung Kim#end: func_cygpath
1572*735d6239SKiyoung Kim
1573*735d6239SKiyoung Kim
1574*735d6239SKiyoung Kim# func_convert_core_msys_to_w32 ARG
1575*735d6239SKiyoung Kim# Convert file name or path ARG from MSYS format to w32 format.  Return
1576*735d6239SKiyoung Kim# result in func_convert_core_msys_to_w32_result.
1577*735d6239SKiyoung Kimfunc_convert_core_msys_to_w32 ()
1578*735d6239SKiyoung Kim{
1579*735d6239SKiyoung Kim  $opt_debug
1580*735d6239SKiyoung Kim  # awkward: cmd appends spaces to result
1581*735d6239SKiyoung Kim  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1582*735d6239SKiyoung Kim    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1583*735d6239SKiyoung Kim}
1584*735d6239SKiyoung Kim#end: func_convert_core_msys_to_w32
1585*735d6239SKiyoung Kim
1586*735d6239SKiyoung Kim
1587*735d6239SKiyoung Kim# func_convert_file_check ARG1 ARG2
1588*735d6239SKiyoung Kim# Verify that ARG1 (a file name in $build format) was converted to $host
1589*735d6239SKiyoung Kim# format in ARG2. Otherwise, emit an error message, but continue (resetting
1590*735d6239SKiyoung Kim# func_to_host_file_result to ARG1).
1591*735d6239SKiyoung Kimfunc_convert_file_check ()
1592*735d6239SKiyoung Kim{
1593*735d6239SKiyoung Kim  $opt_debug
1594*735d6239SKiyoung Kim  if test -z "$2" && test -n "$1" ; then
1595*735d6239SKiyoung Kim    func_error "Could not determine host file name corresponding to"
1596*735d6239SKiyoung Kim    func_error "  \`$1'"
1597*735d6239SKiyoung Kim    func_error "Continuing, but uninstalled executables may not work."
1598*735d6239SKiyoung Kim    # Fallback:
1599*735d6239SKiyoung Kim    func_to_host_file_result="$1"
1600*735d6239SKiyoung Kim  fi
1601*735d6239SKiyoung Kim}
1602*735d6239SKiyoung Kim# end func_convert_file_check
1603*735d6239SKiyoung Kim
1604*735d6239SKiyoung Kim
1605*735d6239SKiyoung Kim# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1606*735d6239SKiyoung Kim# Verify that FROM_PATH (a path in $build format) was converted to $host
1607*735d6239SKiyoung Kim# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1608*735d6239SKiyoung Kim# func_to_host_file_result to a simplistic fallback value (see below).
1609*735d6239SKiyoung Kimfunc_convert_path_check ()
1610*735d6239SKiyoung Kim{
1611*735d6239SKiyoung Kim  $opt_debug
1612*735d6239SKiyoung Kim  if test -z "$4" && test -n "$3"; then
1613*735d6239SKiyoung Kim    func_error "Could not determine the host path corresponding to"
1614*735d6239SKiyoung Kim    func_error "  \`$3'"
1615*735d6239SKiyoung Kim    func_error "Continuing, but uninstalled executables may not work."
1616*735d6239SKiyoung Kim    # Fallback.  This is a deliberately simplistic "conversion" and
1617*735d6239SKiyoung Kim    # should not be "improved".  See libtool.info.
1618*735d6239SKiyoung Kim    if test "x$1" != "x$2"; then
1619*735d6239SKiyoung Kim      lt_replace_pathsep_chars="s|$1|$2|g"
1620*735d6239SKiyoung Kim      func_to_host_path_result=`echo "$3" |
1621*735d6239SKiyoung Kim        $SED -e "$lt_replace_pathsep_chars"`
1622*735d6239SKiyoung Kim    else
1623*735d6239SKiyoung Kim      func_to_host_path_result="$3"
1624*735d6239SKiyoung Kim    fi
1625*735d6239SKiyoung Kim  fi
1626*735d6239SKiyoung Kim}
1627*735d6239SKiyoung Kim# end func_convert_path_check
1628*735d6239SKiyoung Kim
1629*735d6239SKiyoung Kim
1630*735d6239SKiyoung Kim# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1631*735d6239SKiyoung Kim# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1632*735d6239SKiyoung Kim# and appending REPL if ORIG matches BACKPAT.
1633*735d6239SKiyoung Kimfunc_convert_path_front_back_pathsep ()
1634*735d6239SKiyoung Kim{
1635*735d6239SKiyoung Kim  $opt_debug
1636*735d6239SKiyoung Kim  case $4 in
1637*735d6239SKiyoung Kim  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1638*735d6239SKiyoung Kim    ;;
1639*735d6239SKiyoung Kim  esac
1640*735d6239SKiyoung Kim  case $4 in
1641*735d6239SKiyoung Kim  $2 ) func_append func_to_host_path_result "$3"
1642*735d6239SKiyoung Kim    ;;
1643*735d6239SKiyoung Kim  esac
1644*735d6239SKiyoung Kim}
1645*735d6239SKiyoung Kim# end func_convert_path_front_back_pathsep
1646*735d6239SKiyoung Kim
1647*735d6239SKiyoung Kim
1648*735d6239SKiyoung Kim##################################################
1649*735d6239SKiyoung Kim# $build to $host FILE NAME CONVERSION FUNCTIONS #
1650*735d6239SKiyoung Kim##################################################
1651*735d6239SKiyoung Kim# invoked via `$to_host_file_cmd ARG'
1652*735d6239SKiyoung Kim#
1653*735d6239SKiyoung Kim# In each case, ARG is the path to be converted from $build to $host format.
1654*735d6239SKiyoung Kim# Result will be available in $func_to_host_file_result.
1655*735d6239SKiyoung Kim
1656*735d6239SKiyoung Kim
1657*735d6239SKiyoung Kim# func_to_host_file ARG
1658*735d6239SKiyoung Kim# Converts the file name ARG from $build format to $host format. Return result
1659*735d6239SKiyoung Kim# in func_to_host_file_result.
1660*735d6239SKiyoung Kimfunc_to_host_file ()
1661*735d6239SKiyoung Kim{
1662*735d6239SKiyoung Kim  $opt_debug
1663*735d6239SKiyoung Kim  $to_host_file_cmd "$1"
1664*735d6239SKiyoung Kim}
1665*735d6239SKiyoung Kim# end func_to_host_file
1666*735d6239SKiyoung Kim
1667*735d6239SKiyoung Kim
1668*735d6239SKiyoung Kim# func_to_tool_file ARG LAZY
1669*735d6239SKiyoung Kim# converts the file name ARG from $build format to toolchain format. Return
1670*735d6239SKiyoung Kim# result in func_to_tool_file_result.  If the conversion in use is listed
1671*735d6239SKiyoung Kim# in (the comma separated) LAZY, no conversion takes place.
1672*735d6239SKiyoung Kimfunc_to_tool_file ()
1673*735d6239SKiyoung Kim{
1674*735d6239SKiyoung Kim  $opt_debug
1675*735d6239SKiyoung Kim  case ,$2, in
1676*735d6239SKiyoung Kim    *,"$to_tool_file_cmd",*)
1677*735d6239SKiyoung Kim      func_to_tool_file_result=$1
1678*735d6239SKiyoung Kim      ;;
1679*735d6239SKiyoung Kim    *)
1680*735d6239SKiyoung Kim      $to_tool_file_cmd "$1"
1681*735d6239SKiyoung Kim      func_to_tool_file_result=$func_to_host_file_result
1682*735d6239SKiyoung Kim      ;;
1683*735d6239SKiyoung Kim  esac
1684*735d6239SKiyoung Kim}
1685*735d6239SKiyoung Kim# end func_to_tool_file
1686*735d6239SKiyoung Kim
1687*735d6239SKiyoung Kim
1688*735d6239SKiyoung Kim# func_convert_file_noop ARG
1689*735d6239SKiyoung Kim# Copy ARG to func_to_host_file_result.
1690*735d6239SKiyoung Kimfunc_convert_file_noop ()
1691*735d6239SKiyoung Kim{
1692*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1693*735d6239SKiyoung Kim}
1694*735d6239SKiyoung Kim# end func_convert_file_noop
1695*735d6239SKiyoung Kim
1696*735d6239SKiyoung Kim
1697*735d6239SKiyoung Kim# func_convert_file_msys_to_w32 ARG
1698*735d6239SKiyoung Kim# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1699*735d6239SKiyoung Kim# conversion to w32 is not available inside the cwrapper.  Returns result in
1700*735d6239SKiyoung Kim# func_to_host_file_result.
1701*735d6239SKiyoung Kimfunc_convert_file_msys_to_w32 ()
1702*735d6239SKiyoung Kim{
1703*735d6239SKiyoung Kim  $opt_debug
1704*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1705*735d6239SKiyoung Kim  if test -n "$1"; then
1706*735d6239SKiyoung Kim    func_convert_core_msys_to_w32 "$1"
1707*735d6239SKiyoung Kim    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1708*735d6239SKiyoung Kim  fi
1709*735d6239SKiyoung Kim  func_convert_file_check "$1" "$func_to_host_file_result"
1710*735d6239SKiyoung Kim}
1711*735d6239SKiyoung Kim# end func_convert_file_msys_to_w32
1712*735d6239SKiyoung Kim
1713*735d6239SKiyoung Kim
1714*735d6239SKiyoung Kim# func_convert_file_cygwin_to_w32 ARG
1715*735d6239SKiyoung Kim# Convert file name ARG from Cygwin to w32 format.  Returns result in
1716*735d6239SKiyoung Kim# func_to_host_file_result.
1717*735d6239SKiyoung Kimfunc_convert_file_cygwin_to_w32 ()
1718*735d6239SKiyoung Kim{
1719*735d6239SKiyoung Kim  $opt_debug
1720*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1721*735d6239SKiyoung Kim  if test -n "$1"; then
1722*735d6239SKiyoung Kim    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1723*735d6239SKiyoung Kim    # LT_CYGPATH in this case.
1724*735d6239SKiyoung Kim    func_to_host_file_result=`cygpath -m "$1"`
1725*735d6239SKiyoung Kim  fi
1726*735d6239SKiyoung Kim  func_convert_file_check "$1" "$func_to_host_file_result"
1727*735d6239SKiyoung Kim}
1728*735d6239SKiyoung Kim# end func_convert_file_cygwin_to_w32
1729*735d6239SKiyoung Kim
1730*735d6239SKiyoung Kim
1731*735d6239SKiyoung Kim# func_convert_file_nix_to_w32 ARG
1732*735d6239SKiyoung Kim# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1733*735d6239SKiyoung Kim# and a working winepath. Returns result in func_to_host_file_result.
1734*735d6239SKiyoung Kimfunc_convert_file_nix_to_w32 ()
1735*735d6239SKiyoung Kim{
1736*735d6239SKiyoung Kim  $opt_debug
1737*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1738*735d6239SKiyoung Kim  if test -n "$1"; then
1739*735d6239SKiyoung Kim    func_convert_core_file_wine_to_w32 "$1"
1740*735d6239SKiyoung Kim    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1741*735d6239SKiyoung Kim  fi
1742*735d6239SKiyoung Kim  func_convert_file_check "$1" "$func_to_host_file_result"
1743*735d6239SKiyoung Kim}
1744*735d6239SKiyoung Kim# end func_convert_file_nix_to_w32
1745*735d6239SKiyoung Kim
1746*735d6239SKiyoung Kim
1747*735d6239SKiyoung Kim# func_convert_file_msys_to_cygwin ARG
1748*735d6239SKiyoung Kim# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1749*735d6239SKiyoung Kim# Returns result in func_to_host_file_result.
1750*735d6239SKiyoung Kimfunc_convert_file_msys_to_cygwin ()
1751*735d6239SKiyoung Kim{
1752*735d6239SKiyoung Kim  $opt_debug
1753*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1754*735d6239SKiyoung Kim  if test -n "$1"; then
1755*735d6239SKiyoung Kim    func_convert_core_msys_to_w32 "$1"
1756*735d6239SKiyoung Kim    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1757*735d6239SKiyoung Kim    func_to_host_file_result="$func_cygpath_result"
1758*735d6239SKiyoung Kim  fi
1759*735d6239SKiyoung Kim  func_convert_file_check "$1" "$func_to_host_file_result"
1760*735d6239SKiyoung Kim}
1761*735d6239SKiyoung Kim# end func_convert_file_msys_to_cygwin
1762*735d6239SKiyoung Kim
1763*735d6239SKiyoung Kim
1764*735d6239SKiyoung Kim# func_convert_file_nix_to_cygwin ARG
1765*735d6239SKiyoung Kim# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1766*735d6239SKiyoung Kim# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1767*735d6239SKiyoung Kim# in func_to_host_file_result.
1768*735d6239SKiyoung Kimfunc_convert_file_nix_to_cygwin ()
1769*735d6239SKiyoung Kim{
1770*735d6239SKiyoung Kim  $opt_debug
1771*735d6239SKiyoung Kim  func_to_host_file_result="$1"
1772*735d6239SKiyoung Kim  if test -n "$1"; then
1773*735d6239SKiyoung Kim    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1774*735d6239SKiyoung Kim    func_convert_core_file_wine_to_w32 "$1"
1775*735d6239SKiyoung Kim    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1776*735d6239SKiyoung Kim    func_to_host_file_result="$func_cygpath_result"
1777*735d6239SKiyoung Kim  fi
1778*735d6239SKiyoung Kim  func_convert_file_check "$1" "$func_to_host_file_result"
1779*735d6239SKiyoung Kim}
1780*735d6239SKiyoung Kim# end func_convert_file_nix_to_cygwin
1781*735d6239SKiyoung Kim
1782*735d6239SKiyoung Kim
1783*735d6239SKiyoung Kim#############################################
1784*735d6239SKiyoung Kim# $build to $host PATH CONVERSION FUNCTIONS #
1785*735d6239SKiyoung Kim#############################################
1786*735d6239SKiyoung Kim# invoked via `$to_host_path_cmd ARG'
1787*735d6239SKiyoung Kim#
1788*735d6239SKiyoung Kim# In each case, ARG is the path to be converted from $build to $host format.
1789*735d6239SKiyoung Kim# The result will be available in $func_to_host_path_result.
1790*735d6239SKiyoung Kim#
1791*735d6239SKiyoung Kim# Path separators are also converted from $build format to $host format.  If
1792*735d6239SKiyoung Kim# ARG begins or ends with a path separator character, it is preserved (but
1793*735d6239SKiyoung Kim# converted to $host format) on output.
1794*735d6239SKiyoung Kim#
1795*735d6239SKiyoung Kim# All path conversion functions are named using the following convention:
1796*735d6239SKiyoung Kim#   file name conversion function    : func_convert_file_X_to_Y ()
1797*735d6239SKiyoung Kim#   path conversion function         : func_convert_path_X_to_Y ()
1798*735d6239SKiyoung Kim# where, for any given $build/$host combination the 'X_to_Y' value is the
1799*735d6239SKiyoung Kim# same.  If conversion functions are added for new $build/$host combinations,
1800*735d6239SKiyoung Kim# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1801*735d6239SKiyoung Kim# will break.
1802*735d6239SKiyoung Kim
1803*735d6239SKiyoung Kim
1804*735d6239SKiyoung Kim# func_init_to_host_path_cmd
1805*735d6239SKiyoung Kim# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1806*735d6239SKiyoung Kim# appropriate value, based on the value of $to_host_file_cmd.
1807*735d6239SKiyoung Kimto_host_path_cmd=
1808*735d6239SKiyoung Kimfunc_init_to_host_path_cmd ()
1809*735d6239SKiyoung Kim{
1810*735d6239SKiyoung Kim  $opt_debug
1811*735d6239SKiyoung Kim  if test -z "$to_host_path_cmd"; then
1812*735d6239SKiyoung Kim    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1813*735d6239SKiyoung Kim    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1814*735d6239SKiyoung Kim  fi
1815*735d6239SKiyoung Kim}
1816*735d6239SKiyoung Kim
1817*735d6239SKiyoung Kim
1818*735d6239SKiyoung Kim# func_to_host_path ARG
1819*735d6239SKiyoung Kim# Converts the path ARG from $build format to $host format. Return result
1820*735d6239SKiyoung Kim# in func_to_host_path_result.
1821*735d6239SKiyoung Kimfunc_to_host_path ()
1822*735d6239SKiyoung Kim{
1823*735d6239SKiyoung Kim  $opt_debug
1824*735d6239SKiyoung Kim  func_init_to_host_path_cmd
1825*735d6239SKiyoung Kim  $to_host_path_cmd "$1"
1826*735d6239SKiyoung Kim}
1827*735d6239SKiyoung Kim# end func_to_host_path
1828*735d6239SKiyoung Kim
1829*735d6239SKiyoung Kim
1830*735d6239SKiyoung Kim# func_convert_path_noop ARG
1831*735d6239SKiyoung Kim# Copy ARG to func_to_host_path_result.
1832*735d6239SKiyoung Kimfunc_convert_path_noop ()
1833*735d6239SKiyoung Kim{
1834*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1835*735d6239SKiyoung Kim}
1836*735d6239SKiyoung Kim# end func_convert_path_noop
1837*735d6239SKiyoung Kim
1838*735d6239SKiyoung Kim
1839*735d6239SKiyoung Kim# func_convert_path_msys_to_w32 ARG
1840*735d6239SKiyoung Kim# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1841*735d6239SKiyoung Kim# conversion to w32 is not available inside the cwrapper.  Returns result in
1842*735d6239SKiyoung Kim# func_to_host_path_result.
1843*735d6239SKiyoung Kimfunc_convert_path_msys_to_w32 ()
1844*735d6239SKiyoung Kim{
1845*735d6239SKiyoung Kim  $opt_debug
1846*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1847*735d6239SKiyoung Kim  if test -n "$1"; then
1848*735d6239SKiyoung Kim    # Remove leading and trailing path separator characters from ARG.  MSYS
1849*735d6239SKiyoung Kim    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1850*735d6239SKiyoung Kim    # and winepath ignores them completely.
1851*735d6239SKiyoung Kim    func_stripname : : "$1"
1852*735d6239SKiyoung Kim    func_to_host_path_tmp1=$func_stripname_result
1853*735d6239SKiyoung Kim    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1854*735d6239SKiyoung Kim    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1855*735d6239SKiyoung Kim    func_convert_path_check : ";" \
1856*735d6239SKiyoung Kim      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1857*735d6239SKiyoung Kim    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1858*735d6239SKiyoung Kim  fi
1859*735d6239SKiyoung Kim}
1860*735d6239SKiyoung Kim# end func_convert_path_msys_to_w32
1861*735d6239SKiyoung Kim
1862*735d6239SKiyoung Kim
1863*735d6239SKiyoung Kim# func_convert_path_cygwin_to_w32 ARG
1864*735d6239SKiyoung Kim# Convert path ARG from Cygwin to w32 format.  Returns result in
1865*735d6239SKiyoung Kim# func_to_host_file_result.
1866*735d6239SKiyoung Kimfunc_convert_path_cygwin_to_w32 ()
1867*735d6239SKiyoung Kim{
1868*735d6239SKiyoung Kim  $opt_debug
1869*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1870*735d6239SKiyoung Kim  if test -n "$1"; then
1871*735d6239SKiyoung Kim    # See func_convert_path_msys_to_w32:
1872*735d6239SKiyoung Kim    func_stripname : : "$1"
1873*735d6239SKiyoung Kim    func_to_host_path_tmp1=$func_stripname_result
1874*735d6239SKiyoung Kim    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1875*735d6239SKiyoung Kim    func_convert_path_check : ";" \
1876*735d6239SKiyoung Kim      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1877*735d6239SKiyoung Kim    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1878*735d6239SKiyoung Kim  fi
1879*735d6239SKiyoung Kim}
1880*735d6239SKiyoung Kim# end func_convert_path_cygwin_to_w32
1881*735d6239SKiyoung Kim
1882*735d6239SKiyoung Kim
1883*735d6239SKiyoung Kim# func_convert_path_nix_to_w32 ARG
1884*735d6239SKiyoung Kim# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1885*735d6239SKiyoung Kim# a working winepath.  Returns result in func_to_host_file_result.
1886*735d6239SKiyoung Kimfunc_convert_path_nix_to_w32 ()
1887*735d6239SKiyoung Kim{
1888*735d6239SKiyoung Kim  $opt_debug
1889*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1890*735d6239SKiyoung Kim  if test -n "$1"; then
1891*735d6239SKiyoung Kim    # See func_convert_path_msys_to_w32:
1892*735d6239SKiyoung Kim    func_stripname : : "$1"
1893*735d6239SKiyoung Kim    func_to_host_path_tmp1=$func_stripname_result
1894*735d6239SKiyoung Kim    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1895*735d6239SKiyoung Kim    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1896*735d6239SKiyoung Kim    func_convert_path_check : ";" \
1897*735d6239SKiyoung Kim      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1898*735d6239SKiyoung Kim    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1899*735d6239SKiyoung Kim  fi
1900*735d6239SKiyoung Kim}
1901*735d6239SKiyoung Kim# end func_convert_path_nix_to_w32
1902*735d6239SKiyoung Kim
1903*735d6239SKiyoung Kim
1904*735d6239SKiyoung Kim# func_convert_path_msys_to_cygwin ARG
1905*735d6239SKiyoung Kim# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1906*735d6239SKiyoung Kim# Returns result in func_to_host_file_result.
1907*735d6239SKiyoung Kimfunc_convert_path_msys_to_cygwin ()
1908*735d6239SKiyoung Kim{
1909*735d6239SKiyoung Kim  $opt_debug
1910*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1911*735d6239SKiyoung Kim  if test -n "$1"; then
1912*735d6239SKiyoung Kim    # See func_convert_path_msys_to_w32:
1913*735d6239SKiyoung Kim    func_stripname : : "$1"
1914*735d6239SKiyoung Kim    func_to_host_path_tmp1=$func_stripname_result
1915*735d6239SKiyoung Kim    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1916*735d6239SKiyoung Kim    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1917*735d6239SKiyoung Kim    func_to_host_path_result="$func_cygpath_result"
1918*735d6239SKiyoung Kim    func_convert_path_check : : \
1919*735d6239SKiyoung Kim      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1920*735d6239SKiyoung Kim    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1921*735d6239SKiyoung Kim  fi
1922*735d6239SKiyoung Kim}
1923*735d6239SKiyoung Kim# end func_convert_path_msys_to_cygwin
1924*735d6239SKiyoung Kim
1925*735d6239SKiyoung Kim
1926*735d6239SKiyoung Kim# func_convert_path_nix_to_cygwin ARG
1927*735d6239SKiyoung Kim# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1928*735d6239SKiyoung Kim# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1929*735d6239SKiyoung Kim# func_to_host_file_result.
1930*735d6239SKiyoung Kimfunc_convert_path_nix_to_cygwin ()
1931*735d6239SKiyoung Kim{
1932*735d6239SKiyoung Kim  $opt_debug
1933*735d6239SKiyoung Kim  func_to_host_path_result="$1"
1934*735d6239SKiyoung Kim  if test -n "$1"; then
1935*735d6239SKiyoung Kim    # Remove leading and trailing path separator characters from
1936*735d6239SKiyoung Kim    # ARG. msys behavior is inconsistent here, cygpath turns them
1937*735d6239SKiyoung Kim    # into '.;' and ';.', and winepath ignores them completely.
1938*735d6239SKiyoung Kim    func_stripname : : "$1"
1939*735d6239SKiyoung Kim    func_to_host_path_tmp1=$func_stripname_result
1940*735d6239SKiyoung Kim    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1941*735d6239SKiyoung Kim    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1942*735d6239SKiyoung Kim    func_to_host_path_result="$func_cygpath_result"
1943*735d6239SKiyoung Kim    func_convert_path_check : : \
1944*735d6239SKiyoung Kim      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1945*735d6239SKiyoung Kim    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1946*735d6239SKiyoung Kim  fi
1947*735d6239SKiyoung Kim}
1948*735d6239SKiyoung Kim# end func_convert_path_nix_to_cygwin
1949*735d6239SKiyoung Kim
1950*735d6239SKiyoung Kim
1951*735d6239SKiyoung Kim# func_mode_compile arg...
1952*735d6239SKiyoung Kimfunc_mode_compile ()
1953*735d6239SKiyoung Kim{
1954*735d6239SKiyoung Kim    $opt_debug
1955*735d6239SKiyoung Kim    # Get the compilation command and the source file.
1956*735d6239SKiyoung Kim    base_compile=
1957*735d6239SKiyoung Kim    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1958*735d6239SKiyoung Kim    suppress_opt=yes
1959*735d6239SKiyoung Kim    suppress_output=
1960*735d6239SKiyoung Kim    arg_mode=normal
1961*735d6239SKiyoung Kim    libobj=
1962*735d6239SKiyoung Kim    later=
1963*735d6239SKiyoung Kim    pie_flag=
1964*735d6239SKiyoung Kim
1965*735d6239SKiyoung Kim    for arg
1966*735d6239SKiyoung Kim    do
1967*735d6239SKiyoung Kim      case $arg_mode in
1968*735d6239SKiyoung Kim      arg  )
1969*735d6239SKiyoung Kim	# do not "continue".  Instead, add this to base_compile
1970*735d6239SKiyoung Kim	lastarg="$arg"
1971*735d6239SKiyoung Kim	arg_mode=normal
1972*735d6239SKiyoung Kim	;;
1973*735d6239SKiyoung Kim
1974*735d6239SKiyoung Kim      target )
1975*735d6239SKiyoung Kim	libobj="$arg"
1976*735d6239SKiyoung Kim	arg_mode=normal
1977*735d6239SKiyoung Kim	continue
1978*735d6239SKiyoung Kim	;;
1979*735d6239SKiyoung Kim
1980*735d6239SKiyoung Kim      normal )
1981*735d6239SKiyoung Kim	# Accept any command-line options.
1982*735d6239SKiyoung Kim	case $arg in
1983*735d6239SKiyoung Kim	-o)
1984*735d6239SKiyoung Kim	  test -n "$libobj" && \
1985*735d6239SKiyoung Kim	    func_fatal_error "you cannot specify \`-o' more than once"
1986*735d6239SKiyoung Kim	  arg_mode=target
1987*735d6239SKiyoung Kim	  continue
1988*735d6239SKiyoung Kim	  ;;
1989*735d6239SKiyoung Kim
1990*735d6239SKiyoung Kim	-pie | -fpie | -fPIE)
1991*735d6239SKiyoung Kim          func_append pie_flag " $arg"
1992*735d6239SKiyoung Kim	  continue
1993*735d6239SKiyoung Kim	  ;;
1994*735d6239SKiyoung Kim
1995*735d6239SKiyoung Kim	-shared | -static | -prefer-pic | -prefer-non-pic)
1996*735d6239SKiyoung Kim	  func_append later " $arg"
1997*735d6239SKiyoung Kim	  continue
1998*735d6239SKiyoung Kim	  ;;
1999*735d6239SKiyoung Kim
2000*735d6239SKiyoung Kim	-no-suppress)
2001*735d6239SKiyoung Kim	  suppress_opt=no
2002*735d6239SKiyoung Kim	  continue
2003*735d6239SKiyoung Kim	  ;;
2004*735d6239SKiyoung Kim
2005*735d6239SKiyoung Kim	-Xcompiler)
2006*735d6239SKiyoung Kim	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2007*735d6239SKiyoung Kim	  continue      #  The current "srcfile" will either be retained or
2008*735d6239SKiyoung Kim	  ;;            #  replaced later.  I would guess that would be a bug.
2009*735d6239SKiyoung Kim
2010*735d6239SKiyoung Kim	-Wc,*)
2011*735d6239SKiyoung Kim	  func_stripname '-Wc,' '' "$arg"
2012*735d6239SKiyoung Kim	  args=$func_stripname_result
2013*735d6239SKiyoung Kim	  lastarg=
2014*735d6239SKiyoung Kim	  save_ifs="$IFS"; IFS=','
2015*735d6239SKiyoung Kim	  for arg in $args; do
2016*735d6239SKiyoung Kim	    IFS="$save_ifs"
2017*735d6239SKiyoung Kim	    func_append_quoted lastarg "$arg"
2018*735d6239SKiyoung Kim	  done
2019*735d6239SKiyoung Kim	  IFS="$save_ifs"
2020*735d6239SKiyoung Kim	  func_stripname ' ' '' "$lastarg"
2021*735d6239SKiyoung Kim	  lastarg=$func_stripname_result
2022*735d6239SKiyoung Kim
2023*735d6239SKiyoung Kim	  # Add the arguments to base_compile.
2024*735d6239SKiyoung Kim	  func_append base_compile " $lastarg"
2025*735d6239SKiyoung Kim	  continue
2026*735d6239SKiyoung Kim	  ;;
2027*735d6239SKiyoung Kim
2028*735d6239SKiyoung Kim	*)
2029*735d6239SKiyoung Kim	  # Accept the current argument as the source file.
2030*735d6239SKiyoung Kim	  # The previous "srcfile" becomes the current argument.
2031*735d6239SKiyoung Kim	  #
2032*735d6239SKiyoung Kim	  lastarg="$srcfile"
2033*735d6239SKiyoung Kim	  srcfile="$arg"
2034*735d6239SKiyoung Kim	  ;;
2035*735d6239SKiyoung Kim	esac  #  case $arg
2036*735d6239SKiyoung Kim	;;
2037*735d6239SKiyoung Kim      esac    #  case $arg_mode
2038*735d6239SKiyoung Kim
2039*735d6239SKiyoung Kim      # Aesthetically quote the previous argument.
2040*735d6239SKiyoung Kim      func_append_quoted base_compile "$lastarg"
2041*735d6239SKiyoung Kim    done # for arg
2042*735d6239SKiyoung Kim
2043*735d6239SKiyoung Kim    case $arg_mode in
2044*735d6239SKiyoung Kim    arg)
2045*735d6239SKiyoung Kim      func_fatal_error "you must specify an argument for -Xcompile"
2046*735d6239SKiyoung Kim      ;;
2047*735d6239SKiyoung Kim    target)
2048*735d6239SKiyoung Kim      func_fatal_error "you must specify a target with \`-o'"
2049*735d6239SKiyoung Kim      ;;
2050*735d6239SKiyoung Kim    *)
2051*735d6239SKiyoung Kim      # Get the name of the library object.
2052*735d6239SKiyoung Kim      test -z "$libobj" && {
2053*735d6239SKiyoung Kim	func_basename "$srcfile"
2054*735d6239SKiyoung Kim	libobj="$func_basename_result"
2055*735d6239SKiyoung Kim      }
2056*735d6239SKiyoung Kim      ;;
2057*735d6239SKiyoung Kim    esac
2058*735d6239SKiyoung Kim
2059*735d6239SKiyoung Kim    # Recognize several different file suffixes.
2060*735d6239SKiyoung Kim    # If the user specifies -o file.o, it is replaced with file.lo
2061*735d6239SKiyoung Kim    case $libobj in
2062*735d6239SKiyoung Kim    *.[cCFSifmso] | \
2063*735d6239SKiyoung Kim    *.ada | *.adb | *.ads | *.asm | \
2064*735d6239SKiyoung Kim    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2065*735d6239SKiyoung Kim    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
2066*735d6239SKiyoung Kim      func_xform "$libobj"
2067*735d6239SKiyoung Kim      libobj=$func_xform_result
2068*735d6239SKiyoung Kim      ;;
2069*735d6239SKiyoung Kim    esac
2070*735d6239SKiyoung Kim
2071*735d6239SKiyoung Kim    case $libobj in
2072*735d6239SKiyoung Kim    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2073*735d6239SKiyoung Kim    *)
2074*735d6239SKiyoung Kim      func_fatal_error "cannot determine name of library object from \`$libobj'"
2075*735d6239SKiyoung Kim      ;;
2076*735d6239SKiyoung Kim    esac
2077*735d6239SKiyoung Kim
2078*735d6239SKiyoung Kim    func_infer_tag $base_compile
2079*735d6239SKiyoung Kim
2080*735d6239SKiyoung Kim    for arg in $later; do
2081*735d6239SKiyoung Kim      case $arg in
2082*735d6239SKiyoung Kim      -shared)
2083*735d6239SKiyoung Kim	test "$build_libtool_libs" != yes && \
2084*735d6239SKiyoung Kim	  func_fatal_configuration "can not build a shared library"
2085*735d6239SKiyoung Kim	build_old_libs=no
2086*735d6239SKiyoung Kim	continue
2087*735d6239SKiyoung Kim	;;
2088*735d6239SKiyoung Kim
2089*735d6239SKiyoung Kim      -static)
2090*735d6239SKiyoung Kim	build_libtool_libs=no
2091*735d6239SKiyoung Kim	build_old_libs=yes
2092*735d6239SKiyoung Kim	continue
2093*735d6239SKiyoung Kim	;;
2094*735d6239SKiyoung Kim
2095*735d6239SKiyoung Kim      -prefer-pic)
2096*735d6239SKiyoung Kim	pic_mode=yes
2097*735d6239SKiyoung Kim	continue
2098*735d6239SKiyoung Kim	;;
2099*735d6239SKiyoung Kim
2100*735d6239SKiyoung Kim      -prefer-non-pic)
2101*735d6239SKiyoung Kim	pic_mode=no
2102*735d6239SKiyoung Kim	continue
2103*735d6239SKiyoung Kim	;;
2104*735d6239SKiyoung Kim      esac
2105*735d6239SKiyoung Kim    done
2106*735d6239SKiyoung Kim
2107*735d6239SKiyoung Kim    func_quote_for_eval "$libobj"
2108*735d6239SKiyoung Kim    test "X$libobj" != "X$func_quote_for_eval_result" \
2109*735d6239SKiyoung Kim      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2110*735d6239SKiyoung Kim      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2111*735d6239SKiyoung Kim    func_dirname_and_basename "$obj" "/" ""
2112*735d6239SKiyoung Kim    objname="$func_basename_result"
2113*735d6239SKiyoung Kim    xdir="$func_dirname_result"
2114*735d6239SKiyoung Kim    lobj=${xdir}$objdir/$objname
2115*735d6239SKiyoung Kim
2116*735d6239SKiyoung Kim    test -z "$base_compile" && \
2117*735d6239SKiyoung Kim      func_fatal_help "you must specify a compilation command"
2118*735d6239SKiyoung Kim
2119*735d6239SKiyoung Kim    # Delete any leftover library objects.
2120*735d6239SKiyoung Kim    if test "$build_old_libs" = yes; then
2121*735d6239SKiyoung Kim      removelist="$obj $lobj $libobj ${libobj}T"
2122*735d6239SKiyoung Kim    else
2123*735d6239SKiyoung Kim      removelist="$lobj $libobj ${libobj}T"
2124*735d6239SKiyoung Kim    fi
2125*735d6239SKiyoung Kim
2126*735d6239SKiyoung Kim    # On Cygwin there's no "real" PIC flag so we must build both object types
2127*735d6239SKiyoung Kim    case $host_os in
2128*735d6239SKiyoung Kim    cygwin* | mingw* | pw32* | os2* | cegcc*)
2129*735d6239SKiyoung Kim      pic_mode=default
2130*735d6239SKiyoung Kim      ;;
2131*735d6239SKiyoung Kim    esac
2132*735d6239SKiyoung Kim    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2133*735d6239SKiyoung Kim      # non-PIC code in shared libraries is not supported
2134*735d6239SKiyoung Kim      pic_mode=default
2135*735d6239SKiyoung Kim    fi
2136*735d6239SKiyoung Kim
2137*735d6239SKiyoung Kim    # Calculate the filename of the output object if compiler does
2138*735d6239SKiyoung Kim    # not support -o with -c
2139*735d6239SKiyoung Kim    if test "$compiler_c_o" = no; then
2140*735d6239SKiyoung Kim      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2141*735d6239SKiyoung Kim      lockfile="$output_obj.lock"
2142*735d6239SKiyoung Kim    else
2143*735d6239SKiyoung Kim      output_obj=
2144*735d6239SKiyoung Kim      need_locks=no
2145*735d6239SKiyoung Kim      lockfile=
2146*735d6239SKiyoung Kim    fi
2147*735d6239SKiyoung Kim
2148*735d6239SKiyoung Kim    # Lock this critical section if it is needed
2149*735d6239SKiyoung Kim    # We use this script file to make the link, it avoids creating a new file
2150*735d6239SKiyoung Kim    if test "$need_locks" = yes; then
2151*735d6239SKiyoung Kim      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2152*735d6239SKiyoung Kim	func_echo "Waiting for $lockfile to be removed"
2153*735d6239SKiyoung Kim	sleep 2
2154*735d6239SKiyoung Kim      done
2155*735d6239SKiyoung Kim    elif test "$need_locks" = warn; then
2156*735d6239SKiyoung Kim      if test -f "$lockfile"; then
2157*735d6239SKiyoung Kim	$ECHO "\
2158*735d6239SKiyoung Kim*** ERROR, $lockfile exists and contains:
2159*735d6239SKiyoung Kim`cat $lockfile 2>/dev/null`
2160*735d6239SKiyoung Kim
2161*735d6239SKiyoung KimThis indicates that another process is trying to use the same
2162*735d6239SKiyoung Kimtemporary object file, and libtool could not work around it because
2163*735d6239SKiyoung Kimyour compiler does not support \`-c' and \`-o' together.  If you
2164*735d6239SKiyoung Kimrepeat this compilation, it may succeed, by chance, but you had better
2165*735d6239SKiyoung Kimavoid parallel builds (make -j) in this platform, or get a better
2166*735d6239SKiyoung Kimcompiler."
2167*735d6239SKiyoung Kim
2168*735d6239SKiyoung Kim	$opt_dry_run || $RM $removelist
2169*735d6239SKiyoung Kim	exit $EXIT_FAILURE
2170*735d6239SKiyoung Kim      fi
2171*735d6239SKiyoung Kim      func_append removelist " $output_obj"
2172*735d6239SKiyoung Kim      $ECHO "$srcfile" > "$lockfile"
2173*735d6239SKiyoung Kim    fi
2174*735d6239SKiyoung Kim
2175*735d6239SKiyoung Kim    $opt_dry_run || $RM $removelist
2176*735d6239SKiyoung Kim    func_append removelist " $lockfile"
2177*735d6239SKiyoung Kim    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2178*735d6239SKiyoung Kim
2179*735d6239SKiyoung Kim    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2180*735d6239SKiyoung Kim    srcfile=$func_to_tool_file_result
2181*735d6239SKiyoung Kim    func_quote_for_eval "$srcfile"
2182*735d6239SKiyoung Kim    qsrcfile=$func_quote_for_eval_result
2183*735d6239SKiyoung Kim
2184*735d6239SKiyoung Kim    # Only build a PIC object if we are building libtool libraries.
2185*735d6239SKiyoung Kim    if test "$build_libtool_libs" = yes; then
2186*735d6239SKiyoung Kim      # Without this assignment, base_compile gets emptied.
2187*735d6239SKiyoung Kim      fbsd_hideous_sh_bug=$base_compile
2188*735d6239SKiyoung Kim
2189*735d6239SKiyoung Kim      if test "$pic_mode" != no; then
2190*735d6239SKiyoung Kim	command="$base_compile $qsrcfile $pic_flag"
2191*735d6239SKiyoung Kim      else
2192*735d6239SKiyoung Kim	# Don't build PIC code
2193*735d6239SKiyoung Kim	command="$base_compile $qsrcfile"
2194*735d6239SKiyoung Kim      fi
2195*735d6239SKiyoung Kim
2196*735d6239SKiyoung Kim      func_mkdir_p "$xdir$objdir"
2197*735d6239SKiyoung Kim
2198*735d6239SKiyoung Kim      if test -z "$output_obj"; then
2199*735d6239SKiyoung Kim	# Place PIC objects in $objdir
2200*735d6239SKiyoung Kim	func_append command " -o $lobj"
2201*735d6239SKiyoung Kim      fi
2202*735d6239SKiyoung Kim
2203*735d6239SKiyoung Kim      func_show_eval_locale "$command"	\
2204*735d6239SKiyoung Kim          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2205*735d6239SKiyoung Kim
2206*735d6239SKiyoung Kim      if test "$need_locks" = warn &&
2207*735d6239SKiyoung Kim	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2208*735d6239SKiyoung Kim	$ECHO "\
2209*735d6239SKiyoung Kim*** ERROR, $lockfile contains:
2210*735d6239SKiyoung Kim`cat $lockfile 2>/dev/null`
2211*735d6239SKiyoung Kim
2212*735d6239SKiyoung Kimbut it should contain:
2213*735d6239SKiyoung Kim$srcfile
2214*735d6239SKiyoung Kim
2215*735d6239SKiyoung KimThis indicates that another process is trying to use the same
2216*735d6239SKiyoung Kimtemporary object file, and libtool could not work around it because
2217*735d6239SKiyoung Kimyour compiler does not support \`-c' and \`-o' together.  If you
2218*735d6239SKiyoung Kimrepeat this compilation, it may succeed, by chance, but you had better
2219*735d6239SKiyoung Kimavoid parallel builds (make -j) in this platform, or get a better
2220*735d6239SKiyoung Kimcompiler."
2221*735d6239SKiyoung Kim
2222*735d6239SKiyoung Kim	$opt_dry_run || $RM $removelist
2223*735d6239SKiyoung Kim	exit $EXIT_FAILURE
2224*735d6239SKiyoung Kim      fi
2225*735d6239SKiyoung Kim
2226*735d6239SKiyoung Kim      # Just move the object if needed, then go on to compile the next one
2227*735d6239SKiyoung Kim      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2228*735d6239SKiyoung Kim	func_show_eval '$MV "$output_obj" "$lobj"' \
2229*735d6239SKiyoung Kim	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2230*735d6239SKiyoung Kim      fi
2231*735d6239SKiyoung Kim
2232*735d6239SKiyoung Kim      # Allow error messages only from the first compilation.
2233*735d6239SKiyoung Kim      if test "$suppress_opt" = yes; then
2234*735d6239SKiyoung Kim	suppress_output=' >/dev/null 2>&1'
2235*735d6239SKiyoung Kim      fi
2236*735d6239SKiyoung Kim    fi
2237*735d6239SKiyoung Kim
2238*735d6239SKiyoung Kim    # Only build a position-dependent object if we build old libraries.
2239*735d6239SKiyoung Kim    if test "$build_old_libs" = yes; then
2240*735d6239SKiyoung Kim      if test "$pic_mode" != yes; then
2241*735d6239SKiyoung Kim	# Don't build PIC code
2242*735d6239SKiyoung Kim	command="$base_compile $qsrcfile$pie_flag"
2243*735d6239SKiyoung Kim      else
2244*735d6239SKiyoung Kim	command="$base_compile $qsrcfile $pic_flag"
2245*735d6239SKiyoung Kim      fi
2246*735d6239SKiyoung Kim      if test "$compiler_c_o" = yes; then
2247*735d6239SKiyoung Kim	func_append command " -o $obj"
2248*735d6239SKiyoung Kim      fi
2249*735d6239SKiyoung Kim
2250*735d6239SKiyoung Kim      # Suppress compiler output if we already did a PIC compilation.
2251*735d6239SKiyoung Kim      func_append command "$suppress_output"
2252*735d6239SKiyoung Kim      func_show_eval_locale "$command" \
2253*735d6239SKiyoung Kim        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2254*735d6239SKiyoung Kim
2255*735d6239SKiyoung Kim      if test "$need_locks" = warn &&
2256*735d6239SKiyoung Kim	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2257*735d6239SKiyoung Kim	$ECHO "\
2258*735d6239SKiyoung Kim*** ERROR, $lockfile contains:
2259*735d6239SKiyoung Kim`cat $lockfile 2>/dev/null`
2260*735d6239SKiyoung Kim
2261*735d6239SKiyoung Kimbut it should contain:
2262*735d6239SKiyoung Kim$srcfile
2263*735d6239SKiyoung Kim
2264*735d6239SKiyoung KimThis indicates that another process is trying to use the same
2265*735d6239SKiyoung Kimtemporary object file, and libtool could not work around it because
2266*735d6239SKiyoung Kimyour compiler does not support \`-c' and \`-o' together.  If you
2267*735d6239SKiyoung Kimrepeat this compilation, it may succeed, by chance, but you had better
2268*735d6239SKiyoung Kimavoid parallel builds (make -j) in this platform, or get a better
2269*735d6239SKiyoung Kimcompiler."
2270*735d6239SKiyoung Kim
2271*735d6239SKiyoung Kim	$opt_dry_run || $RM $removelist
2272*735d6239SKiyoung Kim	exit $EXIT_FAILURE
2273*735d6239SKiyoung Kim      fi
2274*735d6239SKiyoung Kim
2275*735d6239SKiyoung Kim      # Just move the object if needed
2276*735d6239SKiyoung Kim      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2277*735d6239SKiyoung Kim	func_show_eval '$MV "$output_obj" "$obj"' \
2278*735d6239SKiyoung Kim	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2279*735d6239SKiyoung Kim      fi
2280*735d6239SKiyoung Kim    fi
2281*735d6239SKiyoung Kim
2282*735d6239SKiyoung Kim    $opt_dry_run || {
2283*735d6239SKiyoung Kim      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2284*735d6239SKiyoung Kim
2285*735d6239SKiyoung Kim      # Unlock the critical section if it was locked
2286*735d6239SKiyoung Kim      if test "$need_locks" != no; then
2287*735d6239SKiyoung Kim	removelist=$lockfile
2288*735d6239SKiyoung Kim        $RM "$lockfile"
2289*735d6239SKiyoung Kim      fi
2290*735d6239SKiyoung Kim    }
2291*735d6239SKiyoung Kim
2292*735d6239SKiyoung Kim    exit $EXIT_SUCCESS
2293*735d6239SKiyoung Kim}
2294*735d6239SKiyoung Kim
2295*735d6239SKiyoung Kim$opt_help || {
2296*735d6239SKiyoung Kim  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2297*735d6239SKiyoung Kim}
2298*735d6239SKiyoung Kim
2299*735d6239SKiyoung Kimfunc_mode_help ()
2300*735d6239SKiyoung Kim{
2301*735d6239SKiyoung Kim    # We need to display help for each of the modes.
2302*735d6239SKiyoung Kim    case $opt_mode in
2303*735d6239SKiyoung Kim      "")
2304*735d6239SKiyoung Kim        # Generic help is extracted from the usage comments
2305*735d6239SKiyoung Kim        # at the start of this file.
2306*735d6239SKiyoung Kim        func_help
2307*735d6239SKiyoung Kim        ;;
2308*735d6239SKiyoung Kim
2309*735d6239SKiyoung Kim      clean)
2310*735d6239SKiyoung Kim        $ECHO \
2311*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2312*735d6239SKiyoung Kim
2313*735d6239SKiyoung KimRemove files from the build directory.
2314*735d6239SKiyoung Kim
2315*735d6239SKiyoung KimRM is the name of the program to use to delete files associated with each FILE
2316*735d6239SKiyoung Kim(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2317*735d6239SKiyoung Kimto RM.
2318*735d6239SKiyoung Kim
2319*735d6239SKiyoung KimIf FILE is a libtool library, object or program, all the files associated
2320*735d6239SKiyoung Kimwith it are deleted. Otherwise, only FILE itself is deleted using RM."
2321*735d6239SKiyoung Kim        ;;
2322*735d6239SKiyoung Kim
2323*735d6239SKiyoung Kim      compile)
2324*735d6239SKiyoung Kim      $ECHO \
2325*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2326*735d6239SKiyoung Kim
2327*735d6239SKiyoung KimCompile a source file into a libtool library object.
2328*735d6239SKiyoung Kim
2329*735d6239SKiyoung KimThis mode accepts the following additional options:
2330*735d6239SKiyoung Kim
2331*735d6239SKiyoung Kim  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2332*735d6239SKiyoung Kim  -no-suppress      do not suppress compiler output for multiple passes
2333*735d6239SKiyoung Kim  -prefer-pic       try to build PIC objects only
2334*735d6239SKiyoung Kim  -prefer-non-pic   try to build non-PIC objects only
2335*735d6239SKiyoung Kim  -shared           do not build a \`.o' file suitable for static linking
2336*735d6239SKiyoung Kim  -static           only build a \`.o' file suitable for static linking
2337*735d6239SKiyoung Kim  -Wc,FLAG          pass FLAG directly to the compiler
2338*735d6239SKiyoung Kim
2339*735d6239SKiyoung KimCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2340*735d6239SKiyoung Kimfrom the given SOURCEFILE.
2341*735d6239SKiyoung Kim
2342*735d6239SKiyoung KimThe output file name is determined by removing the directory component from
2343*735d6239SKiyoung KimSOURCEFILE, then substituting the C source code suffix \`.c' with the
2344*735d6239SKiyoung Kimlibrary object suffix, \`.lo'."
2345*735d6239SKiyoung Kim        ;;
2346*735d6239SKiyoung Kim
2347*735d6239SKiyoung Kim      execute)
2348*735d6239SKiyoung Kim        $ECHO \
2349*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2350*735d6239SKiyoung Kim
2351*735d6239SKiyoung KimAutomatically set library path, then run a program.
2352*735d6239SKiyoung Kim
2353*735d6239SKiyoung KimThis mode accepts the following additional options:
2354*735d6239SKiyoung Kim
2355*735d6239SKiyoung Kim  -dlopen FILE      add the directory containing FILE to the library path
2356*735d6239SKiyoung Kim
2357*735d6239SKiyoung KimThis mode sets the library path environment variable according to \`-dlopen'
2358*735d6239SKiyoung Kimflags.
2359*735d6239SKiyoung Kim
2360*735d6239SKiyoung KimIf any of the ARGS are libtool executable wrappers, then they are translated
2361*735d6239SKiyoung Kiminto their corresponding uninstalled binary, and any of their required library
2362*735d6239SKiyoung Kimdirectories are added to the library path.
2363*735d6239SKiyoung Kim
2364*735d6239SKiyoung KimThen, COMMAND is executed, with ARGS as arguments."
2365*735d6239SKiyoung Kim        ;;
2366*735d6239SKiyoung Kim
2367*735d6239SKiyoung Kim      finish)
2368*735d6239SKiyoung Kim        $ECHO \
2369*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2370*735d6239SKiyoung Kim
2371*735d6239SKiyoung KimComplete the installation of libtool libraries.
2372*735d6239SKiyoung Kim
2373*735d6239SKiyoung KimEach LIBDIR is a directory that contains libtool libraries.
2374*735d6239SKiyoung Kim
2375*735d6239SKiyoung KimThe commands that this mode executes may require superuser privileges.  Use
2376*735d6239SKiyoung Kimthe \`--dry-run' option if you just want to see what would be executed."
2377*735d6239SKiyoung Kim        ;;
2378*735d6239SKiyoung Kim
2379*735d6239SKiyoung Kim      install)
2380*735d6239SKiyoung Kim        $ECHO \
2381*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2382*735d6239SKiyoung Kim
2383*735d6239SKiyoung KimInstall executables or libraries.
2384*735d6239SKiyoung Kim
2385*735d6239SKiyoung KimINSTALL-COMMAND is the installation command.  The first component should be
2386*735d6239SKiyoung Kimeither the \`install' or \`cp' program.
2387*735d6239SKiyoung Kim
2388*735d6239SKiyoung KimThe following components of INSTALL-COMMAND are treated specially:
2389*735d6239SKiyoung Kim
2390*735d6239SKiyoung Kim  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2391*735d6239SKiyoung Kim
2392*735d6239SKiyoung KimThe rest of the components are interpreted as arguments to that command (only
2393*735d6239SKiyoung KimBSD-compatible install options are recognized)."
2394*735d6239SKiyoung Kim        ;;
2395*735d6239SKiyoung Kim
2396*735d6239SKiyoung Kim      link)
2397*735d6239SKiyoung Kim        $ECHO \
2398*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2399*735d6239SKiyoung Kim
2400*735d6239SKiyoung KimLink object files or libraries together to form another library, or to
2401*735d6239SKiyoung Kimcreate an executable program.
2402*735d6239SKiyoung Kim
2403*735d6239SKiyoung KimLINK-COMMAND is a command using the C compiler that you would use to create
2404*735d6239SKiyoung Kima program from several object files.
2405*735d6239SKiyoung Kim
2406*735d6239SKiyoung KimThe following components of LINK-COMMAND are treated specially:
2407*735d6239SKiyoung Kim
2408*735d6239SKiyoung Kim  -all-static       do not do any dynamic linking at all
2409*735d6239SKiyoung Kim  -avoid-version    do not add a version suffix if possible
2410*735d6239SKiyoung Kim  -bindir BINDIR    specify path to binaries directory (for systems where
2411*735d6239SKiyoung Kim                    libraries must be found in the PATH setting at runtime)
2412*735d6239SKiyoung Kim  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2413*735d6239SKiyoung Kim  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2414*735d6239SKiyoung Kim  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2415*735d6239SKiyoung Kim  -export-symbols SYMFILE
2416*735d6239SKiyoung Kim                    try to export only the symbols listed in SYMFILE
2417*735d6239SKiyoung Kim  -export-symbols-regex REGEX
2418*735d6239SKiyoung Kim                    try to export only the symbols matching REGEX
2419*735d6239SKiyoung Kim  -LLIBDIR          search LIBDIR for required installed libraries
2420*735d6239SKiyoung Kim  -lNAME            OUTPUT-FILE requires the installed library libNAME
2421*735d6239SKiyoung Kim  -module           build a library that can dlopened
2422*735d6239SKiyoung Kim  -no-fast-install  disable the fast-install mode
2423*735d6239SKiyoung Kim  -no-install       link a not-installable executable
2424*735d6239SKiyoung Kim  -no-undefined     declare that a library does not refer to external symbols
2425*735d6239SKiyoung Kim  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2426*735d6239SKiyoung Kim  -objectlist FILE  Use a list of object files found in FILE to specify objects
2427*735d6239SKiyoung Kim  -precious-files-regex REGEX
2428*735d6239SKiyoung Kim                    don't remove output files matching REGEX
2429*735d6239SKiyoung Kim  -release RELEASE  specify package release information
2430*735d6239SKiyoung Kim  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2431*735d6239SKiyoung Kim  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2432*735d6239SKiyoung Kim  -shared           only do dynamic linking of libtool libraries
2433*735d6239SKiyoung Kim  -shrext SUFFIX    override the standard shared library file extension
2434*735d6239SKiyoung Kim  -static           do not do any dynamic linking of uninstalled libtool libraries
2435*735d6239SKiyoung Kim  -static-libtool-libs
2436*735d6239SKiyoung Kim                    do not do any dynamic linking of libtool libraries
2437*735d6239SKiyoung Kim  -version-info CURRENT[:REVISION[:AGE]]
2438*735d6239SKiyoung Kim                    specify library version info [each variable defaults to 0]
2439*735d6239SKiyoung Kim  -weak LIBNAME     declare that the target provides the LIBNAME interface
2440*735d6239SKiyoung Kim  -Wc,FLAG
2441*735d6239SKiyoung Kim  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2442*735d6239SKiyoung Kim  -Wl,FLAG
2443*735d6239SKiyoung Kim  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2444*735d6239SKiyoung Kim  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2445*735d6239SKiyoung Kim
2446*735d6239SKiyoung KimAll other options (arguments beginning with \`-') are ignored.
2447*735d6239SKiyoung Kim
2448*735d6239SKiyoung KimEvery other argument is treated as a filename.  Files ending in \`.la' are
2449*735d6239SKiyoung Kimtreated as uninstalled libtool libraries, other files are standard or library
2450*735d6239SKiyoung Kimobject files.
2451*735d6239SKiyoung Kim
2452*735d6239SKiyoung KimIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2453*735d6239SKiyoung Kimonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2454*735d6239SKiyoung Kimrequired, except when creating a convenience library.
2455*735d6239SKiyoung Kim
2456*735d6239SKiyoung KimIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2457*735d6239SKiyoung Kimusing \`ar' and \`ranlib', or on Windows using \`lib'.
2458*735d6239SKiyoung Kim
2459*735d6239SKiyoung KimIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2460*735d6239SKiyoung Kimis created, otherwise an executable program is created."
2461*735d6239SKiyoung Kim        ;;
2462*735d6239SKiyoung Kim
2463*735d6239SKiyoung Kim      uninstall)
2464*735d6239SKiyoung Kim        $ECHO \
2465*735d6239SKiyoung Kim"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2466*735d6239SKiyoung Kim
2467*735d6239SKiyoung KimRemove libraries from an installation directory.
2468*735d6239SKiyoung Kim
2469*735d6239SKiyoung KimRM is the name of the program to use to delete files associated with each FILE
2470*735d6239SKiyoung Kim(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2471*735d6239SKiyoung Kimto RM.
2472*735d6239SKiyoung Kim
2473*735d6239SKiyoung KimIf FILE is a libtool library, all the files associated with it are deleted.
2474*735d6239SKiyoung KimOtherwise, only FILE itself is deleted using RM."
2475*735d6239SKiyoung Kim        ;;
2476*735d6239SKiyoung Kim
2477*735d6239SKiyoung Kim      *)
2478*735d6239SKiyoung Kim        func_fatal_help "invalid operation mode \`$opt_mode'"
2479*735d6239SKiyoung Kim        ;;
2480*735d6239SKiyoung Kim    esac
2481*735d6239SKiyoung Kim
2482*735d6239SKiyoung Kim    echo
2483*735d6239SKiyoung Kim    $ECHO "Try \`$progname --help' for more information about other modes."
2484*735d6239SKiyoung Kim}
2485*735d6239SKiyoung Kim
2486*735d6239SKiyoung Kim# Now that we've collected a possible --mode arg, show help if necessary
2487*735d6239SKiyoung Kimif $opt_help; then
2488*735d6239SKiyoung Kim  if test "$opt_help" = :; then
2489*735d6239SKiyoung Kim    func_mode_help
2490*735d6239SKiyoung Kim  else
2491*735d6239SKiyoung Kim    {
2492*735d6239SKiyoung Kim      func_help noexit
2493*735d6239SKiyoung Kim      for opt_mode in compile link execute install finish uninstall clean; do
2494*735d6239SKiyoung Kim	func_mode_help
2495*735d6239SKiyoung Kim      done
2496*735d6239SKiyoung Kim    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2497*735d6239SKiyoung Kim    {
2498*735d6239SKiyoung Kim      func_help noexit
2499*735d6239SKiyoung Kim      for opt_mode in compile link execute install finish uninstall clean; do
2500*735d6239SKiyoung Kim	echo
2501*735d6239SKiyoung Kim	func_mode_help
2502*735d6239SKiyoung Kim      done
2503*735d6239SKiyoung Kim    } |
2504*735d6239SKiyoung Kim    sed '1d
2505*735d6239SKiyoung Kim      /^When reporting/,/^Report/{
2506*735d6239SKiyoung Kim	H
2507*735d6239SKiyoung Kim	d
2508*735d6239SKiyoung Kim      }
2509*735d6239SKiyoung Kim      $x
2510*735d6239SKiyoung Kim      /information about other modes/d
2511*735d6239SKiyoung Kim      /more detailed .*MODE/d
2512*735d6239SKiyoung Kim      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2513*735d6239SKiyoung Kim  fi
2514*735d6239SKiyoung Kim  exit $?
2515*735d6239SKiyoung Kimfi
2516*735d6239SKiyoung Kim
2517*735d6239SKiyoung Kim
2518*735d6239SKiyoung Kim# func_mode_execute arg...
2519*735d6239SKiyoung Kimfunc_mode_execute ()
2520*735d6239SKiyoung Kim{
2521*735d6239SKiyoung Kim    $opt_debug
2522*735d6239SKiyoung Kim    # The first argument is the command name.
2523*735d6239SKiyoung Kim    cmd="$nonopt"
2524*735d6239SKiyoung Kim    test -z "$cmd" && \
2525*735d6239SKiyoung Kim      func_fatal_help "you must specify a COMMAND"
2526*735d6239SKiyoung Kim
2527*735d6239SKiyoung Kim    # Handle -dlopen flags immediately.
2528*735d6239SKiyoung Kim    for file in $opt_dlopen; do
2529*735d6239SKiyoung Kim      test -f "$file" \
2530*735d6239SKiyoung Kim	|| func_fatal_help "\`$file' is not a file"
2531*735d6239SKiyoung Kim
2532*735d6239SKiyoung Kim      dir=
2533*735d6239SKiyoung Kim      case $file in
2534*735d6239SKiyoung Kim      *.la)
2535*735d6239SKiyoung Kim	func_resolve_sysroot "$file"
2536*735d6239SKiyoung Kim	file=$func_resolve_sysroot_result
2537*735d6239SKiyoung Kim
2538*735d6239SKiyoung Kim	# Check to see that this really is a libtool archive.
2539*735d6239SKiyoung Kim	func_lalib_unsafe_p "$file" \
2540*735d6239SKiyoung Kim	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2541*735d6239SKiyoung Kim
2542*735d6239SKiyoung Kim	# Read the libtool library.
2543*735d6239SKiyoung Kim	dlname=
2544*735d6239SKiyoung Kim	library_names=
2545*735d6239SKiyoung Kim	func_source "$file"
2546*735d6239SKiyoung Kim
2547*735d6239SKiyoung Kim	# Skip this library if it cannot be dlopened.
2548*735d6239SKiyoung Kim	if test -z "$dlname"; then
2549*735d6239SKiyoung Kim	  # Warn if it was a shared library.
2550*735d6239SKiyoung Kim	  test -n "$library_names" && \
2551*735d6239SKiyoung Kim	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2552*735d6239SKiyoung Kim	  continue
2553*735d6239SKiyoung Kim	fi
2554*735d6239SKiyoung Kim
2555*735d6239SKiyoung Kim	func_dirname "$file" "" "."
2556*735d6239SKiyoung Kim	dir="$func_dirname_result"
2557*735d6239SKiyoung Kim
2558*735d6239SKiyoung Kim	if test -f "$dir/$objdir/$dlname"; then
2559*735d6239SKiyoung Kim	  func_append dir "/$objdir"
2560*735d6239SKiyoung Kim	else
2561*735d6239SKiyoung Kim	  if test ! -f "$dir/$dlname"; then
2562*735d6239SKiyoung Kim	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2563*735d6239SKiyoung Kim	  fi
2564*735d6239SKiyoung Kim	fi
2565*735d6239SKiyoung Kim	;;
2566*735d6239SKiyoung Kim
2567*735d6239SKiyoung Kim      *.lo)
2568*735d6239SKiyoung Kim	# Just add the directory containing the .lo file.
2569*735d6239SKiyoung Kim	func_dirname "$file" "" "."
2570*735d6239SKiyoung Kim	dir="$func_dirname_result"
2571*735d6239SKiyoung Kim	;;
2572*735d6239SKiyoung Kim
2573*735d6239SKiyoung Kim      *)
2574*735d6239SKiyoung Kim	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2575*735d6239SKiyoung Kim	continue
2576*735d6239SKiyoung Kim	;;
2577*735d6239SKiyoung Kim      esac
2578*735d6239SKiyoung Kim
2579*735d6239SKiyoung Kim      # Get the absolute pathname.
2580*735d6239SKiyoung Kim      absdir=`cd "$dir" && pwd`
2581*735d6239SKiyoung Kim      test -n "$absdir" && dir="$absdir"
2582*735d6239SKiyoung Kim
2583*735d6239SKiyoung Kim      # Now add the directory to shlibpath_var.
2584*735d6239SKiyoung Kim      if eval "test -z \"\$$shlibpath_var\""; then
2585*735d6239SKiyoung Kim	eval "$shlibpath_var=\"\$dir\""
2586*735d6239SKiyoung Kim      else
2587*735d6239SKiyoung Kim	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2588*735d6239SKiyoung Kim      fi
2589*735d6239SKiyoung Kim    done
2590*735d6239SKiyoung Kim
2591*735d6239SKiyoung Kim    # This variable tells wrapper scripts just to set shlibpath_var
2592*735d6239SKiyoung Kim    # rather than running their programs.
2593*735d6239SKiyoung Kim    libtool_execute_magic="$magic"
2594*735d6239SKiyoung Kim
2595*735d6239SKiyoung Kim    # Check if any of the arguments is a wrapper script.
2596*735d6239SKiyoung Kim    args=
2597*735d6239SKiyoung Kim    for file
2598*735d6239SKiyoung Kim    do
2599*735d6239SKiyoung Kim      case $file in
2600*735d6239SKiyoung Kim      -* | *.la | *.lo ) ;;
2601*735d6239SKiyoung Kim      *)
2602*735d6239SKiyoung Kim	# Do a test to see if this is really a libtool program.
2603*735d6239SKiyoung Kim	if func_ltwrapper_script_p "$file"; then
2604*735d6239SKiyoung Kim	  func_source "$file"
2605*735d6239SKiyoung Kim	  # Transform arg to wrapped name.
2606*735d6239SKiyoung Kim	  file="$progdir/$program"
2607*735d6239SKiyoung Kim	elif func_ltwrapper_executable_p "$file"; then
2608*735d6239SKiyoung Kim	  func_ltwrapper_scriptname "$file"
2609*735d6239SKiyoung Kim	  func_source "$func_ltwrapper_scriptname_result"
2610*735d6239SKiyoung Kim	  # Transform arg to wrapped name.
2611*735d6239SKiyoung Kim	  file="$progdir/$program"
2612*735d6239SKiyoung Kim	fi
2613*735d6239SKiyoung Kim	;;
2614*735d6239SKiyoung Kim      esac
2615*735d6239SKiyoung Kim      # Quote arguments (to preserve shell metacharacters).
2616*735d6239SKiyoung Kim      func_append_quoted args "$file"
2617*735d6239SKiyoung Kim    done
2618*735d6239SKiyoung Kim
2619*735d6239SKiyoung Kim    if test "X$opt_dry_run" = Xfalse; then
2620*735d6239SKiyoung Kim      if test -n "$shlibpath_var"; then
2621*735d6239SKiyoung Kim	# Export the shlibpath_var.
2622*735d6239SKiyoung Kim	eval "export $shlibpath_var"
2623*735d6239SKiyoung Kim      fi
2624*735d6239SKiyoung Kim
2625*735d6239SKiyoung Kim      # Restore saved environment variables
2626*735d6239SKiyoung Kim      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2627*735d6239SKiyoung Kim      do
2628*735d6239SKiyoung Kim	eval "if test \"\${save_$lt_var+set}\" = set; then
2629*735d6239SKiyoung Kim                $lt_var=\$save_$lt_var; export $lt_var
2630*735d6239SKiyoung Kim	      else
2631*735d6239SKiyoung Kim		$lt_unset $lt_var
2632*735d6239SKiyoung Kim	      fi"
2633*735d6239SKiyoung Kim      done
2634*735d6239SKiyoung Kim
2635*735d6239SKiyoung Kim      # Now prepare to actually exec the command.
2636*735d6239SKiyoung Kim      exec_cmd="\$cmd$args"
2637*735d6239SKiyoung Kim    else
2638*735d6239SKiyoung Kim      # Display what would be done.
2639*735d6239SKiyoung Kim      if test -n "$shlibpath_var"; then
2640*735d6239SKiyoung Kim	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2641*735d6239SKiyoung Kim	echo "export $shlibpath_var"
2642*735d6239SKiyoung Kim      fi
2643*735d6239SKiyoung Kim      $ECHO "$cmd$args"
2644*735d6239SKiyoung Kim      exit $EXIT_SUCCESS
2645*735d6239SKiyoung Kim    fi
2646*735d6239SKiyoung Kim}
2647*735d6239SKiyoung Kim
2648*735d6239SKiyoung Kimtest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2649*735d6239SKiyoung Kim
2650*735d6239SKiyoung Kim
2651*735d6239SKiyoung Kim# func_mode_finish arg...
2652*735d6239SKiyoung Kimfunc_mode_finish ()
2653*735d6239SKiyoung Kim{
2654*735d6239SKiyoung Kim    $opt_debug
2655*735d6239SKiyoung Kim    libs=
2656*735d6239SKiyoung Kim    libdirs=
2657*735d6239SKiyoung Kim    admincmds=
2658*735d6239SKiyoung Kim
2659*735d6239SKiyoung Kim    for opt in "$nonopt" ${1+"$@"}
2660*735d6239SKiyoung Kim    do
2661*735d6239SKiyoung Kim      if test -d "$opt"; then
2662*735d6239SKiyoung Kim	func_append libdirs " $opt"
2663*735d6239SKiyoung Kim
2664*735d6239SKiyoung Kim      elif test -f "$opt"; then
2665*735d6239SKiyoung Kim	if func_lalib_unsafe_p "$opt"; then
2666*735d6239SKiyoung Kim	  func_append libs " $opt"
2667*735d6239SKiyoung Kim	else
2668*735d6239SKiyoung Kim	  func_warning "\`$opt' is not a valid libtool archive"
2669*735d6239SKiyoung Kim	fi
2670*735d6239SKiyoung Kim
2671*735d6239SKiyoung Kim      else
2672*735d6239SKiyoung Kim	func_fatal_error "invalid argument \`$opt'"
2673*735d6239SKiyoung Kim      fi
2674*735d6239SKiyoung Kim    done
2675*735d6239SKiyoung Kim
2676*735d6239SKiyoung Kim    if test -n "$libs"; then
2677*735d6239SKiyoung Kim      if test -n "$lt_sysroot"; then
2678*735d6239SKiyoung Kim        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2679*735d6239SKiyoung Kim        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2680*735d6239SKiyoung Kim      else
2681*735d6239SKiyoung Kim        sysroot_cmd=
2682*735d6239SKiyoung Kim      fi
2683*735d6239SKiyoung Kim
2684*735d6239SKiyoung Kim      # Remove sysroot references
2685*735d6239SKiyoung Kim      if $opt_dry_run; then
2686*735d6239SKiyoung Kim        for lib in $libs; do
2687*735d6239SKiyoung Kim          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2688*735d6239SKiyoung Kim        done
2689*735d6239SKiyoung Kim      else
2690*735d6239SKiyoung Kim        tmpdir=`func_mktempdir`
2691*735d6239SKiyoung Kim        for lib in $libs; do
2692*735d6239SKiyoung Kim	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2693*735d6239SKiyoung Kim	    > $tmpdir/tmp-la
2694*735d6239SKiyoung Kim	  mv -f $tmpdir/tmp-la $lib
2695*735d6239SKiyoung Kim	done
2696*735d6239SKiyoung Kim        ${RM}r "$tmpdir"
2697*735d6239SKiyoung Kim      fi
2698*735d6239SKiyoung Kim    fi
2699*735d6239SKiyoung Kim
2700*735d6239SKiyoung Kim    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2701*735d6239SKiyoung Kim      for libdir in $libdirs; do
2702*735d6239SKiyoung Kim	if test -n "$finish_cmds"; then
2703*735d6239SKiyoung Kim	  # Do each command in the finish commands.
2704*735d6239SKiyoung Kim	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2705*735d6239SKiyoung Kim'"$cmd"'"'
2706*735d6239SKiyoung Kim	fi
2707*735d6239SKiyoung Kim	if test -n "$finish_eval"; then
2708*735d6239SKiyoung Kim	  # Do the single finish_eval.
2709*735d6239SKiyoung Kim	  eval cmds=\"$finish_eval\"
2710*735d6239SKiyoung Kim	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2711*735d6239SKiyoung Kim       $cmds"
2712*735d6239SKiyoung Kim	fi
2713*735d6239SKiyoung Kim      done
2714*735d6239SKiyoung Kim    fi
2715*735d6239SKiyoung Kim
2716*735d6239SKiyoung Kim    # Exit here if they wanted silent mode.
2717*735d6239SKiyoung Kim    $opt_silent && exit $EXIT_SUCCESS
2718*735d6239SKiyoung Kim
2719*735d6239SKiyoung Kim    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2720*735d6239SKiyoung Kim      echo "----------------------------------------------------------------------"
2721*735d6239SKiyoung Kim      echo "Libraries have been installed in:"
2722*735d6239SKiyoung Kim      for libdir in $libdirs; do
2723*735d6239SKiyoung Kim	$ECHO "   $libdir"
2724*735d6239SKiyoung Kim      done
2725*735d6239SKiyoung Kim      echo
2726*735d6239SKiyoung Kim      echo "If you ever happen to want to link against installed libraries"
2727*735d6239SKiyoung Kim      echo "in a given directory, LIBDIR, you must either use libtool, and"
2728*735d6239SKiyoung Kim      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2729*735d6239SKiyoung Kim      echo "flag during linking and do at least one of the following:"
2730*735d6239SKiyoung Kim      if test -n "$shlibpath_var"; then
2731*735d6239SKiyoung Kim	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2732*735d6239SKiyoung Kim	echo "     during execution"
2733*735d6239SKiyoung Kim      fi
2734*735d6239SKiyoung Kim      if test -n "$runpath_var"; then
2735*735d6239SKiyoung Kim	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2736*735d6239SKiyoung Kim	echo "     during linking"
2737*735d6239SKiyoung Kim      fi
2738*735d6239SKiyoung Kim      if test -n "$hardcode_libdir_flag_spec"; then
2739*735d6239SKiyoung Kim	libdir=LIBDIR
2740*735d6239SKiyoung Kim	eval flag=\"$hardcode_libdir_flag_spec\"
2741*735d6239SKiyoung Kim
2742*735d6239SKiyoung Kim	$ECHO "   - use the \`$flag' linker flag"
2743*735d6239SKiyoung Kim      fi
2744*735d6239SKiyoung Kim      if test -n "$admincmds"; then
2745*735d6239SKiyoung Kim	$ECHO "   - have your system administrator run these commands:$admincmds"
2746*735d6239SKiyoung Kim      fi
2747*735d6239SKiyoung Kim      if test -f /etc/ld.so.conf; then
2748*735d6239SKiyoung Kim	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2749*735d6239SKiyoung Kim      fi
2750*735d6239SKiyoung Kim      echo
2751*735d6239SKiyoung Kim
2752*735d6239SKiyoung Kim      echo "See any operating system documentation about shared libraries for"
2753*735d6239SKiyoung Kim      case $host in
2754*735d6239SKiyoung Kim	solaris2.[6789]|solaris2.1[0-9])
2755*735d6239SKiyoung Kim	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2756*735d6239SKiyoung Kim	  echo "pages."
2757*735d6239SKiyoung Kim	  ;;
2758*735d6239SKiyoung Kim	*)
2759*735d6239SKiyoung Kim	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2760*735d6239SKiyoung Kim	  ;;
2761*735d6239SKiyoung Kim      esac
2762*735d6239SKiyoung Kim      echo "----------------------------------------------------------------------"
2763*735d6239SKiyoung Kim    fi
2764*735d6239SKiyoung Kim    exit $EXIT_SUCCESS
2765*735d6239SKiyoung Kim}
2766*735d6239SKiyoung Kim
2767*735d6239SKiyoung Kimtest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2768*735d6239SKiyoung Kim
2769*735d6239SKiyoung Kim
2770*735d6239SKiyoung Kim# func_mode_install arg...
2771*735d6239SKiyoung Kimfunc_mode_install ()
2772*735d6239SKiyoung Kim{
2773*735d6239SKiyoung Kim    $opt_debug
2774*735d6239SKiyoung Kim    # There may be an optional sh(1) argument at the beginning of
2775*735d6239SKiyoung Kim    # install_prog (especially on Windows NT).
2776*735d6239SKiyoung Kim    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2777*735d6239SKiyoung Kim       # Allow the use of GNU shtool's install command.
2778*735d6239SKiyoung Kim       case $nonopt in *shtool*) :;; *) false;; esac; then
2779*735d6239SKiyoung Kim      # Aesthetically quote it.
2780*735d6239SKiyoung Kim      func_quote_for_eval "$nonopt"
2781*735d6239SKiyoung Kim      install_prog="$func_quote_for_eval_result "
2782*735d6239SKiyoung Kim      arg=$1
2783*735d6239SKiyoung Kim      shift
2784*735d6239SKiyoung Kim    else
2785*735d6239SKiyoung Kim      install_prog=
2786*735d6239SKiyoung Kim      arg=$nonopt
2787*735d6239SKiyoung Kim    fi
2788*735d6239SKiyoung Kim
2789*735d6239SKiyoung Kim    # The real first argument should be the name of the installation program.
2790*735d6239SKiyoung Kim    # Aesthetically quote it.
2791*735d6239SKiyoung Kim    func_quote_for_eval "$arg"
2792*735d6239SKiyoung Kim    func_append install_prog "$func_quote_for_eval_result"
2793*735d6239SKiyoung Kim    install_shared_prog=$install_prog
2794*735d6239SKiyoung Kim    case " $install_prog " in
2795*735d6239SKiyoung Kim      *[\\\ /]cp\ *) install_cp=: ;;
2796*735d6239SKiyoung Kim      *) install_cp=false ;;
2797*735d6239SKiyoung Kim    esac
2798*735d6239SKiyoung Kim
2799*735d6239SKiyoung Kim    # We need to accept at least all the BSD install flags.
2800*735d6239SKiyoung Kim    dest=
2801*735d6239SKiyoung Kim    files=
2802*735d6239SKiyoung Kim    opts=
2803*735d6239SKiyoung Kim    prev=
2804*735d6239SKiyoung Kim    install_type=
2805*735d6239SKiyoung Kim    isdir=no
2806*735d6239SKiyoung Kim    stripme=
2807*735d6239SKiyoung Kim    no_mode=:
2808*735d6239SKiyoung Kim    for arg
2809*735d6239SKiyoung Kim    do
2810*735d6239SKiyoung Kim      arg2=
2811*735d6239SKiyoung Kim      if test -n "$dest"; then
2812*735d6239SKiyoung Kim	func_append files " $dest"
2813*735d6239SKiyoung Kim	dest=$arg
2814*735d6239SKiyoung Kim	continue
2815*735d6239SKiyoung Kim      fi
2816*735d6239SKiyoung Kim
2817*735d6239SKiyoung Kim      case $arg in
2818*735d6239SKiyoung Kim      -d) isdir=yes ;;
2819*735d6239SKiyoung Kim      -f)
2820*735d6239SKiyoung Kim	if $install_cp; then :; else
2821*735d6239SKiyoung Kim	  prev=$arg
2822*735d6239SKiyoung Kim	fi
2823*735d6239SKiyoung Kim	;;
2824*735d6239SKiyoung Kim      -g | -m | -o)
2825*735d6239SKiyoung Kim	prev=$arg
2826*735d6239SKiyoung Kim	;;
2827*735d6239SKiyoung Kim      -s)
2828*735d6239SKiyoung Kim	stripme=" -s"
2829*735d6239SKiyoung Kim	continue
2830*735d6239SKiyoung Kim	;;
2831*735d6239SKiyoung Kim      -*)
2832*735d6239SKiyoung Kim	;;
2833*735d6239SKiyoung Kim      *)
2834*735d6239SKiyoung Kim	# If the previous option needed an argument, then skip it.
2835*735d6239SKiyoung Kim	if test -n "$prev"; then
2836*735d6239SKiyoung Kim	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2837*735d6239SKiyoung Kim	    arg2=$install_override_mode
2838*735d6239SKiyoung Kim	    no_mode=false
2839*735d6239SKiyoung Kim	  fi
2840*735d6239SKiyoung Kim	  prev=
2841*735d6239SKiyoung Kim	else
2842*735d6239SKiyoung Kim	  dest=$arg
2843*735d6239SKiyoung Kim	  continue
2844*735d6239SKiyoung Kim	fi
2845*735d6239SKiyoung Kim	;;
2846*735d6239SKiyoung Kim      esac
2847*735d6239SKiyoung Kim
2848*735d6239SKiyoung Kim      # Aesthetically quote the argument.
2849*735d6239SKiyoung Kim      func_quote_for_eval "$arg"
2850*735d6239SKiyoung Kim      func_append install_prog " $func_quote_for_eval_result"
2851*735d6239SKiyoung Kim      if test -n "$arg2"; then
2852*735d6239SKiyoung Kim	func_quote_for_eval "$arg2"
2853*735d6239SKiyoung Kim      fi
2854*735d6239SKiyoung Kim      func_append install_shared_prog " $func_quote_for_eval_result"
2855*735d6239SKiyoung Kim    done
2856*735d6239SKiyoung Kim
2857*735d6239SKiyoung Kim    test -z "$install_prog" && \
2858*735d6239SKiyoung Kim      func_fatal_help "you must specify an install program"
2859*735d6239SKiyoung Kim
2860*735d6239SKiyoung Kim    test -n "$prev" && \
2861*735d6239SKiyoung Kim      func_fatal_help "the \`$prev' option requires an argument"
2862*735d6239SKiyoung Kim
2863*735d6239SKiyoung Kim    if test -n "$install_override_mode" && $no_mode; then
2864*735d6239SKiyoung Kim      if $install_cp; then :; else
2865*735d6239SKiyoung Kim	func_quote_for_eval "$install_override_mode"
2866*735d6239SKiyoung Kim	func_append install_shared_prog " -m $func_quote_for_eval_result"
2867*735d6239SKiyoung Kim      fi
2868*735d6239SKiyoung Kim    fi
2869*735d6239SKiyoung Kim
2870*735d6239SKiyoung Kim    if test -z "$files"; then
2871*735d6239SKiyoung Kim      if test -z "$dest"; then
2872*735d6239SKiyoung Kim	func_fatal_help "no file or destination specified"
2873*735d6239SKiyoung Kim      else
2874*735d6239SKiyoung Kim	func_fatal_help "you must specify a destination"
2875*735d6239SKiyoung Kim      fi
2876*735d6239SKiyoung Kim    fi
2877*735d6239SKiyoung Kim
2878*735d6239SKiyoung Kim    # Strip any trailing slash from the destination.
2879*735d6239SKiyoung Kim    func_stripname '' '/' "$dest"
2880*735d6239SKiyoung Kim    dest=$func_stripname_result
2881*735d6239SKiyoung Kim
2882*735d6239SKiyoung Kim    # Check to see that the destination is a directory.
2883*735d6239SKiyoung Kim    test -d "$dest" && isdir=yes
2884*735d6239SKiyoung Kim    if test "$isdir" = yes; then
2885*735d6239SKiyoung Kim      destdir="$dest"
2886*735d6239SKiyoung Kim      destname=
2887*735d6239SKiyoung Kim    else
2888*735d6239SKiyoung Kim      func_dirname_and_basename "$dest" "" "."
2889*735d6239SKiyoung Kim      destdir="$func_dirname_result"
2890*735d6239SKiyoung Kim      destname="$func_basename_result"
2891*735d6239SKiyoung Kim
2892*735d6239SKiyoung Kim      # Not a directory, so check to see that there is only one file specified.
2893*735d6239SKiyoung Kim      set dummy $files; shift
2894*735d6239SKiyoung Kim      test "$#" -gt 1 && \
2895*735d6239SKiyoung Kim	func_fatal_help "\`$dest' is not a directory"
2896*735d6239SKiyoung Kim    fi
2897*735d6239SKiyoung Kim    case $destdir in
2898*735d6239SKiyoung Kim    [\\/]* | [A-Za-z]:[\\/]*) ;;
2899*735d6239SKiyoung Kim    *)
2900*735d6239SKiyoung Kim      for file in $files; do
2901*735d6239SKiyoung Kim	case $file in
2902*735d6239SKiyoung Kim	*.lo) ;;
2903*735d6239SKiyoung Kim	*)
2904*735d6239SKiyoung Kim	  func_fatal_help "\`$destdir' must be an absolute directory name"
2905*735d6239SKiyoung Kim	  ;;
2906*735d6239SKiyoung Kim	esac
2907*735d6239SKiyoung Kim      done
2908*735d6239SKiyoung Kim      ;;
2909*735d6239SKiyoung Kim    esac
2910*735d6239SKiyoung Kim
2911*735d6239SKiyoung Kim    # This variable tells wrapper scripts just to set variables rather
2912*735d6239SKiyoung Kim    # than running their programs.
2913*735d6239SKiyoung Kim    libtool_install_magic="$magic"
2914*735d6239SKiyoung Kim
2915*735d6239SKiyoung Kim    staticlibs=
2916*735d6239SKiyoung Kim    future_libdirs=
2917*735d6239SKiyoung Kim    current_libdirs=
2918*735d6239SKiyoung Kim    for file in $files; do
2919*735d6239SKiyoung Kim
2920*735d6239SKiyoung Kim      # Do each installation.
2921*735d6239SKiyoung Kim      case $file in
2922*735d6239SKiyoung Kim      *.$libext)
2923*735d6239SKiyoung Kim	# Do the static libraries later.
2924*735d6239SKiyoung Kim	func_append staticlibs " $file"
2925*735d6239SKiyoung Kim	;;
2926*735d6239SKiyoung Kim
2927*735d6239SKiyoung Kim      *.la)
2928*735d6239SKiyoung Kim	func_resolve_sysroot "$file"
2929*735d6239SKiyoung Kim	file=$func_resolve_sysroot_result
2930*735d6239SKiyoung Kim
2931*735d6239SKiyoung Kim	# Check to see that this really is a libtool archive.
2932*735d6239SKiyoung Kim	func_lalib_unsafe_p "$file" \
2933*735d6239SKiyoung Kim	  || func_fatal_help "\`$file' is not a valid libtool archive"
2934*735d6239SKiyoung Kim
2935*735d6239SKiyoung Kim	library_names=
2936*735d6239SKiyoung Kim	old_library=
2937*735d6239SKiyoung Kim	relink_command=
2938*735d6239SKiyoung Kim	func_source "$file"
2939*735d6239SKiyoung Kim
2940*735d6239SKiyoung Kim	# Add the libdir to current_libdirs if it is the destination.
2941*735d6239SKiyoung Kim	if test "X$destdir" = "X$libdir"; then
2942*735d6239SKiyoung Kim	  case "$current_libdirs " in
2943*735d6239SKiyoung Kim	  *" $libdir "*) ;;
2944*735d6239SKiyoung Kim	  *) func_append current_libdirs " $libdir" ;;
2945*735d6239SKiyoung Kim	  esac
2946*735d6239SKiyoung Kim	else
2947*735d6239SKiyoung Kim	  # Note the libdir as a future libdir.
2948*735d6239SKiyoung Kim	  case "$future_libdirs " in
2949*735d6239SKiyoung Kim	  *" $libdir "*) ;;
2950*735d6239SKiyoung Kim	  *) func_append future_libdirs " $libdir" ;;
2951*735d6239SKiyoung Kim	  esac
2952*735d6239SKiyoung Kim	fi
2953*735d6239SKiyoung Kim
2954*735d6239SKiyoung Kim	func_dirname "$file" "/" ""
2955*735d6239SKiyoung Kim	dir="$func_dirname_result"
2956*735d6239SKiyoung Kim	func_append dir "$objdir"
2957*735d6239SKiyoung Kim
2958*735d6239SKiyoung Kim	if test -n "$relink_command"; then
2959*735d6239SKiyoung Kim	  # Determine the prefix the user has applied to our future dir.
2960*735d6239SKiyoung Kim	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2961*735d6239SKiyoung Kim
2962*735d6239SKiyoung Kim	  # Don't allow the user to place us outside of our expected
2963*735d6239SKiyoung Kim	  # location b/c this prevents finding dependent libraries that
2964*735d6239SKiyoung Kim	  # are installed to the same prefix.
2965*735d6239SKiyoung Kim	  # At present, this check doesn't affect windows .dll's that
2966*735d6239SKiyoung Kim	  # are installed into $libdir/../bin (currently, that works fine)
2967*735d6239SKiyoung Kim	  # but it's something to keep an eye on.
2968*735d6239SKiyoung Kim	  test "$inst_prefix_dir" = "$destdir" && \
2969*735d6239SKiyoung Kim	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2970*735d6239SKiyoung Kim
2971*735d6239SKiyoung Kim	  if test -n "$inst_prefix_dir"; then
2972*735d6239SKiyoung Kim	    # Stick the inst_prefix_dir data into the link command.
2973*735d6239SKiyoung Kim	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2974*735d6239SKiyoung Kim	  else
2975*735d6239SKiyoung Kim	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2976*735d6239SKiyoung Kim	  fi
2977*735d6239SKiyoung Kim
2978*735d6239SKiyoung Kim	  func_warning "relinking \`$file'"
2979*735d6239SKiyoung Kim	  func_show_eval "$relink_command" \
2980*735d6239SKiyoung Kim	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2981*735d6239SKiyoung Kim	fi
2982*735d6239SKiyoung Kim
2983*735d6239SKiyoung Kim	# See the names of the shared library.
2984*735d6239SKiyoung Kim	set dummy $library_names; shift
2985*735d6239SKiyoung Kim	if test -n "$1"; then
2986*735d6239SKiyoung Kim	  realname="$1"
2987*735d6239SKiyoung Kim	  shift
2988*735d6239SKiyoung Kim
2989*735d6239SKiyoung Kim	  srcname="$realname"
2990*735d6239SKiyoung Kim	  test -n "$relink_command" && srcname="$realname"T
2991*735d6239SKiyoung Kim
2992*735d6239SKiyoung Kim	  # Install the shared library and build the symlinks.
2993*735d6239SKiyoung Kim	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2994*735d6239SKiyoung Kim	      'exit $?'
2995*735d6239SKiyoung Kim	  tstripme="$stripme"
2996*735d6239SKiyoung Kim	  case $host_os in
2997*735d6239SKiyoung Kim	  cygwin* | mingw* | pw32* | cegcc*)
2998*735d6239SKiyoung Kim	    case $realname in
2999*735d6239SKiyoung Kim	    *.dll.a)
3000*735d6239SKiyoung Kim	      tstripme=""
3001*735d6239SKiyoung Kim	      ;;
3002*735d6239SKiyoung Kim	    esac
3003*735d6239SKiyoung Kim	    ;;
3004*735d6239SKiyoung Kim	  esac
3005*735d6239SKiyoung Kim	  if test -n "$tstripme" && test -n "$striplib"; then
3006*735d6239SKiyoung Kim	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3007*735d6239SKiyoung Kim	  fi
3008*735d6239SKiyoung Kim
3009*735d6239SKiyoung Kim	  if test "$#" -gt 0; then
3010*735d6239SKiyoung Kim	    # Delete the old symlinks, and create new ones.
3011*735d6239SKiyoung Kim	    # Try `ln -sf' first, because the `ln' binary might depend on
3012*735d6239SKiyoung Kim	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3013*735d6239SKiyoung Kim	    # so we also need to try rm && ln -s.
3014*735d6239SKiyoung Kim	    for linkname
3015*735d6239SKiyoung Kim	    do
3016*735d6239SKiyoung Kim	      test "$linkname" != "$realname" \
3017*735d6239SKiyoung Kim		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3018*735d6239SKiyoung Kim	    done
3019*735d6239SKiyoung Kim	  fi
3020*735d6239SKiyoung Kim
3021*735d6239SKiyoung Kim	  # Do each command in the postinstall commands.
3022*735d6239SKiyoung Kim	  lib="$destdir/$realname"
3023*735d6239SKiyoung Kim	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3024*735d6239SKiyoung Kim	fi
3025*735d6239SKiyoung Kim
3026*735d6239SKiyoung Kim	# Install the pseudo-library for information purposes.
3027*735d6239SKiyoung Kim	func_basename "$file"
3028*735d6239SKiyoung Kim	name="$func_basename_result"
3029*735d6239SKiyoung Kim	instname="$dir/$name"i
3030*735d6239SKiyoung Kim	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3031*735d6239SKiyoung Kim
3032*735d6239SKiyoung Kim	# Maybe install the static library, too.
3033*735d6239SKiyoung Kim	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3034*735d6239SKiyoung Kim	;;
3035*735d6239SKiyoung Kim
3036*735d6239SKiyoung Kim      *.lo)
3037*735d6239SKiyoung Kim	# Install (i.e. copy) a libtool object.
3038*735d6239SKiyoung Kim
3039*735d6239SKiyoung Kim	# Figure out destination file name, if it wasn't already specified.
3040*735d6239SKiyoung Kim	if test -n "$destname"; then
3041*735d6239SKiyoung Kim	  destfile="$destdir/$destname"
3042*735d6239SKiyoung Kim	else
3043*735d6239SKiyoung Kim	  func_basename "$file"
3044*735d6239SKiyoung Kim	  destfile="$func_basename_result"
3045*735d6239SKiyoung Kim	  destfile="$destdir/$destfile"
3046*735d6239SKiyoung Kim	fi
3047*735d6239SKiyoung Kim
3048*735d6239SKiyoung Kim	# Deduce the name of the destination old-style object file.
3049*735d6239SKiyoung Kim	case $destfile in
3050*735d6239SKiyoung Kim	*.lo)
3051*735d6239SKiyoung Kim	  func_lo2o "$destfile"
3052*735d6239SKiyoung Kim	  staticdest=$func_lo2o_result
3053*735d6239SKiyoung Kim	  ;;
3054*735d6239SKiyoung Kim	*.$objext)
3055*735d6239SKiyoung Kim	  staticdest="$destfile"
3056*735d6239SKiyoung Kim	  destfile=
3057*735d6239SKiyoung Kim	  ;;
3058*735d6239SKiyoung Kim	*)
3059*735d6239SKiyoung Kim	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3060*735d6239SKiyoung Kim	  ;;
3061*735d6239SKiyoung Kim	esac
3062*735d6239SKiyoung Kim
3063*735d6239SKiyoung Kim	# Install the libtool object if requested.
3064*735d6239SKiyoung Kim	test -n "$destfile" && \
3065*735d6239SKiyoung Kim	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3066*735d6239SKiyoung Kim
3067*735d6239SKiyoung Kim	# Install the old object if enabled.
3068*735d6239SKiyoung Kim	if test "$build_old_libs" = yes; then
3069*735d6239SKiyoung Kim	  # Deduce the name of the old-style object file.
3070*735d6239SKiyoung Kim	  func_lo2o "$file"
3071*735d6239SKiyoung Kim	  staticobj=$func_lo2o_result
3072*735d6239SKiyoung Kim	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3073*735d6239SKiyoung Kim	fi
3074*735d6239SKiyoung Kim	exit $EXIT_SUCCESS
3075*735d6239SKiyoung Kim	;;
3076*735d6239SKiyoung Kim
3077*735d6239SKiyoung Kim      *)
3078*735d6239SKiyoung Kim	# Figure out destination file name, if it wasn't already specified.
3079*735d6239SKiyoung Kim	if test -n "$destname"; then
3080*735d6239SKiyoung Kim	  destfile="$destdir/$destname"
3081*735d6239SKiyoung Kim	else
3082*735d6239SKiyoung Kim	  func_basename "$file"
3083*735d6239SKiyoung Kim	  destfile="$func_basename_result"
3084*735d6239SKiyoung Kim	  destfile="$destdir/$destfile"
3085*735d6239SKiyoung Kim	fi
3086*735d6239SKiyoung Kim
3087*735d6239SKiyoung Kim	# If the file is missing, and there is a .exe on the end, strip it
3088*735d6239SKiyoung Kim	# because it is most likely a libtool script we actually want to
3089*735d6239SKiyoung Kim	# install
3090*735d6239SKiyoung Kim	stripped_ext=""
3091*735d6239SKiyoung Kim	case $file in
3092*735d6239SKiyoung Kim	  *.exe)
3093*735d6239SKiyoung Kim	    if test ! -f "$file"; then
3094*735d6239SKiyoung Kim	      func_stripname '' '.exe' "$file"
3095*735d6239SKiyoung Kim	      file=$func_stripname_result
3096*735d6239SKiyoung Kim	      stripped_ext=".exe"
3097*735d6239SKiyoung Kim	    fi
3098*735d6239SKiyoung Kim	    ;;
3099*735d6239SKiyoung Kim	esac
3100*735d6239SKiyoung Kim
3101*735d6239SKiyoung Kim	# Do a test to see if this is really a libtool program.
3102*735d6239SKiyoung Kim	case $host in
3103*735d6239SKiyoung Kim	*cygwin* | *mingw*)
3104*735d6239SKiyoung Kim	    if func_ltwrapper_executable_p "$file"; then
3105*735d6239SKiyoung Kim	      func_ltwrapper_scriptname "$file"
3106*735d6239SKiyoung Kim	      wrapper=$func_ltwrapper_scriptname_result
3107*735d6239SKiyoung Kim	    else
3108*735d6239SKiyoung Kim	      func_stripname '' '.exe' "$file"
3109*735d6239SKiyoung Kim	      wrapper=$func_stripname_result
3110*735d6239SKiyoung Kim	    fi
3111*735d6239SKiyoung Kim	    ;;
3112*735d6239SKiyoung Kim	*)
3113*735d6239SKiyoung Kim	    wrapper=$file
3114*735d6239SKiyoung Kim	    ;;
3115*735d6239SKiyoung Kim	esac
3116*735d6239SKiyoung Kim	if func_ltwrapper_script_p "$wrapper"; then
3117*735d6239SKiyoung Kim	  notinst_deplibs=
3118*735d6239SKiyoung Kim	  relink_command=
3119*735d6239SKiyoung Kim
3120*735d6239SKiyoung Kim	  func_source "$wrapper"
3121*735d6239SKiyoung Kim
3122*735d6239SKiyoung Kim	  # Check the variables that should have been set.
3123*735d6239SKiyoung Kim	  test -z "$generated_by_libtool_version" && \
3124*735d6239SKiyoung Kim	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3125*735d6239SKiyoung Kim
3126*735d6239SKiyoung Kim	  finalize=yes
3127*735d6239SKiyoung Kim	  for lib in $notinst_deplibs; do
3128*735d6239SKiyoung Kim	    # Check to see that each library is installed.
3129*735d6239SKiyoung Kim	    libdir=
3130*735d6239SKiyoung Kim	    if test -f "$lib"; then
3131*735d6239SKiyoung Kim	      func_source "$lib"
3132*735d6239SKiyoung Kim	    fi
3133*735d6239SKiyoung Kim	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3134*735d6239SKiyoung Kim	    if test -n "$libdir" && test ! -f "$libfile"; then
3135*735d6239SKiyoung Kim	      func_warning "\`$lib' has not been installed in \`$libdir'"
3136*735d6239SKiyoung Kim	      finalize=no
3137*735d6239SKiyoung Kim	    fi
3138*735d6239SKiyoung Kim	  done
3139*735d6239SKiyoung Kim
3140*735d6239SKiyoung Kim	  relink_command=
3141*735d6239SKiyoung Kim	  func_source "$wrapper"
3142*735d6239SKiyoung Kim
3143*735d6239SKiyoung Kim	  outputname=
3144*735d6239SKiyoung Kim	  if test "$fast_install" = no && test -n "$relink_command"; then
3145*735d6239SKiyoung Kim	    $opt_dry_run || {
3146*735d6239SKiyoung Kim	      if test "$finalize" = yes; then
3147*735d6239SKiyoung Kim	        tmpdir=`func_mktempdir`
3148*735d6239SKiyoung Kim		func_basename "$file$stripped_ext"
3149*735d6239SKiyoung Kim		file="$func_basename_result"
3150*735d6239SKiyoung Kim	        outputname="$tmpdir/$file"
3151*735d6239SKiyoung Kim	        # Replace the output file specification.
3152*735d6239SKiyoung Kim	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3153*735d6239SKiyoung Kim
3154*735d6239SKiyoung Kim	        $opt_silent || {
3155*735d6239SKiyoung Kim	          func_quote_for_expand "$relink_command"
3156*735d6239SKiyoung Kim		  eval "func_echo $func_quote_for_expand_result"
3157*735d6239SKiyoung Kim	        }
3158*735d6239SKiyoung Kim	        if eval "$relink_command"; then :
3159*735d6239SKiyoung Kim	          else
3160*735d6239SKiyoung Kim		  func_error "error: relink \`$file' with the above command before installing it"
3161*735d6239SKiyoung Kim		  $opt_dry_run || ${RM}r "$tmpdir"
3162*735d6239SKiyoung Kim		  continue
3163*735d6239SKiyoung Kim	        fi
3164*735d6239SKiyoung Kim	        file="$outputname"
3165*735d6239SKiyoung Kim	      else
3166*735d6239SKiyoung Kim	        func_warning "cannot relink \`$file'"
3167*735d6239SKiyoung Kim	      fi
3168*735d6239SKiyoung Kim	    }
3169*735d6239SKiyoung Kim	  else
3170*735d6239SKiyoung Kim	    # Install the binary that we compiled earlier.
3171*735d6239SKiyoung Kim	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3172*735d6239SKiyoung Kim	  fi
3173*735d6239SKiyoung Kim	fi
3174*735d6239SKiyoung Kim
3175*735d6239SKiyoung Kim	# remove .exe since cygwin /usr/bin/install will append another
3176*735d6239SKiyoung Kim	# one anyway
3177*735d6239SKiyoung Kim	case $install_prog,$host in
3178*735d6239SKiyoung Kim	*/usr/bin/install*,*cygwin*)
3179*735d6239SKiyoung Kim	  case $file:$destfile in
3180*735d6239SKiyoung Kim	  *.exe:*.exe)
3181*735d6239SKiyoung Kim	    # this is ok
3182*735d6239SKiyoung Kim	    ;;
3183*735d6239SKiyoung Kim	  *.exe:*)
3184*735d6239SKiyoung Kim	    destfile=$destfile.exe
3185*735d6239SKiyoung Kim	    ;;
3186*735d6239SKiyoung Kim	  *:*.exe)
3187*735d6239SKiyoung Kim	    func_stripname '' '.exe' "$destfile"
3188*735d6239SKiyoung Kim	    destfile=$func_stripname_result
3189*735d6239SKiyoung Kim	    ;;
3190*735d6239SKiyoung Kim	  esac
3191*735d6239SKiyoung Kim	  ;;
3192*735d6239SKiyoung Kim	esac
3193*735d6239SKiyoung Kim	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3194*735d6239SKiyoung Kim	$opt_dry_run || if test -n "$outputname"; then
3195*735d6239SKiyoung Kim	  ${RM}r "$tmpdir"
3196*735d6239SKiyoung Kim	fi
3197*735d6239SKiyoung Kim	;;
3198*735d6239SKiyoung Kim      esac
3199*735d6239SKiyoung Kim    done
3200*735d6239SKiyoung Kim
3201*735d6239SKiyoung Kim    for file in $staticlibs; do
3202*735d6239SKiyoung Kim      func_basename "$file"
3203*735d6239SKiyoung Kim      name="$func_basename_result"
3204*735d6239SKiyoung Kim
3205*735d6239SKiyoung Kim      # Set up the ranlib parameters.
3206*735d6239SKiyoung Kim      oldlib="$destdir/$name"
3207*735d6239SKiyoung Kim
3208*735d6239SKiyoung Kim      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209*735d6239SKiyoung Kim
3210*735d6239SKiyoung Kim      if test -n "$stripme" && test -n "$old_striplib"; then
3211*735d6239SKiyoung Kim	func_show_eval "$old_striplib $oldlib" 'exit $?'
3212*735d6239SKiyoung Kim      fi
3213*735d6239SKiyoung Kim
3214*735d6239SKiyoung Kim      # Do each command in the postinstall commands.
3215*735d6239SKiyoung Kim      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216*735d6239SKiyoung Kim    done
3217*735d6239SKiyoung Kim
3218*735d6239SKiyoung Kim    test -n "$future_libdirs" && \
3219*735d6239SKiyoung Kim      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220*735d6239SKiyoung Kim
3221*735d6239SKiyoung Kim    if test -n "$current_libdirs"; then
3222*735d6239SKiyoung Kim      # Maybe just do a dry run.
3223*735d6239SKiyoung Kim      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224*735d6239SKiyoung Kim      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225*735d6239SKiyoung Kim    else
3226*735d6239SKiyoung Kim      exit $EXIT_SUCCESS
3227*735d6239SKiyoung Kim    fi
3228*735d6239SKiyoung Kim}
3229*735d6239SKiyoung Kim
3230*735d6239SKiyoung Kimtest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231*735d6239SKiyoung Kim
3232*735d6239SKiyoung Kim
3233*735d6239SKiyoung Kim# func_generate_dlsyms outputname originator pic_p
3234*735d6239SKiyoung Kim# Extract symbols from dlprefiles and create ${outputname}S.o with
3235*735d6239SKiyoung Kim# a dlpreopen symbol table.
3236*735d6239SKiyoung Kimfunc_generate_dlsyms ()
3237*735d6239SKiyoung Kim{
3238*735d6239SKiyoung Kim    $opt_debug
3239*735d6239SKiyoung Kim    my_outputname="$1"
3240*735d6239SKiyoung Kim    my_originator="$2"
3241*735d6239SKiyoung Kim    my_pic_p="${3-no}"
3242*735d6239SKiyoung Kim    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243*735d6239SKiyoung Kim    my_dlsyms=
3244*735d6239SKiyoung Kim
3245*735d6239SKiyoung Kim    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246*735d6239SKiyoung Kim      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247*735d6239SKiyoung Kim	my_dlsyms="${my_outputname}S.c"
3248*735d6239SKiyoung Kim      else
3249*735d6239SKiyoung Kim	func_error "not configured to extract global symbols from dlpreopened files"
3250*735d6239SKiyoung Kim      fi
3251*735d6239SKiyoung Kim    fi
3252*735d6239SKiyoung Kim
3253*735d6239SKiyoung Kim    if test -n "$my_dlsyms"; then
3254*735d6239SKiyoung Kim      case $my_dlsyms in
3255*735d6239SKiyoung Kim      "") ;;
3256*735d6239SKiyoung Kim      *.c)
3257*735d6239SKiyoung Kim	# Discover the nlist of each of the dlfiles.
3258*735d6239SKiyoung Kim	nlist="$output_objdir/${my_outputname}.nm"
3259*735d6239SKiyoung Kim
3260*735d6239SKiyoung Kim	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261*735d6239SKiyoung Kim
3262*735d6239SKiyoung Kim	# Parse the name list into a source file.
3263*735d6239SKiyoung Kim	func_verbose "creating $output_objdir/$my_dlsyms"
3264*735d6239SKiyoung Kim
3265*735d6239SKiyoung Kim	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266*735d6239SKiyoung Kim/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267*735d6239SKiyoung Kim/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268*735d6239SKiyoung Kim
3269*735d6239SKiyoung Kim#ifdef __cplusplus
3270*735d6239SKiyoung Kimextern \"C\" {
3271*735d6239SKiyoung Kim#endif
3272*735d6239SKiyoung Kim
3273*735d6239SKiyoung Kim#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274*735d6239SKiyoung Kim#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275*735d6239SKiyoung Kim#endif
3276*735d6239SKiyoung Kim
3277*735d6239SKiyoung Kim/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278*735d6239SKiyoung Kim#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279*735d6239SKiyoung Kim/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280*735d6239SKiyoung Kim   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281*735d6239SKiyoung Kim# define LT_DLSYM_CONST
3282*735d6239SKiyoung Kim#elif defined(__osf__)
3283*735d6239SKiyoung Kim/* This system does not cope well with relocations in const data.  */
3284*735d6239SKiyoung Kim# define LT_DLSYM_CONST
3285*735d6239SKiyoung Kim#else
3286*735d6239SKiyoung Kim# define LT_DLSYM_CONST const
3287*735d6239SKiyoung Kim#endif
3288*735d6239SKiyoung Kim
3289*735d6239SKiyoung Kim/* External symbol declarations for the compiler. */\
3290*735d6239SKiyoung Kim"
3291*735d6239SKiyoung Kim
3292*735d6239SKiyoung Kim	if test "$dlself" = yes; then
3293*735d6239SKiyoung Kim	  func_verbose "generating symbol list for \`$output'"
3294*735d6239SKiyoung Kim
3295*735d6239SKiyoung Kim	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296*735d6239SKiyoung Kim
3297*735d6239SKiyoung Kim	  # Add our own program objects to the symbol list.
3298*735d6239SKiyoung Kim	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299*735d6239SKiyoung Kim	  for progfile in $progfiles; do
3300*735d6239SKiyoung Kim	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301*735d6239SKiyoung Kim	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302*735d6239SKiyoung Kim	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303*735d6239SKiyoung Kim	  done
3304*735d6239SKiyoung Kim
3305*735d6239SKiyoung Kim	  if test -n "$exclude_expsyms"; then
3306*735d6239SKiyoung Kim	    $opt_dry_run || {
3307*735d6239SKiyoung Kim	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308*735d6239SKiyoung Kim	      eval '$MV "$nlist"T "$nlist"'
3309*735d6239SKiyoung Kim	    }
3310*735d6239SKiyoung Kim	  fi
3311*735d6239SKiyoung Kim
3312*735d6239SKiyoung Kim	  if test -n "$export_symbols_regex"; then
3313*735d6239SKiyoung Kim	    $opt_dry_run || {
3314*735d6239SKiyoung Kim	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315*735d6239SKiyoung Kim	      eval '$MV "$nlist"T "$nlist"'
3316*735d6239SKiyoung Kim	    }
3317*735d6239SKiyoung Kim	  fi
3318*735d6239SKiyoung Kim
3319*735d6239SKiyoung Kim	  # Prepare the list of exported symbols
3320*735d6239SKiyoung Kim	  if test -z "$export_symbols"; then
3321*735d6239SKiyoung Kim	    export_symbols="$output_objdir/$outputname.exp"
3322*735d6239SKiyoung Kim	    $opt_dry_run || {
3323*735d6239SKiyoung Kim	      $RM $export_symbols
3324*735d6239SKiyoung Kim	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325*735d6239SKiyoung Kim	      case $host in
3326*735d6239SKiyoung Kim	      *cygwin* | *mingw* | *cegcc* )
3327*735d6239SKiyoung Kim                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328*735d6239SKiyoung Kim                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329*735d6239SKiyoung Kim	        ;;
3330*735d6239SKiyoung Kim	      esac
3331*735d6239SKiyoung Kim	    }
3332*735d6239SKiyoung Kim	  else
3333*735d6239SKiyoung Kim	    $opt_dry_run || {
3334*735d6239SKiyoung Kim	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335*735d6239SKiyoung Kim	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336*735d6239SKiyoung Kim	      eval '$MV "$nlist"T "$nlist"'
3337*735d6239SKiyoung Kim	      case $host in
3338*735d6239SKiyoung Kim	        *cygwin* | *mingw* | *cegcc* )
3339*735d6239SKiyoung Kim	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340*735d6239SKiyoung Kim	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341*735d6239SKiyoung Kim	          ;;
3342*735d6239SKiyoung Kim	      esac
3343*735d6239SKiyoung Kim	    }
3344*735d6239SKiyoung Kim	  fi
3345*735d6239SKiyoung Kim	fi
3346*735d6239SKiyoung Kim
3347*735d6239SKiyoung Kim	for dlprefile in $dlprefiles; do
3348*735d6239SKiyoung Kim	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349*735d6239SKiyoung Kim	  func_basename "$dlprefile"
3350*735d6239SKiyoung Kim	  name="$func_basename_result"
3351*735d6239SKiyoung Kim          case $host in
3352*735d6239SKiyoung Kim	    *cygwin* | *mingw* | *cegcc* )
3353*735d6239SKiyoung Kim	      # if an import library, we need to obtain dlname
3354*735d6239SKiyoung Kim	      if func_win32_import_lib_p "$dlprefile"; then
3355*735d6239SKiyoung Kim	        func_tr_sh "$dlprefile"
3356*735d6239SKiyoung Kim	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357*735d6239SKiyoung Kim	        dlprefile_dlbasename=""
3358*735d6239SKiyoung Kim	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359*735d6239SKiyoung Kim	          # Use subshell, to avoid clobbering current variable values
3360*735d6239SKiyoung Kim	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361*735d6239SKiyoung Kim	          if test -n "$dlprefile_dlname" ; then
3362*735d6239SKiyoung Kim	            func_basename "$dlprefile_dlname"
3363*735d6239SKiyoung Kim	            dlprefile_dlbasename="$func_basename_result"
3364*735d6239SKiyoung Kim	          else
3365*735d6239SKiyoung Kim	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366*735d6239SKiyoung Kim	            $sharedlib_from_linklib_cmd "$dlprefile"
3367*735d6239SKiyoung Kim	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368*735d6239SKiyoung Kim	          fi
3369*735d6239SKiyoung Kim	        fi
3370*735d6239SKiyoung Kim	        $opt_dry_run || {
3371*735d6239SKiyoung Kim	          if test -n "$dlprefile_dlbasename" ; then
3372*735d6239SKiyoung Kim	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373*735d6239SKiyoung Kim	          else
3374*735d6239SKiyoung Kim	            func_warning "Could not compute DLL name from $name"
3375*735d6239SKiyoung Kim	            eval '$ECHO ": $name " >> "$nlist"'
3376*735d6239SKiyoung Kim	          fi
3377*735d6239SKiyoung Kim	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378*735d6239SKiyoung Kim	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379*735d6239SKiyoung Kim	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380*735d6239SKiyoung Kim	        }
3381*735d6239SKiyoung Kim	      else # not an import lib
3382*735d6239SKiyoung Kim	        $opt_dry_run || {
3383*735d6239SKiyoung Kim	          eval '$ECHO ": $name " >> "$nlist"'
3384*735d6239SKiyoung Kim	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385*735d6239SKiyoung Kim	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386*735d6239SKiyoung Kim	        }
3387*735d6239SKiyoung Kim	      fi
3388*735d6239SKiyoung Kim	    ;;
3389*735d6239SKiyoung Kim	    *)
3390*735d6239SKiyoung Kim	      $opt_dry_run || {
3391*735d6239SKiyoung Kim	        eval '$ECHO ": $name " >> "$nlist"'
3392*735d6239SKiyoung Kim	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393*735d6239SKiyoung Kim	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394*735d6239SKiyoung Kim	      }
3395*735d6239SKiyoung Kim	    ;;
3396*735d6239SKiyoung Kim          esac
3397*735d6239SKiyoung Kim	done
3398*735d6239SKiyoung Kim
3399*735d6239SKiyoung Kim	$opt_dry_run || {
3400*735d6239SKiyoung Kim	  # Make sure we have at least an empty file.
3401*735d6239SKiyoung Kim	  test -f "$nlist" || : > "$nlist"
3402*735d6239SKiyoung Kim
3403*735d6239SKiyoung Kim	  if test -n "$exclude_expsyms"; then
3404*735d6239SKiyoung Kim	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405*735d6239SKiyoung Kim	    $MV "$nlist"T "$nlist"
3406*735d6239SKiyoung Kim	  fi
3407*735d6239SKiyoung Kim
3408*735d6239SKiyoung Kim	  # Try sorting and uniquifying the output.
3409*735d6239SKiyoung Kim	  if $GREP -v "^: " < "$nlist" |
3410*735d6239SKiyoung Kim	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411*735d6239SKiyoung Kim		sort -k 3
3412*735d6239SKiyoung Kim	      else
3413*735d6239SKiyoung Kim		sort +2
3414*735d6239SKiyoung Kim	      fi |
3415*735d6239SKiyoung Kim	      uniq > "$nlist"S; then
3416*735d6239SKiyoung Kim	    :
3417*735d6239SKiyoung Kim	  else
3418*735d6239SKiyoung Kim	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419*735d6239SKiyoung Kim	  fi
3420*735d6239SKiyoung Kim
3421*735d6239SKiyoung Kim	  if test -f "$nlist"S; then
3422*735d6239SKiyoung Kim	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423*735d6239SKiyoung Kim	  else
3424*735d6239SKiyoung Kim	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425*735d6239SKiyoung Kim	  fi
3426*735d6239SKiyoung Kim
3427*735d6239SKiyoung Kim	  echo >> "$output_objdir/$my_dlsyms" "\
3428*735d6239SKiyoung Kim
3429*735d6239SKiyoung Kim/* The mapping between symbol names and symbols.  */
3430*735d6239SKiyoung Kimtypedef struct {
3431*735d6239SKiyoung Kim  const char *name;
3432*735d6239SKiyoung Kim  void *address;
3433*735d6239SKiyoung Kim} lt_dlsymlist;
3434*735d6239SKiyoung Kimextern LT_DLSYM_CONST lt_dlsymlist
3435*735d6239SKiyoung Kimlt_${my_prefix}_LTX_preloaded_symbols[];
3436*735d6239SKiyoung KimLT_DLSYM_CONST lt_dlsymlist
3437*735d6239SKiyoung Kimlt_${my_prefix}_LTX_preloaded_symbols[] =
3438*735d6239SKiyoung Kim{\
3439*735d6239SKiyoung Kim  { \"$my_originator\", (void *) 0 },"
3440*735d6239SKiyoung Kim
3441*735d6239SKiyoung Kim	  case $need_lib_prefix in
3442*735d6239SKiyoung Kim	  no)
3443*735d6239SKiyoung Kim	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444*735d6239SKiyoung Kim	    ;;
3445*735d6239SKiyoung Kim	  *)
3446*735d6239SKiyoung Kim	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447*735d6239SKiyoung Kim	    ;;
3448*735d6239SKiyoung Kim	  esac
3449*735d6239SKiyoung Kim	  echo >> "$output_objdir/$my_dlsyms" "\
3450*735d6239SKiyoung Kim  {0, (void *) 0}
3451*735d6239SKiyoung Kim};
3452*735d6239SKiyoung Kim
3453*735d6239SKiyoung Kim/* This works around a problem in FreeBSD linker */
3454*735d6239SKiyoung Kim#ifdef FREEBSD_WORKAROUND
3455*735d6239SKiyoung Kimstatic const void *lt_preloaded_setup() {
3456*735d6239SKiyoung Kim  return lt_${my_prefix}_LTX_preloaded_symbols;
3457*735d6239SKiyoung Kim}
3458*735d6239SKiyoung Kim#endif
3459*735d6239SKiyoung Kim
3460*735d6239SKiyoung Kim#ifdef __cplusplus
3461*735d6239SKiyoung Kim}
3462*735d6239SKiyoung Kim#endif\
3463*735d6239SKiyoung Kim"
3464*735d6239SKiyoung Kim	} # !$opt_dry_run
3465*735d6239SKiyoung Kim
3466*735d6239SKiyoung Kim	pic_flag_for_symtable=
3467*735d6239SKiyoung Kim	case "$compile_command " in
3468*735d6239SKiyoung Kim	*" -static "*) ;;
3469*735d6239SKiyoung Kim	*)
3470*735d6239SKiyoung Kim	  case $host in
3471*735d6239SKiyoung Kim	  # compiling the symbol table file with pic_flag works around
3472*735d6239SKiyoung Kim	  # a FreeBSD bug that causes programs to crash when -lm is
3473*735d6239SKiyoung Kim	  # linked before any other PIC object.  But we must not use
3474*735d6239SKiyoung Kim	  # pic_flag when linking with -static.  The problem exists in
3475*735d6239SKiyoung Kim	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476*735d6239SKiyoung Kim	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477*735d6239SKiyoung Kim	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478*735d6239SKiyoung Kim	  *-*-hpux*)
3479*735d6239SKiyoung Kim	    pic_flag_for_symtable=" $pic_flag"  ;;
3480*735d6239SKiyoung Kim	  *)
3481*735d6239SKiyoung Kim	    if test "X$my_pic_p" != Xno; then
3482*735d6239SKiyoung Kim	      pic_flag_for_symtable=" $pic_flag"
3483*735d6239SKiyoung Kim	    fi
3484*735d6239SKiyoung Kim	    ;;
3485*735d6239SKiyoung Kim	  esac
3486*735d6239SKiyoung Kim	  ;;
3487*735d6239SKiyoung Kim	esac
3488*735d6239SKiyoung Kim	symtab_cflags=
3489*735d6239SKiyoung Kim	for arg in $LTCFLAGS; do
3490*735d6239SKiyoung Kim	  case $arg in
3491*735d6239SKiyoung Kim	  -pie | -fpie | -fPIE) ;;
3492*735d6239SKiyoung Kim	  *) func_append symtab_cflags " $arg" ;;
3493*735d6239SKiyoung Kim	  esac
3494*735d6239SKiyoung Kim	done
3495*735d6239SKiyoung Kim
3496*735d6239SKiyoung Kim	# Now compile the dynamic symbol file.
3497*735d6239SKiyoung Kim	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498*735d6239SKiyoung Kim
3499*735d6239SKiyoung Kim	# Clean up the generated files.
3500*735d6239SKiyoung Kim	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501*735d6239SKiyoung Kim
3502*735d6239SKiyoung Kim	# Transform the symbol file into the correct name.
3503*735d6239SKiyoung Kim	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504*735d6239SKiyoung Kim	case $host in
3505*735d6239SKiyoung Kim	*cygwin* | *mingw* | *cegcc* )
3506*735d6239SKiyoung Kim	  if test -f "$output_objdir/$my_outputname.def"; then
3507*735d6239SKiyoung Kim	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508*735d6239SKiyoung Kim	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509*735d6239SKiyoung Kim	  else
3510*735d6239SKiyoung Kim	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511*735d6239SKiyoung Kim	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512*735d6239SKiyoung Kim	  fi
3513*735d6239SKiyoung Kim	  ;;
3514*735d6239SKiyoung Kim	*)
3515*735d6239SKiyoung Kim	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516*735d6239SKiyoung Kim	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517*735d6239SKiyoung Kim	  ;;
3518*735d6239SKiyoung Kim	esac
3519*735d6239SKiyoung Kim	;;
3520*735d6239SKiyoung Kim      *)
3521*735d6239SKiyoung Kim	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522*735d6239SKiyoung Kim	;;
3523*735d6239SKiyoung Kim      esac
3524*735d6239SKiyoung Kim    else
3525*735d6239SKiyoung Kim      # We keep going just in case the user didn't refer to
3526*735d6239SKiyoung Kim      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527*735d6239SKiyoung Kim      # really was required.
3528*735d6239SKiyoung Kim
3529*735d6239SKiyoung Kim      # Nullify the symbol file.
3530*735d6239SKiyoung Kim      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531*735d6239SKiyoung Kim      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532*735d6239SKiyoung Kim    fi
3533*735d6239SKiyoung Kim}
3534*735d6239SKiyoung Kim
3535*735d6239SKiyoung Kim# func_win32_libid arg
3536*735d6239SKiyoung Kim# return the library type of file 'arg'
3537*735d6239SKiyoung Kim#
3538*735d6239SKiyoung Kim# Need a lot of goo to handle *both* DLLs and import libs
3539*735d6239SKiyoung Kim# Has to be a shell function in order to 'eat' the argument
3540*735d6239SKiyoung Kim# that is supplied when $file_magic_command is called.
3541*735d6239SKiyoung Kim# Despite the name, also deal with 64 bit binaries.
3542*735d6239SKiyoung Kimfunc_win32_libid ()
3543*735d6239SKiyoung Kim{
3544*735d6239SKiyoung Kim  $opt_debug
3545*735d6239SKiyoung Kim  win32_libid_type="unknown"
3546*735d6239SKiyoung Kim  win32_fileres=`file -L $1 2>/dev/null`
3547*735d6239SKiyoung Kim  case $win32_fileres in
3548*735d6239SKiyoung Kim  *ar\ archive\ import\ library*) # definitely import
3549*735d6239SKiyoung Kim    win32_libid_type="x86 archive import"
3550*735d6239SKiyoung Kim    ;;
3551*735d6239SKiyoung Kim  *ar\ archive*) # could be an import, or static
3552*735d6239SKiyoung Kim    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553*735d6239SKiyoung Kim    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554*735d6239SKiyoung Kim       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555*735d6239SKiyoung Kim      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556*735d6239SKiyoung Kim      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557*735d6239SKiyoung Kim	$SED -n -e '
3558*735d6239SKiyoung Kim	    1,100{
3559*735d6239SKiyoung Kim		/ I /{
3560*735d6239SKiyoung Kim		    s,.*,import,
3561*735d6239SKiyoung Kim		    p
3562*735d6239SKiyoung Kim		    q
3563*735d6239SKiyoung Kim		}
3564*735d6239SKiyoung Kim	    }'`
3565*735d6239SKiyoung Kim      case $win32_nmres in
3566*735d6239SKiyoung Kim      import*)  win32_libid_type="x86 archive import";;
3567*735d6239SKiyoung Kim      *)        win32_libid_type="x86 archive static";;
3568*735d6239SKiyoung Kim      esac
3569*735d6239SKiyoung Kim    fi
3570*735d6239SKiyoung Kim    ;;
3571*735d6239SKiyoung Kim  *DLL*)
3572*735d6239SKiyoung Kim    win32_libid_type="x86 DLL"
3573*735d6239SKiyoung Kim    ;;
3574*735d6239SKiyoung Kim  *executable*) # but shell scripts are "executable" too...
3575*735d6239SKiyoung Kim    case $win32_fileres in
3576*735d6239SKiyoung Kim    *MS\ Windows\ PE\ Intel*)
3577*735d6239SKiyoung Kim      win32_libid_type="x86 DLL"
3578*735d6239SKiyoung Kim      ;;
3579*735d6239SKiyoung Kim    esac
3580*735d6239SKiyoung Kim    ;;
3581*735d6239SKiyoung Kim  esac
3582*735d6239SKiyoung Kim  $ECHO "$win32_libid_type"
3583*735d6239SKiyoung Kim}
3584*735d6239SKiyoung Kim
3585*735d6239SKiyoung Kim# func_cygming_dll_for_implib ARG
3586*735d6239SKiyoung Kim#
3587*735d6239SKiyoung Kim# Platform-specific function to extract the
3588*735d6239SKiyoung Kim# name of the DLL associated with the specified
3589*735d6239SKiyoung Kim# import library ARG.
3590*735d6239SKiyoung Kim# Invoked by eval'ing the libtool variable
3591*735d6239SKiyoung Kim#    $sharedlib_from_linklib_cmd
3592*735d6239SKiyoung Kim# Result is available in the variable
3593*735d6239SKiyoung Kim#    $sharedlib_from_linklib_result
3594*735d6239SKiyoung Kimfunc_cygming_dll_for_implib ()
3595*735d6239SKiyoung Kim{
3596*735d6239SKiyoung Kim  $opt_debug
3597*735d6239SKiyoung Kim  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598*735d6239SKiyoung Kim}
3599*735d6239SKiyoung Kim
3600*735d6239SKiyoung Kim# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601*735d6239SKiyoung Kim#
3602*735d6239SKiyoung Kim# The is the core of a fallback implementation of a
3603*735d6239SKiyoung Kim# platform-specific function to extract the name of the
3604*735d6239SKiyoung Kim# DLL associated with the specified import library LIBNAME.
3605*735d6239SKiyoung Kim#
3606*735d6239SKiyoung Kim# SECTION_NAME is either .idata$6 or .idata$7, depending
3607*735d6239SKiyoung Kim# on the platform and compiler that created the implib.
3608*735d6239SKiyoung Kim#
3609*735d6239SKiyoung Kim# Echos the name of the DLL associated with the
3610*735d6239SKiyoung Kim# specified import library.
3611*735d6239SKiyoung Kimfunc_cygming_dll_for_implib_fallback_core ()
3612*735d6239SKiyoung Kim{
3613*735d6239SKiyoung Kim  $opt_debug
3614*735d6239SKiyoung Kim  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615*735d6239SKiyoung Kim  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616*735d6239SKiyoung Kim    $SED '/^Contents of section '"$match_literal"':/{
3617*735d6239SKiyoung Kim      # Place marker at beginning of archive member dllname section
3618*735d6239SKiyoung Kim      s/.*/====MARK====/
3619*735d6239SKiyoung Kim      p
3620*735d6239SKiyoung Kim      d
3621*735d6239SKiyoung Kim    }
3622*735d6239SKiyoung Kim    # These lines can sometimes be longer than 43 characters, but
3623*735d6239SKiyoung Kim    # are always uninteresting
3624*735d6239SKiyoung Kim    /:[	 ]*file format pe[i]\{,1\}-/d
3625*735d6239SKiyoung Kim    /^In archive [^:]*:/d
3626*735d6239SKiyoung Kim    # Ensure marker is printed
3627*735d6239SKiyoung Kim    /^====MARK====/p
3628*735d6239SKiyoung Kim    # Remove all lines with less than 43 characters
3629*735d6239SKiyoung Kim    /^.\{43\}/!d
3630*735d6239SKiyoung Kim    # From remaining lines, remove first 43 characters
3631*735d6239SKiyoung Kim    s/^.\{43\}//' |
3632*735d6239SKiyoung Kim    $SED -n '
3633*735d6239SKiyoung Kim      # Join marker and all lines until next marker into a single line
3634*735d6239SKiyoung Kim      /^====MARK====/ b para
3635*735d6239SKiyoung Kim      H
3636*735d6239SKiyoung Kim      $ b para
3637*735d6239SKiyoung Kim      b
3638*735d6239SKiyoung Kim      :para
3639*735d6239SKiyoung Kim      x
3640*735d6239SKiyoung Kim      s/\n//g
3641*735d6239SKiyoung Kim      # Remove the marker
3642*735d6239SKiyoung Kim      s/^====MARK====//
3643*735d6239SKiyoung Kim      # Remove trailing dots and whitespace
3644*735d6239SKiyoung Kim      s/[\. \t]*$//
3645*735d6239SKiyoung Kim      # Print
3646*735d6239SKiyoung Kim      /./p' |
3647*735d6239SKiyoung Kim    # we now have a list, one entry per line, of the stringified
3648*735d6239SKiyoung Kim    # contents of the appropriate section of all members of the
3649*735d6239SKiyoung Kim    # archive which possess that section. Heuristic: eliminate
3650*735d6239SKiyoung Kim    # all those which have a first or second character that is
3651*735d6239SKiyoung Kim    # a '.' (that is, objdump's representation of an unprintable
3652*735d6239SKiyoung Kim    # character.) This should work for all archives with less than
3653*735d6239SKiyoung Kim    # 0x302f exports -- but will fail for DLLs whose name actually
3654*735d6239SKiyoung Kim    # begins with a literal '.' or a single character followed by
3655*735d6239SKiyoung Kim    # a '.'.
3656*735d6239SKiyoung Kim    #
3657*735d6239SKiyoung Kim    # Of those that remain, print the first one.
3658*735d6239SKiyoung Kim    $SED -e '/^\./d;/^.\./d;q'
3659*735d6239SKiyoung Kim}
3660*735d6239SKiyoung Kim
3661*735d6239SKiyoung Kim# func_cygming_gnu_implib_p ARG
3662*735d6239SKiyoung Kim# This predicate returns with zero status (TRUE) if
3663*735d6239SKiyoung Kim# ARG is a GNU/binutils-style import library. Returns
3664*735d6239SKiyoung Kim# with nonzero status (FALSE) otherwise.
3665*735d6239SKiyoung Kimfunc_cygming_gnu_implib_p ()
3666*735d6239SKiyoung Kim{
3667*735d6239SKiyoung Kim  $opt_debug
3668*735d6239SKiyoung Kim  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669*735d6239SKiyoung Kim  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
3670*735d6239SKiyoung Kim  test -n "$func_cygming_gnu_implib_tmp"
3671*735d6239SKiyoung Kim}
3672*735d6239SKiyoung Kim
3673*735d6239SKiyoung Kim# func_cygming_ms_implib_p ARG
3674*735d6239SKiyoung Kim# This predicate returns with zero status (TRUE) if
3675*735d6239SKiyoung Kim# ARG is an MS-style import library. Returns
3676*735d6239SKiyoung Kim# with nonzero status (FALSE) otherwise.
3677*735d6239SKiyoung Kimfunc_cygming_ms_implib_p ()
3678*735d6239SKiyoung Kim{
3679*735d6239SKiyoung Kim  $opt_debug
3680*735d6239SKiyoung Kim  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681*735d6239SKiyoung Kim  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682*735d6239SKiyoung Kim  test -n "$func_cygming_ms_implib_tmp"
3683*735d6239SKiyoung Kim}
3684*735d6239SKiyoung Kim
3685*735d6239SKiyoung Kim# func_cygming_dll_for_implib_fallback ARG
3686*735d6239SKiyoung Kim# Platform-specific function to extract the
3687*735d6239SKiyoung Kim# name of the DLL associated with the specified
3688*735d6239SKiyoung Kim# import library ARG.
3689*735d6239SKiyoung Kim#
3690*735d6239SKiyoung Kim# This fallback implementation is for use when $DLLTOOL
3691*735d6239SKiyoung Kim# does not support the --identify-strict option.
3692*735d6239SKiyoung Kim# Invoked by eval'ing the libtool variable
3693*735d6239SKiyoung Kim#    $sharedlib_from_linklib_cmd
3694*735d6239SKiyoung Kim# Result is available in the variable
3695*735d6239SKiyoung Kim#    $sharedlib_from_linklib_result
3696*735d6239SKiyoung Kimfunc_cygming_dll_for_implib_fallback ()
3697*735d6239SKiyoung Kim{
3698*735d6239SKiyoung Kim  $opt_debug
3699*735d6239SKiyoung Kim  if func_cygming_gnu_implib_p "$1" ; then
3700*735d6239SKiyoung Kim    # binutils import library
3701*735d6239SKiyoung Kim    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702*735d6239SKiyoung Kim  elif func_cygming_ms_implib_p "$1" ; then
3703*735d6239SKiyoung Kim    # ms-generated import library
3704*735d6239SKiyoung Kim    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705*735d6239SKiyoung Kim  else
3706*735d6239SKiyoung Kim    # unknown
3707*735d6239SKiyoung Kim    sharedlib_from_linklib_result=""
3708*735d6239SKiyoung Kim  fi
3709*735d6239SKiyoung Kim}
3710*735d6239SKiyoung Kim
3711*735d6239SKiyoung Kim
3712*735d6239SKiyoung Kim# func_extract_an_archive dir oldlib
3713*735d6239SKiyoung Kimfunc_extract_an_archive ()
3714*735d6239SKiyoung Kim{
3715*735d6239SKiyoung Kim    $opt_debug
3716*735d6239SKiyoung Kim    f_ex_an_ar_dir="$1"; shift
3717*735d6239SKiyoung Kim    f_ex_an_ar_oldlib="$1"
3718*735d6239SKiyoung Kim    if test "$lock_old_archive_extraction" = yes; then
3719*735d6239SKiyoung Kim      lockfile=$f_ex_an_ar_oldlib.lock
3720*735d6239SKiyoung Kim      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721*735d6239SKiyoung Kim	func_echo "Waiting for $lockfile to be removed"
3722*735d6239SKiyoung Kim	sleep 2
3723*735d6239SKiyoung Kim      done
3724*735d6239SKiyoung Kim    fi
3725*735d6239SKiyoung Kim    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726*735d6239SKiyoung Kim		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727*735d6239SKiyoung Kim    if test "$lock_old_archive_extraction" = yes; then
3728*735d6239SKiyoung Kim      $opt_dry_run || rm -f "$lockfile"
3729*735d6239SKiyoung Kim    fi
3730*735d6239SKiyoung Kim    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731*735d6239SKiyoung Kim     :
3732*735d6239SKiyoung Kim    else
3733*735d6239SKiyoung Kim      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734*735d6239SKiyoung Kim    fi
3735*735d6239SKiyoung Kim}
3736*735d6239SKiyoung Kim
3737*735d6239SKiyoung Kim
3738*735d6239SKiyoung Kim# func_extract_archives gentop oldlib ...
3739*735d6239SKiyoung Kimfunc_extract_archives ()
3740*735d6239SKiyoung Kim{
3741*735d6239SKiyoung Kim    $opt_debug
3742*735d6239SKiyoung Kim    my_gentop="$1"; shift
3743*735d6239SKiyoung Kim    my_oldlibs=${1+"$@"}
3744*735d6239SKiyoung Kim    my_oldobjs=""
3745*735d6239SKiyoung Kim    my_xlib=""
3746*735d6239SKiyoung Kim    my_xabs=""
3747*735d6239SKiyoung Kim    my_xdir=""
3748*735d6239SKiyoung Kim
3749*735d6239SKiyoung Kim    for my_xlib in $my_oldlibs; do
3750*735d6239SKiyoung Kim      # Extract the objects.
3751*735d6239SKiyoung Kim      case $my_xlib in
3752*735d6239SKiyoung Kim	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753*735d6239SKiyoung Kim	*) my_xabs=`pwd`"/$my_xlib" ;;
3754*735d6239SKiyoung Kim      esac
3755*735d6239SKiyoung Kim      func_basename "$my_xlib"
3756*735d6239SKiyoung Kim      my_xlib="$func_basename_result"
3757*735d6239SKiyoung Kim      my_xlib_u=$my_xlib
3758*735d6239SKiyoung Kim      while :; do
3759*735d6239SKiyoung Kim        case " $extracted_archives " in
3760*735d6239SKiyoung Kim	*" $my_xlib_u "*)
3761*735d6239SKiyoung Kim	  func_arith $extracted_serial + 1
3762*735d6239SKiyoung Kim	  extracted_serial=$func_arith_result
3763*735d6239SKiyoung Kim	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764*735d6239SKiyoung Kim	*) break ;;
3765*735d6239SKiyoung Kim	esac
3766*735d6239SKiyoung Kim      done
3767*735d6239SKiyoung Kim      extracted_archives="$extracted_archives $my_xlib_u"
3768*735d6239SKiyoung Kim      my_xdir="$my_gentop/$my_xlib_u"
3769*735d6239SKiyoung Kim
3770*735d6239SKiyoung Kim      func_mkdir_p "$my_xdir"
3771*735d6239SKiyoung Kim
3772*735d6239SKiyoung Kim      case $host in
3773*735d6239SKiyoung Kim      *-darwin*)
3774*735d6239SKiyoung Kim	func_verbose "Extracting $my_xabs"
3775*735d6239SKiyoung Kim	# Do not bother doing anything if just a dry run
3776*735d6239SKiyoung Kim	$opt_dry_run || {
3777*735d6239SKiyoung Kim	  darwin_orig_dir=`pwd`
3778*735d6239SKiyoung Kim	  cd $my_xdir || exit $?
3779*735d6239SKiyoung Kim	  darwin_archive=$my_xabs
3780*735d6239SKiyoung Kim	  darwin_curdir=`pwd`
3781*735d6239SKiyoung Kim	  darwin_base_archive=`basename "$darwin_archive"`
3782*735d6239SKiyoung Kim	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783*735d6239SKiyoung Kim	  if test -n "$darwin_arches"; then
3784*735d6239SKiyoung Kim	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785*735d6239SKiyoung Kim	    darwin_arch=
3786*735d6239SKiyoung Kim	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787*735d6239SKiyoung Kim	    for darwin_arch in  $darwin_arches ; do
3788*735d6239SKiyoung Kim	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789*735d6239SKiyoung Kim	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790*735d6239SKiyoung Kim	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791*735d6239SKiyoung Kim	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792*735d6239SKiyoung Kim	      cd "$darwin_curdir"
3793*735d6239SKiyoung Kim	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794*735d6239SKiyoung Kim	    done # $darwin_arches
3795*735d6239SKiyoung Kim            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796*735d6239SKiyoung Kim	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797*735d6239SKiyoung Kim	    darwin_file=
3798*735d6239SKiyoung Kim	    darwin_files=
3799*735d6239SKiyoung Kim	    for darwin_file in $darwin_filelist; do
3800*735d6239SKiyoung Kim	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801*735d6239SKiyoung Kim	      $LIPO -create -output "$darwin_file" $darwin_files
3802*735d6239SKiyoung Kim	    done # $darwin_filelist
3803*735d6239SKiyoung Kim	    $RM -rf unfat-$$
3804*735d6239SKiyoung Kim	    cd "$darwin_orig_dir"
3805*735d6239SKiyoung Kim	  else
3806*735d6239SKiyoung Kim	    cd $darwin_orig_dir
3807*735d6239SKiyoung Kim	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808*735d6239SKiyoung Kim	  fi # $darwin_arches
3809*735d6239SKiyoung Kim	} # !$opt_dry_run
3810*735d6239SKiyoung Kim	;;
3811*735d6239SKiyoung Kim      *)
3812*735d6239SKiyoung Kim        func_extract_an_archive "$my_xdir" "$my_xabs"
3813*735d6239SKiyoung Kim	;;
3814*735d6239SKiyoung Kim      esac
3815*735d6239SKiyoung Kim      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816*735d6239SKiyoung Kim    done
3817*735d6239SKiyoung Kim
3818*735d6239SKiyoung Kim    func_extract_archives_result="$my_oldobjs"
3819*735d6239SKiyoung Kim}
3820*735d6239SKiyoung Kim
3821*735d6239SKiyoung Kim
3822*735d6239SKiyoung Kim# func_emit_wrapper [arg=no]
3823*735d6239SKiyoung Kim#
3824*735d6239SKiyoung Kim# Emit a libtool wrapper script on stdout.
3825*735d6239SKiyoung Kim# Don't directly open a file because we may want to
3826*735d6239SKiyoung Kim# incorporate the script contents within a cygwin/mingw
3827*735d6239SKiyoung Kim# wrapper executable.  Must ONLY be called from within
3828*735d6239SKiyoung Kim# func_mode_link because it depends on a number of variables
3829*735d6239SKiyoung Kim# set therein.
3830*735d6239SKiyoung Kim#
3831*735d6239SKiyoung Kim# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832*735d6239SKiyoung Kim# variable will take.  If 'yes', then the emitted script
3833*735d6239SKiyoung Kim# will assume that the directory in which it is stored is
3834*735d6239SKiyoung Kim# the $objdir directory.  This is a cygwin/mingw-specific
3835*735d6239SKiyoung Kim# behavior.
3836*735d6239SKiyoung Kimfunc_emit_wrapper ()
3837*735d6239SKiyoung Kim{
3838*735d6239SKiyoung Kim	func_emit_wrapper_arg1=${1-no}
3839*735d6239SKiyoung Kim
3840*735d6239SKiyoung Kim	$ECHO "\
3841*735d6239SKiyoung Kim#! $SHELL
3842*735d6239SKiyoung Kim
3843*735d6239SKiyoung Kim# $output - temporary wrapper script for $objdir/$outputname
3844*735d6239SKiyoung Kim# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845*735d6239SKiyoung Kim#
3846*735d6239SKiyoung Kim# The $output program cannot be directly executed until all the libtool
3847*735d6239SKiyoung Kim# libraries that it depends on are installed.
3848*735d6239SKiyoung Kim#
3849*735d6239SKiyoung Kim# This wrapper script should never be moved out of the build directory.
3850*735d6239SKiyoung Kim# If it is, it will not operate correctly.
3851*735d6239SKiyoung Kim
3852*735d6239SKiyoung Kim# Sed substitution that helps us do robust quoting.  It backslashifies
3853*735d6239SKiyoung Kim# metacharacters that are still active within double-quoted strings.
3854*735d6239SKiyoung Kimsed_quote_subst='$sed_quote_subst'
3855*735d6239SKiyoung Kim
3856*735d6239SKiyoung Kim# Be Bourne compatible
3857*735d6239SKiyoung Kimif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858*735d6239SKiyoung Kim  emulate sh
3859*735d6239SKiyoung Kim  NULLCMD=:
3860*735d6239SKiyoung Kim  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861*735d6239SKiyoung Kim  # is contrary to our usage.  Disable this feature.
3862*735d6239SKiyoung Kim  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863*735d6239SKiyoung Kim  setopt NO_GLOB_SUBST
3864*735d6239SKiyoung Kimelse
3865*735d6239SKiyoung Kim  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866*735d6239SKiyoung Kimfi
3867*735d6239SKiyoung KimBIN_SH=xpg4; export BIN_SH # for Tru64
3868*735d6239SKiyoung KimDUALCASE=1; export DUALCASE # for MKS sh
3869*735d6239SKiyoung Kim
3870*735d6239SKiyoung Kim# The HP-UX ksh and POSIX shell print the target directory to stdout
3871*735d6239SKiyoung Kim# if CDPATH is set.
3872*735d6239SKiyoung Kim(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873*735d6239SKiyoung Kim
3874*735d6239SKiyoung Kimrelink_command=\"$relink_command\"
3875*735d6239SKiyoung Kim
3876*735d6239SKiyoung Kim# This environment variable determines our operation mode.
3877*735d6239SKiyoung Kimif test \"\$libtool_install_magic\" = \"$magic\"; then
3878*735d6239SKiyoung Kim  # install mode needs the following variables:
3879*735d6239SKiyoung Kim  generated_by_libtool_version='$macro_version'
3880*735d6239SKiyoung Kim  notinst_deplibs='$notinst_deplibs'
3881*735d6239SKiyoung Kimelse
3882*735d6239SKiyoung Kim  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883*735d6239SKiyoung Kim  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884*735d6239SKiyoung Kim    file=\"\$0\""
3885*735d6239SKiyoung Kim
3886*735d6239SKiyoung Kim    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887*735d6239SKiyoung Kim    $ECHO "\
3888*735d6239SKiyoung Kim
3889*735d6239SKiyoung Kim# A function that is used when there is no print builtin or printf.
3890*735d6239SKiyoung Kimfunc_fallback_echo ()
3891*735d6239SKiyoung Kim{
3892*735d6239SKiyoung Kim  eval 'cat <<_LTECHO_EOF
3893*735d6239SKiyoung Kim\$1
3894*735d6239SKiyoung Kim_LTECHO_EOF'
3895*735d6239SKiyoung Kim}
3896*735d6239SKiyoung Kim    ECHO=\"$qECHO\"
3897*735d6239SKiyoung Kim  fi
3898*735d6239SKiyoung Kim
3899*735d6239SKiyoung Kim# Very basic option parsing. These options are (a) specific to
3900*735d6239SKiyoung Kim# the libtool wrapper, (b) are identical between the wrapper
3901*735d6239SKiyoung Kim# /script/ and the wrapper /executable/ which is used only on
3902*735d6239SKiyoung Kim# windows platforms, and (c) all begin with the string "--lt-"
3903*735d6239SKiyoung Kim# (application programs are unlikely to have options which match
3904*735d6239SKiyoung Kim# this pattern).
3905*735d6239SKiyoung Kim#
3906*735d6239SKiyoung Kim# There are only two supported options: --lt-debug and
3907*735d6239SKiyoung Kim# --lt-dump-script. There is, deliberately, no --lt-help.
3908*735d6239SKiyoung Kim#
3909*735d6239SKiyoung Kim# The first argument to this parsing function should be the
3910*735d6239SKiyoung Kim# script's $0 value, followed by "$@".
3911*735d6239SKiyoung Kimlt_option_debug=
3912*735d6239SKiyoung Kimfunc_parse_lt_options ()
3913*735d6239SKiyoung Kim{
3914*735d6239SKiyoung Kim  lt_script_arg0=\$0
3915*735d6239SKiyoung Kim  shift
3916*735d6239SKiyoung Kim  for lt_opt
3917*735d6239SKiyoung Kim  do
3918*735d6239SKiyoung Kim    case \"\$lt_opt\" in
3919*735d6239SKiyoung Kim    --lt-debug) lt_option_debug=1 ;;
3920*735d6239SKiyoung Kim    --lt-dump-script)
3921*735d6239SKiyoung Kim        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922*735d6239SKiyoung Kim        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923*735d6239SKiyoung Kim        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924*735d6239SKiyoung Kim        cat \"\$lt_dump_D/\$lt_dump_F\"
3925*735d6239SKiyoung Kim        exit 0
3926*735d6239SKiyoung Kim      ;;
3927*735d6239SKiyoung Kim    --lt-*)
3928*735d6239SKiyoung Kim        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929*735d6239SKiyoung Kim        exit 1
3930*735d6239SKiyoung Kim      ;;
3931*735d6239SKiyoung Kim    esac
3932*735d6239SKiyoung Kim  done
3933*735d6239SKiyoung Kim
3934*735d6239SKiyoung Kim  # Print the debug banner immediately:
3935*735d6239SKiyoung Kim  if test -n \"\$lt_option_debug\"; then
3936*735d6239SKiyoung Kim    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937*735d6239SKiyoung Kim  fi
3938*735d6239SKiyoung Kim}
3939*735d6239SKiyoung Kim
3940*735d6239SKiyoung Kim# Used when --lt-debug. Prints its arguments to stdout
3941*735d6239SKiyoung Kim# (redirection is the responsibility of the caller)
3942*735d6239SKiyoung Kimfunc_lt_dump_args ()
3943*735d6239SKiyoung Kim{
3944*735d6239SKiyoung Kim  lt_dump_args_N=1;
3945*735d6239SKiyoung Kim  for lt_arg
3946*735d6239SKiyoung Kim  do
3947*735d6239SKiyoung Kim    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948*735d6239SKiyoung Kim    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949*735d6239SKiyoung Kim  done
3950*735d6239SKiyoung Kim}
3951*735d6239SKiyoung Kim
3952*735d6239SKiyoung Kim# Core function for launching the target application
3953*735d6239SKiyoung Kimfunc_exec_program_core ()
3954*735d6239SKiyoung Kim{
3955*735d6239SKiyoung Kim"
3956*735d6239SKiyoung Kim  case $host in
3957*735d6239SKiyoung Kim  # Backslashes separate directories on plain windows
3958*735d6239SKiyoung Kim  *-*-mingw | *-*-os2* | *-cegcc*)
3959*735d6239SKiyoung Kim    $ECHO "\
3960*735d6239SKiyoung Kim      if test -n \"\$lt_option_debug\"; then
3961*735d6239SKiyoung Kim        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962*735d6239SKiyoung Kim        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963*735d6239SKiyoung Kim      fi
3964*735d6239SKiyoung Kim      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965*735d6239SKiyoung Kim"
3966*735d6239SKiyoung Kim    ;;
3967*735d6239SKiyoung Kim
3968*735d6239SKiyoung Kim  *)
3969*735d6239SKiyoung Kim    $ECHO "\
3970*735d6239SKiyoung Kim      if test -n \"\$lt_option_debug\"; then
3971*735d6239SKiyoung Kim        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972*735d6239SKiyoung Kim        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973*735d6239SKiyoung Kim      fi
3974*735d6239SKiyoung Kim      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975*735d6239SKiyoung Kim"
3976*735d6239SKiyoung Kim    ;;
3977*735d6239SKiyoung Kim  esac
3978*735d6239SKiyoung Kim  $ECHO "\
3979*735d6239SKiyoung Kim      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980*735d6239SKiyoung Kim      exit 1
3981*735d6239SKiyoung Kim}
3982*735d6239SKiyoung Kim
3983*735d6239SKiyoung Kim# A function to encapsulate launching the target application
3984*735d6239SKiyoung Kim# Strips options in the --lt-* namespace from \$@ and
3985*735d6239SKiyoung Kim# launches target application with the remaining arguments.
3986*735d6239SKiyoung Kimfunc_exec_program ()
3987*735d6239SKiyoung Kim{
3988*735d6239SKiyoung Kim  for lt_wr_arg
3989*735d6239SKiyoung Kim  do
3990*735d6239SKiyoung Kim    case \$lt_wr_arg in
3991*735d6239SKiyoung Kim    --lt-*) ;;
3992*735d6239SKiyoung Kim    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3993*735d6239SKiyoung Kim    esac
3994*735d6239SKiyoung Kim    shift
3995*735d6239SKiyoung Kim  done
3996*735d6239SKiyoung Kim  func_exec_program_core \${1+\"\$@\"}
3997*735d6239SKiyoung Kim}
3998*735d6239SKiyoung Kim
3999*735d6239SKiyoung Kim  # Parse options
4000*735d6239SKiyoung Kim  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4001*735d6239SKiyoung Kim
4002*735d6239SKiyoung Kim  # Find the directory that this script lives in.
4003*735d6239SKiyoung Kim  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4004*735d6239SKiyoung Kim  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4005*735d6239SKiyoung Kim
4006*735d6239SKiyoung Kim  # Follow symbolic links until we get to the real thisdir.
4007*735d6239SKiyoung Kim  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4008*735d6239SKiyoung Kim  while test -n \"\$file\"; do
4009*735d6239SKiyoung Kim    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4010*735d6239SKiyoung Kim
4011*735d6239SKiyoung Kim    # If there was a directory component, then change thisdir.
4012*735d6239SKiyoung Kim    if test \"x\$destdir\" != \"x\$file\"; then
4013*735d6239SKiyoung Kim      case \"\$destdir\" in
4014*735d6239SKiyoung Kim      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4015*735d6239SKiyoung Kim      *) thisdir=\"\$thisdir/\$destdir\" ;;
4016*735d6239SKiyoung Kim      esac
4017*735d6239SKiyoung Kim    fi
4018*735d6239SKiyoung Kim
4019*735d6239SKiyoung Kim    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4020*735d6239SKiyoung Kim    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4021*735d6239SKiyoung Kim  done
4022*735d6239SKiyoung Kim
4023*735d6239SKiyoung Kim  # Usually 'no', except on cygwin/mingw when embedded into
4024*735d6239SKiyoung Kim  # the cwrapper.
4025*735d6239SKiyoung Kim  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4026*735d6239SKiyoung Kim  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4027*735d6239SKiyoung Kim    # special case for '.'
4028*735d6239SKiyoung Kim    if test \"\$thisdir\" = \".\"; then
4029*735d6239SKiyoung Kim      thisdir=\`pwd\`
4030*735d6239SKiyoung Kim    fi
4031*735d6239SKiyoung Kim    # remove .libs from thisdir
4032*735d6239SKiyoung Kim    case \"\$thisdir\" in
4033*735d6239SKiyoung Kim    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4034*735d6239SKiyoung Kim    $objdir )   thisdir=. ;;
4035*735d6239SKiyoung Kim    esac
4036*735d6239SKiyoung Kim  fi
4037*735d6239SKiyoung Kim
4038*735d6239SKiyoung Kim  # Try to get the absolute directory name.
4039*735d6239SKiyoung Kim  absdir=\`cd \"\$thisdir\" && pwd\`
4040*735d6239SKiyoung Kim  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4041*735d6239SKiyoung Kim"
4042*735d6239SKiyoung Kim
4043*735d6239SKiyoung Kim	if test "$fast_install" = yes; then
4044*735d6239SKiyoung Kim	  $ECHO "\
4045*735d6239SKiyoung Kim  program=lt-'$outputname'$exeext
4046*735d6239SKiyoung Kim  progdir=\"\$thisdir/$objdir\"
4047*735d6239SKiyoung Kim
4048*735d6239SKiyoung Kim  if test ! -f \"\$progdir/\$program\" ||
4049*735d6239SKiyoung Kim     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4050*735d6239SKiyoung Kim       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4051*735d6239SKiyoung Kim
4052*735d6239SKiyoung Kim    file=\"\$\$-\$program\"
4053*735d6239SKiyoung Kim
4054*735d6239SKiyoung Kim    if test ! -d \"\$progdir\"; then
4055*735d6239SKiyoung Kim      $MKDIR \"\$progdir\"
4056*735d6239SKiyoung Kim    else
4057*735d6239SKiyoung Kim      $RM \"\$progdir/\$file\"
4058*735d6239SKiyoung Kim    fi"
4059*735d6239SKiyoung Kim
4060*735d6239SKiyoung Kim	  $ECHO "\
4061*735d6239SKiyoung Kim
4062*735d6239SKiyoung Kim    # relink executable if necessary
4063*735d6239SKiyoung Kim    if test -n \"\$relink_command\"; then
4064*735d6239SKiyoung Kim      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4065*735d6239SKiyoung Kim      else
4066*735d6239SKiyoung Kim	$ECHO \"\$relink_command_output\" >&2
4067*735d6239SKiyoung Kim	$RM \"\$progdir/\$file\"
4068*735d6239SKiyoung Kim	exit 1
4069*735d6239SKiyoung Kim      fi
4070*735d6239SKiyoung Kim    fi
4071*735d6239SKiyoung Kim
4072*735d6239SKiyoung Kim    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4073*735d6239SKiyoung Kim    { $RM \"\$progdir/\$program\";
4074*735d6239SKiyoung Kim      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4075*735d6239SKiyoung Kim    $RM \"\$progdir/\$file\"
4076*735d6239SKiyoung Kim  fi"
4077*735d6239SKiyoung Kim	else
4078*735d6239SKiyoung Kim	  $ECHO "\
4079*735d6239SKiyoung Kim  program='$outputname'
4080*735d6239SKiyoung Kim  progdir=\"\$thisdir/$objdir\"
4081*735d6239SKiyoung Kim"
4082*735d6239SKiyoung Kim	fi
4083*735d6239SKiyoung Kim
4084*735d6239SKiyoung Kim	$ECHO "\
4085*735d6239SKiyoung Kim
4086*735d6239SKiyoung Kim  if test -f \"\$progdir/\$program\"; then"
4087*735d6239SKiyoung Kim
4088*735d6239SKiyoung Kim	# fixup the dll searchpath if we need to.
4089*735d6239SKiyoung Kim	#
4090*735d6239SKiyoung Kim	# Fix the DLL searchpath if we need to.  Do this before prepending
4091*735d6239SKiyoung Kim	# to shlibpath, because on Windows, both are PATH and uninstalled
4092*735d6239SKiyoung Kim	# libraries must come first.
4093*735d6239SKiyoung Kim	if test -n "$dllsearchpath"; then
4094*735d6239SKiyoung Kim	  $ECHO "\
4095*735d6239SKiyoung Kim    # Add the dll search path components to the executable PATH
4096*735d6239SKiyoung Kim    PATH=$dllsearchpath:\$PATH
4097*735d6239SKiyoung Kim"
4098*735d6239SKiyoung Kim	fi
4099*735d6239SKiyoung Kim
4100*735d6239SKiyoung Kim	# Export our shlibpath_var if we have one.
4101*735d6239SKiyoung Kim	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4102*735d6239SKiyoung Kim	  $ECHO "\
4103*735d6239SKiyoung Kim    # Add our own library path to $shlibpath_var
4104*735d6239SKiyoung Kim    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4105*735d6239SKiyoung Kim
4106*735d6239SKiyoung Kim    # Some systems cannot cope with colon-terminated $shlibpath_var
4107*735d6239SKiyoung Kim    # The second colon is a workaround for a bug in BeOS R4 sed
4108*735d6239SKiyoung Kim    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4109*735d6239SKiyoung Kim
4110*735d6239SKiyoung Kim    export $shlibpath_var
4111*735d6239SKiyoung Kim"
4112*735d6239SKiyoung Kim	fi
4113*735d6239SKiyoung Kim
4114*735d6239SKiyoung Kim	$ECHO "\
4115*735d6239SKiyoung Kim    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4116*735d6239SKiyoung Kim      # Run the actual program with our arguments.
4117*735d6239SKiyoung Kim      func_exec_program \${1+\"\$@\"}
4118*735d6239SKiyoung Kim    fi
4119*735d6239SKiyoung Kim  else
4120*735d6239SKiyoung Kim    # The program doesn't exist.
4121*735d6239SKiyoung Kim    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4122*735d6239SKiyoung Kim    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4123*735d6239SKiyoung Kim    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4124*735d6239SKiyoung Kim    exit 1
4125*735d6239SKiyoung Kim  fi
4126*735d6239SKiyoung Kimfi\
4127*735d6239SKiyoung Kim"
4128*735d6239SKiyoung Kim}
4129*735d6239SKiyoung Kim
4130*735d6239SKiyoung Kim
4131*735d6239SKiyoung Kim# func_emit_cwrapperexe_src
4132*735d6239SKiyoung Kim# emit the source code for a wrapper executable on stdout
4133*735d6239SKiyoung Kim# Must ONLY be called from within func_mode_link because
4134*735d6239SKiyoung Kim# it depends on a number of variable set therein.
4135*735d6239SKiyoung Kimfunc_emit_cwrapperexe_src ()
4136*735d6239SKiyoung Kim{
4137*735d6239SKiyoung Kim	cat <<EOF
4138*735d6239SKiyoung Kim
4139*735d6239SKiyoung Kim/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4140*735d6239SKiyoung Kim   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4141*735d6239SKiyoung Kim
4142*735d6239SKiyoung Kim   The $output program cannot be directly executed until all the libtool
4143*735d6239SKiyoung Kim   libraries that it depends on are installed.
4144*735d6239SKiyoung Kim
4145*735d6239SKiyoung Kim   This wrapper executable should never be moved out of the build directory.
4146*735d6239SKiyoung Kim   If it is, it will not operate correctly.
4147*735d6239SKiyoung Kim*/
4148*735d6239SKiyoung KimEOF
4149*735d6239SKiyoung Kim	    cat <<"EOF"
4150*735d6239SKiyoung Kim#ifdef _MSC_VER
4151*735d6239SKiyoung Kim# define _CRT_SECURE_NO_DEPRECATE 1
4152*735d6239SKiyoung Kim#endif
4153*735d6239SKiyoung Kim#include <stdio.h>
4154*735d6239SKiyoung Kim#include <stdlib.h>
4155*735d6239SKiyoung Kim#ifdef _MSC_VER
4156*735d6239SKiyoung Kim# include <direct.h>
4157*735d6239SKiyoung Kim# include <process.h>
4158*735d6239SKiyoung Kim# include <io.h>
4159*735d6239SKiyoung Kim#else
4160*735d6239SKiyoung Kim# include <unistd.h>
4161*735d6239SKiyoung Kim# include <stdint.h>
4162*735d6239SKiyoung Kim# ifdef __CYGWIN__
4163*735d6239SKiyoung Kim#  include <io.h>
4164*735d6239SKiyoung Kim# endif
4165*735d6239SKiyoung Kim#endif
4166*735d6239SKiyoung Kim#include <malloc.h>
4167*735d6239SKiyoung Kim#include <stdarg.h>
4168*735d6239SKiyoung Kim#include <assert.h>
4169*735d6239SKiyoung Kim#include <string.h>
4170*735d6239SKiyoung Kim#include <ctype.h>
4171*735d6239SKiyoung Kim#include <errno.h>
4172*735d6239SKiyoung Kim#include <fcntl.h>
4173*735d6239SKiyoung Kim#include <sys/stat.h>
4174*735d6239SKiyoung Kim
4175*735d6239SKiyoung Kim/* declarations of non-ANSI functions */
4176*735d6239SKiyoung Kim#if defined(__MINGW32__)
4177*735d6239SKiyoung Kim# ifdef __STRICT_ANSI__
4178*735d6239SKiyoung Kimint _putenv (const char *);
4179*735d6239SKiyoung Kim# endif
4180*735d6239SKiyoung Kim#elif defined(__CYGWIN__)
4181*735d6239SKiyoung Kim# ifdef __STRICT_ANSI__
4182*735d6239SKiyoung Kimchar *realpath (const char *, char *);
4183*735d6239SKiyoung Kimint putenv (char *);
4184*735d6239SKiyoung Kimint setenv (const char *, const char *, int);
4185*735d6239SKiyoung Kim# endif
4186*735d6239SKiyoung Kim/* #elif defined (other platforms) ... */
4187*735d6239SKiyoung Kim#endif
4188*735d6239SKiyoung Kim
4189*735d6239SKiyoung Kim/* portability defines, excluding path handling macros */
4190*735d6239SKiyoung Kim#if defined(_MSC_VER)
4191*735d6239SKiyoung Kim# define setmode _setmode
4192*735d6239SKiyoung Kim# define stat    _stat
4193*735d6239SKiyoung Kim# define chmod   _chmod
4194*735d6239SKiyoung Kim# define getcwd  _getcwd
4195*735d6239SKiyoung Kim# define putenv  _putenv
4196*735d6239SKiyoung Kim# define S_IXUSR _S_IEXEC
4197*735d6239SKiyoung Kim# ifndef _INTPTR_T_DEFINED
4198*735d6239SKiyoung Kim#  define _INTPTR_T_DEFINED
4199*735d6239SKiyoung Kim#  define intptr_t int
4200*735d6239SKiyoung Kim# endif
4201*735d6239SKiyoung Kim#elif defined(__MINGW32__)
4202*735d6239SKiyoung Kim# define setmode _setmode
4203*735d6239SKiyoung Kim# define stat    _stat
4204*735d6239SKiyoung Kim# define chmod   _chmod
4205*735d6239SKiyoung Kim# define getcwd  _getcwd
4206*735d6239SKiyoung Kim# define putenv  _putenv
4207*735d6239SKiyoung Kim#elif defined(__CYGWIN__)
4208*735d6239SKiyoung Kim# define HAVE_SETENV
4209*735d6239SKiyoung Kim# define FOPEN_WB "wb"
4210*735d6239SKiyoung Kim/* #elif defined (other platforms) ... */
4211*735d6239SKiyoung Kim#endif
4212*735d6239SKiyoung Kim
4213*735d6239SKiyoung Kim#if defined(PATH_MAX)
4214*735d6239SKiyoung Kim# define LT_PATHMAX PATH_MAX
4215*735d6239SKiyoung Kim#elif defined(MAXPATHLEN)
4216*735d6239SKiyoung Kim# define LT_PATHMAX MAXPATHLEN
4217*735d6239SKiyoung Kim#else
4218*735d6239SKiyoung Kim# define LT_PATHMAX 1024
4219*735d6239SKiyoung Kim#endif
4220*735d6239SKiyoung Kim
4221*735d6239SKiyoung Kim#ifndef S_IXOTH
4222*735d6239SKiyoung Kim# define S_IXOTH 0
4223*735d6239SKiyoung Kim#endif
4224*735d6239SKiyoung Kim#ifndef S_IXGRP
4225*735d6239SKiyoung Kim# define S_IXGRP 0
4226*735d6239SKiyoung Kim#endif
4227*735d6239SKiyoung Kim
4228*735d6239SKiyoung Kim/* path handling portability macros */
4229*735d6239SKiyoung Kim#ifndef DIR_SEPARATOR
4230*735d6239SKiyoung Kim# define DIR_SEPARATOR '/'
4231*735d6239SKiyoung Kim# define PATH_SEPARATOR ':'
4232*735d6239SKiyoung Kim#endif
4233*735d6239SKiyoung Kim
4234*735d6239SKiyoung Kim#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4235*735d6239SKiyoung Kim  defined (__OS2__)
4236*735d6239SKiyoung Kim# define HAVE_DOS_BASED_FILE_SYSTEM
4237*735d6239SKiyoung Kim# define FOPEN_WB "wb"
4238*735d6239SKiyoung Kim# ifndef DIR_SEPARATOR_2
4239*735d6239SKiyoung Kim#  define DIR_SEPARATOR_2 '\\'
4240*735d6239SKiyoung Kim# endif
4241*735d6239SKiyoung Kim# ifndef PATH_SEPARATOR_2
4242*735d6239SKiyoung Kim#  define PATH_SEPARATOR_2 ';'
4243*735d6239SKiyoung Kim# endif
4244*735d6239SKiyoung Kim#endif
4245*735d6239SKiyoung Kim
4246*735d6239SKiyoung Kim#ifndef DIR_SEPARATOR_2
4247*735d6239SKiyoung Kim# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4248*735d6239SKiyoung Kim#else /* DIR_SEPARATOR_2 */
4249*735d6239SKiyoung Kim# define IS_DIR_SEPARATOR(ch) \
4250*735d6239SKiyoung Kim	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4251*735d6239SKiyoung Kim#endif /* DIR_SEPARATOR_2 */
4252*735d6239SKiyoung Kim
4253*735d6239SKiyoung Kim#ifndef PATH_SEPARATOR_2
4254*735d6239SKiyoung Kim# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4255*735d6239SKiyoung Kim#else /* PATH_SEPARATOR_2 */
4256*735d6239SKiyoung Kim# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4257*735d6239SKiyoung Kim#endif /* PATH_SEPARATOR_2 */
4258*735d6239SKiyoung Kim
4259*735d6239SKiyoung Kim#ifndef FOPEN_WB
4260*735d6239SKiyoung Kim# define FOPEN_WB "w"
4261*735d6239SKiyoung Kim#endif
4262*735d6239SKiyoung Kim#ifndef _O_BINARY
4263*735d6239SKiyoung Kim# define _O_BINARY 0
4264*735d6239SKiyoung Kim#endif
4265*735d6239SKiyoung Kim
4266*735d6239SKiyoung Kim#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4267*735d6239SKiyoung Kim#define XFREE(stale) do { \
4268*735d6239SKiyoung Kim  if (stale) { free ((void *) stale); stale = 0; } \
4269*735d6239SKiyoung Kim} while (0)
4270*735d6239SKiyoung Kim
4271*735d6239SKiyoung Kim#if defined(LT_DEBUGWRAPPER)
4272*735d6239SKiyoung Kimstatic int lt_debug = 1;
4273*735d6239SKiyoung Kim#else
4274*735d6239SKiyoung Kimstatic int lt_debug = 0;
4275*735d6239SKiyoung Kim#endif
4276*735d6239SKiyoung Kim
4277*735d6239SKiyoung Kimconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4278*735d6239SKiyoung Kim
4279*735d6239SKiyoung Kimvoid *xmalloc (size_t num);
4280*735d6239SKiyoung Kimchar *xstrdup (const char *string);
4281*735d6239SKiyoung Kimconst char *base_name (const char *name);
4282*735d6239SKiyoung Kimchar *find_executable (const char *wrapper);
4283*735d6239SKiyoung Kimchar *chase_symlinks (const char *pathspec);
4284*735d6239SKiyoung Kimint make_executable (const char *path);
4285*735d6239SKiyoung Kimint check_executable (const char *path);
4286*735d6239SKiyoung Kimchar *strendzap (char *str, const char *pat);
4287*735d6239SKiyoung Kimvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4288*735d6239SKiyoung Kimvoid lt_fatal (const char *file, int line, const char *message, ...);
4289*735d6239SKiyoung Kimstatic const char *nonnull (const char *s);
4290*735d6239SKiyoung Kimstatic const char *nonempty (const char *s);
4291*735d6239SKiyoung Kimvoid lt_setenv (const char *name, const char *value);
4292*735d6239SKiyoung Kimchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
4293*735d6239SKiyoung Kimvoid lt_update_exe_path (const char *name, const char *value);
4294*735d6239SKiyoung Kimvoid lt_update_lib_path (const char *name, const char *value);
4295*735d6239SKiyoung Kimchar **prepare_spawn (char **argv);
4296*735d6239SKiyoung Kimvoid lt_dump_script (FILE *f);
4297*735d6239SKiyoung KimEOF
4298*735d6239SKiyoung Kim
4299*735d6239SKiyoung Kim	    cat <<EOF
4300*735d6239SKiyoung Kimvolatile const char * MAGIC_EXE = "$magic_exe";
4301*735d6239SKiyoung Kimconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4302*735d6239SKiyoung KimEOF
4303*735d6239SKiyoung Kim
4304*735d6239SKiyoung Kim	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4305*735d6239SKiyoung Kim              func_to_host_path "$temp_rpath"
4306*735d6239SKiyoung Kim	      cat <<EOF
4307*735d6239SKiyoung Kimconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4308*735d6239SKiyoung KimEOF
4309*735d6239SKiyoung Kim	    else
4310*735d6239SKiyoung Kim	      cat <<"EOF"
4311*735d6239SKiyoung Kimconst char * LIB_PATH_VALUE   = "";
4312*735d6239SKiyoung KimEOF
4313*735d6239SKiyoung Kim	    fi
4314*735d6239SKiyoung Kim
4315*735d6239SKiyoung Kim	    if test -n "$dllsearchpath"; then
4316*735d6239SKiyoung Kim              func_to_host_path "$dllsearchpath:"
4317*735d6239SKiyoung Kim	      cat <<EOF
4318*735d6239SKiyoung Kimconst char * EXE_PATH_VARNAME = "PATH";
4319*735d6239SKiyoung Kimconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4320*735d6239SKiyoung KimEOF
4321*735d6239SKiyoung Kim	    else
4322*735d6239SKiyoung Kim	      cat <<"EOF"
4323*735d6239SKiyoung Kimconst char * EXE_PATH_VARNAME = "";
4324*735d6239SKiyoung Kimconst char * EXE_PATH_VALUE   = "";
4325*735d6239SKiyoung KimEOF
4326*735d6239SKiyoung Kim	    fi
4327*735d6239SKiyoung Kim
4328*735d6239SKiyoung Kim	    if test "$fast_install" = yes; then
4329*735d6239SKiyoung Kim	      cat <<EOF
4330*735d6239SKiyoung Kimconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4331*735d6239SKiyoung KimEOF
4332*735d6239SKiyoung Kim	    else
4333*735d6239SKiyoung Kim	      cat <<EOF
4334*735d6239SKiyoung Kimconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4335*735d6239SKiyoung KimEOF
4336*735d6239SKiyoung Kim	    fi
4337*735d6239SKiyoung Kim
4338*735d6239SKiyoung Kim
4339*735d6239SKiyoung Kim	    cat <<"EOF"
4340*735d6239SKiyoung Kim
4341*735d6239SKiyoung Kim#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4342*735d6239SKiyoung Kim
4343*735d6239SKiyoung Kimstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4344*735d6239SKiyoung Kimstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4345*735d6239SKiyoung Kimstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4346*735d6239SKiyoung Kim
4347*735d6239SKiyoung Kimint
4348*735d6239SKiyoung Kimmain (int argc, char *argv[])
4349*735d6239SKiyoung Kim{
4350*735d6239SKiyoung Kim  char **newargz;
4351*735d6239SKiyoung Kim  int  newargc;
4352*735d6239SKiyoung Kim  char *tmp_pathspec;
4353*735d6239SKiyoung Kim  char *actual_cwrapper_path;
4354*735d6239SKiyoung Kim  char *actual_cwrapper_name;
4355*735d6239SKiyoung Kim  char *target_name;
4356*735d6239SKiyoung Kim  char *lt_argv_zero;
4357*735d6239SKiyoung Kim  intptr_t rval = 127;
4358*735d6239SKiyoung Kim
4359*735d6239SKiyoung Kim  int i;
4360*735d6239SKiyoung Kim
4361*735d6239SKiyoung Kim  program_name = (char *) xstrdup (base_name (argv[0]));
4362*735d6239SKiyoung Kim  newargz = XMALLOC (char *, argc + 1);
4363*735d6239SKiyoung Kim
4364*735d6239SKiyoung Kim  /* very simple arg parsing; don't want to rely on getopt
4365*735d6239SKiyoung Kim   * also, copy all non cwrapper options to newargz, except
4366*735d6239SKiyoung Kim   * argz[0], which is handled differently
4367*735d6239SKiyoung Kim   */
4368*735d6239SKiyoung Kim  newargc=0;
4369*735d6239SKiyoung Kim  for (i = 1; i < argc; i++)
4370*735d6239SKiyoung Kim    {
4371*735d6239SKiyoung Kim      if (strcmp (argv[i], dumpscript_opt) == 0)
4372*735d6239SKiyoung Kim	{
4373*735d6239SKiyoung KimEOF
4374*735d6239SKiyoung Kim	    case "$host" in
4375*735d6239SKiyoung Kim	      *mingw* | *cygwin* )
4376*735d6239SKiyoung Kim		# make stdout use "unix" line endings
4377*735d6239SKiyoung Kim		echo "          setmode(1,_O_BINARY);"
4378*735d6239SKiyoung Kim		;;
4379*735d6239SKiyoung Kim	      esac
4380*735d6239SKiyoung Kim
4381*735d6239SKiyoung Kim	    cat <<"EOF"
4382*735d6239SKiyoung Kim	  lt_dump_script (stdout);
4383*735d6239SKiyoung Kim	  return 0;
4384*735d6239SKiyoung Kim	}
4385*735d6239SKiyoung Kim      if (strcmp (argv[i], debug_opt) == 0)
4386*735d6239SKiyoung Kim	{
4387*735d6239SKiyoung Kim          lt_debug = 1;
4388*735d6239SKiyoung Kim          continue;
4389*735d6239SKiyoung Kim	}
4390*735d6239SKiyoung Kim      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4391*735d6239SKiyoung Kim        {
4392*735d6239SKiyoung Kim          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4393*735d6239SKiyoung Kim             namespace, but it is not one of the ones we know about and
4394*735d6239SKiyoung Kim             have already dealt with, above (inluding dump-script), then
4395*735d6239SKiyoung Kim             report an error. Otherwise, targets might begin to believe
4396*735d6239SKiyoung Kim             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4397*735d6239SKiyoung Kim             namespace. The first time any user complains about this, we'll
4398*735d6239SKiyoung Kim             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4399*735d6239SKiyoung Kim             or a configure.ac-settable value.
4400*735d6239SKiyoung Kim           */
4401*735d6239SKiyoung Kim          lt_fatal (__FILE__, __LINE__,
4402*735d6239SKiyoung Kim		    "unrecognized %s option: '%s'",
4403*735d6239SKiyoung Kim                    ltwrapper_option_prefix, argv[i]);
4404*735d6239SKiyoung Kim        }
4405*735d6239SKiyoung Kim      /* otherwise ... */
4406*735d6239SKiyoung Kim      newargz[++newargc] = xstrdup (argv[i]);
4407*735d6239SKiyoung Kim    }
4408*735d6239SKiyoung Kim  newargz[++newargc] = NULL;
4409*735d6239SKiyoung Kim
4410*735d6239SKiyoung KimEOF
4411*735d6239SKiyoung Kim	    cat <<EOF
4412*735d6239SKiyoung Kim  /* The GNU banner must be the first non-error debug message */
4413*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4414*735d6239SKiyoung KimEOF
4415*735d6239SKiyoung Kim	    cat <<"EOF"
4416*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4417*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4418*735d6239SKiyoung Kim
4419*735d6239SKiyoung Kim  tmp_pathspec = find_executable (argv[0]);
4420*735d6239SKiyoung Kim  if (tmp_pathspec == NULL)
4421*735d6239SKiyoung Kim    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4422*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4423*735d6239SKiyoung Kim                  "(main) found exe (before symlink chase) at: %s\n",
4424*735d6239SKiyoung Kim		  tmp_pathspec);
4425*735d6239SKiyoung Kim
4426*735d6239SKiyoung Kim  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4427*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4428*735d6239SKiyoung Kim                  "(main) found exe (after symlink chase) at: %s\n",
4429*735d6239SKiyoung Kim		  actual_cwrapper_path);
4430*735d6239SKiyoung Kim  XFREE (tmp_pathspec);
4431*735d6239SKiyoung Kim
4432*735d6239SKiyoung Kim  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4433*735d6239SKiyoung Kim  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4434*735d6239SKiyoung Kim
4435*735d6239SKiyoung Kim  /* wrapper name transforms */
4436*735d6239SKiyoung Kim  strendzap (actual_cwrapper_name, ".exe");
4437*735d6239SKiyoung Kim  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4438*735d6239SKiyoung Kim  XFREE (actual_cwrapper_name);
4439*735d6239SKiyoung Kim  actual_cwrapper_name = tmp_pathspec;
4440*735d6239SKiyoung Kim  tmp_pathspec = 0;
4441*735d6239SKiyoung Kim
4442*735d6239SKiyoung Kim  /* target_name transforms -- use actual target program name; might have lt- prefix */
4443*735d6239SKiyoung Kim  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4444*735d6239SKiyoung Kim  strendzap (target_name, ".exe");
4445*735d6239SKiyoung Kim  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4446*735d6239SKiyoung Kim  XFREE (target_name);
4447*735d6239SKiyoung Kim  target_name = tmp_pathspec;
4448*735d6239SKiyoung Kim  tmp_pathspec = 0;
4449*735d6239SKiyoung Kim
4450*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4451*735d6239SKiyoung Kim		  "(main) libtool target name: %s\n",
4452*735d6239SKiyoung Kim		  target_name);
4453*735d6239SKiyoung KimEOF
4454*735d6239SKiyoung Kim
4455*735d6239SKiyoung Kim	    cat <<EOF
4456*735d6239SKiyoung Kim  newargz[0] =
4457*735d6239SKiyoung Kim    XMALLOC (char, (strlen (actual_cwrapper_path) +
4458*735d6239SKiyoung Kim		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4459*735d6239SKiyoung Kim  strcpy (newargz[0], actual_cwrapper_path);
4460*735d6239SKiyoung Kim  strcat (newargz[0], "$objdir");
4461*735d6239SKiyoung Kim  strcat (newargz[0], "/");
4462*735d6239SKiyoung KimEOF
4463*735d6239SKiyoung Kim
4464*735d6239SKiyoung Kim	    cat <<"EOF"
4465*735d6239SKiyoung Kim  /* stop here, and copy so we don't have to do this twice */
4466*735d6239SKiyoung Kim  tmp_pathspec = xstrdup (newargz[0]);
4467*735d6239SKiyoung Kim
4468*735d6239SKiyoung Kim  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4469*735d6239SKiyoung Kim  strcat (newargz[0], actual_cwrapper_name);
4470*735d6239SKiyoung Kim
4471*735d6239SKiyoung Kim  /* DO want the lt- prefix here if it exists, so use target_name */
4472*735d6239SKiyoung Kim  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4473*735d6239SKiyoung Kim  XFREE (tmp_pathspec);
4474*735d6239SKiyoung Kim  tmp_pathspec = NULL;
4475*735d6239SKiyoung KimEOF
4476*735d6239SKiyoung Kim
4477*735d6239SKiyoung Kim	    case $host_os in
4478*735d6239SKiyoung Kim	      mingw*)
4479*735d6239SKiyoung Kim	    cat <<"EOF"
4480*735d6239SKiyoung Kim  {
4481*735d6239SKiyoung Kim    char* p;
4482*735d6239SKiyoung Kim    while ((p = strchr (newargz[0], '\\')) != NULL)
4483*735d6239SKiyoung Kim      {
4484*735d6239SKiyoung Kim	*p = '/';
4485*735d6239SKiyoung Kim      }
4486*735d6239SKiyoung Kim    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4487*735d6239SKiyoung Kim      {
4488*735d6239SKiyoung Kim	*p = '/';
4489*735d6239SKiyoung Kim      }
4490*735d6239SKiyoung Kim  }
4491*735d6239SKiyoung KimEOF
4492*735d6239SKiyoung Kim	    ;;
4493*735d6239SKiyoung Kim	    esac
4494*735d6239SKiyoung Kim
4495*735d6239SKiyoung Kim	    cat <<"EOF"
4496*735d6239SKiyoung Kim  XFREE (target_name);
4497*735d6239SKiyoung Kim  XFREE (actual_cwrapper_path);
4498*735d6239SKiyoung Kim  XFREE (actual_cwrapper_name);
4499*735d6239SKiyoung Kim
4500*735d6239SKiyoung Kim  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4501*735d6239SKiyoung Kim  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4502*735d6239SKiyoung Kim  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4503*735d6239SKiyoung Kim     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4504*735d6239SKiyoung Kim     because on Windows, both *_VARNAMEs are PATH but uninstalled
4505*735d6239SKiyoung Kim     libraries must come first. */
4506*735d6239SKiyoung Kim  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4507*735d6239SKiyoung Kim  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4508*735d6239SKiyoung Kim
4509*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4510*735d6239SKiyoung Kim		  nonnull (lt_argv_zero));
4511*735d6239SKiyoung Kim  for (i = 0; i < newargc; i++)
4512*735d6239SKiyoung Kim    {
4513*735d6239SKiyoung Kim      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4514*735d6239SKiyoung Kim		      i, nonnull (newargz[i]));
4515*735d6239SKiyoung Kim    }
4516*735d6239SKiyoung Kim
4517*735d6239SKiyoung KimEOF
4518*735d6239SKiyoung Kim
4519*735d6239SKiyoung Kim	    case $host_os in
4520*735d6239SKiyoung Kim	      mingw*)
4521*735d6239SKiyoung Kim		cat <<"EOF"
4522*735d6239SKiyoung Kim  /* execv doesn't actually work on mingw as expected on unix */
4523*735d6239SKiyoung Kim  newargz = prepare_spawn (newargz);
4524*735d6239SKiyoung Kim  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4525*735d6239SKiyoung Kim  if (rval == -1)
4526*735d6239SKiyoung Kim    {
4527*735d6239SKiyoung Kim      /* failed to start process */
4528*735d6239SKiyoung Kim      lt_debugprintf (__FILE__, __LINE__,
4529*735d6239SKiyoung Kim		      "(main) failed to launch target \"%s\": %s\n",
4530*735d6239SKiyoung Kim		      lt_argv_zero, nonnull (strerror (errno)));
4531*735d6239SKiyoung Kim      return 127;
4532*735d6239SKiyoung Kim    }
4533*735d6239SKiyoung Kim  return rval;
4534*735d6239SKiyoung KimEOF
4535*735d6239SKiyoung Kim		;;
4536*735d6239SKiyoung Kim	      *)
4537*735d6239SKiyoung Kim		cat <<"EOF"
4538*735d6239SKiyoung Kim  execv (lt_argv_zero, newargz);
4539*735d6239SKiyoung Kim  return rval; /* =127, but avoids unused variable warning */
4540*735d6239SKiyoung KimEOF
4541*735d6239SKiyoung Kim		;;
4542*735d6239SKiyoung Kim	    esac
4543*735d6239SKiyoung Kim
4544*735d6239SKiyoung Kim	    cat <<"EOF"
4545*735d6239SKiyoung Kim}
4546*735d6239SKiyoung Kim
4547*735d6239SKiyoung Kimvoid *
4548*735d6239SKiyoung Kimxmalloc (size_t num)
4549*735d6239SKiyoung Kim{
4550*735d6239SKiyoung Kim  void *p = (void *) malloc (num);
4551*735d6239SKiyoung Kim  if (!p)
4552*735d6239SKiyoung Kim    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4553*735d6239SKiyoung Kim
4554*735d6239SKiyoung Kim  return p;
4555*735d6239SKiyoung Kim}
4556*735d6239SKiyoung Kim
4557*735d6239SKiyoung Kimchar *
4558*735d6239SKiyoung Kimxstrdup (const char *string)
4559*735d6239SKiyoung Kim{
4560*735d6239SKiyoung Kim  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4561*735d6239SKiyoung Kim			  string) : NULL;
4562*735d6239SKiyoung Kim}
4563*735d6239SKiyoung Kim
4564*735d6239SKiyoung Kimconst char *
4565*735d6239SKiyoung Kimbase_name (const char *name)
4566*735d6239SKiyoung Kim{
4567*735d6239SKiyoung Kim  const char *base;
4568*735d6239SKiyoung Kim
4569*735d6239SKiyoung Kim#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4570*735d6239SKiyoung Kim  /* Skip over the disk name in MSDOS pathnames. */
4571*735d6239SKiyoung Kim  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4572*735d6239SKiyoung Kim    name += 2;
4573*735d6239SKiyoung Kim#endif
4574*735d6239SKiyoung Kim
4575*735d6239SKiyoung Kim  for (base = name; *name; name++)
4576*735d6239SKiyoung Kim    if (IS_DIR_SEPARATOR (*name))
4577*735d6239SKiyoung Kim      base = name + 1;
4578*735d6239SKiyoung Kim  return base;
4579*735d6239SKiyoung Kim}
4580*735d6239SKiyoung Kim
4581*735d6239SKiyoung Kimint
4582*735d6239SKiyoung Kimcheck_executable (const char *path)
4583*735d6239SKiyoung Kim{
4584*735d6239SKiyoung Kim  struct stat st;
4585*735d6239SKiyoung Kim
4586*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4587*735d6239SKiyoung Kim                  nonempty (path));
4588*735d6239SKiyoung Kim  if ((!path) || (!*path))
4589*735d6239SKiyoung Kim    return 0;
4590*735d6239SKiyoung Kim
4591*735d6239SKiyoung Kim  if ((stat (path, &st) >= 0)
4592*735d6239SKiyoung Kim      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4593*735d6239SKiyoung Kim    return 1;
4594*735d6239SKiyoung Kim  else
4595*735d6239SKiyoung Kim    return 0;
4596*735d6239SKiyoung Kim}
4597*735d6239SKiyoung Kim
4598*735d6239SKiyoung Kimint
4599*735d6239SKiyoung Kimmake_executable (const char *path)
4600*735d6239SKiyoung Kim{
4601*735d6239SKiyoung Kim  int rval = 0;
4602*735d6239SKiyoung Kim  struct stat st;
4603*735d6239SKiyoung Kim
4604*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4605*735d6239SKiyoung Kim                  nonempty (path));
4606*735d6239SKiyoung Kim  if ((!path) || (!*path))
4607*735d6239SKiyoung Kim    return 0;
4608*735d6239SKiyoung Kim
4609*735d6239SKiyoung Kim  if (stat (path, &st) >= 0)
4610*735d6239SKiyoung Kim    {
4611*735d6239SKiyoung Kim      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4612*735d6239SKiyoung Kim    }
4613*735d6239SKiyoung Kim  return rval;
4614*735d6239SKiyoung Kim}
4615*735d6239SKiyoung Kim
4616*735d6239SKiyoung Kim/* Searches for the full path of the wrapper.  Returns
4617*735d6239SKiyoung Kim   newly allocated full path name if found, NULL otherwise
4618*735d6239SKiyoung Kim   Does not chase symlinks, even on platforms that support them.
4619*735d6239SKiyoung Kim*/
4620*735d6239SKiyoung Kimchar *
4621*735d6239SKiyoung Kimfind_executable (const char *wrapper)
4622*735d6239SKiyoung Kim{
4623*735d6239SKiyoung Kim  int has_slash = 0;
4624*735d6239SKiyoung Kim  const char *p;
4625*735d6239SKiyoung Kim  const char *p_next;
4626*735d6239SKiyoung Kim  /* static buffer for getcwd */
4627*735d6239SKiyoung Kim  char tmp[LT_PATHMAX + 1];
4628*735d6239SKiyoung Kim  int tmp_len;
4629*735d6239SKiyoung Kim  char *concat_name;
4630*735d6239SKiyoung Kim
4631*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4632*735d6239SKiyoung Kim                  nonempty (wrapper));
4633*735d6239SKiyoung Kim
4634*735d6239SKiyoung Kim  if ((wrapper == NULL) || (*wrapper == '\0'))
4635*735d6239SKiyoung Kim    return NULL;
4636*735d6239SKiyoung Kim
4637*735d6239SKiyoung Kim  /* Absolute path? */
4638*735d6239SKiyoung Kim#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4639*735d6239SKiyoung Kim  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4640*735d6239SKiyoung Kim    {
4641*735d6239SKiyoung Kim      concat_name = xstrdup (wrapper);
4642*735d6239SKiyoung Kim      if (check_executable (concat_name))
4643*735d6239SKiyoung Kim	return concat_name;
4644*735d6239SKiyoung Kim      XFREE (concat_name);
4645*735d6239SKiyoung Kim    }
4646*735d6239SKiyoung Kim  else
4647*735d6239SKiyoung Kim    {
4648*735d6239SKiyoung Kim#endif
4649*735d6239SKiyoung Kim      if (IS_DIR_SEPARATOR (wrapper[0]))
4650*735d6239SKiyoung Kim	{
4651*735d6239SKiyoung Kim	  concat_name = xstrdup (wrapper);
4652*735d6239SKiyoung Kim	  if (check_executable (concat_name))
4653*735d6239SKiyoung Kim	    return concat_name;
4654*735d6239SKiyoung Kim	  XFREE (concat_name);
4655*735d6239SKiyoung Kim	}
4656*735d6239SKiyoung Kim#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4657*735d6239SKiyoung Kim    }
4658*735d6239SKiyoung Kim#endif
4659*735d6239SKiyoung Kim
4660*735d6239SKiyoung Kim  for (p = wrapper; *p; p++)
4661*735d6239SKiyoung Kim    if (*p == '/')
4662*735d6239SKiyoung Kim      {
4663*735d6239SKiyoung Kim	has_slash = 1;
4664*735d6239SKiyoung Kim	break;
4665*735d6239SKiyoung Kim      }
4666*735d6239SKiyoung Kim  if (!has_slash)
4667*735d6239SKiyoung Kim    {
4668*735d6239SKiyoung Kim      /* no slashes; search PATH */
4669*735d6239SKiyoung Kim      const char *path = getenv ("PATH");
4670*735d6239SKiyoung Kim      if (path != NULL)
4671*735d6239SKiyoung Kim	{
4672*735d6239SKiyoung Kim	  for (p = path; *p; p = p_next)
4673*735d6239SKiyoung Kim	    {
4674*735d6239SKiyoung Kim	      const char *q;
4675*735d6239SKiyoung Kim	      size_t p_len;
4676*735d6239SKiyoung Kim	      for (q = p; *q; q++)
4677*735d6239SKiyoung Kim		if (IS_PATH_SEPARATOR (*q))
4678*735d6239SKiyoung Kim		  break;
4679*735d6239SKiyoung Kim	      p_len = q - p;
4680*735d6239SKiyoung Kim	      p_next = (*q == '\0' ? q : q + 1);
4681*735d6239SKiyoung Kim	      if (p_len == 0)
4682*735d6239SKiyoung Kim		{
4683*735d6239SKiyoung Kim		  /* empty path: current directory */
4684*735d6239SKiyoung Kim		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4685*735d6239SKiyoung Kim		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4686*735d6239SKiyoung Kim                              nonnull (strerror (errno)));
4687*735d6239SKiyoung Kim		  tmp_len = strlen (tmp);
4688*735d6239SKiyoung Kim		  concat_name =
4689*735d6239SKiyoung Kim		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4690*735d6239SKiyoung Kim		  memcpy (concat_name, tmp, tmp_len);
4691*735d6239SKiyoung Kim		  concat_name[tmp_len] = '/';
4692*735d6239SKiyoung Kim		  strcpy (concat_name + tmp_len + 1, wrapper);
4693*735d6239SKiyoung Kim		}
4694*735d6239SKiyoung Kim	      else
4695*735d6239SKiyoung Kim		{
4696*735d6239SKiyoung Kim		  concat_name =
4697*735d6239SKiyoung Kim		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4698*735d6239SKiyoung Kim		  memcpy (concat_name, p, p_len);
4699*735d6239SKiyoung Kim		  concat_name[p_len] = '/';
4700*735d6239SKiyoung Kim		  strcpy (concat_name + p_len + 1, wrapper);
4701*735d6239SKiyoung Kim		}
4702*735d6239SKiyoung Kim	      if (check_executable (concat_name))
4703*735d6239SKiyoung Kim		return concat_name;
4704*735d6239SKiyoung Kim	      XFREE (concat_name);
4705*735d6239SKiyoung Kim	    }
4706*735d6239SKiyoung Kim	}
4707*735d6239SKiyoung Kim      /* not found in PATH; assume curdir */
4708*735d6239SKiyoung Kim    }
4709*735d6239SKiyoung Kim  /* Relative path | not found in path: prepend cwd */
4710*735d6239SKiyoung Kim  if (getcwd (tmp, LT_PATHMAX) == NULL)
4711*735d6239SKiyoung Kim    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4712*735d6239SKiyoung Kim              nonnull (strerror (errno)));
4713*735d6239SKiyoung Kim  tmp_len = strlen (tmp);
4714*735d6239SKiyoung Kim  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4715*735d6239SKiyoung Kim  memcpy (concat_name, tmp, tmp_len);
4716*735d6239SKiyoung Kim  concat_name[tmp_len] = '/';
4717*735d6239SKiyoung Kim  strcpy (concat_name + tmp_len + 1, wrapper);
4718*735d6239SKiyoung Kim
4719*735d6239SKiyoung Kim  if (check_executable (concat_name))
4720*735d6239SKiyoung Kim    return concat_name;
4721*735d6239SKiyoung Kim  XFREE (concat_name);
4722*735d6239SKiyoung Kim  return NULL;
4723*735d6239SKiyoung Kim}
4724*735d6239SKiyoung Kim
4725*735d6239SKiyoung Kimchar *
4726*735d6239SKiyoung Kimchase_symlinks (const char *pathspec)
4727*735d6239SKiyoung Kim{
4728*735d6239SKiyoung Kim#ifndef S_ISLNK
4729*735d6239SKiyoung Kim  return xstrdup (pathspec);
4730*735d6239SKiyoung Kim#else
4731*735d6239SKiyoung Kim  char buf[LT_PATHMAX];
4732*735d6239SKiyoung Kim  struct stat s;
4733*735d6239SKiyoung Kim  char *tmp_pathspec = xstrdup (pathspec);
4734*735d6239SKiyoung Kim  char *p;
4735*735d6239SKiyoung Kim  int has_symlinks = 0;
4736*735d6239SKiyoung Kim  while (strlen (tmp_pathspec) && !has_symlinks)
4737*735d6239SKiyoung Kim    {
4738*735d6239SKiyoung Kim      lt_debugprintf (__FILE__, __LINE__,
4739*735d6239SKiyoung Kim		      "checking path component for symlinks: %s\n",
4740*735d6239SKiyoung Kim		      tmp_pathspec);
4741*735d6239SKiyoung Kim      if (lstat (tmp_pathspec, &s) == 0)
4742*735d6239SKiyoung Kim	{
4743*735d6239SKiyoung Kim	  if (S_ISLNK (s.st_mode) != 0)
4744*735d6239SKiyoung Kim	    {
4745*735d6239SKiyoung Kim	      has_symlinks = 1;
4746*735d6239SKiyoung Kim	      break;
4747*735d6239SKiyoung Kim	    }
4748*735d6239SKiyoung Kim
4749*735d6239SKiyoung Kim	  /* search backwards for last DIR_SEPARATOR */
4750*735d6239SKiyoung Kim	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4751*735d6239SKiyoung Kim	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4752*735d6239SKiyoung Kim	    p--;
4753*735d6239SKiyoung Kim	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4754*735d6239SKiyoung Kim	    {
4755*735d6239SKiyoung Kim	      /* no more DIR_SEPARATORS left */
4756*735d6239SKiyoung Kim	      break;
4757*735d6239SKiyoung Kim	    }
4758*735d6239SKiyoung Kim	  *p = '\0';
4759*735d6239SKiyoung Kim	}
4760*735d6239SKiyoung Kim      else
4761*735d6239SKiyoung Kim	{
4762*735d6239SKiyoung Kim	  lt_fatal (__FILE__, __LINE__,
4763*735d6239SKiyoung Kim		    "error accessing file \"%s\": %s",
4764*735d6239SKiyoung Kim		    tmp_pathspec, nonnull (strerror (errno)));
4765*735d6239SKiyoung Kim	}
4766*735d6239SKiyoung Kim    }
4767*735d6239SKiyoung Kim  XFREE (tmp_pathspec);
4768*735d6239SKiyoung Kim
4769*735d6239SKiyoung Kim  if (!has_symlinks)
4770*735d6239SKiyoung Kim    {
4771*735d6239SKiyoung Kim      return xstrdup (pathspec);
4772*735d6239SKiyoung Kim    }
4773*735d6239SKiyoung Kim
4774*735d6239SKiyoung Kim  tmp_pathspec = realpath (pathspec, buf);
4775*735d6239SKiyoung Kim  if (tmp_pathspec == 0)
4776*735d6239SKiyoung Kim    {
4777*735d6239SKiyoung Kim      lt_fatal (__FILE__, __LINE__,
4778*735d6239SKiyoung Kim		"could not follow symlinks for %s", pathspec);
4779*735d6239SKiyoung Kim    }
4780*735d6239SKiyoung Kim  return xstrdup (tmp_pathspec);
4781*735d6239SKiyoung Kim#endif
4782*735d6239SKiyoung Kim}
4783*735d6239SKiyoung Kim
4784*735d6239SKiyoung Kimchar *
4785*735d6239SKiyoung Kimstrendzap (char *str, const char *pat)
4786*735d6239SKiyoung Kim{
4787*735d6239SKiyoung Kim  size_t len, patlen;
4788*735d6239SKiyoung Kim
4789*735d6239SKiyoung Kim  assert (str != NULL);
4790*735d6239SKiyoung Kim  assert (pat != NULL);
4791*735d6239SKiyoung Kim
4792*735d6239SKiyoung Kim  len = strlen (str);
4793*735d6239SKiyoung Kim  patlen = strlen (pat);
4794*735d6239SKiyoung Kim
4795*735d6239SKiyoung Kim  if (patlen <= len)
4796*735d6239SKiyoung Kim    {
4797*735d6239SKiyoung Kim      str += len - patlen;
4798*735d6239SKiyoung Kim      if (strcmp (str, pat) == 0)
4799*735d6239SKiyoung Kim	*str = '\0';
4800*735d6239SKiyoung Kim    }
4801*735d6239SKiyoung Kim  return str;
4802*735d6239SKiyoung Kim}
4803*735d6239SKiyoung Kim
4804*735d6239SKiyoung Kimvoid
4805*735d6239SKiyoung Kimlt_debugprintf (const char *file, int line, const char *fmt, ...)
4806*735d6239SKiyoung Kim{
4807*735d6239SKiyoung Kim  va_list args;
4808*735d6239SKiyoung Kim  if (lt_debug)
4809*735d6239SKiyoung Kim    {
4810*735d6239SKiyoung Kim      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4811*735d6239SKiyoung Kim      va_start (args, fmt);
4812*735d6239SKiyoung Kim      (void) vfprintf (stderr, fmt, args);
4813*735d6239SKiyoung Kim      va_end (args);
4814*735d6239SKiyoung Kim    }
4815*735d6239SKiyoung Kim}
4816*735d6239SKiyoung Kim
4817*735d6239SKiyoung Kimstatic void
4818*735d6239SKiyoung Kimlt_error_core (int exit_status, const char *file,
4819*735d6239SKiyoung Kim	       int line, const char *mode,
4820*735d6239SKiyoung Kim	       const char *message, va_list ap)
4821*735d6239SKiyoung Kim{
4822*735d6239SKiyoung Kim  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4823*735d6239SKiyoung Kim  vfprintf (stderr, message, ap);
4824*735d6239SKiyoung Kim  fprintf (stderr, ".\n");
4825*735d6239SKiyoung Kim
4826*735d6239SKiyoung Kim  if (exit_status >= 0)
4827*735d6239SKiyoung Kim    exit (exit_status);
4828*735d6239SKiyoung Kim}
4829*735d6239SKiyoung Kim
4830*735d6239SKiyoung Kimvoid
4831*735d6239SKiyoung Kimlt_fatal (const char *file, int line, const char *message, ...)
4832*735d6239SKiyoung Kim{
4833*735d6239SKiyoung Kim  va_list ap;
4834*735d6239SKiyoung Kim  va_start (ap, message);
4835*735d6239SKiyoung Kim  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4836*735d6239SKiyoung Kim  va_end (ap);
4837*735d6239SKiyoung Kim}
4838*735d6239SKiyoung Kim
4839*735d6239SKiyoung Kimstatic const char *
4840*735d6239SKiyoung Kimnonnull (const char *s)
4841*735d6239SKiyoung Kim{
4842*735d6239SKiyoung Kim  return s ? s : "(null)";
4843*735d6239SKiyoung Kim}
4844*735d6239SKiyoung Kim
4845*735d6239SKiyoung Kimstatic const char *
4846*735d6239SKiyoung Kimnonempty (const char *s)
4847*735d6239SKiyoung Kim{
4848*735d6239SKiyoung Kim  return (s && !*s) ? "(empty)" : nonnull (s);
4849*735d6239SKiyoung Kim}
4850*735d6239SKiyoung Kim
4851*735d6239SKiyoung Kimvoid
4852*735d6239SKiyoung Kimlt_setenv (const char *name, const char *value)
4853*735d6239SKiyoung Kim{
4854*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4855*735d6239SKiyoung Kim		  "(lt_setenv) setting '%s' to '%s'\n",
4856*735d6239SKiyoung Kim                  nonnull (name), nonnull (value));
4857*735d6239SKiyoung Kim  {
4858*735d6239SKiyoung Kim#ifdef HAVE_SETENV
4859*735d6239SKiyoung Kim    /* always make a copy, for consistency with !HAVE_SETENV */
4860*735d6239SKiyoung Kim    char *str = xstrdup (value);
4861*735d6239SKiyoung Kim    setenv (name, str, 1);
4862*735d6239SKiyoung Kim#else
4863*735d6239SKiyoung Kim    int len = strlen (name) + 1 + strlen (value) + 1;
4864*735d6239SKiyoung Kim    char *str = XMALLOC (char, len);
4865*735d6239SKiyoung Kim    sprintf (str, "%s=%s", name, value);
4866*735d6239SKiyoung Kim    if (putenv (str) != EXIT_SUCCESS)
4867*735d6239SKiyoung Kim      {
4868*735d6239SKiyoung Kim        XFREE (str);
4869*735d6239SKiyoung Kim      }
4870*735d6239SKiyoung Kim#endif
4871*735d6239SKiyoung Kim  }
4872*735d6239SKiyoung Kim}
4873*735d6239SKiyoung Kim
4874*735d6239SKiyoung Kimchar *
4875*735d6239SKiyoung Kimlt_extend_str (const char *orig_value, const char *add, int to_end)
4876*735d6239SKiyoung Kim{
4877*735d6239SKiyoung Kim  char *new_value;
4878*735d6239SKiyoung Kim  if (orig_value && *orig_value)
4879*735d6239SKiyoung Kim    {
4880*735d6239SKiyoung Kim      int orig_value_len = strlen (orig_value);
4881*735d6239SKiyoung Kim      int add_len = strlen (add);
4882*735d6239SKiyoung Kim      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4883*735d6239SKiyoung Kim      if (to_end)
4884*735d6239SKiyoung Kim        {
4885*735d6239SKiyoung Kim          strcpy (new_value, orig_value);
4886*735d6239SKiyoung Kim          strcpy (new_value + orig_value_len, add);
4887*735d6239SKiyoung Kim        }
4888*735d6239SKiyoung Kim      else
4889*735d6239SKiyoung Kim        {
4890*735d6239SKiyoung Kim          strcpy (new_value, add);
4891*735d6239SKiyoung Kim          strcpy (new_value + add_len, orig_value);
4892*735d6239SKiyoung Kim        }
4893*735d6239SKiyoung Kim    }
4894*735d6239SKiyoung Kim  else
4895*735d6239SKiyoung Kim    {
4896*735d6239SKiyoung Kim      new_value = xstrdup (add);
4897*735d6239SKiyoung Kim    }
4898*735d6239SKiyoung Kim  return new_value;
4899*735d6239SKiyoung Kim}
4900*735d6239SKiyoung Kim
4901*735d6239SKiyoung Kimvoid
4902*735d6239SKiyoung Kimlt_update_exe_path (const char *name, const char *value)
4903*735d6239SKiyoung Kim{
4904*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4905*735d6239SKiyoung Kim		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4906*735d6239SKiyoung Kim                  nonnull (name), nonnull (value));
4907*735d6239SKiyoung Kim
4908*735d6239SKiyoung Kim  if (name && *name && value && *value)
4909*735d6239SKiyoung Kim    {
4910*735d6239SKiyoung Kim      char *new_value = lt_extend_str (getenv (name), value, 0);
4911*735d6239SKiyoung Kim      /* some systems can't cope with a ':'-terminated path #' */
4912*735d6239SKiyoung Kim      int len = strlen (new_value);
4913*735d6239SKiyoung Kim      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4914*735d6239SKiyoung Kim        {
4915*735d6239SKiyoung Kim          new_value[len-1] = '\0';
4916*735d6239SKiyoung Kim        }
4917*735d6239SKiyoung Kim      lt_setenv (name, new_value);
4918*735d6239SKiyoung Kim      XFREE (new_value);
4919*735d6239SKiyoung Kim    }
4920*735d6239SKiyoung Kim}
4921*735d6239SKiyoung Kim
4922*735d6239SKiyoung Kimvoid
4923*735d6239SKiyoung Kimlt_update_lib_path (const char *name, const char *value)
4924*735d6239SKiyoung Kim{
4925*735d6239SKiyoung Kim  lt_debugprintf (__FILE__, __LINE__,
4926*735d6239SKiyoung Kim		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4927*735d6239SKiyoung Kim                  nonnull (name), nonnull (value));
4928*735d6239SKiyoung Kim
4929*735d6239SKiyoung Kim  if (name && *name && value && *value)
4930*735d6239SKiyoung Kim    {
4931*735d6239SKiyoung Kim      char *new_value = lt_extend_str (getenv (name), value, 0);
4932*735d6239SKiyoung Kim      lt_setenv (name, new_value);
4933*735d6239SKiyoung Kim      XFREE (new_value);
4934*735d6239SKiyoung Kim    }
4935*735d6239SKiyoung Kim}
4936*735d6239SKiyoung Kim
4937*735d6239SKiyoung KimEOF
4938*735d6239SKiyoung Kim	    case $host_os in
4939*735d6239SKiyoung Kim	      mingw*)
4940*735d6239SKiyoung Kim		cat <<"EOF"
4941*735d6239SKiyoung Kim
4942*735d6239SKiyoung Kim/* Prepares an argument vector before calling spawn().
4943*735d6239SKiyoung Kim   Note that spawn() does not by itself call the command interpreter
4944*735d6239SKiyoung Kim     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4945*735d6239SKiyoung Kim      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4946*735d6239SKiyoung Kim         GetVersionEx(&v);
4947*735d6239SKiyoung Kim         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4948*735d6239SKiyoung Kim      }) ? "cmd.exe" : "command.com").
4949*735d6239SKiyoung Kim   Instead it simply concatenates the arguments, separated by ' ', and calls
4950*735d6239SKiyoung Kim   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4951*735d6239SKiyoung Kim   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4952*735d6239SKiyoung Kim   special way:
4953*735d6239SKiyoung Kim   - Space and tab are interpreted as delimiters. They are not treated as
4954*735d6239SKiyoung Kim     delimiters if they are surrounded by double quotes: "...".
4955*735d6239SKiyoung Kim   - Unescaped double quotes are removed from the input. Their only effect is
4956*735d6239SKiyoung Kim     that within double quotes, space and tab are treated like normal
4957*735d6239SKiyoung Kim     characters.
4958*735d6239SKiyoung Kim   - Backslashes not followed by double quotes are not special.
4959*735d6239SKiyoung Kim   - But 2*n+1 backslashes followed by a double quote become
4960*735d6239SKiyoung Kim     n backslashes followed by a double quote (n >= 0):
4961*735d6239SKiyoung Kim       \" -> "
4962*735d6239SKiyoung Kim       \\\" -> \"
4963*735d6239SKiyoung Kim       \\\\\" -> \\"
4964*735d6239SKiyoung Kim */
4965*735d6239SKiyoung Kim#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"
4966*735d6239SKiyoung Kim#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"
4967*735d6239SKiyoung Kimchar **
4968*735d6239SKiyoung Kimprepare_spawn (char **argv)
4969*735d6239SKiyoung Kim{
4970*735d6239SKiyoung Kim  size_t argc;
4971*735d6239SKiyoung Kim  char **new_argv;
4972*735d6239SKiyoung Kim  size_t i;
4973*735d6239SKiyoung Kim
4974*735d6239SKiyoung Kim  /* Count number of arguments.  */
4975*735d6239SKiyoung Kim  for (argc = 0; argv[argc] != NULL; argc++)
4976*735d6239SKiyoung Kim    ;
4977*735d6239SKiyoung Kim
4978*735d6239SKiyoung Kim  /* Allocate new argument vector.  */
4979*735d6239SKiyoung Kim  new_argv = XMALLOC (char *, argc + 1);
4980*735d6239SKiyoung Kim
4981*735d6239SKiyoung Kim  /* Put quoted arguments into the new argument vector.  */
4982*735d6239SKiyoung Kim  for (i = 0; i < argc; i++)
4983*735d6239SKiyoung Kim    {
4984*735d6239SKiyoung Kim      const char *string = argv[i];
4985*735d6239SKiyoung Kim
4986*735d6239SKiyoung Kim      if (string[0] == '\0')
4987*735d6239SKiyoung Kim	new_argv[i] = xstrdup ("\"\"");
4988*735d6239SKiyoung Kim      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4989*735d6239SKiyoung Kim	{
4990*735d6239SKiyoung Kim	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4991*735d6239SKiyoung Kim	  size_t length;
4992*735d6239SKiyoung Kim	  unsigned int backslashes;
4993*735d6239SKiyoung Kim	  const char *s;
4994*735d6239SKiyoung Kim	  char *quoted_string;
4995*735d6239SKiyoung Kim	  char *p;
4996*735d6239SKiyoung Kim
4997*735d6239SKiyoung Kim	  length = 0;
4998*735d6239SKiyoung Kim	  backslashes = 0;
4999*735d6239SKiyoung Kim	  if (quote_around)
5000*735d6239SKiyoung Kim	    length++;
5001*735d6239SKiyoung Kim	  for (s = string; *s != '\0'; s++)
5002*735d6239SKiyoung Kim	    {
5003*735d6239SKiyoung Kim	      char c = *s;
5004*735d6239SKiyoung Kim	      if (c == '"')
5005*735d6239SKiyoung Kim		length += backslashes + 1;
5006*735d6239SKiyoung Kim	      length++;
5007*735d6239SKiyoung Kim	      if (c == '\\')
5008*735d6239SKiyoung Kim		backslashes++;
5009*735d6239SKiyoung Kim	      else
5010*735d6239SKiyoung Kim		backslashes = 0;
5011*735d6239SKiyoung Kim	    }
5012*735d6239SKiyoung Kim	  if (quote_around)
5013*735d6239SKiyoung Kim	    length += backslashes + 1;
5014*735d6239SKiyoung Kim
5015*735d6239SKiyoung Kim	  quoted_string = XMALLOC (char, length + 1);
5016*735d6239SKiyoung Kim
5017*735d6239SKiyoung Kim	  p = quoted_string;
5018*735d6239SKiyoung Kim	  backslashes = 0;
5019*735d6239SKiyoung Kim	  if (quote_around)
5020*735d6239SKiyoung Kim	    *p++ = '"';
5021*735d6239SKiyoung Kim	  for (s = string; *s != '\0'; s++)
5022*735d6239SKiyoung Kim	    {
5023*735d6239SKiyoung Kim	      char c = *s;
5024*735d6239SKiyoung Kim	      if (c == '"')
5025*735d6239SKiyoung Kim		{
5026*735d6239SKiyoung Kim		  unsigned int j;
5027*735d6239SKiyoung Kim		  for (j = backslashes + 1; j > 0; j--)
5028*735d6239SKiyoung Kim		    *p++ = '\\';
5029*735d6239SKiyoung Kim		}
5030*735d6239SKiyoung Kim	      *p++ = c;
5031*735d6239SKiyoung Kim	      if (c == '\\')
5032*735d6239SKiyoung Kim		backslashes++;
5033*735d6239SKiyoung Kim	      else
5034*735d6239SKiyoung Kim		backslashes = 0;
5035*735d6239SKiyoung Kim	    }
5036*735d6239SKiyoung Kim	  if (quote_around)
5037*735d6239SKiyoung Kim	    {
5038*735d6239SKiyoung Kim	      unsigned int j;
5039*735d6239SKiyoung Kim	      for (j = backslashes; j > 0; j--)
5040*735d6239SKiyoung Kim		*p++ = '\\';
5041*735d6239SKiyoung Kim	      *p++ = '"';
5042*735d6239SKiyoung Kim	    }
5043*735d6239SKiyoung Kim	  *p = '\0';
5044*735d6239SKiyoung Kim
5045*735d6239SKiyoung Kim	  new_argv[i] = quoted_string;
5046*735d6239SKiyoung Kim	}
5047*735d6239SKiyoung Kim      else
5048*735d6239SKiyoung Kim	new_argv[i] = (char *) string;
5049*735d6239SKiyoung Kim    }
5050*735d6239SKiyoung Kim  new_argv[argc] = NULL;
5051*735d6239SKiyoung Kim
5052*735d6239SKiyoung Kim  return new_argv;
5053*735d6239SKiyoung Kim}
5054*735d6239SKiyoung KimEOF
5055*735d6239SKiyoung Kim		;;
5056*735d6239SKiyoung Kim	    esac
5057*735d6239SKiyoung Kim
5058*735d6239SKiyoung Kim            cat <<"EOF"
5059*735d6239SKiyoung Kimvoid lt_dump_script (FILE* f)
5060*735d6239SKiyoung Kim{
5061*735d6239SKiyoung KimEOF
5062*735d6239SKiyoung Kim	    func_emit_wrapper yes |
5063*735d6239SKiyoung Kim              $SED -e 's/\([\\"]\)/\\\1/g' \
5064*735d6239SKiyoung Kim	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
5065*735d6239SKiyoung Kim
5066*735d6239SKiyoung Kim            cat <<"EOF"
5067*735d6239SKiyoung Kim}
5068*735d6239SKiyoung KimEOF
5069*735d6239SKiyoung Kim}
5070*735d6239SKiyoung Kim# end: func_emit_cwrapperexe_src
5071*735d6239SKiyoung Kim
5072*735d6239SKiyoung Kim# func_win32_import_lib_p ARG
5073*735d6239SKiyoung Kim# True if ARG is an import lib, as indicated by $file_magic_cmd
5074*735d6239SKiyoung Kimfunc_win32_import_lib_p ()
5075*735d6239SKiyoung Kim{
5076*735d6239SKiyoung Kim    $opt_debug
5077*735d6239SKiyoung Kim    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5078*735d6239SKiyoung Kim    *import*) : ;;
5079*735d6239SKiyoung Kim    *) false ;;
5080*735d6239SKiyoung Kim    esac
5081*735d6239SKiyoung Kim}
5082*735d6239SKiyoung Kim
5083*735d6239SKiyoung Kim# func_mode_link arg...
5084*735d6239SKiyoung Kimfunc_mode_link ()
5085*735d6239SKiyoung Kim{
5086*735d6239SKiyoung Kim    $opt_debug
5087*735d6239SKiyoung Kim    case $host in
5088*735d6239SKiyoung Kim    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5089*735d6239SKiyoung Kim      # It is impossible to link a dll without this setting, and
5090*735d6239SKiyoung Kim      # we shouldn't force the makefile maintainer to figure out
5091*735d6239SKiyoung Kim      # which system we are compiling for in order to pass an extra
5092*735d6239SKiyoung Kim      # flag for every libtool invocation.
5093*735d6239SKiyoung Kim      # allow_undefined=no
5094*735d6239SKiyoung Kim
5095*735d6239SKiyoung Kim      # FIXME: Unfortunately, there are problems with the above when trying
5096*735d6239SKiyoung Kim      # to make a dll which has undefined symbols, in which case not
5097*735d6239SKiyoung Kim      # even a static library is built.  For now, we need to specify
5098*735d6239SKiyoung Kim      # -no-undefined on the libtool link line when we can be certain
5099*735d6239SKiyoung Kim      # that all symbols are satisfied, otherwise we get a static library.
5100*735d6239SKiyoung Kim      allow_undefined=yes
5101*735d6239SKiyoung Kim      ;;
5102*735d6239SKiyoung Kim    *)
5103*735d6239SKiyoung Kim      allow_undefined=yes
5104*735d6239SKiyoung Kim      ;;
5105*735d6239SKiyoung Kim    esac
5106*735d6239SKiyoung Kim    libtool_args=$nonopt
5107*735d6239SKiyoung Kim    base_compile="$nonopt $@"
5108*735d6239SKiyoung Kim    compile_command=$nonopt
5109*735d6239SKiyoung Kim    finalize_command=$nonopt
5110*735d6239SKiyoung Kim
5111*735d6239SKiyoung Kim    compile_rpath=
5112*735d6239SKiyoung Kim    finalize_rpath=
5113*735d6239SKiyoung Kim    compile_shlibpath=
5114*735d6239SKiyoung Kim    finalize_shlibpath=
5115*735d6239SKiyoung Kim    convenience=
5116*735d6239SKiyoung Kim    old_convenience=
5117*735d6239SKiyoung Kim    deplibs=
5118*735d6239SKiyoung Kim    old_deplibs=
5119*735d6239SKiyoung Kim    compiler_flags=
5120*735d6239SKiyoung Kim    linker_flags=
5121*735d6239SKiyoung Kim    dllsearchpath=
5122*735d6239SKiyoung Kim    lib_search_path=`pwd`
5123*735d6239SKiyoung Kim    inst_prefix_dir=
5124*735d6239SKiyoung Kim    new_inherited_linker_flags=
5125*735d6239SKiyoung Kim
5126*735d6239SKiyoung Kim    avoid_version=no
5127*735d6239SKiyoung Kim    bindir=
5128*735d6239SKiyoung Kim    dlfiles=
5129*735d6239SKiyoung Kim    dlprefiles=
5130*735d6239SKiyoung Kim    dlself=no
5131*735d6239SKiyoung Kim    export_dynamic=no
5132*735d6239SKiyoung Kim    export_symbols=
5133*735d6239SKiyoung Kim    export_symbols_regex=
5134*735d6239SKiyoung Kim    generated=
5135*735d6239SKiyoung Kim    libobjs=
5136*735d6239SKiyoung Kim    ltlibs=
5137*735d6239SKiyoung Kim    module=no
5138*735d6239SKiyoung Kim    no_install=no
5139*735d6239SKiyoung Kim    objs=
5140*735d6239SKiyoung Kim    non_pic_objects=
5141*735d6239SKiyoung Kim    precious_files_regex=
5142*735d6239SKiyoung Kim    prefer_static_libs=no
5143*735d6239SKiyoung Kim    preload=no
5144*735d6239SKiyoung Kim    prev=
5145*735d6239SKiyoung Kim    prevarg=
5146*735d6239SKiyoung Kim    release=
5147*735d6239SKiyoung Kim    rpath=
5148*735d6239SKiyoung Kim    xrpath=
5149*735d6239SKiyoung Kim    perm_rpath=
5150*735d6239SKiyoung Kim    temp_rpath=
5151*735d6239SKiyoung Kim    thread_safe=no
5152*735d6239SKiyoung Kim    vinfo=
5153*735d6239SKiyoung Kim    vinfo_number=no
5154*735d6239SKiyoung Kim    weak_libs=
5155*735d6239SKiyoung Kim    single_module="${wl}-single_module"
5156*735d6239SKiyoung Kim    func_infer_tag $base_compile
5157*735d6239SKiyoung Kim
5158*735d6239SKiyoung Kim    # We need to know -static, to get the right output filenames.
5159*735d6239SKiyoung Kim    for arg
5160*735d6239SKiyoung Kim    do
5161*735d6239SKiyoung Kim      case $arg in
5162*735d6239SKiyoung Kim      -shared)
5163*735d6239SKiyoung Kim	test "$build_libtool_libs" != yes && \
5164*735d6239SKiyoung Kim	  func_fatal_configuration "can not build a shared library"
5165*735d6239SKiyoung Kim	build_old_libs=no
5166*735d6239SKiyoung Kim	break
5167*735d6239SKiyoung Kim	;;
5168*735d6239SKiyoung Kim      -all-static | -static | -static-libtool-libs)
5169*735d6239SKiyoung Kim	case $arg in
5170*735d6239SKiyoung Kim	-all-static)
5171*735d6239SKiyoung Kim	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5172*735d6239SKiyoung Kim	    func_warning "complete static linking is impossible in this configuration"
5173*735d6239SKiyoung Kim	  fi
5174*735d6239SKiyoung Kim	  if test -n "$link_static_flag"; then
5175*735d6239SKiyoung Kim	    dlopen_self=$dlopen_self_static
5176*735d6239SKiyoung Kim	  fi
5177*735d6239SKiyoung Kim	  prefer_static_libs=yes
5178*735d6239SKiyoung Kim	  ;;
5179*735d6239SKiyoung Kim	-static)
5180*735d6239SKiyoung Kim	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5181*735d6239SKiyoung Kim	    dlopen_self=$dlopen_self_static
5182*735d6239SKiyoung Kim	  fi
5183*735d6239SKiyoung Kim	  prefer_static_libs=built
5184*735d6239SKiyoung Kim	  ;;
5185*735d6239SKiyoung Kim	-static-libtool-libs)
5186*735d6239SKiyoung Kim	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5187*735d6239SKiyoung Kim	    dlopen_self=$dlopen_self_static
5188*735d6239SKiyoung Kim	  fi
5189*735d6239SKiyoung Kim	  prefer_static_libs=yes
5190*735d6239SKiyoung Kim	  ;;
5191*735d6239SKiyoung Kim	esac
5192*735d6239SKiyoung Kim	build_libtool_libs=no
5193*735d6239SKiyoung Kim	build_old_libs=yes
5194*735d6239SKiyoung Kim	break
5195*735d6239SKiyoung Kim	;;
5196*735d6239SKiyoung Kim      esac
5197*735d6239SKiyoung Kim    done
5198*735d6239SKiyoung Kim
5199*735d6239SKiyoung Kim    # See if our shared archives depend on static archives.
5200*735d6239SKiyoung Kim    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5201*735d6239SKiyoung Kim
5202*735d6239SKiyoung Kim    # Go through the arguments, transforming them on the way.
5203*735d6239SKiyoung Kim    while test "$#" -gt 0; do
5204*735d6239SKiyoung Kim      arg="$1"
5205*735d6239SKiyoung Kim      shift
5206*735d6239SKiyoung Kim      func_quote_for_eval "$arg"
5207*735d6239SKiyoung Kim      qarg=$func_quote_for_eval_unquoted_result
5208*735d6239SKiyoung Kim      func_append libtool_args " $func_quote_for_eval_result"
5209*735d6239SKiyoung Kim
5210*735d6239SKiyoung Kim      # If the previous option needs an argument, assign it.
5211*735d6239SKiyoung Kim      if test -n "$prev"; then
5212*735d6239SKiyoung Kim	case $prev in
5213*735d6239SKiyoung Kim	output)
5214*735d6239SKiyoung Kim	  func_append compile_command " @OUTPUT@"
5215*735d6239SKiyoung Kim	  func_append finalize_command " @OUTPUT@"
5216*735d6239SKiyoung Kim	  ;;
5217*735d6239SKiyoung Kim	esac
5218*735d6239SKiyoung Kim
5219*735d6239SKiyoung Kim	case $prev in
5220*735d6239SKiyoung Kim	bindir)
5221*735d6239SKiyoung Kim	  bindir="$arg"
5222*735d6239SKiyoung Kim	  prev=
5223*735d6239SKiyoung Kim	  continue
5224*735d6239SKiyoung Kim	  ;;
5225*735d6239SKiyoung Kim	dlfiles|dlprefiles)
5226*735d6239SKiyoung Kim	  if test "$preload" = no; then
5227*735d6239SKiyoung Kim	    # Add the symbol object into the linking commands.
5228*735d6239SKiyoung Kim	    func_append compile_command " @SYMFILE@"
5229*735d6239SKiyoung Kim	    func_append finalize_command " @SYMFILE@"
5230*735d6239SKiyoung Kim	    preload=yes
5231*735d6239SKiyoung Kim	  fi
5232*735d6239SKiyoung Kim	  case $arg in
5233*735d6239SKiyoung Kim	  *.la | *.lo) ;;  # We handle these cases below.
5234*735d6239SKiyoung Kim	  force)
5235*735d6239SKiyoung Kim	    if test "$dlself" = no; then
5236*735d6239SKiyoung Kim	      dlself=needless
5237*735d6239SKiyoung Kim	      export_dynamic=yes
5238*735d6239SKiyoung Kim	    fi
5239*735d6239SKiyoung Kim	    prev=
5240*735d6239SKiyoung Kim	    continue
5241*735d6239SKiyoung Kim	    ;;
5242*735d6239SKiyoung Kim	  self)
5243*735d6239SKiyoung Kim	    if test "$prev" = dlprefiles; then
5244*735d6239SKiyoung Kim	      dlself=yes
5245*735d6239SKiyoung Kim	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5246*735d6239SKiyoung Kim	      dlself=yes
5247*735d6239SKiyoung Kim	    else
5248*735d6239SKiyoung Kim	      dlself=needless
5249*735d6239SKiyoung Kim	      export_dynamic=yes
5250*735d6239SKiyoung Kim	    fi
5251*735d6239SKiyoung Kim	    prev=
5252*735d6239SKiyoung Kim	    continue
5253*735d6239SKiyoung Kim	    ;;
5254*735d6239SKiyoung Kim	  *)
5255*735d6239SKiyoung Kim	    if test "$prev" = dlfiles; then
5256*735d6239SKiyoung Kim	      func_append dlfiles " $arg"
5257*735d6239SKiyoung Kim	    else
5258*735d6239SKiyoung Kim	      func_append dlprefiles " $arg"
5259*735d6239SKiyoung Kim	    fi
5260*735d6239SKiyoung Kim	    prev=
5261*735d6239SKiyoung Kim	    continue
5262*735d6239SKiyoung Kim	    ;;
5263*735d6239SKiyoung Kim	  esac
5264*735d6239SKiyoung Kim	  ;;
5265*735d6239SKiyoung Kim	expsyms)
5266*735d6239SKiyoung Kim	  export_symbols="$arg"
5267*735d6239SKiyoung Kim	  test -f "$arg" \
5268*735d6239SKiyoung Kim	    || func_fatal_error "symbol file \`$arg' does not exist"
5269*735d6239SKiyoung Kim	  prev=
5270*735d6239SKiyoung Kim	  continue
5271*735d6239SKiyoung Kim	  ;;
5272*735d6239SKiyoung Kim	expsyms_regex)
5273*735d6239SKiyoung Kim	  export_symbols_regex="$arg"
5274*735d6239SKiyoung Kim	  prev=
5275*735d6239SKiyoung Kim	  continue
5276*735d6239SKiyoung Kim	  ;;
5277*735d6239SKiyoung Kim	framework)
5278*735d6239SKiyoung Kim	  case $host in
5279*735d6239SKiyoung Kim	    *-*-darwin*)
5280*735d6239SKiyoung Kim	      case "$deplibs " in
5281*735d6239SKiyoung Kim		*" $qarg.ltframework "*) ;;
5282*735d6239SKiyoung Kim		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5283*735d6239SKiyoung Kim		   ;;
5284*735d6239SKiyoung Kim	      esac
5285*735d6239SKiyoung Kim	      ;;
5286*735d6239SKiyoung Kim	  esac
5287*735d6239SKiyoung Kim	  prev=
5288*735d6239SKiyoung Kim	  continue
5289*735d6239SKiyoung Kim	  ;;
5290*735d6239SKiyoung Kim	inst_prefix)
5291*735d6239SKiyoung Kim	  inst_prefix_dir="$arg"
5292*735d6239SKiyoung Kim	  prev=
5293*735d6239SKiyoung Kim	  continue
5294*735d6239SKiyoung Kim	  ;;
5295*735d6239SKiyoung Kim	objectlist)
5296*735d6239SKiyoung Kim	  if test -f "$arg"; then
5297*735d6239SKiyoung Kim	    save_arg=$arg
5298*735d6239SKiyoung Kim	    moreargs=
5299*735d6239SKiyoung Kim	    for fil in `cat "$save_arg"`
5300*735d6239SKiyoung Kim	    do
5301*735d6239SKiyoung Kim#	      func_append moreargs " $fil"
5302*735d6239SKiyoung Kim	      arg=$fil
5303*735d6239SKiyoung Kim	      # A libtool-controlled object.
5304*735d6239SKiyoung Kim
5305*735d6239SKiyoung Kim	      # Check to see that this really is a libtool object.
5306*735d6239SKiyoung Kim	      if func_lalib_unsafe_p "$arg"; then
5307*735d6239SKiyoung Kim		pic_object=
5308*735d6239SKiyoung Kim		non_pic_object=
5309*735d6239SKiyoung Kim
5310*735d6239SKiyoung Kim		# Read the .lo file
5311*735d6239SKiyoung Kim		func_source "$arg"
5312*735d6239SKiyoung Kim
5313*735d6239SKiyoung Kim		if test -z "$pic_object" ||
5314*735d6239SKiyoung Kim		   test -z "$non_pic_object" ||
5315*735d6239SKiyoung Kim		   test "$pic_object" = none &&
5316*735d6239SKiyoung Kim		   test "$non_pic_object" = none; then
5317*735d6239SKiyoung Kim		  func_fatal_error "cannot find name of object for \`$arg'"
5318*735d6239SKiyoung Kim		fi
5319*735d6239SKiyoung Kim
5320*735d6239SKiyoung Kim		# Extract subdirectory from the argument.
5321*735d6239SKiyoung Kim		func_dirname "$arg" "/" ""
5322*735d6239SKiyoung Kim		xdir="$func_dirname_result"
5323*735d6239SKiyoung Kim
5324*735d6239SKiyoung Kim		if test "$pic_object" != none; then
5325*735d6239SKiyoung Kim		  # Prepend the subdirectory the object is found in.
5326*735d6239SKiyoung Kim		  pic_object="$xdir$pic_object"
5327*735d6239SKiyoung Kim
5328*735d6239SKiyoung Kim		  if test "$prev" = dlfiles; then
5329*735d6239SKiyoung Kim		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5330*735d6239SKiyoung Kim		      func_append dlfiles " $pic_object"
5331*735d6239SKiyoung Kim		      prev=
5332*735d6239SKiyoung Kim		      continue
5333*735d6239SKiyoung Kim		    else
5334*735d6239SKiyoung Kim		      # If libtool objects are unsupported, then we need to preload.
5335*735d6239SKiyoung Kim		      prev=dlprefiles
5336*735d6239SKiyoung Kim		    fi
5337*735d6239SKiyoung Kim		  fi
5338*735d6239SKiyoung Kim
5339*735d6239SKiyoung Kim		  # CHECK ME:  I think I busted this.  -Ossama
5340*735d6239SKiyoung Kim		  if test "$prev" = dlprefiles; then
5341*735d6239SKiyoung Kim		    # Preload the old-style object.
5342*735d6239SKiyoung Kim		    func_append dlprefiles " $pic_object"
5343*735d6239SKiyoung Kim		    prev=
5344*735d6239SKiyoung Kim		  fi
5345*735d6239SKiyoung Kim
5346*735d6239SKiyoung Kim		  # A PIC object.
5347*735d6239SKiyoung Kim		  func_append libobjs " $pic_object"
5348*735d6239SKiyoung Kim		  arg="$pic_object"
5349*735d6239SKiyoung Kim		fi
5350*735d6239SKiyoung Kim
5351*735d6239SKiyoung Kim		# Non-PIC object.
5352*735d6239SKiyoung Kim		if test "$non_pic_object" != none; then
5353*735d6239SKiyoung Kim		  # Prepend the subdirectory the object is found in.
5354*735d6239SKiyoung Kim		  non_pic_object="$xdir$non_pic_object"
5355*735d6239SKiyoung Kim
5356*735d6239SKiyoung Kim		  # A standard non-PIC object
5357*735d6239SKiyoung Kim		  func_append non_pic_objects " $non_pic_object"
5358*735d6239SKiyoung Kim		  if test -z "$pic_object" || test "$pic_object" = none ; then
5359*735d6239SKiyoung Kim		    arg="$non_pic_object"
5360*735d6239SKiyoung Kim		  fi
5361*735d6239SKiyoung Kim		else
5362*735d6239SKiyoung Kim		  # If the PIC object exists, use it instead.
5363*735d6239SKiyoung Kim		  # $xdir was prepended to $pic_object above.
5364*735d6239SKiyoung Kim		  non_pic_object="$pic_object"
5365*735d6239SKiyoung Kim		  func_append non_pic_objects " $non_pic_object"
5366*735d6239SKiyoung Kim		fi
5367*735d6239SKiyoung Kim	      else
5368*735d6239SKiyoung Kim		# Only an error if not doing a dry-run.
5369*735d6239SKiyoung Kim		if $opt_dry_run; then
5370*735d6239SKiyoung Kim		  # Extract subdirectory from the argument.
5371*735d6239SKiyoung Kim		  func_dirname "$arg" "/" ""
5372*735d6239SKiyoung Kim		  xdir="$func_dirname_result"
5373*735d6239SKiyoung Kim
5374*735d6239SKiyoung Kim		  func_lo2o "$arg"
5375*735d6239SKiyoung Kim		  pic_object=$xdir$objdir/$func_lo2o_result
5376*735d6239SKiyoung Kim		  non_pic_object=$xdir$func_lo2o_result
5377*735d6239SKiyoung Kim		  func_append libobjs " $pic_object"
5378*735d6239SKiyoung Kim		  func_append non_pic_objects " $non_pic_object"
5379*735d6239SKiyoung Kim	        else
5380*735d6239SKiyoung Kim		  func_fatal_error "\`$arg' is not a valid libtool object"
5381*735d6239SKiyoung Kim		fi
5382*735d6239SKiyoung Kim	      fi
5383*735d6239SKiyoung Kim	    done
5384*735d6239SKiyoung Kim	  else
5385*735d6239SKiyoung Kim	    func_fatal_error "link input file \`$arg' does not exist"
5386*735d6239SKiyoung Kim	  fi
5387*735d6239SKiyoung Kim	  arg=$save_arg
5388*735d6239SKiyoung Kim	  prev=
5389*735d6239SKiyoung Kim	  continue
5390*735d6239SKiyoung Kim	  ;;
5391*735d6239SKiyoung Kim	precious_regex)
5392*735d6239SKiyoung Kim	  precious_files_regex="$arg"
5393*735d6239SKiyoung Kim	  prev=
5394*735d6239SKiyoung Kim	  continue
5395*735d6239SKiyoung Kim	  ;;
5396*735d6239SKiyoung Kim	release)
5397*735d6239SKiyoung Kim	  release="-$arg"
5398*735d6239SKiyoung Kim	  prev=
5399*735d6239SKiyoung Kim	  continue
5400*735d6239SKiyoung Kim	  ;;
5401*735d6239SKiyoung Kim	rpath | xrpath)
5402*735d6239SKiyoung Kim	  # We need an absolute path.
5403*735d6239SKiyoung Kim	  case $arg in
5404*735d6239SKiyoung Kim	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5405*735d6239SKiyoung Kim	  *)
5406*735d6239SKiyoung Kim	    func_fatal_error "only absolute run-paths are allowed"
5407*735d6239SKiyoung Kim	    ;;
5408*735d6239SKiyoung Kim	  esac
5409*735d6239SKiyoung Kim	  if test "$prev" = rpath; then
5410*735d6239SKiyoung Kim	    case "$rpath " in
5411*735d6239SKiyoung Kim	    *" $arg "*) ;;
5412*735d6239SKiyoung Kim	    *) func_append rpath " $arg" ;;
5413*735d6239SKiyoung Kim	    esac
5414*735d6239SKiyoung Kim	  else
5415*735d6239SKiyoung Kim	    case "$xrpath " in
5416*735d6239SKiyoung Kim	    *" $arg "*) ;;
5417*735d6239SKiyoung Kim	    *) func_append xrpath " $arg" ;;
5418*735d6239SKiyoung Kim	    esac
5419*735d6239SKiyoung Kim	  fi
5420*735d6239SKiyoung Kim	  prev=
5421*735d6239SKiyoung Kim	  continue
5422*735d6239SKiyoung Kim	  ;;
5423*735d6239SKiyoung Kim	shrext)
5424*735d6239SKiyoung Kim	  shrext_cmds="$arg"
5425*735d6239SKiyoung Kim	  prev=
5426*735d6239SKiyoung Kim	  continue
5427*735d6239SKiyoung Kim	  ;;
5428*735d6239SKiyoung Kim	weak)
5429*735d6239SKiyoung Kim	  func_append weak_libs " $arg"
5430*735d6239SKiyoung Kim	  prev=
5431*735d6239SKiyoung Kim	  continue
5432*735d6239SKiyoung Kim	  ;;
5433*735d6239SKiyoung Kim	xcclinker)
5434*735d6239SKiyoung Kim	  func_append linker_flags " $qarg"
5435*735d6239SKiyoung Kim	  func_append compiler_flags " $qarg"
5436*735d6239SKiyoung Kim	  prev=
5437*735d6239SKiyoung Kim	  func_append compile_command " $qarg"
5438*735d6239SKiyoung Kim	  func_append finalize_command " $qarg"
5439*735d6239SKiyoung Kim	  continue
5440*735d6239SKiyoung Kim	  ;;
5441*735d6239SKiyoung Kim	xcompiler)
5442*735d6239SKiyoung Kim	  func_append compiler_flags " $qarg"
5443*735d6239SKiyoung Kim	  prev=
5444*735d6239SKiyoung Kim	  func_append compile_command " $qarg"
5445*735d6239SKiyoung Kim	  func_append finalize_command " $qarg"
5446*735d6239SKiyoung Kim	  continue
5447*735d6239SKiyoung Kim	  ;;
5448*735d6239SKiyoung Kim	xlinker)
5449*735d6239SKiyoung Kim	  func_append linker_flags " $qarg"
5450*735d6239SKiyoung Kim	  func_append compiler_flags " $wl$qarg"
5451*735d6239SKiyoung Kim	  prev=
5452*735d6239SKiyoung Kim	  func_append compile_command " $wl$qarg"
5453*735d6239SKiyoung Kim	  func_append finalize_command " $wl$qarg"
5454*735d6239SKiyoung Kim	  continue
5455*735d6239SKiyoung Kim	  ;;
5456*735d6239SKiyoung Kim	*)
5457*735d6239SKiyoung Kim	  eval "$prev=\"\$arg\""
5458*735d6239SKiyoung Kim	  prev=
5459*735d6239SKiyoung Kim	  continue
5460*735d6239SKiyoung Kim	  ;;
5461*735d6239SKiyoung Kim	esac
5462*735d6239SKiyoung Kim      fi # test -n "$prev"
5463*735d6239SKiyoung Kim
5464*735d6239SKiyoung Kim      prevarg="$arg"
5465*735d6239SKiyoung Kim
5466*735d6239SKiyoung Kim      case $arg in
5467*735d6239SKiyoung Kim      -all-static)
5468*735d6239SKiyoung Kim	if test -n "$link_static_flag"; then
5469*735d6239SKiyoung Kim	  # See comment for -static flag below, for more details.
5470*735d6239SKiyoung Kim	  func_append compile_command " $link_static_flag"
5471*735d6239SKiyoung Kim	  func_append finalize_command " $link_static_flag"
5472*735d6239SKiyoung Kim	fi
5473*735d6239SKiyoung Kim	continue
5474*735d6239SKiyoung Kim	;;
5475*735d6239SKiyoung Kim
5476*735d6239SKiyoung Kim      -allow-undefined)
5477*735d6239SKiyoung Kim	# FIXME: remove this flag sometime in the future.
5478*735d6239SKiyoung Kim	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5479*735d6239SKiyoung Kim	;;
5480*735d6239SKiyoung Kim
5481*735d6239SKiyoung Kim      -avoid-version)
5482*735d6239SKiyoung Kim	avoid_version=yes
5483*735d6239SKiyoung Kim	continue
5484*735d6239SKiyoung Kim	;;
5485*735d6239SKiyoung Kim
5486*735d6239SKiyoung Kim      -bindir)
5487*735d6239SKiyoung Kim	prev=bindir
5488*735d6239SKiyoung Kim	continue
5489*735d6239SKiyoung Kim	;;
5490*735d6239SKiyoung Kim
5491*735d6239SKiyoung Kim      -dlopen)
5492*735d6239SKiyoung Kim	prev=dlfiles
5493*735d6239SKiyoung Kim	continue
5494*735d6239SKiyoung Kim	;;
5495*735d6239SKiyoung Kim
5496*735d6239SKiyoung Kim      -dlpreopen)
5497*735d6239SKiyoung Kim	prev=dlprefiles
5498*735d6239SKiyoung Kim	continue
5499*735d6239SKiyoung Kim	;;
5500*735d6239SKiyoung Kim
5501*735d6239SKiyoung Kim      -export-dynamic)
5502*735d6239SKiyoung Kim	export_dynamic=yes
5503*735d6239SKiyoung Kim	continue
5504*735d6239SKiyoung Kim	;;
5505*735d6239SKiyoung Kim
5506*735d6239SKiyoung Kim      -export-symbols | -export-symbols-regex)
5507*735d6239SKiyoung Kim	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5508*735d6239SKiyoung Kim	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5509*735d6239SKiyoung Kim	fi
5510*735d6239SKiyoung Kim	if test "X$arg" = "X-export-symbols"; then
5511*735d6239SKiyoung Kim	  prev=expsyms
5512*735d6239SKiyoung Kim	else
5513*735d6239SKiyoung Kim	  prev=expsyms_regex
5514*735d6239SKiyoung Kim	fi
5515*735d6239SKiyoung Kim	continue
5516*735d6239SKiyoung Kim	;;
5517*735d6239SKiyoung Kim
5518*735d6239SKiyoung Kim      -framework)
5519*735d6239SKiyoung Kim	prev=framework
5520*735d6239SKiyoung Kim	continue
5521*735d6239SKiyoung Kim	;;
5522*735d6239SKiyoung Kim
5523*735d6239SKiyoung Kim      -inst-prefix-dir)
5524*735d6239SKiyoung Kim	prev=inst_prefix
5525*735d6239SKiyoung Kim	continue
5526*735d6239SKiyoung Kim	;;
5527*735d6239SKiyoung Kim
5528*735d6239SKiyoung Kim      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5529*735d6239SKiyoung Kim      # so, if we see these flags be careful not to treat them like -L
5530*735d6239SKiyoung Kim      -L[A-Z][A-Z]*:*)
5531*735d6239SKiyoung Kim	case $with_gcc/$host in
5532*735d6239SKiyoung Kim	no/*-*-irix* | /*-*-irix*)
5533*735d6239SKiyoung Kim	  func_append compile_command " $arg"
5534*735d6239SKiyoung Kim	  func_append finalize_command " $arg"
5535*735d6239SKiyoung Kim	  ;;
5536*735d6239SKiyoung Kim	esac
5537*735d6239SKiyoung Kim	continue
5538*735d6239SKiyoung Kim	;;
5539*735d6239SKiyoung Kim
5540*735d6239SKiyoung Kim      -L*)
5541*735d6239SKiyoung Kim	func_stripname "-L" '' "$arg"
5542*735d6239SKiyoung Kim	if test -z "$func_stripname_result"; then
5543*735d6239SKiyoung Kim	  if test "$#" -gt 0; then
5544*735d6239SKiyoung Kim	    func_fatal_error "require no space between \`-L' and \`$1'"
5545*735d6239SKiyoung Kim	  else
5546*735d6239SKiyoung Kim	    func_fatal_error "need path for \`-L' option"
5547*735d6239SKiyoung Kim	  fi
5548*735d6239SKiyoung Kim	fi
5549*735d6239SKiyoung Kim	func_resolve_sysroot "$func_stripname_result"
5550*735d6239SKiyoung Kim	dir=$func_resolve_sysroot_result
5551*735d6239SKiyoung Kim	# We need an absolute path.
5552*735d6239SKiyoung Kim	case $dir in
5553*735d6239SKiyoung Kim	[\\/]* | [A-Za-z]:[\\/]*) ;;
5554*735d6239SKiyoung Kim	*)
5555*735d6239SKiyoung Kim	  absdir=`cd "$dir" && pwd`
5556*735d6239SKiyoung Kim	  test -z "$absdir" && \
5557*735d6239SKiyoung Kim	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5558*735d6239SKiyoung Kim	  dir="$absdir"
5559*735d6239SKiyoung Kim	  ;;
5560*735d6239SKiyoung Kim	esac
5561*735d6239SKiyoung Kim	case "$deplibs " in
5562*735d6239SKiyoung Kim	*" -L$dir "* | *" $arg "*)
5563*735d6239SKiyoung Kim	  # Will only happen for absolute or sysroot arguments
5564*735d6239SKiyoung Kim	  ;;
5565*735d6239SKiyoung Kim	*)
5566*735d6239SKiyoung Kim	  # Preserve sysroot, but never include relative directories
5567*735d6239SKiyoung Kim	  case $dir in
5568*735d6239SKiyoung Kim	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5569*735d6239SKiyoung Kim	    *) func_append deplibs " -L$dir" ;;
5570*735d6239SKiyoung Kim	  esac
5571*735d6239SKiyoung Kim	  func_append lib_search_path " $dir"
5572*735d6239SKiyoung Kim	  ;;
5573*735d6239SKiyoung Kim	esac
5574*735d6239SKiyoung Kim	case $host in
5575*735d6239SKiyoung Kim	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5576*735d6239SKiyoung Kim	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5577*735d6239SKiyoung Kim	  case :$dllsearchpath: in
5578*735d6239SKiyoung Kim	  *":$dir:"*) ;;
5579*735d6239SKiyoung Kim	  ::) dllsearchpath=$dir;;
5580*735d6239SKiyoung Kim	  *) func_append dllsearchpath ":$dir";;
5581*735d6239SKiyoung Kim	  esac
5582*735d6239SKiyoung Kim	  case :$dllsearchpath: in
5583*735d6239SKiyoung Kim	  *":$testbindir:"*) ;;
5584*735d6239SKiyoung Kim	  ::) dllsearchpath=$testbindir;;
5585*735d6239SKiyoung Kim	  *) func_append dllsearchpath ":$testbindir";;
5586*735d6239SKiyoung Kim	  esac
5587*735d6239SKiyoung Kim	  ;;
5588*735d6239SKiyoung Kim	esac
5589*735d6239SKiyoung Kim	continue
5590*735d6239SKiyoung Kim	;;
5591*735d6239SKiyoung Kim
5592*735d6239SKiyoung Kim      -l*)
5593*735d6239SKiyoung Kim	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5594*735d6239SKiyoung Kim	  case $host in
5595*735d6239SKiyoung Kim	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5596*735d6239SKiyoung Kim	    # These systems don't actually have a C or math library (as such)
5597*735d6239SKiyoung Kim	    continue
5598*735d6239SKiyoung Kim	    ;;
5599*735d6239SKiyoung Kim	  *-*-os2*)
5600*735d6239SKiyoung Kim	    # These systems don't actually have a C library (as such)
5601*735d6239SKiyoung Kim	    test "X$arg" = "X-lc" && continue
5602*735d6239SKiyoung Kim	    ;;
5603*735d6239SKiyoung Kim	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5604*735d6239SKiyoung Kim	    # Do not include libc due to us having libc/libc_r.
5605*735d6239SKiyoung Kim	    test "X$arg" = "X-lc" && continue
5606*735d6239SKiyoung Kim	    ;;
5607*735d6239SKiyoung Kim	  *-*-rhapsody* | *-*-darwin1.[012])
5608*735d6239SKiyoung Kim	    # Rhapsody C and math libraries are in the System framework
5609*735d6239SKiyoung Kim	    func_append deplibs " System.ltframework"
5610*735d6239SKiyoung Kim	    continue
5611*735d6239SKiyoung Kim	    ;;
5612*735d6239SKiyoung Kim	  *-*-sco3.2v5* | *-*-sco5v6*)
5613*735d6239SKiyoung Kim	    # Causes problems with __ctype
5614*735d6239SKiyoung Kim	    test "X$arg" = "X-lc" && continue
5615*735d6239SKiyoung Kim	    ;;
5616*735d6239SKiyoung Kim	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5617*735d6239SKiyoung Kim	    # Compiler inserts libc in the correct place for threads to work
5618*735d6239SKiyoung Kim	    test "X$arg" = "X-lc" && continue
5619*735d6239SKiyoung Kim	    ;;
5620*735d6239SKiyoung Kim	  esac
5621*735d6239SKiyoung Kim	elif test "X$arg" = "X-lc_r"; then
5622*735d6239SKiyoung Kim	 case $host in
5623*735d6239SKiyoung Kim	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5624*735d6239SKiyoung Kim	   # Do not include libc_r directly, use -pthread flag.
5625*735d6239SKiyoung Kim	   continue
5626*735d6239SKiyoung Kim	   ;;
5627*735d6239SKiyoung Kim	 esac
5628*735d6239SKiyoung Kim	fi
5629*735d6239SKiyoung Kim	func_append deplibs " $arg"
5630*735d6239SKiyoung Kim	continue
5631*735d6239SKiyoung Kim	;;
5632*735d6239SKiyoung Kim
5633*735d6239SKiyoung Kim      -module)
5634*735d6239SKiyoung Kim	module=yes
5635*735d6239SKiyoung Kim	continue
5636*735d6239SKiyoung Kim	;;
5637*735d6239SKiyoung Kim
5638*735d6239SKiyoung Kim      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5639*735d6239SKiyoung Kim      # classes, name mangling, and exception handling.
5640*735d6239SKiyoung Kim      # Darwin uses the -arch flag to determine output architecture.
5641*735d6239SKiyoung Kim      -model|-arch|-isysroot|--sysroot)
5642*735d6239SKiyoung Kim	func_append compiler_flags " $arg"
5643*735d6239SKiyoung Kim	func_append compile_command " $arg"
5644*735d6239SKiyoung Kim	func_append finalize_command " $arg"
5645*735d6239SKiyoung Kim	prev=xcompiler
5646*735d6239SKiyoung Kim	continue
5647*735d6239SKiyoung Kim	;;
5648*735d6239SKiyoung Kim
5649*735d6239SKiyoung Kim      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5650*735d6239SKiyoung Kim	func_append compiler_flags " $arg"
5651*735d6239SKiyoung Kim	func_append compile_command " $arg"
5652*735d6239SKiyoung Kim	func_append finalize_command " $arg"
5653*735d6239SKiyoung Kim	case "$new_inherited_linker_flags " in
5654*735d6239SKiyoung Kim	    *" $arg "*) ;;
5655*735d6239SKiyoung Kim	    * ) func_append new_inherited_linker_flags " $arg" ;;
5656*735d6239SKiyoung Kim	esac
5657*735d6239SKiyoung Kim	continue
5658*735d6239SKiyoung Kim	;;
5659*735d6239SKiyoung Kim
5660*735d6239SKiyoung Kim      -multi_module)
5661*735d6239SKiyoung Kim	single_module="${wl}-multi_module"
5662*735d6239SKiyoung Kim	continue
5663*735d6239SKiyoung Kim	;;
5664*735d6239SKiyoung Kim
5665*735d6239SKiyoung Kim      -no-fast-install)
5666*735d6239SKiyoung Kim	fast_install=no
5667*735d6239SKiyoung Kim	continue
5668*735d6239SKiyoung Kim	;;
5669*735d6239SKiyoung Kim
5670*735d6239SKiyoung Kim      -no-install)
5671*735d6239SKiyoung Kim	case $host in
5672*735d6239SKiyoung Kim	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5673*735d6239SKiyoung Kim	  # The PATH hackery in wrapper scripts is required on Windows
5674*735d6239SKiyoung Kim	  # and Darwin in order for the loader to find any dlls it needs.
5675*735d6239SKiyoung Kim	  func_warning "\`-no-install' is ignored for $host"
5676*735d6239SKiyoung Kim	  func_warning "assuming \`-no-fast-install' instead"
5677*735d6239SKiyoung Kim	  fast_install=no
5678*735d6239SKiyoung Kim	  ;;
5679*735d6239SKiyoung Kim	*) no_install=yes ;;
5680*735d6239SKiyoung Kim	esac
5681*735d6239SKiyoung Kim	continue
5682*735d6239SKiyoung Kim	;;
5683*735d6239SKiyoung Kim
5684*735d6239SKiyoung Kim      -no-undefined)
5685*735d6239SKiyoung Kim	allow_undefined=no
5686*735d6239SKiyoung Kim	continue
5687*735d6239SKiyoung Kim	;;
5688*735d6239SKiyoung Kim
5689*735d6239SKiyoung Kim      -objectlist)
5690*735d6239SKiyoung Kim	prev=objectlist
5691*735d6239SKiyoung Kim	continue
5692*735d6239SKiyoung Kim	;;
5693*735d6239SKiyoung Kim
5694*735d6239SKiyoung Kim      -o) prev=output ;;
5695*735d6239SKiyoung Kim
5696*735d6239SKiyoung Kim      -precious-files-regex)
5697*735d6239SKiyoung Kim	prev=precious_regex
5698*735d6239SKiyoung Kim	continue
5699*735d6239SKiyoung Kim	;;
5700*735d6239SKiyoung Kim
5701*735d6239SKiyoung Kim      -release)
5702*735d6239SKiyoung Kim	prev=release
5703*735d6239SKiyoung Kim	continue
5704*735d6239SKiyoung Kim	;;
5705*735d6239SKiyoung Kim
5706*735d6239SKiyoung Kim      -rpath)
5707*735d6239SKiyoung Kim	prev=rpath
5708*735d6239SKiyoung Kim	continue
5709*735d6239SKiyoung Kim	;;
5710*735d6239SKiyoung Kim
5711*735d6239SKiyoung Kim      -R)
5712*735d6239SKiyoung Kim	prev=xrpath
5713*735d6239SKiyoung Kim	continue
5714*735d6239SKiyoung Kim	;;
5715*735d6239SKiyoung Kim
5716*735d6239SKiyoung Kim      -R*)
5717*735d6239SKiyoung Kim	func_stripname '-R' '' "$arg"
5718*735d6239SKiyoung Kim	dir=$func_stripname_result
5719*735d6239SKiyoung Kim	# We need an absolute path.
5720*735d6239SKiyoung Kim	case $dir in
5721*735d6239SKiyoung Kim	[\\/]* | [A-Za-z]:[\\/]*) ;;
5722*735d6239SKiyoung Kim	=*)
5723*735d6239SKiyoung Kim	  func_stripname '=' '' "$dir"
5724*735d6239SKiyoung Kim	  dir=$lt_sysroot$func_stripname_result
5725*735d6239SKiyoung Kim	  ;;
5726*735d6239SKiyoung Kim	*)
5727*735d6239SKiyoung Kim	  func_fatal_error "only absolute run-paths are allowed"
5728*735d6239SKiyoung Kim	  ;;
5729*735d6239SKiyoung Kim	esac
5730*735d6239SKiyoung Kim	case "$xrpath " in
5731*735d6239SKiyoung Kim	*" $dir "*) ;;
5732*735d6239SKiyoung Kim	*) func_append xrpath " $dir" ;;
5733*735d6239SKiyoung Kim	esac
5734*735d6239SKiyoung Kim	continue
5735*735d6239SKiyoung Kim	;;
5736*735d6239SKiyoung Kim
5737*735d6239SKiyoung Kim      -shared)
5738*735d6239SKiyoung Kim	# The effects of -shared are defined in a previous loop.
5739*735d6239SKiyoung Kim	continue
5740*735d6239SKiyoung Kim	;;
5741*735d6239SKiyoung Kim
5742*735d6239SKiyoung Kim      -shrext)
5743*735d6239SKiyoung Kim	prev=shrext
5744*735d6239SKiyoung Kim	continue
5745*735d6239SKiyoung Kim	;;
5746*735d6239SKiyoung Kim
5747*735d6239SKiyoung Kim      -static | -static-libtool-libs)
5748*735d6239SKiyoung Kim	# The effects of -static are defined in a previous loop.
5749*735d6239SKiyoung Kim	# We used to do the same as -all-static on platforms that
5750*735d6239SKiyoung Kim	# didn't have a PIC flag, but the assumption that the effects
5751*735d6239SKiyoung Kim	# would be equivalent was wrong.  It would break on at least
5752*735d6239SKiyoung Kim	# Digital Unix and AIX.
5753*735d6239SKiyoung Kim	continue
5754*735d6239SKiyoung Kim	;;
5755*735d6239SKiyoung Kim
5756*735d6239SKiyoung Kim      -thread-safe)
5757*735d6239SKiyoung Kim	thread_safe=yes
5758*735d6239SKiyoung Kim	continue
5759*735d6239SKiyoung Kim	;;
5760*735d6239SKiyoung Kim
5761*735d6239SKiyoung Kim      -version-info)
5762*735d6239SKiyoung Kim	prev=vinfo
5763*735d6239SKiyoung Kim	continue
5764*735d6239SKiyoung Kim	;;
5765*735d6239SKiyoung Kim
5766*735d6239SKiyoung Kim      -version-number)
5767*735d6239SKiyoung Kim	prev=vinfo
5768*735d6239SKiyoung Kim	vinfo_number=yes
5769*735d6239SKiyoung Kim	continue
5770*735d6239SKiyoung Kim	;;
5771*735d6239SKiyoung Kim
5772*735d6239SKiyoung Kim      -weak)
5773*735d6239SKiyoung Kim        prev=weak
5774*735d6239SKiyoung Kim	continue
5775*735d6239SKiyoung Kim	;;
5776*735d6239SKiyoung Kim
5777*735d6239SKiyoung Kim      -Wc,*)
5778*735d6239SKiyoung Kim	func_stripname '-Wc,' '' "$arg"
5779*735d6239SKiyoung Kim	args=$func_stripname_result
5780*735d6239SKiyoung Kim	arg=
5781*735d6239SKiyoung Kim	save_ifs="$IFS"; IFS=','
5782*735d6239SKiyoung Kim	for flag in $args; do
5783*735d6239SKiyoung Kim	  IFS="$save_ifs"
5784*735d6239SKiyoung Kim          func_quote_for_eval "$flag"
5785*735d6239SKiyoung Kim	  func_append arg " $func_quote_for_eval_result"
5786*735d6239SKiyoung Kim	  func_append compiler_flags " $func_quote_for_eval_result"
5787*735d6239SKiyoung Kim	done
5788*735d6239SKiyoung Kim	IFS="$save_ifs"
5789*735d6239SKiyoung Kim	func_stripname ' ' '' "$arg"
5790*735d6239SKiyoung Kim	arg=$func_stripname_result
5791*735d6239SKiyoung Kim	;;
5792*735d6239SKiyoung Kim
5793*735d6239SKiyoung Kim      -Wl,*)
5794*735d6239SKiyoung Kim	func_stripname '-Wl,' '' "$arg"
5795*735d6239SKiyoung Kim	args=$func_stripname_result
5796*735d6239SKiyoung Kim	arg=
5797*735d6239SKiyoung Kim	save_ifs="$IFS"; IFS=','
5798*735d6239SKiyoung Kim	for flag in $args; do
5799*735d6239SKiyoung Kim	  IFS="$save_ifs"
5800*735d6239SKiyoung Kim          func_quote_for_eval "$flag"
5801*735d6239SKiyoung Kim	  func_append arg " $wl$func_quote_for_eval_result"
5802*735d6239SKiyoung Kim	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5803*735d6239SKiyoung Kim	  func_append linker_flags " $func_quote_for_eval_result"
5804*735d6239SKiyoung Kim	done
5805*735d6239SKiyoung Kim	IFS="$save_ifs"
5806*735d6239SKiyoung Kim	func_stripname ' ' '' "$arg"
5807*735d6239SKiyoung Kim	arg=$func_stripname_result
5808*735d6239SKiyoung Kim	;;
5809*735d6239SKiyoung Kim
5810*735d6239SKiyoung Kim      -Xcompiler)
5811*735d6239SKiyoung Kim	prev=xcompiler
5812*735d6239SKiyoung Kim	continue
5813*735d6239SKiyoung Kim	;;
5814*735d6239SKiyoung Kim
5815*735d6239SKiyoung Kim      -Xlinker)
5816*735d6239SKiyoung Kim	prev=xlinker
5817*735d6239SKiyoung Kim	continue
5818*735d6239SKiyoung Kim	;;
5819*735d6239SKiyoung Kim
5820*735d6239SKiyoung Kim      -XCClinker)
5821*735d6239SKiyoung Kim	prev=xcclinker
5822*735d6239SKiyoung Kim	continue
5823*735d6239SKiyoung Kim	;;
5824*735d6239SKiyoung Kim
5825*735d6239SKiyoung Kim      # -msg_* for osf cc
5826*735d6239SKiyoung Kim      -msg_*)
5827*735d6239SKiyoung Kim	func_quote_for_eval "$arg"
5828*735d6239SKiyoung Kim	arg="$func_quote_for_eval_result"
5829*735d6239SKiyoung Kim	;;
5830*735d6239SKiyoung Kim
5831*735d6239SKiyoung Kim      # Flags to be passed through unchanged, with rationale:
5832*735d6239SKiyoung Kim      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5833*735d6239SKiyoung Kim      # -r[0-9][0-9]*        specify processor for the SGI compiler
5834*735d6239SKiyoung Kim      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5835*735d6239SKiyoung Kim      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5836*735d6239SKiyoung Kim      # -q*                  compiler args for the IBM compiler
5837*735d6239SKiyoung Kim      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5838*735d6239SKiyoung Kim      # -F/path              path to uninstalled frameworks, gcc on darwin
5839*735d6239SKiyoung Kim      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5840*735d6239SKiyoung Kim      # @file                GCC response files
5841*735d6239SKiyoung Kim      # -tp=*                Portland pgcc target processor selection
5842*735d6239SKiyoung Kim      # --sysroot=*          for sysroot support
5843*735d6239SKiyoung Kim      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5844*735d6239SKiyoung Kim      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5845*735d6239SKiyoung Kim      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5846*735d6239SKiyoung Kim      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5847*735d6239SKiyoung Kim        func_quote_for_eval "$arg"
5848*735d6239SKiyoung Kim	arg="$func_quote_for_eval_result"
5849*735d6239SKiyoung Kim        func_append compile_command " $arg"
5850*735d6239SKiyoung Kim        func_append finalize_command " $arg"
5851*735d6239SKiyoung Kim        func_append compiler_flags " $arg"
5852*735d6239SKiyoung Kim        continue
5853*735d6239SKiyoung Kim        ;;
5854*735d6239SKiyoung Kim
5855*735d6239SKiyoung Kim      # Some other compiler flag.
5856*735d6239SKiyoung Kim      -* | +*)
5857*735d6239SKiyoung Kim        func_quote_for_eval "$arg"
5858*735d6239SKiyoung Kim	arg="$func_quote_for_eval_result"
5859*735d6239SKiyoung Kim	;;
5860*735d6239SKiyoung Kim
5861*735d6239SKiyoung Kim      *.$objext)
5862*735d6239SKiyoung Kim	# A standard object.
5863*735d6239SKiyoung Kim	func_append objs " $arg"
5864*735d6239SKiyoung Kim	;;
5865*735d6239SKiyoung Kim
5866*735d6239SKiyoung Kim      *.lo)
5867*735d6239SKiyoung Kim	# A libtool-controlled object.
5868*735d6239SKiyoung Kim
5869*735d6239SKiyoung Kim	# Check to see that this really is a libtool object.
5870*735d6239SKiyoung Kim	if func_lalib_unsafe_p "$arg"; then
5871*735d6239SKiyoung Kim	  pic_object=
5872*735d6239SKiyoung Kim	  non_pic_object=
5873*735d6239SKiyoung Kim
5874*735d6239SKiyoung Kim	  # Read the .lo file
5875*735d6239SKiyoung Kim	  func_source "$arg"
5876*735d6239SKiyoung Kim
5877*735d6239SKiyoung Kim	  if test -z "$pic_object" ||
5878*735d6239SKiyoung Kim	     test -z "$non_pic_object" ||
5879*735d6239SKiyoung Kim	     test "$pic_object" = none &&
5880*735d6239SKiyoung Kim	     test "$non_pic_object" = none; then
5881*735d6239SKiyoung Kim	    func_fatal_error "cannot find name of object for \`$arg'"
5882*735d6239SKiyoung Kim	  fi
5883*735d6239SKiyoung Kim
5884*735d6239SKiyoung Kim	  # Extract subdirectory from the argument.
5885*735d6239SKiyoung Kim	  func_dirname "$arg" "/" ""
5886*735d6239SKiyoung Kim	  xdir="$func_dirname_result"
5887*735d6239SKiyoung Kim
5888*735d6239SKiyoung Kim	  if test "$pic_object" != none; then
5889*735d6239SKiyoung Kim	    # Prepend the subdirectory the object is found in.
5890*735d6239SKiyoung Kim	    pic_object="$xdir$pic_object"
5891*735d6239SKiyoung Kim
5892*735d6239SKiyoung Kim	    if test "$prev" = dlfiles; then
5893*735d6239SKiyoung Kim	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5894*735d6239SKiyoung Kim		func_append dlfiles " $pic_object"
5895*735d6239SKiyoung Kim		prev=
5896*735d6239SKiyoung Kim		continue
5897*735d6239SKiyoung Kim	      else
5898*735d6239SKiyoung Kim		# If libtool objects are unsupported, then we need to preload.
5899*735d6239SKiyoung Kim		prev=dlprefiles
5900*735d6239SKiyoung Kim	      fi
5901*735d6239SKiyoung Kim	    fi
5902*735d6239SKiyoung Kim
5903*735d6239SKiyoung Kim	    # CHECK ME:  I think I busted this.  -Ossama
5904*735d6239SKiyoung Kim	    if test "$prev" = dlprefiles; then
5905*735d6239SKiyoung Kim	      # Preload the old-style object.
5906*735d6239SKiyoung Kim	      func_append dlprefiles " $pic_object"
5907*735d6239SKiyoung Kim	      prev=
5908*735d6239SKiyoung Kim	    fi
5909*735d6239SKiyoung Kim
5910*735d6239SKiyoung Kim	    # A PIC object.
5911*735d6239SKiyoung Kim	    func_append libobjs " $pic_object"
5912*735d6239SKiyoung Kim	    arg="$pic_object"
5913*735d6239SKiyoung Kim	  fi
5914*735d6239SKiyoung Kim
5915*735d6239SKiyoung Kim	  # Non-PIC object.
5916*735d6239SKiyoung Kim	  if test "$non_pic_object" != none; then
5917*735d6239SKiyoung Kim	    # Prepend the subdirectory the object is found in.
5918*735d6239SKiyoung Kim	    non_pic_object="$xdir$non_pic_object"
5919*735d6239SKiyoung Kim
5920*735d6239SKiyoung Kim	    # A standard non-PIC object
5921*735d6239SKiyoung Kim	    func_append non_pic_objects " $non_pic_object"
5922*735d6239SKiyoung Kim	    if test -z "$pic_object" || test "$pic_object" = none ; then
5923*735d6239SKiyoung Kim	      arg="$non_pic_object"
5924*735d6239SKiyoung Kim	    fi
5925*735d6239SKiyoung Kim	  else
5926*735d6239SKiyoung Kim	    # If the PIC object exists, use it instead.
5927*735d6239SKiyoung Kim	    # $xdir was prepended to $pic_object above.
5928*735d6239SKiyoung Kim	    non_pic_object="$pic_object"
5929*735d6239SKiyoung Kim	    func_append non_pic_objects " $non_pic_object"
5930*735d6239SKiyoung Kim	  fi
5931*735d6239SKiyoung Kim	else
5932*735d6239SKiyoung Kim	  # Only an error if not doing a dry-run.
5933*735d6239SKiyoung Kim	  if $opt_dry_run; then
5934*735d6239SKiyoung Kim	    # Extract subdirectory from the argument.
5935*735d6239SKiyoung Kim	    func_dirname "$arg" "/" ""
5936*735d6239SKiyoung Kim	    xdir="$func_dirname_result"
5937*735d6239SKiyoung Kim
5938*735d6239SKiyoung Kim	    func_lo2o "$arg"
5939*735d6239SKiyoung Kim	    pic_object=$xdir$objdir/$func_lo2o_result
5940*735d6239SKiyoung Kim	    non_pic_object=$xdir$func_lo2o_result
5941*735d6239SKiyoung Kim	    func_append libobjs " $pic_object"
5942*735d6239SKiyoung Kim	    func_append non_pic_objects " $non_pic_object"
5943*735d6239SKiyoung Kim	  else
5944*735d6239SKiyoung Kim	    func_fatal_error "\`$arg' is not a valid libtool object"
5945*735d6239SKiyoung Kim	  fi
5946*735d6239SKiyoung Kim	fi
5947*735d6239SKiyoung Kim	;;
5948*735d6239SKiyoung Kim
5949*735d6239SKiyoung Kim      *.$libext)
5950*735d6239SKiyoung Kim	# An archive.
5951*735d6239SKiyoung Kim	func_append deplibs " $arg"
5952*735d6239SKiyoung Kim	func_append old_deplibs " $arg"
5953*735d6239SKiyoung Kim	continue
5954*735d6239SKiyoung Kim	;;
5955*735d6239SKiyoung Kim
5956*735d6239SKiyoung Kim      *.la)
5957*735d6239SKiyoung Kim	# A libtool-controlled library.
5958*735d6239SKiyoung Kim
5959*735d6239SKiyoung Kim	func_resolve_sysroot "$arg"
5960*735d6239SKiyoung Kim	if test "$prev" = dlfiles; then
5961*735d6239SKiyoung Kim	  # This library was specified with -dlopen.
5962*735d6239SKiyoung Kim	  func_append dlfiles " $func_resolve_sysroot_result"
5963*735d6239SKiyoung Kim	  prev=
5964*735d6239SKiyoung Kim	elif test "$prev" = dlprefiles; then
5965*735d6239SKiyoung Kim	  # The library was specified with -dlpreopen.
5966*735d6239SKiyoung Kim	  func_append dlprefiles " $func_resolve_sysroot_result"
5967*735d6239SKiyoung Kim	  prev=
5968*735d6239SKiyoung Kim	else
5969*735d6239SKiyoung Kim	  func_append deplibs " $func_resolve_sysroot_result"
5970*735d6239SKiyoung Kim	fi
5971*735d6239SKiyoung Kim	continue
5972*735d6239SKiyoung Kim	;;
5973*735d6239SKiyoung Kim
5974*735d6239SKiyoung Kim      # Some other compiler argument.
5975*735d6239SKiyoung Kim      *)
5976*735d6239SKiyoung Kim	# Unknown arguments in both finalize_command and compile_command need
5977*735d6239SKiyoung Kim	# to be aesthetically quoted because they are evaled later.
5978*735d6239SKiyoung Kim	func_quote_for_eval "$arg"
5979*735d6239SKiyoung Kim	arg="$func_quote_for_eval_result"
5980*735d6239SKiyoung Kim	;;
5981*735d6239SKiyoung Kim      esac # arg
5982*735d6239SKiyoung Kim
5983*735d6239SKiyoung Kim      # Now actually substitute the argument into the commands.
5984*735d6239SKiyoung Kim      if test -n "$arg"; then
5985*735d6239SKiyoung Kim	func_append compile_command " $arg"
5986*735d6239SKiyoung Kim	func_append finalize_command " $arg"
5987*735d6239SKiyoung Kim      fi
5988*735d6239SKiyoung Kim    done # argument parsing loop
5989*735d6239SKiyoung Kim
5990*735d6239SKiyoung Kim    if test "$module" = yes ; then
5991*735d6239SKiyoung Kim      # [Mandriva] dropping ld option "--no-undefined" which is wrong for plugins
5992*735d6239SKiyoung Kim      linker_flags=`$ECHO "X $linker_flags" | $Xsed -e 's/ --no-undefined//'`
5993*735d6239SKiyoung Kim      compiler_flags=`$ECHO "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'`
5994*735d6239SKiyoung Kim    fi
5995*735d6239SKiyoung Kim
5996*735d6239SKiyoung Kim    test -n "$prev" && \
5997*735d6239SKiyoung Kim      func_fatal_help "the \`$prevarg' option requires an argument"
5998*735d6239SKiyoung Kim
5999*735d6239SKiyoung Kim    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6000*735d6239SKiyoung Kim      eval arg=\"$export_dynamic_flag_spec\"
6001*735d6239SKiyoung Kim      func_append compile_command " $arg"
6002*735d6239SKiyoung Kim      func_append finalize_command " $arg"
6003*735d6239SKiyoung Kim    fi
6004*735d6239SKiyoung Kim
6005*735d6239SKiyoung Kim    oldlibs=
6006*735d6239SKiyoung Kim    # calculate the name of the file, without its directory
6007*735d6239SKiyoung Kim    func_basename "$output"
6008*735d6239SKiyoung Kim    outputname="$func_basename_result"
6009*735d6239SKiyoung Kim    libobjs_save="$libobjs"
6010*735d6239SKiyoung Kim
6011*735d6239SKiyoung Kim    if test -n "$shlibpath_var"; then
6012*735d6239SKiyoung Kim      # get the directories listed in $shlibpath_var
6013*735d6239SKiyoung Kim      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6014*735d6239SKiyoung Kim    else
6015*735d6239SKiyoung Kim      shlib_search_path=
6016*735d6239SKiyoung Kim    fi
6017*735d6239SKiyoung Kim    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6018*735d6239SKiyoung Kim    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6019*735d6239SKiyoung Kim
6020*735d6239SKiyoung Kim    func_dirname "$output" "/" ""
6021*735d6239SKiyoung Kim    output_objdir="$func_dirname_result$objdir"
6022*735d6239SKiyoung Kim    func_to_tool_file "$output_objdir/"
6023*735d6239SKiyoung Kim    tool_output_objdir=$func_to_tool_file_result
6024*735d6239SKiyoung Kim    # Create the object directory.
6025*735d6239SKiyoung Kim    func_mkdir_p "$output_objdir"
6026*735d6239SKiyoung Kim
6027*735d6239SKiyoung Kim    # Determine the type of output
6028*735d6239SKiyoung Kim    case $output in
6029*735d6239SKiyoung Kim    "")
6030*735d6239SKiyoung Kim      func_fatal_help "you must specify an output file"
6031*735d6239SKiyoung Kim      ;;
6032*735d6239SKiyoung Kim    *.$libext) linkmode=oldlib ;;
6033*735d6239SKiyoung Kim    *.lo | *.$objext) linkmode=obj ;;
6034*735d6239SKiyoung Kim    *.la) linkmode=lib ;;
6035*735d6239SKiyoung Kim    *) linkmode=prog ;; # Anything else should be a program.
6036*735d6239SKiyoung Kim    esac
6037*735d6239SKiyoung Kim
6038*735d6239SKiyoung Kim    specialdeplibs=
6039*735d6239SKiyoung Kim
6040*735d6239SKiyoung Kim    libs=
6041*735d6239SKiyoung Kim    # Find all interdependent deplibs by searching for libraries
6042*735d6239SKiyoung Kim    # that are linked more than once (e.g. -la -lb -la)
6043*735d6239SKiyoung Kim    for deplib in $deplibs; do
6044*735d6239SKiyoung Kim      if $opt_preserve_dup_deps ; then
6045*735d6239SKiyoung Kim	case "$libs " in
6046*735d6239SKiyoung Kim	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6047*735d6239SKiyoung Kim	esac
6048*735d6239SKiyoung Kim      fi
6049*735d6239SKiyoung Kim      func_append libs " $deplib"
6050*735d6239SKiyoung Kim    done
6051*735d6239SKiyoung Kim
6052*735d6239SKiyoung Kim    if test "$linkmode" = lib; then
6053*735d6239SKiyoung Kim      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6054*735d6239SKiyoung Kim
6055*735d6239SKiyoung Kim      # Compute libraries that are listed more than once in $predeps
6056*735d6239SKiyoung Kim      # $postdeps and mark them as special (i.e., whose duplicates are
6057*735d6239SKiyoung Kim      # not to be eliminated).
6058*735d6239SKiyoung Kim      pre_post_deps=
6059*735d6239SKiyoung Kim      if $opt_duplicate_compiler_generated_deps; then
6060*735d6239SKiyoung Kim	for pre_post_dep in $predeps $postdeps; do
6061*735d6239SKiyoung Kim	  case "$pre_post_deps " in
6062*735d6239SKiyoung Kim	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6063*735d6239SKiyoung Kim	  esac
6064*735d6239SKiyoung Kim	  func_append pre_post_deps " $pre_post_dep"
6065*735d6239SKiyoung Kim	done
6066*735d6239SKiyoung Kim      fi
6067*735d6239SKiyoung Kim      pre_post_deps=
6068*735d6239SKiyoung Kim    fi
6069*735d6239SKiyoung Kim
6070*735d6239SKiyoung Kim    deplibs=
6071*735d6239SKiyoung Kim    newdependency_libs=
6072*735d6239SKiyoung Kim    newlib_search_path=
6073*735d6239SKiyoung Kim    need_relink=no # whether we're linking any uninstalled libtool libraries
6074*735d6239SKiyoung Kim    notinst_deplibs= # not-installed libtool libraries
6075*735d6239SKiyoung Kim    notinst_path= # paths that contain not-installed libtool libraries
6076*735d6239SKiyoung Kim
6077*735d6239SKiyoung Kim    case $linkmode in
6078*735d6239SKiyoung Kim    lib)
6079*735d6239SKiyoung Kim	passes="conv dlpreopen link"
6080*735d6239SKiyoung Kim	for file in $dlfiles $dlprefiles; do
6081*735d6239SKiyoung Kim	  case $file in
6082*735d6239SKiyoung Kim	  *.la) ;;
6083*735d6239SKiyoung Kim	  *)
6084*735d6239SKiyoung Kim	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6085*735d6239SKiyoung Kim	    ;;
6086*735d6239SKiyoung Kim	  esac
6087*735d6239SKiyoung Kim	done
6088*735d6239SKiyoung Kim	;;
6089*735d6239SKiyoung Kim    prog)
6090*735d6239SKiyoung Kim	compile_deplibs=
6091*735d6239SKiyoung Kim	finalize_deplibs=
6092*735d6239SKiyoung Kim	alldeplibs=no
6093*735d6239SKiyoung Kim	newdlfiles=
6094*735d6239SKiyoung Kim	newdlprefiles=
6095*735d6239SKiyoung Kim	passes="conv scan dlopen dlpreopen link"
6096*735d6239SKiyoung Kim	;;
6097*735d6239SKiyoung Kim    *)  passes="conv"
6098*735d6239SKiyoung Kim	;;
6099*735d6239SKiyoung Kim    esac
6100*735d6239SKiyoung Kim
6101*735d6239SKiyoung Kim    for pass in $passes; do
6102*735d6239SKiyoung Kim      # The preopen pass in lib mode reverses $deplibs; put it back here
6103*735d6239SKiyoung Kim      # so that -L comes before libs that need it for instance...
6104*735d6239SKiyoung Kim      if test "$linkmode,$pass" = "lib,link"; then
6105*735d6239SKiyoung Kim	## FIXME: Find the place where the list is rebuilt in the wrong
6106*735d6239SKiyoung Kim	##        order, and fix it there properly
6107*735d6239SKiyoung Kim        tmp_deplibs=
6108*735d6239SKiyoung Kim	for deplib in $deplibs; do
6109*735d6239SKiyoung Kim	  tmp_deplibs="$deplib $tmp_deplibs"
6110*735d6239SKiyoung Kim	done
6111*735d6239SKiyoung Kim	deplibs="$tmp_deplibs"
6112*735d6239SKiyoung Kim      fi
6113*735d6239SKiyoung Kim
6114*735d6239SKiyoung Kim      if test "$linkmode,$pass" = "lib,link" ||
6115*735d6239SKiyoung Kim	 test "$linkmode,$pass" = "prog,scan"; then
6116*735d6239SKiyoung Kim	libs="$deplibs"
6117*735d6239SKiyoung Kim	deplibs=
6118*735d6239SKiyoung Kim      fi
6119*735d6239SKiyoung Kim      if test "$linkmode" = prog; then
6120*735d6239SKiyoung Kim	case $pass in
6121*735d6239SKiyoung Kim	dlopen) libs="$dlfiles" ;;
6122*735d6239SKiyoung Kim	dlpreopen) libs="$dlprefiles" ;;
6123*735d6239SKiyoung Kim	link)
6124*735d6239SKiyoung Kim	  libs="$deplibs %DEPLIBS%"
6125*735d6239SKiyoung Kim	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
6126*735d6239SKiyoung Kim	  ;;
6127*735d6239SKiyoung Kim	esac
6128*735d6239SKiyoung Kim      fi
6129*735d6239SKiyoung Kim      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6130*735d6239SKiyoung Kim	# Collect and forward deplibs of preopened libtool libs
6131*735d6239SKiyoung Kim	for lib in $dlprefiles; do
6132*735d6239SKiyoung Kim	  # Ignore non-libtool-libs
6133*735d6239SKiyoung Kim	  dependency_libs=
6134*735d6239SKiyoung Kim	  func_resolve_sysroot "$lib"
6135*735d6239SKiyoung Kim	  case $lib in
6136*735d6239SKiyoung Kim	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6137*735d6239SKiyoung Kim	  esac
6138*735d6239SKiyoung Kim
6139*735d6239SKiyoung Kim	  # Collect preopened libtool deplibs, except any this library
6140*735d6239SKiyoung Kim	  # has declared as weak libs
6141*735d6239SKiyoung Kim	  for deplib in $dependency_libs; do
6142*735d6239SKiyoung Kim	    func_basename "$deplib"
6143*735d6239SKiyoung Kim            deplib_base=$func_basename_result
6144*735d6239SKiyoung Kim	    case " $weak_libs " in
6145*735d6239SKiyoung Kim	    *" $deplib_base "*) ;;
6146*735d6239SKiyoung Kim	    *) func_append deplibs " $deplib" ;;
6147*735d6239SKiyoung Kim	    esac
6148*735d6239SKiyoung Kim	  done
6149*735d6239SKiyoung Kim	done
6150*735d6239SKiyoung Kim	libs="$dlprefiles"
6151*735d6239SKiyoung Kim      fi
6152*735d6239SKiyoung Kim      if test "$pass" = dlopen; then
6153*735d6239SKiyoung Kim	# Collect dlpreopened libraries
6154*735d6239SKiyoung Kim	save_deplibs="$deplibs"
6155*735d6239SKiyoung Kim	deplibs=
6156*735d6239SKiyoung Kim      fi
6157*735d6239SKiyoung Kim
6158*735d6239SKiyoung Kim      for deplib in $libs; do
6159*735d6239SKiyoung Kim	lib=
6160*735d6239SKiyoung Kim	found=no
6161*735d6239SKiyoung Kim	case $deplib in
6162*735d6239SKiyoung Kim	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
6163*735d6239SKiyoung Kim	  if test "$linkmode,$pass" = "prog,link"; then
6164*735d6239SKiyoung Kim	    compile_deplibs="$deplib $compile_deplibs"
6165*735d6239SKiyoung Kim	    finalize_deplibs="$deplib $finalize_deplibs"
6166*735d6239SKiyoung Kim	  else
6167*735d6239SKiyoung Kim	    func_append compiler_flags " $deplib"
6168*735d6239SKiyoung Kim	    if test "$linkmode" = lib ; then
6169*735d6239SKiyoung Kim		case "$new_inherited_linker_flags " in
6170*735d6239SKiyoung Kim		    *" $deplib "*) ;;
6171*735d6239SKiyoung Kim		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6172*735d6239SKiyoung Kim		esac
6173*735d6239SKiyoung Kim	    fi
6174*735d6239SKiyoung Kim	  fi
6175*735d6239SKiyoung Kim	  continue
6176*735d6239SKiyoung Kim	  ;;
6177*735d6239SKiyoung Kim	-l*)
6178*735d6239SKiyoung Kim	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6179*735d6239SKiyoung Kim	    func_warning "\`-l' is ignored for archives/objects"
6180*735d6239SKiyoung Kim	    continue
6181*735d6239SKiyoung Kim	  fi
6182*735d6239SKiyoung Kim	  func_stripname '-l' '' "$deplib"
6183*735d6239SKiyoung Kim	  name=$func_stripname_result
6184*735d6239SKiyoung Kim	  if test "$linkmode" = lib; then
6185*735d6239SKiyoung Kim	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6186*735d6239SKiyoung Kim	  else
6187*735d6239SKiyoung Kim	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6188*735d6239SKiyoung Kim	  fi
6189*735d6239SKiyoung Kim	  for searchdir in $searchdirs; do
6190*735d6239SKiyoung Kim	    for search_ext in .la $std_shrext .so .a; do
6191*735d6239SKiyoung Kim	      # Search the libtool library
6192*735d6239SKiyoung Kim	      lib="$searchdir/lib${name}${search_ext}"
6193*735d6239SKiyoung Kim	      if test -f "$lib"; then
6194*735d6239SKiyoung Kim		if test "$search_ext" = ".la"; then
6195*735d6239SKiyoung Kim		  found=yes
6196*735d6239SKiyoung Kim		else
6197*735d6239SKiyoung Kim		  found=no
6198*735d6239SKiyoung Kim		fi
6199*735d6239SKiyoung Kim		break 2
6200*735d6239SKiyoung Kim	      fi
6201*735d6239SKiyoung Kim	    done
6202*735d6239SKiyoung Kim	  done
6203*735d6239SKiyoung Kim	  if test "$found" != yes; then
6204*735d6239SKiyoung Kim	    # deplib doesn't seem to be a libtool library
6205*735d6239SKiyoung Kim	    if test "$linkmode,$pass" = "prog,link"; then
6206*735d6239SKiyoung Kim	      compile_deplibs="$deplib $compile_deplibs"
6207*735d6239SKiyoung Kim	      finalize_deplibs="$deplib $finalize_deplibs"
6208*735d6239SKiyoung Kim	    else
6209*735d6239SKiyoung Kim	      deplibs="$deplib $deplibs"
6210*735d6239SKiyoung Kim	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6211*735d6239SKiyoung Kim	    fi
6212*735d6239SKiyoung Kim	    continue
6213*735d6239SKiyoung Kim	  else # deplib is a libtool library
6214*735d6239SKiyoung Kim	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6215*735d6239SKiyoung Kim	    # We need to do some special things here, and not later.
6216*735d6239SKiyoung Kim	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6217*735d6239SKiyoung Kim	      case " $predeps $postdeps " in
6218*735d6239SKiyoung Kim	      *" $deplib "*)
6219*735d6239SKiyoung Kim		if func_lalib_p "$lib"; then
6220*735d6239SKiyoung Kim		  library_names=
6221*735d6239SKiyoung Kim		  old_library=
6222*735d6239SKiyoung Kim		  func_source "$lib"
6223*735d6239SKiyoung Kim		  for l in $old_library $library_names; do
6224*735d6239SKiyoung Kim		    ll="$l"
6225*735d6239SKiyoung Kim		  done
6226*735d6239SKiyoung Kim		  if test "X$ll" = "X$old_library" ; then # only static version available
6227*735d6239SKiyoung Kim		    found=no
6228*735d6239SKiyoung Kim		    func_dirname "$lib" "" "."
6229*735d6239SKiyoung Kim		    ladir="$func_dirname_result"
6230*735d6239SKiyoung Kim		    lib=$ladir/$old_library
6231*735d6239SKiyoung Kim		    if test "$linkmode,$pass" = "prog,link"; then
6232*735d6239SKiyoung Kim		      compile_deplibs="$deplib $compile_deplibs"
6233*735d6239SKiyoung Kim		      finalize_deplibs="$deplib $finalize_deplibs"
6234*735d6239SKiyoung Kim		    else
6235*735d6239SKiyoung Kim		      deplibs="$deplib $deplibs"
6236*735d6239SKiyoung Kim		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6237*735d6239SKiyoung Kim		    fi
6238*735d6239SKiyoung Kim		    continue
6239*735d6239SKiyoung Kim		  fi
6240*735d6239SKiyoung Kim		fi
6241*735d6239SKiyoung Kim		;;
6242*735d6239SKiyoung Kim	      *) ;;
6243*735d6239SKiyoung Kim	      esac
6244*735d6239SKiyoung Kim	    fi
6245*735d6239SKiyoung Kim	  fi
6246*735d6239SKiyoung Kim	  ;; # -l
6247*735d6239SKiyoung Kim	*.ltframework)
6248*735d6239SKiyoung Kim	  if test "$linkmode,$pass" = "prog,link"; then
6249*735d6239SKiyoung Kim	    compile_deplibs="$deplib $compile_deplibs"
6250*735d6239SKiyoung Kim	    finalize_deplibs="$deplib $finalize_deplibs"
6251*735d6239SKiyoung Kim	  else
6252*735d6239SKiyoung Kim	    deplibs="$deplib $deplibs"
6253*735d6239SKiyoung Kim	    if test "$linkmode" = lib ; then
6254*735d6239SKiyoung Kim		case "$new_inherited_linker_flags " in
6255*735d6239SKiyoung Kim		    *" $deplib "*) ;;
6256*735d6239SKiyoung Kim		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6257*735d6239SKiyoung Kim		esac
6258*735d6239SKiyoung Kim	    fi
6259*735d6239SKiyoung Kim	  fi
6260*735d6239SKiyoung Kim	  continue
6261*735d6239SKiyoung Kim	  ;;
6262*735d6239SKiyoung Kim	-L*)
6263*735d6239SKiyoung Kim	  case $linkmode in
6264*735d6239SKiyoung Kim	  lib)
6265*735d6239SKiyoung Kim	    deplibs="$deplib $deplibs"
6266*735d6239SKiyoung Kim	    test "$pass" = conv && continue
6267*735d6239SKiyoung Kim	    newdependency_libs="$deplib $newdependency_libs"
6268*735d6239SKiyoung Kim	    func_stripname '-L' '' "$deplib"
6269*735d6239SKiyoung Kim	    func_resolve_sysroot "$func_stripname_result"
6270*735d6239SKiyoung Kim	    func_append newlib_search_path " $func_resolve_sysroot_result"
6271*735d6239SKiyoung Kim	    ;;
6272*735d6239SKiyoung Kim	  prog)
6273*735d6239SKiyoung Kim	    if test "$pass" = conv; then
6274*735d6239SKiyoung Kim	      deplibs="$deplib $deplibs"
6275*735d6239SKiyoung Kim	      continue
6276*735d6239SKiyoung Kim	    fi
6277*735d6239SKiyoung Kim	    if test "$pass" = scan; then
6278*735d6239SKiyoung Kim	      deplibs="$deplib $deplibs"
6279*735d6239SKiyoung Kim	    else
6280*735d6239SKiyoung Kim	      compile_deplibs="$deplib $compile_deplibs"
6281*735d6239SKiyoung Kim	      finalize_deplibs="$deplib $finalize_deplibs"
6282*735d6239SKiyoung Kim	    fi
6283*735d6239SKiyoung Kim	    func_stripname '-L' '' "$deplib"
6284*735d6239SKiyoung Kim	    func_resolve_sysroot "$func_stripname_result"
6285*735d6239SKiyoung Kim	    func_append newlib_search_path " $func_resolve_sysroot_result"
6286*735d6239SKiyoung Kim	    ;;
6287*735d6239SKiyoung Kim	  *)
6288*735d6239SKiyoung Kim	    func_warning "\`-L' is ignored for archives/objects"
6289*735d6239SKiyoung Kim	    ;;
6290*735d6239SKiyoung Kim	  esac # linkmode
6291*735d6239SKiyoung Kim	  continue
6292*735d6239SKiyoung Kim	  ;; # -L
6293*735d6239SKiyoung Kim	-R*)
6294*735d6239SKiyoung Kim	  if test "$pass" = link; then
6295*735d6239SKiyoung Kim	    func_stripname '-R' '' "$deplib"
6296*735d6239SKiyoung Kim	    func_resolve_sysroot "$func_stripname_result"
6297*735d6239SKiyoung Kim	    dir=$func_resolve_sysroot_result
6298*735d6239SKiyoung Kim	    # Make sure the xrpath contains only unique directories.
6299*735d6239SKiyoung Kim	    case "$xrpath " in
6300*735d6239SKiyoung Kim	    *" $dir "*) ;;
6301*735d6239SKiyoung Kim	    *) func_append xrpath " $dir" ;;
6302*735d6239SKiyoung Kim	    esac
6303*735d6239SKiyoung Kim	  fi
6304*735d6239SKiyoung Kim	  deplibs="$deplib $deplibs"
6305*735d6239SKiyoung Kim	  continue
6306*735d6239SKiyoung Kim	  ;;
6307*735d6239SKiyoung Kim	*.la)
6308*735d6239SKiyoung Kim	  func_resolve_sysroot "$deplib"
6309*735d6239SKiyoung Kim	  lib=$func_resolve_sysroot_result
6310*735d6239SKiyoung Kim	  ;;
6311*735d6239SKiyoung Kim	*.$libext)
6312*735d6239SKiyoung Kim	  if test "$pass" = conv; then
6313*735d6239SKiyoung Kim	    deplibs="$deplib $deplibs"
6314*735d6239SKiyoung Kim	    continue
6315*735d6239SKiyoung Kim	  fi
6316*735d6239SKiyoung Kim	  case $linkmode in
6317*735d6239SKiyoung Kim	  lib)
6318*735d6239SKiyoung Kim	    # Linking convenience modules into shared libraries is allowed,
6319*735d6239SKiyoung Kim	    # but linking other static libraries is non-portable.
6320*735d6239SKiyoung Kim	    case " $dlpreconveniencelibs " in
6321*735d6239SKiyoung Kim	    *" $deplib "*) ;;
6322*735d6239SKiyoung Kim	    *)
6323*735d6239SKiyoung Kim	      valid_a_lib=no
6324*735d6239SKiyoung Kim	      case $deplibs_check_method in
6325*735d6239SKiyoung Kim		match_pattern*)
6326*735d6239SKiyoung Kim		  set dummy $deplibs_check_method; shift
6327*735d6239SKiyoung Kim		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6328*735d6239SKiyoung Kim		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6329*735d6239SKiyoung Kim		    | $EGREP "$match_pattern_regex" > /dev/null; then
6330*735d6239SKiyoung Kim		    valid_a_lib=yes
6331*735d6239SKiyoung Kim		  fi
6332*735d6239SKiyoung Kim		;;
6333*735d6239SKiyoung Kim		pass_all)
6334*735d6239SKiyoung Kim		  valid_a_lib=yes
6335*735d6239SKiyoung Kim		;;
6336*735d6239SKiyoung Kim	      esac
6337*735d6239SKiyoung Kim	      if test "$valid_a_lib" != yes; then
6338*735d6239SKiyoung Kim		echo
6339*735d6239SKiyoung Kim		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6340*735d6239SKiyoung Kim		echo "*** I have the capability to make that library automatically link in when"
6341*735d6239SKiyoung Kim		echo "*** you link to this library.  But I can only do this if you have a"
6342*735d6239SKiyoung Kim		echo "*** shared version of the library, which you do not appear to have"
6343*735d6239SKiyoung Kim		echo "*** because the file extensions .$libext of this argument makes me believe"
6344*735d6239SKiyoung Kim		echo "*** that it is just a static archive that I should not use here."
6345*735d6239SKiyoung Kim	      else
6346*735d6239SKiyoung Kim		echo
6347*735d6239SKiyoung Kim		$ECHO "*** Warning: Linking the shared library $output against the"
6348*735d6239SKiyoung Kim		$ECHO "*** static library $deplib is not portable!"
6349*735d6239SKiyoung Kim		deplibs="$deplib $deplibs"
6350*735d6239SKiyoung Kim	      fi
6351*735d6239SKiyoung Kim	      ;;
6352*735d6239SKiyoung Kim	    esac
6353*735d6239SKiyoung Kim	    continue
6354*735d6239SKiyoung Kim	    ;;
6355*735d6239SKiyoung Kim	  prog)
6356*735d6239SKiyoung Kim	    if test "$pass" != link; then
6357*735d6239SKiyoung Kim	      deplibs="$deplib $deplibs"
6358*735d6239SKiyoung Kim	    else
6359*735d6239SKiyoung Kim	      compile_deplibs="$deplib $compile_deplibs"
6360*735d6239SKiyoung Kim	      finalize_deplibs="$deplib $finalize_deplibs"
6361*735d6239SKiyoung Kim	    fi
6362*735d6239SKiyoung Kim	    continue
6363*735d6239SKiyoung Kim	    ;;
6364*735d6239SKiyoung Kim	  esac # linkmode
6365*735d6239SKiyoung Kim	  ;; # *.$libext
6366*735d6239SKiyoung Kim	*.lo | *.$objext)
6367*735d6239SKiyoung Kim	  if test "$pass" = conv; then
6368*735d6239SKiyoung Kim	    deplibs="$deplib $deplibs"
6369*735d6239SKiyoung Kim	  elif test "$linkmode" = prog; then
6370*735d6239SKiyoung Kim	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6371*735d6239SKiyoung Kim	      # If there is no dlopen support or we're linking statically,
6372*735d6239SKiyoung Kim	      # we need to preload.
6373*735d6239SKiyoung Kim	      func_append newdlprefiles " $deplib"
6374*735d6239SKiyoung Kim	      compile_deplibs="$deplib $compile_deplibs"
6375*735d6239SKiyoung Kim	      finalize_deplibs="$deplib $finalize_deplibs"
6376*735d6239SKiyoung Kim	    else
6377*735d6239SKiyoung Kim	      func_append newdlfiles " $deplib"
6378*735d6239SKiyoung Kim	    fi
6379*735d6239SKiyoung Kim	  fi
6380*735d6239SKiyoung Kim	  continue
6381*735d6239SKiyoung Kim	  ;;
6382*735d6239SKiyoung Kim	%DEPLIBS%)
6383*735d6239SKiyoung Kim	  alldeplibs=yes
6384*735d6239SKiyoung Kim	  continue
6385*735d6239SKiyoung Kim	  ;;
6386*735d6239SKiyoung Kim	esac # case $deplib
6387*735d6239SKiyoung Kim
6388*735d6239SKiyoung Kim	if test "$found" = yes || test -f "$lib"; then :
6389*735d6239SKiyoung Kim	else
6390*735d6239SKiyoung Kim	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6391*735d6239SKiyoung Kim	fi
6392*735d6239SKiyoung Kim
6393*735d6239SKiyoung Kim	# Check to see that this really is a libtool archive.
6394*735d6239SKiyoung Kim	func_lalib_unsafe_p "$lib" \
6395*735d6239SKiyoung Kim	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6396*735d6239SKiyoung Kim
6397*735d6239SKiyoung Kim	func_dirname "$lib" "" "."
6398*735d6239SKiyoung Kim	ladir="$func_dirname_result"
6399*735d6239SKiyoung Kim
6400*735d6239SKiyoung Kim	dlname=
6401*735d6239SKiyoung Kim	dlopen=
6402*735d6239SKiyoung Kim	dlpreopen=
6403*735d6239SKiyoung Kim	libdir=
6404*735d6239SKiyoung Kim	library_names=
6405*735d6239SKiyoung Kim	old_library=
6406*735d6239SKiyoung Kim	inherited_linker_flags=
6407*735d6239SKiyoung Kim	# If the library was installed with an old release of libtool,
6408*735d6239SKiyoung Kim	# it will not redefine variables installed, or shouldnotlink
6409*735d6239SKiyoung Kim	installed=yes
6410*735d6239SKiyoung Kim	shouldnotlink=no
6411*735d6239SKiyoung Kim	avoidtemprpath=
6412*735d6239SKiyoung Kim
6413*735d6239SKiyoung Kim
6414*735d6239SKiyoung Kim	# Read the .la file
6415*735d6239SKiyoung Kim	func_source "$lib"
6416*735d6239SKiyoung Kim
6417*735d6239SKiyoung Kim	# Convert "-framework foo" to "foo.ltframework"
6418*735d6239SKiyoung Kim	if test -n "$inherited_linker_flags"; then
6419*735d6239SKiyoung Kim	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6420*735d6239SKiyoung Kim	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6421*735d6239SKiyoung Kim	    case " $new_inherited_linker_flags " in
6422*735d6239SKiyoung Kim	      *" $tmp_inherited_linker_flag "*) ;;
6423*735d6239SKiyoung Kim	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6424*735d6239SKiyoung Kim	    esac
6425*735d6239SKiyoung Kim	  done
6426*735d6239SKiyoung Kim	fi
6427*735d6239SKiyoung Kim	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6428*735d6239SKiyoung Kim	if test "$linkmode,$pass" = "lib,link" ||
6429*735d6239SKiyoung Kim	   test "$linkmode,$pass" = "prog,scan" ||
6430*735d6239SKiyoung Kim	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6431*735d6239SKiyoung Kim	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6432*735d6239SKiyoung Kim	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6433*735d6239SKiyoung Kim	fi
6434*735d6239SKiyoung Kim
6435*735d6239SKiyoung Kim	if test "$pass" = conv; then
6436*735d6239SKiyoung Kim	  # Only check for convenience libraries
6437*735d6239SKiyoung Kim	  deplibs="$lib $deplibs"
6438*735d6239SKiyoung Kim	  if test -z "$libdir"; then
6439*735d6239SKiyoung Kim	    if test -z "$old_library"; then
6440*735d6239SKiyoung Kim	      func_fatal_error "cannot find name of link library for \`$lib'"
6441*735d6239SKiyoung Kim	    fi
6442*735d6239SKiyoung Kim	    # It is a libtool convenience library, so add in its objects.
6443*735d6239SKiyoung Kim	    func_append convenience " $ladir/$objdir/$old_library"
6444*735d6239SKiyoung Kim	    func_append old_convenience " $ladir/$objdir/$old_library"
6445*735d6239SKiyoung Kim	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6446*735d6239SKiyoung Kim	    func_fatal_error "\`$lib' is not a convenience library"
6447*735d6239SKiyoung Kim	  fi
6448*735d6239SKiyoung Kim	  tmp_libs=
6449*735d6239SKiyoung Kim	  for deplib in $dependency_libs; do
6450*735d6239SKiyoung Kim	    deplibs="$deplib $deplibs"
6451*735d6239SKiyoung Kim	    if $opt_preserve_dup_deps ; then
6452*735d6239SKiyoung Kim	      case "$tmp_libs " in
6453*735d6239SKiyoung Kim	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6454*735d6239SKiyoung Kim	      esac
6455*735d6239SKiyoung Kim	    fi
6456*735d6239SKiyoung Kim	    func_append tmp_libs " $deplib"
6457*735d6239SKiyoung Kim	  done
6458*735d6239SKiyoung Kim	  continue
6459*735d6239SKiyoung Kim	fi # $pass = conv
6460*735d6239SKiyoung Kim
6461*735d6239SKiyoung Kim
6462*735d6239SKiyoung Kim	# Get the name of the library we link against.
6463*735d6239SKiyoung Kim	linklib=
6464*735d6239SKiyoung Kim	if test -n "$old_library" &&
6465*735d6239SKiyoung Kim	   { test "$prefer_static_libs" = yes ||
6466*735d6239SKiyoung Kim	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6467*735d6239SKiyoung Kim	  linklib=$old_library
6468*735d6239SKiyoung Kim	else
6469*735d6239SKiyoung Kim	  for l in $old_library $library_names; do
6470*735d6239SKiyoung Kim	    linklib="$l"
6471*735d6239SKiyoung Kim	  done
6472*735d6239SKiyoung Kim	fi
6473*735d6239SKiyoung Kim	if test -z "$linklib"; then
6474*735d6239SKiyoung Kim	  func_fatal_error "cannot find name of link library for \`$lib'"
6475*735d6239SKiyoung Kim	fi
6476*735d6239SKiyoung Kim
6477*735d6239SKiyoung Kim	# This library was specified with -dlopen.
6478*735d6239SKiyoung Kim	if test "$pass" = dlopen; then
6479*735d6239SKiyoung Kim	  if test -z "$libdir"; then
6480*735d6239SKiyoung Kim	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6481*735d6239SKiyoung Kim	  fi
6482*735d6239SKiyoung Kim	  if test -z "$dlname" ||
6483*735d6239SKiyoung Kim	     test "$dlopen_support" != yes ||
6484*735d6239SKiyoung Kim	     test "$build_libtool_libs" = no; then
6485*735d6239SKiyoung Kim	    # If there is no dlname, no dlopen support or we're linking
6486*735d6239SKiyoung Kim	    # statically, we need to preload.  We also need to preload any
6487*735d6239SKiyoung Kim	    # dependent libraries so libltdl's deplib preloader doesn't
6488*735d6239SKiyoung Kim	    # bomb out in the load deplibs phase.
6489*735d6239SKiyoung Kim	    func_append dlprefiles " $lib $dependency_libs"
6490*735d6239SKiyoung Kim	  else
6491*735d6239SKiyoung Kim	    func_append newdlfiles " $lib"
6492*735d6239SKiyoung Kim	  fi
6493*735d6239SKiyoung Kim	  continue
6494*735d6239SKiyoung Kim	fi # $pass = dlopen
6495*735d6239SKiyoung Kim
6496*735d6239SKiyoung Kim	# We need an absolute path.
6497*735d6239SKiyoung Kim	case $ladir in
6498*735d6239SKiyoung Kim	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6499*735d6239SKiyoung Kim	*)
6500*735d6239SKiyoung Kim	  abs_ladir=`cd "$ladir" && pwd`
6501*735d6239SKiyoung Kim	  if test -z "$abs_ladir"; then
6502*735d6239SKiyoung Kim	    func_warning "cannot determine absolute directory name of \`$ladir'"
6503*735d6239SKiyoung Kim	    func_warning "passing it literally to the linker, although it might fail"
6504*735d6239SKiyoung Kim	    abs_ladir="$ladir"
6505*735d6239SKiyoung Kim	  fi
6506*735d6239SKiyoung Kim	  ;;
6507*735d6239SKiyoung Kim	esac
6508*735d6239SKiyoung Kim	func_basename "$lib"
6509*735d6239SKiyoung Kim	laname="$func_basename_result"
6510*735d6239SKiyoung Kim
6511*735d6239SKiyoung Kim	# Find the relevant object directory and library name.
6512*735d6239SKiyoung Kim	if test "X$installed" = Xyes; then
6513*735d6239SKiyoung Kim	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6514*735d6239SKiyoung Kim	    func_warning "library \`$lib' was moved."
6515*735d6239SKiyoung Kim	    dir="$ladir"
6516*735d6239SKiyoung Kim	    absdir="$abs_ladir"
6517*735d6239SKiyoung Kim	    libdir="$abs_ladir"
6518*735d6239SKiyoung Kim	  else
6519*735d6239SKiyoung Kim	    dir="$lt_sysroot$libdir"
6520*735d6239SKiyoung Kim	    absdir="$lt_sysroot$libdir"
6521*735d6239SKiyoung Kim	  fi
6522*735d6239SKiyoung Kim	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6523*735d6239SKiyoung Kim	else
6524*735d6239SKiyoung Kim	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6525*735d6239SKiyoung Kim	    dir="$ladir"
6526*735d6239SKiyoung Kim	    absdir="$abs_ladir"
6527*735d6239SKiyoung Kim	    # Remove this search path later
6528*735d6239SKiyoung Kim	    func_append notinst_path " $abs_ladir"
6529*735d6239SKiyoung Kim	  else
6530*735d6239SKiyoung Kim	    dir="$ladir/$objdir"
6531*735d6239SKiyoung Kim	    absdir="$abs_ladir/$objdir"
6532*735d6239SKiyoung Kim	    # Remove this search path later
6533*735d6239SKiyoung Kim	    func_append notinst_path " $abs_ladir"
6534*735d6239SKiyoung Kim	  fi
6535*735d6239SKiyoung Kim	fi # $installed = yes
6536*735d6239SKiyoung Kim	func_stripname 'lib' '.la' "$laname"
6537*735d6239SKiyoung Kim	name=$func_stripname_result
6538*735d6239SKiyoung Kim
6539*735d6239SKiyoung Kim	# This library was specified with -dlpreopen.
6540*735d6239SKiyoung Kim	if test "$pass" = dlpreopen; then
6541*735d6239SKiyoung Kim	  if test -z "$libdir" && test "$linkmode" = prog; then
6542*735d6239SKiyoung Kim	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6543*735d6239SKiyoung Kim	  fi
6544*735d6239SKiyoung Kim	  case "$host" in
6545*735d6239SKiyoung Kim	    # special handling for platforms with PE-DLLs.
6546*735d6239SKiyoung Kim	    *cygwin* | *mingw* | *cegcc* )
6547*735d6239SKiyoung Kim	      # Linker will automatically link against shared library if both
6548*735d6239SKiyoung Kim	      # static and shared are present.  Therefore, ensure we extract
6549*735d6239SKiyoung Kim	      # symbols from the import library if a shared library is present
6550*735d6239SKiyoung Kim	      # (otherwise, the dlopen module name will be incorrect).  We do
6551*735d6239SKiyoung Kim	      # this by putting the import library name into $newdlprefiles.
6552*735d6239SKiyoung Kim	      # We recover the dlopen module name by 'saving' the la file
6553*735d6239SKiyoung Kim	      # name in a special purpose variable, and (later) extracting the
6554*735d6239SKiyoung Kim	      # dlname from the la file.
6555*735d6239SKiyoung Kim	      if test -n "$dlname"; then
6556*735d6239SKiyoung Kim	        func_tr_sh "$dir/$linklib"
6557*735d6239SKiyoung Kim	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6558*735d6239SKiyoung Kim	        func_append newdlprefiles " $dir/$linklib"
6559*735d6239SKiyoung Kim	      else
6560*735d6239SKiyoung Kim	        func_append newdlprefiles " $dir/$old_library"
6561*735d6239SKiyoung Kim	        # Keep a list of preopened convenience libraries to check
6562*735d6239SKiyoung Kim	        # that they are being used correctly in the link pass.
6563*735d6239SKiyoung Kim	        test -z "$libdir" && \
6564*735d6239SKiyoung Kim	          func_append dlpreconveniencelibs " $dir/$old_library"
6565*735d6239SKiyoung Kim	      fi
6566*735d6239SKiyoung Kim	    ;;
6567*735d6239SKiyoung Kim	    * )
6568*735d6239SKiyoung Kim	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6569*735d6239SKiyoung Kim	      # are required to link).
6570*735d6239SKiyoung Kim	      if test -n "$old_library"; then
6571*735d6239SKiyoung Kim	        func_append newdlprefiles " $dir/$old_library"
6572*735d6239SKiyoung Kim	        # Keep a list of preopened convenience libraries to check
6573*735d6239SKiyoung Kim	        # that they are being used correctly in the link pass.
6574*735d6239SKiyoung Kim	        test -z "$libdir" && \
6575*735d6239SKiyoung Kim	          func_append dlpreconveniencelibs " $dir/$old_library"
6576*735d6239SKiyoung Kim	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6577*735d6239SKiyoung Kim	      elif test -n "$dlname"; then
6578*735d6239SKiyoung Kim	        func_append newdlprefiles " $dir/$dlname"
6579*735d6239SKiyoung Kim	      else
6580*735d6239SKiyoung Kim	        func_append newdlprefiles " $dir/$linklib"
6581*735d6239SKiyoung Kim	      fi
6582*735d6239SKiyoung Kim	    ;;
6583*735d6239SKiyoung Kim	  esac
6584*735d6239SKiyoung Kim	fi # $pass = dlpreopen
6585*735d6239SKiyoung Kim
6586*735d6239SKiyoung Kim	if test -z "$libdir"; then
6587*735d6239SKiyoung Kim	  # Link the convenience library
6588*735d6239SKiyoung Kim	  if test "$linkmode" = lib; then
6589*735d6239SKiyoung Kim	    deplibs="$dir/$old_library $deplibs"
6590*735d6239SKiyoung Kim	  elif test "$linkmode,$pass" = "prog,link"; then
6591*735d6239SKiyoung Kim	    compile_deplibs="$dir/$old_library $compile_deplibs"
6592*735d6239SKiyoung Kim	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6593*735d6239SKiyoung Kim	  else
6594*735d6239SKiyoung Kim	    deplibs="$lib $deplibs" # used for prog,scan pass
6595*735d6239SKiyoung Kim	  fi
6596*735d6239SKiyoung Kim	  continue
6597*735d6239SKiyoung Kim	fi
6598*735d6239SKiyoung Kim
6599*735d6239SKiyoung Kim
6600*735d6239SKiyoung Kim	if test "$linkmode" = prog && test "$pass" != link; then
6601*735d6239SKiyoung Kim	  func_append newlib_search_path " $ladir"
6602*735d6239SKiyoung Kim	  deplibs="$lib $deplibs"
6603*735d6239SKiyoung Kim
6604*735d6239SKiyoung Kim	  linkalldeplibs=no
6605*735d6239SKiyoung Kim	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6606*735d6239SKiyoung Kim	     test "$build_libtool_libs" = no; then
6607*735d6239SKiyoung Kim	    linkalldeplibs=yes
6608*735d6239SKiyoung Kim	  fi
6609*735d6239SKiyoung Kim
6610*735d6239SKiyoung Kim	  tmp_libs=
6611*735d6239SKiyoung Kim	  for deplib in $dependency_libs; do
6612*735d6239SKiyoung Kim	    case $deplib in
6613*735d6239SKiyoung Kim	    -L*) func_stripname '-L' '' "$deplib"
6614*735d6239SKiyoung Kim	         func_resolve_sysroot "$func_stripname_result"
6615*735d6239SKiyoung Kim	         func_append newlib_search_path " $func_resolve_sysroot_result"
6616*735d6239SKiyoung Kim		 ;;
6617*735d6239SKiyoung Kim	    esac
6618*735d6239SKiyoung Kim	    # Need to link against all dependency_libs?
6619*735d6239SKiyoung Kim	    if test "$linkalldeplibs" = yes; then
6620*735d6239SKiyoung Kim	      deplibs="$deplib $deplibs"
6621*735d6239SKiyoung Kim	    else
6622*735d6239SKiyoung Kim	      # Need to hardcode shared library paths
6623*735d6239SKiyoung Kim	      # or/and link against static libraries
6624*735d6239SKiyoung Kim	      newdependency_libs="$deplib $newdependency_libs"
6625*735d6239SKiyoung Kim	    fi
6626*735d6239SKiyoung Kim	    if $opt_preserve_dup_deps ; then
6627*735d6239SKiyoung Kim	      case "$tmp_libs " in
6628*735d6239SKiyoung Kim	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6629*735d6239SKiyoung Kim	      esac
6630*735d6239SKiyoung Kim	    fi
6631*735d6239SKiyoung Kim	    func_append tmp_libs " $deplib"
6632*735d6239SKiyoung Kim	  done # for deplib
6633*735d6239SKiyoung Kim	  continue
6634*735d6239SKiyoung Kim	fi # $linkmode = prog...
6635*735d6239SKiyoung Kim
6636*735d6239SKiyoung Kim	if test "$linkmode,$pass" = "prog,link"; then
6637*735d6239SKiyoung Kim	  if test -n "$library_names" &&
6638*735d6239SKiyoung Kim	     { { test "$prefer_static_libs" = no ||
6639*735d6239SKiyoung Kim	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6640*735d6239SKiyoung Kim	       test -z "$old_library"; }; then
6641*735d6239SKiyoung Kim	    # We need to hardcode the library path
6642*735d6239SKiyoung Kim	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6643*735d6239SKiyoung Kim	      # Make sure the rpath contains only unique directories.
6644*735d6239SKiyoung Kim	      case "$temp_rpath:" in
6645*735d6239SKiyoung Kim	      *"$absdir:"*) ;;
6646*735d6239SKiyoung Kim	      *) func_append temp_rpath "$absdir:" ;;
6647*735d6239SKiyoung Kim	      esac
6648*735d6239SKiyoung Kim	    fi
6649*735d6239SKiyoung Kim
6650*735d6239SKiyoung Kim	    # Hardcode the library path.
6651*735d6239SKiyoung Kim	    # Skip directories that are in the system default run-time
6652*735d6239SKiyoung Kim	    # search path.
6653*735d6239SKiyoung Kim	    case " $sys_lib_dlsearch_path " in
6654*735d6239SKiyoung Kim	    *" $absdir "*) ;;
6655*735d6239SKiyoung Kim	    *)
6656*735d6239SKiyoung Kim	      case "$compile_rpath " in
6657*735d6239SKiyoung Kim	      *" $absdir "*) ;;
6658*735d6239SKiyoung Kim	      *) func_append compile_rpath " $absdir" ;;
6659*735d6239SKiyoung Kim	      esac
6660*735d6239SKiyoung Kim	      ;;
6661*735d6239SKiyoung Kim	    esac
6662*735d6239SKiyoung Kim	    case " $sys_lib_dlsearch_path " in
6663*735d6239SKiyoung Kim	    *" $libdir "*) ;;
6664*735d6239SKiyoung Kim	    *)
6665*735d6239SKiyoung Kim	      case "$finalize_rpath " in
6666*735d6239SKiyoung Kim	      *" $libdir "*) ;;
6667*735d6239SKiyoung Kim	      *) func_append finalize_rpath " $libdir" ;;
6668*735d6239SKiyoung Kim	      esac
6669*735d6239SKiyoung Kim	      ;;
6670*735d6239SKiyoung Kim	    esac
6671*735d6239SKiyoung Kim	  fi # $linkmode,$pass = prog,link...
6672*735d6239SKiyoung Kim
6673*735d6239SKiyoung Kim	  if test "$alldeplibs" = yes &&
6674*735d6239SKiyoung Kim	     { test "$deplibs_check_method" = pass_all ||
6675*735d6239SKiyoung Kim	       { test "$build_libtool_libs" = yes &&
6676*735d6239SKiyoung Kim		 test -n "$library_names"; }; }; then
6677*735d6239SKiyoung Kim	    # We only need to search for static libraries
6678*735d6239SKiyoung Kim	    continue
6679*735d6239SKiyoung Kim	  fi
6680*735d6239SKiyoung Kim	fi
6681*735d6239SKiyoung Kim
6682*735d6239SKiyoung Kim	link_static=no # Whether the deplib will be linked statically
6683*735d6239SKiyoung Kim	use_static_libs=$prefer_static_libs
6684*735d6239SKiyoung Kim	if test "$use_static_libs" = built && test "$installed" = yes; then
6685*735d6239SKiyoung Kim	  use_static_libs=no
6686*735d6239SKiyoung Kim	fi
6687*735d6239SKiyoung Kim	if test -n "$library_names" &&
6688*735d6239SKiyoung Kim	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6689*735d6239SKiyoung Kim	  case $host in
6690*735d6239SKiyoung Kim	  *cygwin* | *mingw* | *cegcc*)
6691*735d6239SKiyoung Kim	      # No point in relinking DLLs because paths are not encoded
6692*735d6239SKiyoung Kim	      func_append notinst_deplibs " $lib"
6693*735d6239SKiyoung Kim	      need_relink=no
6694*735d6239SKiyoung Kim	    ;;
6695*735d6239SKiyoung Kim	  *)
6696*735d6239SKiyoung Kim	    if test "$installed" = no; then
6697*735d6239SKiyoung Kim	      func_append notinst_deplibs " $lib"
6698*735d6239SKiyoung Kim	      need_relink=yes
6699*735d6239SKiyoung Kim	    fi
6700*735d6239SKiyoung Kim	    ;;
6701*735d6239SKiyoung Kim	  esac
6702*735d6239SKiyoung Kim	  # This is a shared library
6703*735d6239SKiyoung Kim
6704*735d6239SKiyoung Kim	  # Warn about portability, can't link against -module's on some
6705*735d6239SKiyoung Kim	  # systems (darwin).  Don't bleat about dlopened modules though!
6706*735d6239SKiyoung Kim	  dlopenmodule=""
6707*735d6239SKiyoung Kim	  for dlpremoduletest in $dlprefiles; do
6708*735d6239SKiyoung Kim	    if test "X$dlpremoduletest" = "X$lib"; then
6709*735d6239SKiyoung Kim	      dlopenmodule="$dlpremoduletest"
6710*735d6239SKiyoung Kim	      break
6711*735d6239SKiyoung Kim	    fi
6712*735d6239SKiyoung Kim	  done
6713*735d6239SKiyoung Kim	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6714*735d6239SKiyoung Kim	    echo
6715*735d6239SKiyoung Kim	    if test "$linkmode" = prog; then
6716*735d6239SKiyoung Kim	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6717*735d6239SKiyoung Kim	    else
6718*735d6239SKiyoung Kim	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6719*735d6239SKiyoung Kim	    fi
6720*735d6239SKiyoung Kim	    $ECHO "*** $linklib is not portable!"
6721*735d6239SKiyoung Kim	  fi
6722*735d6239SKiyoung Kim	  if test "$linkmode" = lib &&
6723*735d6239SKiyoung Kim	     test "$hardcode_into_libs" = yes; then
6724*735d6239SKiyoung Kim	    # Hardcode the library path.
6725*735d6239SKiyoung Kim	    # Skip directories that are in the system default run-time
6726*735d6239SKiyoung Kim	    # search path.
6727*735d6239SKiyoung Kim	    case " $sys_lib_dlsearch_path " in
6728*735d6239SKiyoung Kim	    *" $absdir "*) ;;
6729*735d6239SKiyoung Kim	    *)
6730*735d6239SKiyoung Kim	      case "$compile_rpath " in
6731*735d6239SKiyoung Kim	      *" $absdir "*) ;;
6732*735d6239SKiyoung Kim	      *) func_append compile_rpath " $absdir" ;;
6733*735d6239SKiyoung Kim	      esac
6734*735d6239SKiyoung Kim	      ;;
6735*735d6239SKiyoung Kim	    esac
6736*735d6239SKiyoung Kim	    case " $sys_lib_dlsearch_path " in
6737*735d6239SKiyoung Kim	    *" $libdir "*) ;;
6738*735d6239SKiyoung Kim	    *)
6739*735d6239SKiyoung Kim	      case "$finalize_rpath " in
6740*735d6239SKiyoung Kim	      *" $libdir "*) ;;
6741*735d6239SKiyoung Kim	      *) func_append finalize_rpath " $libdir" ;;
6742*735d6239SKiyoung Kim	      esac
6743*735d6239SKiyoung Kim	      ;;
6744*735d6239SKiyoung Kim	    esac
6745*735d6239SKiyoung Kim	  fi
6746*735d6239SKiyoung Kim
6747*735d6239SKiyoung Kim	  if test -n "$old_archive_from_expsyms_cmds"; then
6748*735d6239SKiyoung Kim	    # figure out the soname
6749*735d6239SKiyoung Kim	    set dummy $library_names
6750*735d6239SKiyoung Kim	    shift
6751*735d6239SKiyoung Kim	    realname="$1"
6752*735d6239SKiyoung Kim	    shift
6753*735d6239SKiyoung Kim	    libname=`eval "\\$ECHO \"$libname_spec\""`
6754*735d6239SKiyoung Kim	    # use dlname if we got it. it's perfectly good, no?
6755*735d6239SKiyoung Kim	    if test -n "$dlname"; then
6756*735d6239SKiyoung Kim	      soname="$dlname"
6757*735d6239SKiyoung Kim	    elif test -n "$soname_spec"; then
6758*735d6239SKiyoung Kim	      # bleh windows
6759*735d6239SKiyoung Kim	      case $host in
6760*735d6239SKiyoung Kim	      *cygwin* | mingw* | *cegcc*)
6761*735d6239SKiyoung Kim	        func_arith $current - $age
6762*735d6239SKiyoung Kim		major=$func_arith_result
6763*735d6239SKiyoung Kim		versuffix="-$major"
6764*735d6239SKiyoung Kim		;;
6765*735d6239SKiyoung Kim	      esac
6766*735d6239SKiyoung Kim	      eval soname=\"$soname_spec\"
6767*735d6239SKiyoung Kim	    else
6768*735d6239SKiyoung Kim	      soname="$realname"
6769*735d6239SKiyoung Kim	    fi
6770*735d6239SKiyoung Kim
6771*735d6239SKiyoung Kim	    # Make a new name for the extract_expsyms_cmds to use
6772*735d6239SKiyoung Kim	    soroot="$soname"
6773*735d6239SKiyoung Kim	    func_basename "$soroot"
6774*735d6239SKiyoung Kim	    soname="$func_basename_result"
6775*735d6239SKiyoung Kim	    func_stripname 'lib' '.dll' "$soname"
6776*735d6239SKiyoung Kim	    newlib=libimp-$func_stripname_result.a
6777*735d6239SKiyoung Kim
6778*735d6239SKiyoung Kim	    # If the library has no export list, then create one now
6779*735d6239SKiyoung Kim	    if test -f "$output_objdir/$soname-def"; then :
6780*735d6239SKiyoung Kim	    else
6781*735d6239SKiyoung Kim	      func_verbose "extracting exported symbol list from \`$soname'"
6782*735d6239SKiyoung Kim	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6783*735d6239SKiyoung Kim	    fi
6784*735d6239SKiyoung Kim
6785*735d6239SKiyoung Kim	    # Create $newlib
6786*735d6239SKiyoung Kim	    if test -f "$output_objdir/$newlib"; then :; else
6787*735d6239SKiyoung Kim	      func_verbose "generating import library for \`$soname'"
6788*735d6239SKiyoung Kim	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6789*735d6239SKiyoung Kim	    fi
6790*735d6239SKiyoung Kim	    # make sure the library variables are pointing to the new library
6791*735d6239SKiyoung Kim	    dir=$output_objdir
6792*735d6239SKiyoung Kim	    linklib=$newlib
6793*735d6239SKiyoung Kim	  fi # test -n "$old_archive_from_expsyms_cmds"
6794*735d6239SKiyoung Kim
6795*735d6239SKiyoung Kim	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6796*735d6239SKiyoung Kim	    add_shlibpath=
6797*735d6239SKiyoung Kim	    add_dir=
6798*735d6239SKiyoung Kim	    add=
6799*735d6239SKiyoung Kim	    lib_linked=yes
6800*735d6239SKiyoung Kim	    case $hardcode_action in
6801*735d6239SKiyoung Kim	    immediate | unsupported)
6802*735d6239SKiyoung Kim	      if test "$hardcode_direct" = no; then
6803*735d6239SKiyoung Kim		add="$dir/$linklib"
6804*735d6239SKiyoung Kim		case $host in
6805*735d6239SKiyoung Kim		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6806*735d6239SKiyoung Kim		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6807*735d6239SKiyoung Kim		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6808*735d6239SKiyoung Kim		    *-*-unixware7*) add_dir="-L$dir" ;;
6809*735d6239SKiyoung Kim		  *-*-darwin* )
6810*735d6239SKiyoung Kim		    # if the lib is a (non-dlopened) module then we can not
6811*735d6239SKiyoung Kim		    # link against it, someone is ignoring the earlier warnings
6812*735d6239SKiyoung Kim		    if /usr/bin/file -L $add 2> /dev/null |
6813*735d6239SKiyoung Kim			 $GREP ": [^:]* bundle" >/dev/null ; then
6814*735d6239SKiyoung Kim		      if test "X$dlopenmodule" != "X$lib"; then
6815*735d6239SKiyoung Kim			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6816*735d6239SKiyoung Kim			if test -z "$old_library" ; then
6817*735d6239SKiyoung Kim			  echo
6818*735d6239SKiyoung Kim			  echo "*** And there doesn't seem to be a static archive available"
6819*735d6239SKiyoung Kim			  echo "*** The link will probably fail, sorry"
6820*735d6239SKiyoung Kim			else
6821*735d6239SKiyoung Kim			  add="$dir/$old_library"
6822*735d6239SKiyoung Kim			fi
6823*735d6239SKiyoung Kim		      elif test -n "$old_library"; then
6824*735d6239SKiyoung Kim			add="$dir/$old_library"
6825*735d6239SKiyoung Kim		      fi
6826*735d6239SKiyoung Kim		    fi
6827*735d6239SKiyoung Kim		esac
6828*735d6239SKiyoung Kim	      elif test "$hardcode_minus_L" = no; then
6829*735d6239SKiyoung Kim		case $host in
6830*735d6239SKiyoung Kim		*-*-sunos*) add_shlibpath="$dir" ;;
6831*735d6239SKiyoung Kim		esac
6832*735d6239SKiyoung Kim		add_dir="-L$dir"
6833*735d6239SKiyoung Kim		add="-l$name"
6834*735d6239SKiyoung Kim	      elif test "$hardcode_shlibpath_var" = no; then
6835*735d6239SKiyoung Kim		add_shlibpath="$dir"
6836*735d6239SKiyoung Kim		add="-l$name"
6837*735d6239SKiyoung Kim	      else
6838*735d6239SKiyoung Kim		lib_linked=no
6839*735d6239SKiyoung Kim	      fi
6840*735d6239SKiyoung Kim	      ;;
6841*735d6239SKiyoung Kim	    relink)
6842*735d6239SKiyoung Kim	      if test "$hardcode_direct" = yes &&
6843*735d6239SKiyoung Kim	         test "$hardcode_direct_absolute" = no; then
6844*735d6239SKiyoung Kim		add="$dir/$linklib"
6845*735d6239SKiyoung Kim	      elif test "$hardcode_minus_L" = yes; then
6846*735d6239SKiyoung Kim		add_dir="-L$dir"
6847*735d6239SKiyoung Kim		# Try looking first in the location we're being installed to.
6848*735d6239SKiyoung Kim		if test -n "$inst_prefix_dir"; then
6849*735d6239SKiyoung Kim		  case $libdir in
6850*735d6239SKiyoung Kim		    [\\/]*)
6851*735d6239SKiyoung Kim		      func_append add_dir " -L$inst_prefix_dir$libdir"
6852*735d6239SKiyoung Kim		      ;;
6853*735d6239SKiyoung Kim		  esac
6854*735d6239SKiyoung Kim		fi
6855*735d6239SKiyoung Kim		add="-l$name"
6856*735d6239SKiyoung Kim	      elif test "$hardcode_shlibpath_var" = yes; then
6857*735d6239SKiyoung Kim		add_shlibpath="$dir"
6858*735d6239SKiyoung Kim		add="-l$name"
6859*735d6239SKiyoung Kim	      else
6860*735d6239SKiyoung Kim		lib_linked=no
6861*735d6239SKiyoung Kim	      fi
6862*735d6239SKiyoung Kim	      ;;
6863*735d6239SKiyoung Kim	    *) lib_linked=no ;;
6864*735d6239SKiyoung Kim	    esac
6865*735d6239SKiyoung Kim
6866*735d6239SKiyoung Kim	    if test "$lib_linked" != yes; then
6867*735d6239SKiyoung Kim	      func_fatal_configuration "unsupported hardcode properties"
6868*735d6239SKiyoung Kim	    fi
6869*735d6239SKiyoung Kim
6870*735d6239SKiyoung Kim	    if test -n "$add_shlibpath"; then
6871*735d6239SKiyoung Kim	      case :$compile_shlibpath: in
6872*735d6239SKiyoung Kim	      *":$add_shlibpath:"*) ;;
6873*735d6239SKiyoung Kim	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6874*735d6239SKiyoung Kim	      esac
6875*735d6239SKiyoung Kim	    fi
6876*735d6239SKiyoung Kim	    if test "$linkmode" = prog; then
6877*735d6239SKiyoung Kim	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6878*735d6239SKiyoung Kim	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6879*735d6239SKiyoung Kim	    else
6880*735d6239SKiyoung Kim	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6881*735d6239SKiyoung Kim	      test -n "$add" && deplibs="$add $deplibs"
6882*735d6239SKiyoung Kim	      if test "$hardcode_direct" != yes &&
6883*735d6239SKiyoung Kim		 test "$hardcode_minus_L" != yes &&
6884*735d6239SKiyoung Kim		 test "$hardcode_shlibpath_var" = yes; then
6885*735d6239SKiyoung Kim		case :$finalize_shlibpath: in
6886*735d6239SKiyoung Kim		*":$libdir:"*) ;;
6887*735d6239SKiyoung Kim		*) func_append finalize_shlibpath "$libdir:" ;;
6888*735d6239SKiyoung Kim		esac
6889*735d6239SKiyoung Kim	      fi
6890*735d6239SKiyoung Kim	    fi
6891*735d6239SKiyoung Kim	  fi
6892*735d6239SKiyoung Kim
6893*735d6239SKiyoung Kim	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6894*735d6239SKiyoung Kim	    add_shlibpath=
6895*735d6239SKiyoung Kim	    add_dir=
6896*735d6239SKiyoung Kim	    add=
6897*735d6239SKiyoung Kim	    # Finalize command for both is simple: just hardcode it.
6898*735d6239SKiyoung Kim	    if test "$hardcode_direct" = yes &&
6899*735d6239SKiyoung Kim	       test "$hardcode_direct_absolute" = no; then
6900*735d6239SKiyoung Kim	      add="$libdir/$linklib"
6901*735d6239SKiyoung Kim	    elif test "$hardcode_minus_L" = yes; then
6902*735d6239SKiyoung Kim	      add_dir="-L$libdir"
6903*735d6239SKiyoung Kim	      add="-l$name"
6904*735d6239SKiyoung Kim	    elif test "$hardcode_shlibpath_var" = yes; then
6905*735d6239SKiyoung Kim	      case :$finalize_shlibpath: in
6906*735d6239SKiyoung Kim	      *":$libdir:"*) ;;
6907*735d6239SKiyoung Kim	      *) func_append finalize_shlibpath "$libdir:" ;;
6908*735d6239SKiyoung Kim	      esac
6909*735d6239SKiyoung Kim	      add="-l$name"
6910*735d6239SKiyoung Kim	    elif test "$hardcode_automatic" = yes; then
6911*735d6239SKiyoung Kim	      if test -n "$inst_prefix_dir" &&
6912*735d6239SKiyoung Kim		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6913*735d6239SKiyoung Kim		add="$inst_prefix_dir$libdir/$linklib"
6914*735d6239SKiyoung Kim	      else
6915*735d6239SKiyoung Kim		add="$libdir/$linklib"
6916*735d6239SKiyoung Kim	      fi
6917*735d6239SKiyoung Kim	    else
6918*735d6239SKiyoung Kim	      # We cannot seem to hardcode it, guess we'll fake it.
6919*735d6239SKiyoung Kim	      add_dir="-L$libdir"
6920*735d6239SKiyoung Kim	      # Try looking first in the location we're being installed to.
6921*735d6239SKiyoung Kim	      if test -n "$inst_prefix_dir"; then
6922*735d6239SKiyoung Kim		case $libdir in
6923*735d6239SKiyoung Kim		  [\\/]*)
6924*735d6239SKiyoung Kim		    func_append add_dir " -L$inst_prefix_dir$libdir"
6925*735d6239SKiyoung Kim		    ;;
6926*735d6239SKiyoung Kim		esac
6927*735d6239SKiyoung Kim	      fi
6928*735d6239SKiyoung Kim	      add="-l$name"
6929*735d6239SKiyoung Kim	    fi
6930*735d6239SKiyoung Kim
6931*735d6239SKiyoung Kim	    if test "$linkmode" = prog; then
6932*735d6239SKiyoung Kim	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6933*735d6239SKiyoung Kim	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6934*735d6239SKiyoung Kim	    else
6935*735d6239SKiyoung Kim	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6936*735d6239SKiyoung Kim	      test -n "$add" && deplibs="$add $deplibs"
6937*735d6239SKiyoung Kim	    fi
6938*735d6239SKiyoung Kim	  fi
6939*735d6239SKiyoung Kim	elif test "$linkmode" = prog; then
6940*735d6239SKiyoung Kim	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6941*735d6239SKiyoung Kim	  # is not unsupported.  This is valid on all known static and
6942*735d6239SKiyoung Kim	  # shared platforms.
6943*735d6239SKiyoung Kim	  if test "$hardcode_direct" != unsupported; then
6944*735d6239SKiyoung Kim	    test -n "$old_library" && linklib="$old_library"
6945*735d6239SKiyoung Kim	    compile_deplibs="$dir/$linklib $compile_deplibs"
6946*735d6239SKiyoung Kim	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6947*735d6239SKiyoung Kim	  else
6948*735d6239SKiyoung Kim	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6949*735d6239SKiyoung Kim	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6950*735d6239SKiyoung Kim	  fi
6951*735d6239SKiyoung Kim	elif test "$build_libtool_libs" = yes; then
6952*735d6239SKiyoung Kim	  # Not a shared library
6953*735d6239SKiyoung Kim	  if test "$deplibs_check_method" != pass_all; then
6954*735d6239SKiyoung Kim	    # We're trying link a shared library against a static one
6955*735d6239SKiyoung Kim	    # but the system doesn't support it.
6956*735d6239SKiyoung Kim
6957*735d6239SKiyoung Kim	    # Just print a warning and add the library to dependency_libs so
6958*735d6239SKiyoung Kim	    # that the program can be linked against the static library.
6959*735d6239SKiyoung Kim	    echo
6960*735d6239SKiyoung Kim	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6961*735d6239SKiyoung Kim	    echo "*** I have the capability to make that library automatically link in when"
6962*735d6239SKiyoung Kim	    echo "*** you link to this library.  But I can only do this if you have a"
6963*735d6239SKiyoung Kim	    echo "*** shared version of the library, which you do not appear to have."
6964*735d6239SKiyoung Kim	    if test "$module" = yes; then
6965*735d6239SKiyoung Kim	      echo "*** But as you try to build a module library, libtool will still create "
6966*735d6239SKiyoung Kim	      echo "*** a static module, that should work as long as the dlopening application"
6967*735d6239SKiyoung Kim	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6968*735d6239SKiyoung Kim	      if test -z "$global_symbol_pipe"; then
6969*735d6239SKiyoung Kim		echo
6970*735d6239SKiyoung Kim		echo "*** However, this would only work if libtool was able to extract symbol"
6971*735d6239SKiyoung Kim		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6972*735d6239SKiyoung Kim		echo "*** not find such a program.  So, this module is probably useless."
6973*735d6239SKiyoung Kim		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6974*735d6239SKiyoung Kim	      fi
6975*735d6239SKiyoung Kim	      if test "$build_old_libs" = no; then
6976*735d6239SKiyoung Kim		build_libtool_libs=module
6977*735d6239SKiyoung Kim		build_old_libs=yes
6978*735d6239SKiyoung Kim	      else
6979*735d6239SKiyoung Kim		build_libtool_libs=no
6980*735d6239SKiyoung Kim	      fi
6981*735d6239SKiyoung Kim	    fi
6982*735d6239SKiyoung Kim	  else
6983*735d6239SKiyoung Kim	    deplibs="$dir/$old_library $deplibs"
6984*735d6239SKiyoung Kim	    link_static=yes
6985*735d6239SKiyoung Kim	  fi
6986*735d6239SKiyoung Kim	fi # link shared/static library?
6987*735d6239SKiyoung Kim
6988*735d6239SKiyoung Kim	if test "$linkmode" = lib; then
6989*735d6239SKiyoung Kim	  if test -n "$dependency_libs" &&
6990*735d6239SKiyoung Kim	     { test "$hardcode_into_libs" != yes ||
6991*735d6239SKiyoung Kim	       test "$build_old_libs" = yes ||
6992*735d6239SKiyoung Kim	       test "$link_static" = yes; }; then
6993*735d6239SKiyoung Kim	    # Extract -R from dependency_libs
6994*735d6239SKiyoung Kim	    temp_deplibs=
6995*735d6239SKiyoung Kim	    for libdir in $dependency_libs; do
6996*735d6239SKiyoung Kim	      case $libdir in
6997*735d6239SKiyoung Kim	      -R*) func_stripname '-R' '' "$libdir"
6998*735d6239SKiyoung Kim	           temp_xrpath=$func_stripname_result
6999*735d6239SKiyoung Kim		   case " $xrpath " in
7000*735d6239SKiyoung Kim		   *" $temp_xrpath "*) ;;
7001*735d6239SKiyoung Kim		   *) func_append xrpath " $temp_xrpath";;
7002*735d6239SKiyoung Kim		   esac;;
7003*735d6239SKiyoung Kim	      *) func_append temp_deplibs " $libdir";;
7004*735d6239SKiyoung Kim	      esac
7005*735d6239SKiyoung Kim	    done
7006*735d6239SKiyoung Kim	    dependency_libs="$temp_deplibs"
7007*735d6239SKiyoung Kim	  fi
7008*735d6239SKiyoung Kim
7009*735d6239SKiyoung Kim	  func_append newlib_search_path " $absdir"
7010*735d6239SKiyoung Kim	  # Link against this library
7011*735d6239SKiyoung Kim	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7012*735d6239SKiyoung Kim	  # ... and its dependency_libs
7013*735d6239SKiyoung Kim	  tmp_libs=
7014*735d6239SKiyoung Kim	  for deplib in $dependency_libs; do
7015*735d6239SKiyoung Kim	    newdependency_libs="$deplib $newdependency_libs"
7016*735d6239SKiyoung Kim	    case $deplib in
7017*735d6239SKiyoung Kim              -L*) func_stripname '-L' '' "$deplib"
7018*735d6239SKiyoung Kim                   func_resolve_sysroot "$func_stripname_result";;
7019*735d6239SKiyoung Kim              *) func_resolve_sysroot "$deplib" ;;
7020*735d6239SKiyoung Kim            esac
7021*735d6239SKiyoung Kim	    if $opt_preserve_dup_deps ; then
7022*735d6239SKiyoung Kim	      case "$tmp_libs " in
7023*735d6239SKiyoung Kim	      *" $func_resolve_sysroot_result "*)
7024*735d6239SKiyoung Kim                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7025*735d6239SKiyoung Kim	      esac
7026*735d6239SKiyoung Kim	    fi
7027*735d6239SKiyoung Kim	    func_append tmp_libs " $func_resolve_sysroot_result"
7028*735d6239SKiyoung Kim	  done
7029*735d6239SKiyoung Kim
7030*735d6239SKiyoung Kim	  if test "$link_all_deplibs" != no; then
7031*735d6239SKiyoung Kim	    # Add the search paths of all dependency libraries
7032*735d6239SKiyoung Kim	    for deplib in $dependency_libs; do
7033*735d6239SKiyoung Kim	      path=
7034*735d6239SKiyoung Kim	      case $deplib in
7035*735d6239SKiyoung Kim	      -L*) path="$deplib" ;;
7036*735d6239SKiyoung Kim	      *.la)
7037*735d6239SKiyoung Kim	        func_resolve_sysroot "$deplib"
7038*735d6239SKiyoung Kim	        deplib=$func_resolve_sysroot_result
7039*735d6239SKiyoung Kim	        func_dirname "$deplib" "" "."
7040*735d6239SKiyoung Kim		dir=$func_dirname_result
7041*735d6239SKiyoung Kim		# We need an absolute path.
7042*735d6239SKiyoung Kim		case $dir in
7043*735d6239SKiyoung Kim		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7044*735d6239SKiyoung Kim		*)
7045*735d6239SKiyoung Kim		  absdir=`cd "$dir" && pwd`
7046*735d6239SKiyoung Kim		  if test -z "$absdir"; then
7047*735d6239SKiyoung Kim		    func_warning "cannot determine absolute directory name of \`$dir'"
7048*735d6239SKiyoung Kim		    absdir="$dir"
7049*735d6239SKiyoung Kim		  fi
7050*735d6239SKiyoung Kim		  ;;
7051*735d6239SKiyoung Kim		esac
7052*735d6239SKiyoung Kim		if $GREP "^installed=no" $deplib > /dev/null; then
7053*735d6239SKiyoung Kim		case $host in
7054*735d6239SKiyoung Kim		*-*-darwin*)
7055*735d6239SKiyoung Kim		  depdepl=
7056*735d6239SKiyoung Kim		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7057*735d6239SKiyoung Kim		  if test -n "$deplibrary_names" ; then
7058*735d6239SKiyoung Kim		    for tmp in $deplibrary_names ; do
7059*735d6239SKiyoung Kim		      depdepl=$tmp
7060*735d6239SKiyoung Kim		    done
7061*735d6239SKiyoung Kim		    if test -f "$absdir/$objdir/$depdepl" ; then
7062*735d6239SKiyoung Kim		      depdepl="$absdir/$objdir/$depdepl"
7063*735d6239SKiyoung Kim		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7064*735d6239SKiyoung Kim                      if test -z "$darwin_install_name"; then
7065*735d6239SKiyoung Kim                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7066*735d6239SKiyoung Kim                      fi
7067*735d6239SKiyoung Kim		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7068*735d6239SKiyoung Kim		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7069*735d6239SKiyoung Kim		      path=
7070*735d6239SKiyoung Kim		    fi
7071*735d6239SKiyoung Kim		  fi
7072*735d6239SKiyoung Kim		  ;;
7073*735d6239SKiyoung Kim		*)
7074*735d6239SKiyoung Kim		  path="-L$absdir/$objdir"
7075*735d6239SKiyoung Kim		  ;;
7076*735d6239SKiyoung Kim		esac
7077*735d6239SKiyoung Kim		else
7078*735d6239SKiyoung Kim		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7079*735d6239SKiyoung Kim		  test -z "$libdir" && \
7080*735d6239SKiyoung Kim		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7081*735d6239SKiyoung Kim		  test "$absdir" != "$libdir" && \
7082*735d6239SKiyoung Kim		    func_warning "\`$deplib' seems to be moved"
7083*735d6239SKiyoung Kim
7084*735d6239SKiyoung Kim		  path="-L$absdir"
7085*735d6239SKiyoung Kim		fi
7086*735d6239SKiyoung Kim		;;
7087*735d6239SKiyoung Kim	      esac
7088*735d6239SKiyoung Kim	      case " $deplibs " in
7089*735d6239SKiyoung Kim	      *" $path "*) ;;
7090*735d6239SKiyoung Kim	      *) deplibs="$path $deplibs" ;;
7091*735d6239SKiyoung Kim	      esac
7092*735d6239SKiyoung Kim	    done
7093*735d6239SKiyoung Kim	  fi # link_all_deplibs != no
7094*735d6239SKiyoung Kim	fi # linkmode = lib
7095*735d6239SKiyoung Kim      done # for deplib in $libs
7096*735d6239SKiyoung Kim      if test "$pass" = link; then
7097*735d6239SKiyoung Kim	if test "$linkmode" = "prog"; then
7098*735d6239SKiyoung Kim	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7099*735d6239SKiyoung Kim	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7100*735d6239SKiyoung Kim	else
7101*735d6239SKiyoung Kim	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7102*735d6239SKiyoung Kim	fi
7103*735d6239SKiyoung Kim      fi
7104*735d6239SKiyoung Kim      dependency_libs="$newdependency_libs"
7105*735d6239SKiyoung Kim      if test "$pass" = dlpreopen; then
7106*735d6239SKiyoung Kim	# Link the dlpreopened libraries before other libraries
7107*735d6239SKiyoung Kim	for deplib in $save_deplibs; do
7108*735d6239SKiyoung Kim	  deplibs="$deplib $deplibs"
7109*735d6239SKiyoung Kim	done
7110*735d6239SKiyoung Kim      fi
7111*735d6239SKiyoung Kim      if test "$pass" != dlopen; then
7112*735d6239SKiyoung Kim	if test "$pass" != conv; then
7113*735d6239SKiyoung Kim	  # Make sure lib_search_path contains only unique directories.
7114*735d6239SKiyoung Kim	  lib_search_path=
7115*735d6239SKiyoung Kim	  for dir in $newlib_search_path; do
7116*735d6239SKiyoung Kim	    case "$lib_search_path " in
7117*735d6239SKiyoung Kim	    *" $dir "*) ;;
7118*735d6239SKiyoung Kim	    *) func_append lib_search_path " $dir" ;;
7119*735d6239SKiyoung Kim	    esac
7120*735d6239SKiyoung Kim	  done
7121*735d6239SKiyoung Kim	  newlib_search_path=
7122*735d6239SKiyoung Kim	fi
7123*735d6239SKiyoung Kim
7124*735d6239SKiyoung Kim	if test "$linkmode,$pass" != "prog,link"; then
7125*735d6239SKiyoung Kim	  vars="deplibs"
7126*735d6239SKiyoung Kim	else
7127*735d6239SKiyoung Kim	  vars="compile_deplibs finalize_deplibs"
7128*735d6239SKiyoung Kim	fi
7129*735d6239SKiyoung Kim	for var in $vars dependency_libs; do
7130*735d6239SKiyoung Kim	  # Add libraries to $var in reverse order
7131*735d6239SKiyoung Kim	  eval tmp_libs=\"\$$var\"
7132*735d6239SKiyoung Kim	  new_libs=
7133*735d6239SKiyoung Kim	  for deplib in $tmp_libs; do
7134*735d6239SKiyoung Kim	    # FIXME: Pedantically, this is the right thing to do, so
7135*735d6239SKiyoung Kim	    #        that some nasty dependency loop isn't accidentally
7136*735d6239SKiyoung Kim	    #        broken:
7137*735d6239SKiyoung Kim	    #new_libs="$deplib $new_libs"
7138*735d6239SKiyoung Kim	    # Pragmatically, this seems to cause very few problems in
7139*735d6239SKiyoung Kim	    # practice:
7140*735d6239SKiyoung Kim	    case $deplib in
7141*735d6239SKiyoung Kim	    -L*) new_libs="$deplib $new_libs" ;;
7142*735d6239SKiyoung Kim	    -R*) ;;
7143*735d6239SKiyoung Kim	    *)
7144*735d6239SKiyoung Kim	      # And here is the reason: when a library appears more
7145*735d6239SKiyoung Kim	      # than once as an explicit dependence of a library, or
7146*735d6239SKiyoung Kim	      # is implicitly linked in more than once by the
7147*735d6239SKiyoung Kim	      # compiler, it is considered special, and multiple
7148*735d6239SKiyoung Kim	      # occurrences thereof are not removed.  Compare this
7149*735d6239SKiyoung Kim	      # with having the same library being listed as a
7150*735d6239SKiyoung Kim	      # dependency of multiple other libraries: in this case,
7151*735d6239SKiyoung Kim	      # we know (pedantically, we assume) the library does not
7152*735d6239SKiyoung Kim	      # need to be listed more than once, so we keep only the
7153*735d6239SKiyoung Kim	      # last copy.  This is not always right, but it is rare
7154*735d6239SKiyoung Kim	      # enough that we require users that really mean to play
7155*735d6239SKiyoung Kim	      # such unportable linking tricks to link the library
7156*735d6239SKiyoung Kim	      # using -Wl,-lname, so that libtool does not consider it
7157*735d6239SKiyoung Kim	      # for duplicate removal.
7158*735d6239SKiyoung Kim	      case " $specialdeplibs " in
7159*735d6239SKiyoung Kim	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7160*735d6239SKiyoung Kim	      *)
7161*735d6239SKiyoung Kim		case " $new_libs " in
7162*735d6239SKiyoung Kim		*" $deplib "*) ;;
7163*735d6239SKiyoung Kim		*) new_libs="$deplib $new_libs" ;;
7164*735d6239SKiyoung Kim		esac
7165*735d6239SKiyoung Kim		;;
7166*735d6239SKiyoung Kim	      esac
7167*735d6239SKiyoung Kim	      ;;
7168*735d6239SKiyoung Kim	    esac
7169*735d6239SKiyoung Kim	  done
7170*735d6239SKiyoung Kim	  tmp_libs=
7171*735d6239SKiyoung Kim	  for deplib in $new_libs; do
7172*735d6239SKiyoung Kim	    case $deplib in
7173*735d6239SKiyoung Kim	    -L*)
7174*735d6239SKiyoung Kim	      case " $tmp_libs " in
7175*735d6239SKiyoung Kim	      *" $deplib "*) ;;
7176*735d6239SKiyoung Kim	      *) func_append tmp_libs " $deplib" ;;
7177*735d6239SKiyoung Kim	      esac
7178*735d6239SKiyoung Kim	      ;;
7179*735d6239SKiyoung Kim	    *) func_append tmp_libs " $deplib" ;;
7180*735d6239SKiyoung Kim	    esac
7181*735d6239SKiyoung Kim	  done
7182*735d6239SKiyoung Kim	  eval $var=\"$tmp_libs\"
7183*735d6239SKiyoung Kim	done # for var
7184*735d6239SKiyoung Kim      fi
7185*735d6239SKiyoung Kim      # Last step: remove runtime libs from dependency_libs
7186*735d6239SKiyoung Kim      # (they stay in deplibs)
7187*735d6239SKiyoung Kim      tmp_libs=
7188*735d6239SKiyoung Kim      for i in $dependency_libs ; do
7189*735d6239SKiyoung Kim	case " $predeps $postdeps $compiler_lib_search_path " in
7190*735d6239SKiyoung Kim	*" $i "*)
7191*735d6239SKiyoung Kim	  i=""
7192*735d6239SKiyoung Kim	  ;;
7193*735d6239SKiyoung Kim	esac
7194*735d6239SKiyoung Kim	if test -n "$i" ; then
7195*735d6239SKiyoung Kim	  func_append tmp_libs " $i"
7196*735d6239SKiyoung Kim	fi
7197*735d6239SKiyoung Kim      done
7198*735d6239SKiyoung Kim      dependency_libs=$tmp_libs
7199*735d6239SKiyoung Kim    done # for pass
7200*735d6239SKiyoung Kim    if test "$linkmode" = prog; then
7201*735d6239SKiyoung Kim      dlfiles="$newdlfiles"
7202*735d6239SKiyoung Kim    fi
7203*735d6239SKiyoung Kim    if test "$linkmode" = prog || test "$linkmode" = lib; then
7204*735d6239SKiyoung Kim      dlprefiles="$newdlprefiles"
7205*735d6239SKiyoung Kim    fi
7206*735d6239SKiyoung Kim
7207*735d6239SKiyoung Kim    case $linkmode in
7208*735d6239SKiyoung Kim    oldlib)
7209*735d6239SKiyoung Kim      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7210*735d6239SKiyoung Kim	func_warning "\`-dlopen' is ignored for archives"
7211*735d6239SKiyoung Kim      fi
7212*735d6239SKiyoung Kim
7213*735d6239SKiyoung Kim      case " $deplibs" in
7214*735d6239SKiyoung Kim      *\ -l* | *\ -L*)
7215*735d6239SKiyoung Kim	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7216*735d6239SKiyoung Kim      esac
7217*735d6239SKiyoung Kim
7218*735d6239SKiyoung Kim      test -n "$rpath" && \
7219*735d6239SKiyoung Kim	func_warning "\`-rpath' is ignored for archives"
7220*735d6239SKiyoung Kim
7221*735d6239SKiyoung Kim      test -n "$xrpath" && \
7222*735d6239SKiyoung Kim	func_warning "\`-R' is ignored for archives"
7223*735d6239SKiyoung Kim
7224*735d6239SKiyoung Kim      test -n "$vinfo" && \
7225*735d6239SKiyoung Kim	func_warning "\`-version-info/-version-number' is ignored for archives"
7226*735d6239SKiyoung Kim
7227*735d6239SKiyoung Kim      test -n "$release" && \
7228*735d6239SKiyoung Kim	func_warning "\`-release' is ignored for archives"
7229*735d6239SKiyoung Kim
7230*735d6239SKiyoung Kim      test -n "$export_symbols$export_symbols_regex" && \
7231*735d6239SKiyoung Kim	func_warning "\`-export-symbols' is ignored for archives"
7232*735d6239SKiyoung Kim
7233*735d6239SKiyoung Kim      # Now set the variables for building old libraries.
7234*735d6239SKiyoung Kim      build_libtool_libs=no
7235*735d6239SKiyoung Kim      oldlibs="$output"
7236*735d6239SKiyoung Kim      func_append objs "$old_deplibs"
7237*735d6239SKiyoung Kim      ;;
7238*735d6239SKiyoung Kim
7239*735d6239SKiyoung Kim    lib)
7240*735d6239SKiyoung Kim      # Make sure we only generate libraries of the form `libNAME.la'.
7241*735d6239SKiyoung Kim      case $outputname in
7242*735d6239SKiyoung Kim      lib*)
7243*735d6239SKiyoung Kim	func_stripname 'lib' '.la' "$outputname"
7244*735d6239SKiyoung Kim	name=$func_stripname_result
7245*735d6239SKiyoung Kim	eval shared_ext=\"$shrext_cmds\"
7246*735d6239SKiyoung Kim	eval libname=\"$libname_spec\"
7247*735d6239SKiyoung Kim	;;
7248*735d6239SKiyoung Kim      *)
7249*735d6239SKiyoung Kim	test "$module" = no && \
7250*735d6239SKiyoung Kim	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7251*735d6239SKiyoung Kim
7252*735d6239SKiyoung Kim	if test "$need_lib_prefix" != no; then
7253*735d6239SKiyoung Kim	  # Add the "lib" prefix for modules if required
7254*735d6239SKiyoung Kim	  func_stripname '' '.la' "$outputname"
7255*735d6239SKiyoung Kim	  name=$func_stripname_result
7256*735d6239SKiyoung Kim	  eval shared_ext=\"$shrext_cmds\"
7257*735d6239SKiyoung Kim	  eval libname=\"$libname_spec\"
7258*735d6239SKiyoung Kim	else
7259*735d6239SKiyoung Kim	  func_stripname '' '.la' "$outputname"
7260*735d6239SKiyoung Kim	  libname=$func_stripname_result
7261*735d6239SKiyoung Kim	fi
7262*735d6239SKiyoung Kim	;;
7263*735d6239SKiyoung Kim      esac
7264*735d6239SKiyoung Kim
7265*735d6239SKiyoung Kim      if test -n "$objs"; then
7266*735d6239SKiyoung Kim	if test "$deplibs_check_method" != pass_all; then
7267*735d6239SKiyoung Kim	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7268*735d6239SKiyoung Kim	else
7269*735d6239SKiyoung Kim	  echo
7270*735d6239SKiyoung Kim	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7271*735d6239SKiyoung Kim	  $ECHO "*** objects $objs is not portable!"
7272*735d6239SKiyoung Kim	  func_append libobjs " $objs"
7273*735d6239SKiyoung Kim	fi
7274*735d6239SKiyoung Kim      fi
7275*735d6239SKiyoung Kim
7276*735d6239SKiyoung Kim      test "$dlself" != no && \
7277*735d6239SKiyoung Kim	func_warning "\`-dlopen self' is ignored for libtool libraries"
7278*735d6239SKiyoung Kim
7279*735d6239SKiyoung Kim      set dummy $rpath
7280*735d6239SKiyoung Kim      shift
7281*735d6239SKiyoung Kim      test "$#" -gt 1 && \
7282*735d6239SKiyoung Kim	func_warning "ignoring multiple \`-rpath's for a libtool library"
7283*735d6239SKiyoung Kim
7284*735d6239SKiyoung Kim      install_libdir="$1"
7285*735d6239SKiyoung Kim
7286*735d6239SKiyoung Kim      oldlibs=
7287*735d6239SKiyoung Kim      if test -z "$rpath"; then
7288*735d6239SKiyoung Kim	if test "$build_libtool_libs" = yes; then
7289*735d6239SKiyoung Kim	  # Building a libtool convenience library.
7290*735d6239SKiyoung Kim	  # Some compilers have problems with a `.al' extension so
7291*735d6239SKiyoung Kim	  # convenience libraries should have the same extension an
7292*735d6239SKiyoung Kim	  # archive normally would.
7293*735d6239SKiyoung Kim	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7294*735d6239SKiyoung Kim	  build_libtool_libs=convenience
7295*735d6239SKiyoung Kim	  build_old_libs=yes
7296*735d6239SKiyoung Kim	fi
7297*735d6239SKiyoung Kim
7298*735d6239SKiyoung Kim	test -n "$vinfo" && \
7299*735d6239SKiyoung Kim	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7300*735d6239SKiyoung Kim
7301*735d6239SKiyoung Kim	test -n "$release" && \
7302*735d6239SKiyoung Kim	  func_warning "\`-release' is ignored for convenience libraries"
7303*735d6239SKiyoung Kim      else
7304*735d6239SKiyoung Kim
7305*735d6239SKiyoung Kim	# Parse the version information argument.
7306*735d6239SKiyoung Kim	save_ifs="$IFS"; IFS=':'
7307*735d6239SKiyoung Kim	set dummy $vinfo 0 0 0
7308*735d6239SKiyoung Kim	shift
7309*735d6239SKiyoung Kim	IFS="$save_ifs"
7310*735d6239SKiyoung Kim
7311*735d6239SKiyoung Kim	test -n "$7" && \
7312*735d6239SKiyoung Kim	  func_fatal_help "too many parameters to \`-version-info'"
7313*735d6239SKiyoung Kim
7314*735d6239SKiyoung Kim	# convert absolute version numbers to libtool ages
7315*735d6239SKiyoung Kim	# this retains compatibility with .la files and attempts
7316*735d6239SKiyoung Kim	# to make the code below a bit more comprehensible
7317*735d6239SKiyoung Kim
7318*735d6239SKiyoung Kim	case $vinfo_number in
7319*735d6239SKiyoung Kim	yes)
7320*735d6239SKiyoung Kim	  number_major="$1"
7321*735d6239SKiyoung Kim	  number_minor="$2"
7322*735d6239SKiyoung Kim	  number_revision="$3"
7323*735d6239SKiyoung Kim	  #
7324*735d6239SKiyoung Kim	  # There are really only two kinds -- those that
7325*735d6239SKiyoung Kim	  # use the current revision as the major version
7326*735d6239SKiyoung Kim	  # and those that subtract age and use age as
7327*735d6239SKiyoung Kim	  # a minor version.  But, then there is irix
7328*735d6239SKiyoung Kim	  # which has an extra 1 added just for fun
7329*735d6239SKiyoung Kim	  #
7330*735d6239SKiyoung Kim	  case $version_type in
7331*735d6239SKiyoung Kim	  darwin|linux|osf|windows|none)
7332*735d6239SKiyoung Kim	    func_arith $number_major + $number_minor
7333*735d6239SKiyoung Kim	    current=$func_arith_result
7334*735d6239SKiyoung Kim	    age="$number_minor"
7335*735d6239SKiyoung Kim	    revision="$number_revision"
7336*735d6239SKiyoung Kim	    ;;
7337*735d6239SKiyoung Kim	  freebsd-aout|freebsd-elf|qnx|sunos)
7338*735d6239SKiyoung Kim	    current="$number_major"
7339*735d6239SKiyoung Kim	    revision="$number_minor"
7340*735d6239SKiyoung Kim	    age="0"
7341*735d6239SKiyoung Kim	    ;;
7342*735d6239SKiyoung Kim	  irix|nonstopux)
7343*735d6239SKiyoung Kim	    func_arith $number_major + $number_minor
7344*735d6239SKiyoung Kim	    current=$func_arith_result
7345*735d6239SKiyoung Kim	    age="$number_minor"
7346*735d6239SKiyoung Kim	    revision="$number_minor"
7347*735d6239SKiyoung Kim	    lt_irix_increment=no
7348*735d6239SKiyoung Kim	    ;;
7349*735d6239SKiyoung Kim	  esac
7350*735d6239SKiyoung Kim	  ;;
7351*735d6239SKiyoung Kim	no)
7352*735d6239SKiyoung Kim	  current="$1"
7353*735d6239SKiyoung Kim	  revision="$2"
7354*735d6239SKiyoung Kim	  age="$3"
7355*735d6239SKiyoung Kim	  ;;
7356*735d6239SKiyoung Kim	esac
7357*735d6239SKiyoung Kim
7358*735d6239SKiyoung Kim	# Check that each of the things are valid numbers.
7359*735d6239SKiyoung Kim	case $current in
7360*735d6239SKiyoung Kim	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]) ;;
7361*735d6239SKiyoung Kim	*)
7362*735d6239SKiyoung Kim	  func_error "CURRENT \`$current' must be a nonnegative integer"
7363*735d6239SKiyoung Kim	  func_fatal_error "\`$vinfo' is not valid version information"
7364*735d6239SKiyoung Kim	  ;;
7365*735d6239SKiyoung Kim	esac
7366*735d6239SKiyoung Kim
7367*735d6239SKiyoung Kim	case $revision in
7368*735d6239SKiyoung Kim	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]) ;;
7369*735d6239SKiyoung Kim	*)
7370*735d6239SKiyoung Kim	  func_error "REVISION \`$revision' must be a nonnegative integer"
7371*735d6239SKiyoung Kim	  func_fatal_error "\`$vinfo' is not valid version information"
7372*735d6239SKiyoung Kim	  ;;
7373*735d6239SKiyoung Kim	esac
7374*735d6239SKiyoung Kim
7375*735d6239SKiyoung Kim	case $age in
7376*735d6239SKiyoung Kim	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]) ;;
7377*735d6239SKiyoung Kim	*)
7378*735d6239SKiyoung Kim	  func_error "AGE \`$age' must be a nonnegative integer"
7379*735d6239SKiyoung Kim	  func_fatal_error "\`$vinfo' is not valid version information"
7380*735d6239SKiyoung Kim	  ;;
7381*735d6239SKiyoung Kim	esac
7382*735d6239SKiyoung Kim
7383*735d6239SKiyoung Kim	if test "$age" -gt "$current"; then
7384*735d6239SKiyoung Kim	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7385*735d6239SKiyoung Kim	  func_fatal_error "\`$vinfo' is not valid version information"
7386*735d6239SKiyoung Kim	fi
7387*735d6239SKiyoung Kim
7388*735d6239SKiyoung Kim	# Calculate the version variables.
7389*735d6239SKiyoung Kim	major=
7390*735d6239SKiyoung Kim	versuffix=
7391*735d6239SKiyoung Kim	verstring=
7392*735d6239SKiyoung Kim	case $version_type in
7393*735d6239SKiyoung Kim	none) ;;
7394*735d6239SKiyoung Kim
7395*735d6239SKiyoung Kim	darwin)
7396*735d6239SKiyoung Kim	  # Like Linux, but with the current version available in
7397*735d6239SKiyoung Kim	  # verstring for coding it into the library header
7398*735d6239SKiyoung Kim	  func_arith $current - $age
7399*735d6239SKiyoung Kim	  major=.$func_arith_result
7400*735d6239SKiyoung Kim	  versuffix="$major.$age.$revision"
7401*735d6239SKiyoung Kim	  # Darwin ld doesn't like 0 for these options...
7402*735d6239SKiyoung Kim	  func_arith $current + 1
7403*735d6239SKiyoung Kim	  minor_current=$func_arith_result
7404*735d6239SKiyoung Kim	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7405*735d6239SKiyoung Kim	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7406*735d6239SKiyoung Kim	  ;;
7407*735d6239SKiyoung Kim
7408*735d6239SKiyoung Kim	freebsd-aout)
7409*735d6239SKiyoung Kim	  major=".$current"
7410*735d6239SKiyoung Kim	  versuffix=".$current.$revision";
7411*735d6239SKiyoung Kim	  ;;
7412*735d6239SKiyoung Kim
7413*735d6239SKiyoung Kim	freebsd-elf)
7414*735d6239SKiyoung Kim	  major=".$current"
7415*735d6239SKiyoung Kim	  versuffix=".$current"
7416*735d6239SKiyoung Kim	  ;;
7417*735d6239SKiyoung Kim
7418*735d6239SKiyoung Kim	irix | nonstopux)
7419*735d6239SKiyoung Kim	  if test "X$lt_irix_increment" = "Xno"; then
7420*735d6239SKiyoung Kim	    func_arith $current - $age
7421*735d6239SKiyoung Kim	  else
7422*735d6239SKiyoung Kim	    func_arith $current - $age + 1
7423*735d6239SKiyoung Kim	  fi
7424*735d6239SKiyoung Kim	  major=$func_arith_result
7425*735d6239SKiyoung Kim
7426*735d6239SKiyoung Kim	  case $version_type in
7427*735d6239SKiyoung Kim	    nonstopux) verstring_prefix=nonstopux ;;
7428*735d6239SKiyoung Kim	    *)         verstring_prefix=sgi ;;
7429*735d6239SKiyoung Kim	  esac
7430*735d6239SKiyoung Kim	  verstring="$verstring_prefix$major.$revision"
7431*735d6239SKiyoung Kim
7432*735d6239SKiyoung Kim	  # Add in all the interfaces that we are compatible with.
7433*735d6239SKiyoung Kim	  loop=$revision
7434*735d6239SKiyoung Kim	  while test "$loop" -ne 0; do
7435*735d6239SKiyoung Kim	    func_arith $revision - $loop
7436*735d6239SKiyoung Kim	    iface=$func_arith_result
7437*735d6239SKiyoung Kim	    func_arith $loop - 1
7438*735d6239SKiyoung Kim	    loop=$func_arith_result
7439*735d6239SKiyoung Kim	    verstring="$verstring_prefix$major.$iface:$verstring"
7440*735d6239SKiyoung Kim	  done
7441*735d6239SKiyoung Kim
7442*735d6239SKiyoung Kim	  # Before this point, $major must not contain `.'.
7443*735d6239SKiyoung Kim	  major=.$major
7444*735d6239SKiyoung Kim	  versuffix="$major.$revision"
7445*735d6239SKiyoung Kim	  ;;
7446*735d6239SKiyoung Kim
7447*735d6239SKiyoung Kim	linux)
7448*735d6239SKiyoung Kim	  func_arith $current - $age
7449*735d6239SKiyoung Kim	  major=.$func_arith_result
7450*735d6239SKiyoung Kim	  versuffix="$major.$age.$revision"
7451*735d6239SKiyoung Kim	  ;;
7452*735d6239SKiyoung Kim
7453*735d6239SKiyoung Kim	osf)
7454*735d6239SKiyoung Kim	  func_arith $current - $age
7455*735d6239SKiyoung Kim	  major=.$func_arith_result
7456*735d6239SKiyoung Kim	  versuffix=".$current.$age.$revision"
7457*735d6239SKiyoung Kim	  verstring="$current.$age.$revision"
7458*735d6239SKiyoung Kim
7459*735d6239SKiyoung Kim	  # Add in all the interfaces that we are compatible with.
7460*735d6239SKiyoung Kim	  loop=$age
7461*735d6239SKiyoung Kim	  while test "$loop" -ne 0; do
7462*735d6239SKiyoung Kim	    func_arith $current - $loop
7463*735d6239SKiyoung Kim	    iface=$func_arith_result
7464*735d6239SKiyoung Kim	    func_arith $loop - 1
7465*735d6239SKiyoung Kim	    loop=$func_arith_result
7466*735d6239SKiyoung Kim	    verstring="$verstring:${iface}.0"
7467*735d6239SKiyoung Kim	  done
7468*735d6239SKiyoung Kim
7469*735d6239SKiyoung Kim	  # Make executables depend on our current version.
7470*735d6239SKiyoung Kim	  func_append verstring ":${current}.0"
7471*735d6239SKiyoung Kim	  ;;
7472*735d6239SKiyoung Kim
7473*735d6239SKiyoung Kim	qnx)
7474*735d6239SKiyoung Kim	  major=".$current"
7475*735d6239SKiyoung Kim	  versuffix=".$current"
7476*735d6239SKiyoung Kim	  ;;
7477*735d6239SKiyoung Kim
7478*735d6239SKiyoung Kim	sunos)
7479*735d6239SKiyoung Kim	  major=".$current"
7480*735d6239SKiyoung Kim	  versuffix=".$current.$revision"
7481*735d6239SKiyoung Kim	  ;;
7482*735d6239SKiyoung Kim
7483*735d6239SKiyoung Kim	windows)
7484*735d6239SKiyoung Kim	  # Use '-' rather than '.', since we only want one
7485*735d6239SKiyoung Kim	  # extension on DOS 8.3 filesystems.
7486*735d6239SKiyoung Kim	  func_arith $current - $age
7487*735d6239SKiyoung Kim	  major=$func_arith_result
7488*735d6239SKiyoung Kim	  versuffix="-$major"
7489*735d6239SKiyoung Kim	  ;;
7490*735d6239SKiyoung Kim
7491*735d6239SKiyoung Kim	*)
7492*735d6239SKiyoung Kim	  func_fatal_configuration "unknown library version type \`$version_type'"
7493*735d6239SKiyoung Kim	  ;;
7494*735d6239SKiyoung Kim	esac
7495*735d6239SKiyoung Kim
7496*735d6239SKiyoung Kim	# Clear the version info if we defaulted, and they specified a release.
7497*735d6239SKiyoung Kim	if test -z "$vinfo" && test -n "$release"; then
7498*735d6239SKiyoung Kim	  major=
7499*735d6239SKiyoung Kim	  case $version_type in
7500*735d6239SKiyoung Kim	  darwin)
7501*735d6239SKiyoung Kim	    # we can't check for "0.0" in archive_cmds due to quoting
7502*735d6239SKiyoung Kim	    # problems, so we reset it completely
7503*735d6239SKiyoung Kim	    verstring=
7504*735d6239SKiyoung Kim	    ;;
7505*735d6239SKiyoung Kim	  *)
7506*735d6239SKiyoung Kim	    verstring="0.0"
7507*735d6239SKiyoung Kim	    ;;
7508*735d6239SKiyoung Kim	  esac
7509*735d6239SKiyoung Kim	  if test "$need_version" = no; then
7510*735d6239SKiyoung Kim	    versuffix=
7511*735d6239SKiyoung Kim	  else
7512*735d6239SKiyoung Kim	    versuffix=".0.0"
7513*735d6239SKiyoung Kim	  fi
7514*735d6239SKiyoung Kim	fi
7515*735d6239SKiyoung Kim
7516*735d6239SKiyoung Kim	# Remove version info from name if versioning should be avoided
7517*735d6239SKiyoung Kim	if test "$avoid_version" = yes && test "$need_version" = no; then
7518*735d6239SKiyoung Kim	  major=
7519*735d6239SKiyoung Kim	  versuffix=
7520*735d6239SKiyoung Kim	  verstring=""
7521*735d6239SKiyoung Kim	fi
7522*735d6239SKiyoung Kim
7523*735d6239SKiyoung Kim	# Check to see if the archive will have undefined symbols.
7524*735d6239SKiyoung Kim	if test "$allow_undefined" = yes; then
7525*735d6239SKiyoung Kim	  if test "$allow_undefined_flag" = unsupported; then
7526*735d6239SKiyoung Kim	    func_warning "undefined symbols not allowed in $host shared libraries"
7527*735d6239SKiyoung Kim	    build_libtool_libs=no
7528*735d6239SKiyoung Kim	    build_old_libs=yes
7529*735d6239SKiyoung Kim	  fi
7530*735d6239SKiyoung Kim	else
7531*735d6239SKiyoung Kim	  # Don't allow undefined symbols.
7532*735d6239SKiyoung Kim	  allow_undefined_flag="$no_undefined_flag"
7533*735d6239SKiyoung Kim	fi
7534*735d6239SKiyoung Kim
7535*735d6239SKiyoung Kim      fi
7536*735d6239SKiyoung Kim
7537*735d6239SKiyoung Kim      func_generate_dlsyms "$libname" "$libname" "yes"
7538*735d6239SKiyoung Kim      func_append libobjs " $symfileobj"
7539*735d6239SKiyoung Kim      test "X$libobjs" = "X " && libobjs=
7540*735d6239SKiyoung Kim
7541*735d6239SKiyoung Kim      if test "$opt_mode" != relink; then
7542*735d6239SKiyoung Kim	# Remove our outputs, but don't remove object files since they
7543*735d6239SKiyoung Kim	# may have been created when compiling PIC objects.
7544*735d6239SKiyoung Kim	removelist=
7545*735d6239SKiyoung Kim	tempremovelist=`$ECHO "$output_objdir/*"`
7546*735d6239SKiyoung Kim	for p in $tempremovelist; do
7547*735d6239SKiyoung Kim	  case $p in
7548*735d6239SKiyoung Kim	    *.$objext | *.gcno)
7549*735d6239SKiyoung Kim	       ;;
7550*735d6239SKiyoung Kim	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7551*735d6239SKiyoung Kim	       if test "X$precious_files_regex" != "X"; then
7552*735d6239SKiyoung Kim		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7553*735d6239SKiyoung Kim		 then
7554*735d6239SKiyoung Kim		   continue
7555*735d6239SKiyoung Kim		 fi
7556*735d6239SKiyoung Kim	       fi
7557*735d6239SKiyoung Kim	       func_append removelist " $p"
7558*735d6239SKiyoung Kim	       ;;
7559*735d6239SKiyoung Kim	    *) ;;
7560*735d6239SKiyoung Kim	  esac
7561*735d6239SKiyoung Kim	done
7562*735d6239SKiyoung Kim	test -n "$removelist" && \
7563*735d6239SKiyoung Kim	  func_show_eval "${RM}r \$removelist"
7564*735d6239SKiyoung Kim      fi
7565*735d6239SKiyoung Kim
7566*735d6239SKiyoung Kim      # Now set the variables for building old libraries.
7567*735d6239SKiyoung Kim      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7568*735d6239SKiyoung Kim	func_append oldlibs " $output_objdir/$libname.$libext"
7569*735d6239SKiyoung Kim
7570*735d6239SKiyoung Kim	# Transform .lo files to .o files.
7571*735d6239SKiyoung Kim	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7572*735d6239SKiyoung Kim      fi
7573*735d6239SKiyoung Kim
7574*735d6239SKiyoung Kim      # Eliminate all temporary directories.
7575*735d6239SKiyoung Kim      #for path in $notinst_path; do
7576*735d6239SKiyoung Kim      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7577*735d6239SKiyoung Kim      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7578*735d6239SKiyoung Kim      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7579*735d6239SKiyoung Kim      #done
7580*735d6239SKiyoung Kim
7581*735d6239SKiyoung Kim      if test -n "$xrpath"; then
7582*735d6239SKiyoung Kim	# If the user specified any rpath flags, then add them.
7583*735d6239SKiyoung Kim	temp_xrpath=
7584*735d6239SKiyoung Kim	for libdir in $xrpath; do
7585*735d6239SKiyoung Kim	  func_replace_sysroot "$libdir"
7586*735d6239SKiyoung Kim	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7587*735d6239SKiyoung Kim	  case "$finalize_rpath " in
7588*735d6239SKiyoung Kim	  *" $libdir "*) ;;
7589*735d6239SKiyoung Kim	  *) func_append finalize_rpath " $libdir" ;;
7590*735d6239SKiyoung Kim	  esac
7591*735d6239SKiyoung Kim	done
7592*735d6239SKiyoung Kim	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7593*735d6239SKiyoung Kim	  dependency_libs="$temp_xrpath $dependency_libs"
7594*735d6239SKiyoung Kim	fi
7595*735d6239SKiyoung Kim      fi
7596*735d6239SKiyoung Kim
7597*735d6239SKiyoung Kim      # Make sure dlfiles contains only unique files that won't be dlpreopened
7598*735d6239SKiyoung Kim      old_dlfiles="$dlfiles"
7599*735d6239SKiyoung Kim      dlfiles=
7600*735d6239SKiyoung Kim      for lib in $old_dlfiles; do
7601*735d6239SKiyoung Kim	case " $dlprefiles $dlfiles " in
7602*735d6239SKiyoung Kim	*" $lib "*) ;;
7603*735d6239SKiyoung Kim	*) func_append dlfiles " $lib" ;;
7604*735d6239SKiyoung Kim	esac
7605*735d6239SKiyoung Kim      done
7606*735d6239SKiyoung Kim
7607*735d6239SKiyoung Kim      # Make sure dlprefiles contains only unique files
7608*735d6239SKiyoung Kim      old_dlprefiles="$dlprefiles"
7609*735d6239SKiyoung Kim      dlprefiles=
7610*735d6239SKiyoung Kim      for lib in $old_dlprefiles; do
7611*735d6239SKiyoung Kim	case "$dlprefiles " in
7612*735d6239SKiyoung Kim	*" $lib "*) ;;
7613*735d6239SKiyoung Kim	*) func_append dlprefiles " $lib" ;;
7614*735d6239SKiyoung Kim	esac
7615*735d6239SKiyoung Kim      done
7616*735d6239SKiyoung Kim
7617*735d6239SKiyoung Kim      if test "$build_libtool_libs" = yes; then
7618*735d6239SKiyoung Kim	if test -n "$rpath"; then
7619*735d6239SKiyoung Kim	  case $host in
7620*735d6239SKiyoung Kim	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7621*735d6239SKiyoung Kim	    # these systems don't actually have a c library (as such)!
7622*735d6239SKiyoung Kim	    ;;
7623*735d6239SKiyoung Kim	  *-*-rhapsody* | *-*-darwin1.[012])
7624*735d6239SKiyoung Kim	    # Rhapsody C library is in the System framework
7625*735d6239SKiyoung Kim	    func_append deplibs " System.ltframework"
7626*735d6239SKiyoung Kim	    ;;
7627*735d6239SKiyoung Kim	  *-*-netbsd*)
7628*735d6239SKiyoung Kim	    # Don't link with libc until the a.out ld.so is fixed.
7629*735d6239SKiyoung Kim	    ;;
7630*735d6239SKiyoung Kim	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7631*735d6239SKiyoung Kim	    # Do not include libc due to us having libc/libc_r.
7632*735d6239SKiyoung Kim	    ;;
7633*735d6239SKiyoung Kim	  *-*-sco3.2v5* | *-*-sco5v6*)
7634*735d6239SKiyoung Kim	    # Causes problems with __ctype
7635*735d6239SKiyoung Kim	    ;;
7636*735d6239SKiyoung Kim	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7637*735d6239SKiyoung Kim	    # Compiler inserts libc in the correct place for threads to work
7638*735d6239SKiyoung Kim	    ;;
7639*735d6239SKiyoung Kim	  *)
7640*735d6239SKiyoung Kim	    # Add libc to deplibs on all other systems if necessary.
7641*735d6239SKiyoung Kim	    if test "$build_libtool_need_lc" = "yes"; then
7642*735d6239SKiyoung Kim	      func_append deplibs " -lc"
7643*735d6239SKiyoung Kim	    fi
7644*735d6239SKiyoung Kim	    ;;
7645*735d6239SKiyoung Kim	  esac
7646*735d6239SKiyoung Kim	fi
7647*735d6239SKiyoung Kim
7648*735d6239SKiyoung Kim	# Transform deplibs into only deplibs that can be linked in shared.
7649*735d6239SKiyoung Kim	name_save=$name
7650*735d6239SKiyoung Kim	libname_save=$libname
7651*735d6239SKiyoung Kim	release_save=$release
7652*735d6239SKiyoung Kim	versuffix_save=$versuffix
7653*735d6239SKiyoung Kim	major_save=$major
7654*735d6239SKiyoung Kim	# I'm not sure if I'm treating the release correctly.  I think
7655*735d6239SKiyoung Kim	# release should show up in the -l (ie -lgmp5) so we don't want to
7656*735d6239SKiyoung Kim	# add it in twice.  Is that correct?
7657*735d6239SKiyoung Kim	release=""
7658*735d6239SKiyoung Kim	versuffix=""
7659*735d6239SKiyoung Kim	major=""
7660*735d6239SKiyoung Kim	newdeplibs=
7661*735d6239SKiyoung Kim	droppeddeps=no
7662*735d6239SKiyoung Kim	case $deplibs_check_method in
7663*735d6239SKiyoung Kim	pass_all)
7664*735d6239SKiyoung Kim	  # Don't check for shared/static.  Everything works.
7665*735d6239SKiyoung Kim	  # This might be a little naive.  We might want to check
7666*735d6239SKiyoung Kim	  # whether the library exists or not.  But this is on
7667*735d6239SKiyoung Kim	  # osf3 & osf4 and I'm not really sure... Just
7668*735d6239SKiyoung Kim	  # implementing what was already the behavior.
7669*735d6239SKiyoung Kim	  newdeplibs=$deplibs
7670*735d6239SKiyoung Kim	  ;;
7671*735d6239SKiyoung Kim	test_compile)
7672*735d6239SKiyoung Kim	  # This code stresses the "libraries are programs" paradigm to its
7673*735d6239SKiyoung Kim	  # limits. Maybe even breaks it.  We compile a program, linking it
7674*735d6239SKiyoung Kim	  # against the deplibs as a proxy for the library.  Then we can check
7675*735d6239SKiyoung Kim	  # whether they linked in statically or dynamically with ldd.
7676*735d6239SKiyoung Kim	  $opt_dry_run || $RM conftest.c
7677*735d6239SKiyoung Kim	  cat > conftest.c <<EOF
7678*735d6239SKiyoung Kim	  int main() { return 0; }
7679*735d6239SKiyoung KimEOF
7680*735d6239SKiyoung Kim	  $opt_dry_run || $RM conftest
7681*735d6239SKiyoung Kim	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7682*735d6239SKiyoung Kim	    ldd_output=`ldd conftest`
7683*735d6239SKiyoung Kim	    for i in $deplibs; do
7684*735d6239SKiyoung Kim	      case $i in
7685*735d6239SKiyoung Kim	      -l*)
7686*735d6239SKiyoung Kim		func_stripname -l '' "$i"
7687*735d6239SKiyoung Kim		name=$func_stripname_result
7688*735d6239SKiyoung Kim		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7689*735d6239SKiyoung Kim		  case " $predeps $postdeps " in
7690*735d6239SKiyoung Kim		  *" $i "*)
7691*735d6239SKiyoung Kim		    func_append newdeplibs " $i"
7692*735d6239SKiyoung Kim		    i=""
7693*735d6239SKiyoung Kim		    ;;
7694*735d6239SKiyoung Kim		  esac
7695*735d6239SKiyoung Kim		fi
7696*735d6239SKiyoung Kim		if test -n "$i" ; then
7697*735d6239SKiyoung Kim		  libname=`eval "\\$ECHO \"$libname_spec\""`
7698*735d6239SKiyoung Kim		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7699*735d6239SKiyoung Kim		  set dummy $deplib_matches; shift
7700*735d6239SKiyoung Kim		  deplib_match=$1
7701*735d6239SKiyoung Kim		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7702*735d6239SKiyoung Kim		    func_append newdeplibs " $i"
7703*735d6239SKiyoung Kim		  else
7704*735d6239SKiyoung Kim		    droppeddeps=yes
7705*735d6239SKiyoung Kim		    echo
7706*735d6239SKiyoung Kim		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7707*735d6239SKiyoung Kim		    echo "*** I have the capability to make that library automatically link in when"
7708*735d6239SKiyoung Kim		    echo "*** you link to this library.  But I can only do this if you have a"
7709*735d6239SKiyoung Kim		    echo "*** shared version of the library, which I believe you do not have"
7710*735d6239SKiyoung Kim		    echo "*** because a test_compile did reveal that the linker did not use it for"
7711*735d6239SKiyoung Kim		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7712*735d6239SKiyoung Kim		  fi
7713*735d6239SKiyoung Kim		fi
7714*735d6239SKiyoung Kim		;;
7715*735d6239SKiyoung Kim	      *)
7716*735d6239SKiyoung Kim		func_append newdeplibs " $i"
7717*735d6239SKiyoung Kim		;;
7718*735d6239SKiyoung Kim	      esac
7719*735d6239SKiyoung Kim	    done
7720*735d6239SKiyoung Kim	  else
7721*735d6239SKiyoung Kim	    # Error occurred in the first compile.  Let's try to salvage
7722*735d6239SKiyoung Kim	    # the situation: Compile a separate program for each library.
7723*735d6239SKiyoung Kim	    for i in $deplibs; do
7724*735d6239SKiyoung Kim	      case $i in
7725*735d6239SKiyoung Kim	      -l*)
7726*735d6239SKiyoung Kim		func_stripname -l '' "$i"
7727*735d6239SKiyoung Kim		name=$func_stripname_result
7728*735d6239SKiyoung Kim		$opt_dry_run || $RM conftest
7729*735d6239SKiyoung Kim		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7730*735d6239SKiyoung Kim		  ldd_output=`ldd conftest`
7731*735d6239SKiyoung Kim		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7732*735d6239SKiyoung Kim		    case " $predeps $postdeps " in
7733*735d6239SKiyoung Kim		    *" $i "*)
7734*735d6239SKiyoung Kim		      func_append newdeplibs " $i"
7735*735d6239SKiyoung Kim		      i=""
7736*735d6239SKiyoung Kim		      ;;
7737*735d6239SKiyoung Kim		    esac
7738*735d6239SKiyoung Kim		  fi
7739*735d6239SKiyoung Kim		  if test -n "$i" ; then
7740*735d6239SKiyoung Kim		    libname=`eval "\\$ECHO \"$libname_spec\""`
7741*735d6239SKiyoung Kim		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7742*735d6239SKiyoung Kim		    set dummy $deplib_matches; shift
7743*735d6239SKiyoung Kim		    deplib_match=$1
7744*735d6239SKiyoung Kim		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7745*735d6239SKiyoung Kim		      func_append newdeplibs " $i"
7746*735d6239SKiyoung Kim		    else
7747*735d6239SKiyoung Kim		      droppeddeps=yes
7748*735d6239SKiyoung Kim		      echo
7749*735d6239SKiyoung Kim		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7750*735d6239SKiyoung Kim		      echo "*** I have the capability to make that library automatically link in when"
7751*735d6239SKiyoung Kim		      echo "*** you link to this library.  But I can only do this if you have a"
7752*735d6239SKiyoung Kim		      echo "*** shared version of the library, which you do not appear to have"
7753*735d6239SKiyoung Kim		      echo "*** because a test_compile did reveal that the linker did not use this one"
7754*735d6239SKiyoung Kim		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7755*735d6239SKiyoung Kim		    fi
7756*735d6239SKiyoung Kim		  fi
7757*735d6239SKiyoung Kim		else
7758*735d6239SKiyoung Kim		  droppeddeps=yes
7759*735d6239SKiyoung Kim		  echo
7760*735d6239SKiyoung Kim		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7761*735d6239SKiyoung Kim		  echo "*** make it link in!  You will probably need to install it or some"
7762*735d6239SKiyoung Kim		  echo "*** library that it depends on before this library will be fully"
7763*735d6239SKiyoung Kim		  echo "*** functional.  Installing it before continuing would be even better."
7764*735d6239SKiyoung Kim		fi
7765*735d6239SKiyoung Kim		;;
7766*735d6239SKiyoung Kim	      *)
7767*735d6239SKiyoung Kim		func_append newdeplibs " $i"
7768*735d6239SKiyoung Kim		;;
7769*735d6239SKiyoung Kim	      esac
7770*735d6239SKiyoung Kim	    done
7771*735d6239SKiyoung Kim	  fi
7772*735d6239SKiyoung Kim	  ;;
7773*735d6239SKiyoung Kim	file_magic*)
7774*735d6239SKiyoung Kim	  set dummy $deplibs_check_method; shift
7775*735d6239SKiyoung Kim	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7776*735d6239SKiyoung Kim	  for a_deplib in $deplibs; do
7777*735d6239SKiyoung Kim	    case $a_deplib in
7778*735d6239SKiyoung Kim	    -l*)
7779*735d6239SKiyoung Kim	      func_stripname -l '' "$a_deplib"
7780*735d6239SKiyoung Kim	      name=$func_stripname_result
7781*735d6239SKiyoung Kim	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7782*735d6239SKiyoung Kim		case " $predeps $postdeps " in
7783*735d6239SKiyoung Kim		*" $a_deplib "*)
7784*735d6239SKiyoung Kim		  func_append newdeplibs " $a_deplib"
7785*735d6239SKiyoung Kim		  a_deplib=""
7786*735d6239SKiyoung Kim		  ;;
7787*735d6239SKiyoung Kim		esac
7788*735d6239SKiyoung Kim	      fi
7789*735d6239SKiyoung Kim	      if test -n "$a_deplib" ; then
7790*735d6239SKiyoung Kim		libname=`eval "\\$ECHO \"$libname_spec\""`
7791*735d6239SKiyoung Kim		if test -n "$file_magic_glob"; then
7792*735d6239SKiyoung Kim		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7793*735d6239SKiyoung Kim		else
7794*735d6239SKiyoung Kim		  libnameglob=$libname
7795*735d6239SKiyoung Kim		fi
7796*735d6239SKiyoung Kim		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7797*735d6239SKiyoung Kim		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7798*735d6239SKiyoung Kim		  if test "$want_nocaseglob" = yes; then
7799*735d6239SKiyoung Kim		    shopt -s nocaseglob
7800*735d6239SKiyoung Kim		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7801*735d6239SKiyoung Kim		    $nocaseglob
7802*735d6239SKiyoung Kim		  else
7803*735d6239SKiyoung Kim		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7804*735d6239SKiyoung Kim		  fi
7805*735d6239SKiyoung Kim		  for potent_lib in $potential_libs; do
7806*735d6239SKiyoung Kim		      # Follow soft links.
7807*735d6239SKiyoung Kim		      if ls -lLd "$potent_lib" 2>/dev/null |
7808*735d6239SKiyoung Kim			 $GREP " -> " >/dev/null; then
7809*735d6239SKiyoung Kim			continue
7810*735d6239SKiyoung Kim		      fi
7811*735d6239SKiyoung Kim		      # The statement above tries to avoid entering an
7812*735d6239SKiyoung Kim		      # endless loop below, in case of cyclic links.
7813*735d6239SKiyoung Kim		      # We might still enter an endless loop, since a link
7814*735d6239SKiyoung Kim		      # loop can be closed while we follow links,
7815*735d6239SKiyoung Kim		      # but so what?
7816*735d6239SKiyoung Kim		      potlib="$potent_lib"
7817*735d6239SKiyoung Kim		      while test -h "$potlib" 2>/dev/null; do
7818*735d6239SKiyoung Kim			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7819*735d6239SKiyoung Kim			case $potliblink in
7820*735d6239SKiyoung Kim			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7821*735d6239SKiyoung Kim			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7822*735d6239SKiyoung Kim			esac
7823*735d6239SKiyoung Kim		      done
7824*735d6239SKiyoung Kim		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7825*735d6239SKiyoung Kim			 $SED -e 10q |
7826*735d6239SKiyoung Kim			 $EGREP "$file_magic_regex" > /dev/null; then
7827*735d6239SKiyoung Kim			func_append newdeplibs " $a_deplib"
7828*735d6239SKiyoung Kim			a_deplib=""
7829*735d6239SKiyoung Kim			break 2
7830*735d6239SKiyoung Kim		      fi
7831*735d6239SKiyoung Kim		  done
7832*735d6239SKiyoung Kim		done
7833*735d6239SKiyoung Kim	      fi
7834*735d6239SKiyoung Kim	      if test -n "$a_deplib" ; then
7835*735d6239SKiyoung Kim		droppeddeps=yes
7836*735d6239SKiyoung Kim		echo
7837*735d6239SKiyoung Kim		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7838*735d6239SKiyoung Kim		echo "*** I have the capability to make that library automatically link in when"
7839*735d6239SKiyoung Kim		echo "*** you link to this library.  But I can only do this if you have a"
7840*735d6239SKiyoung Kim		echo "*** shared version of the library, which you do not appear to have"
7841*735d6239SKiyoung Kim		echo "*** because I did check the linker path looking for a file starting"
7842*735d6239SKiyoung Kim		if test -z "$potlib" ; then
7843*735d6239SKiyoung Kim		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7844*735d6239SKiyoung Kim		else
7845*735d6239SKiyoung Kim		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7846*735d6239SKiyoung Kim		  $ECHO "*** using a file magic. Last file checked: $potlib"
7847*735d6239SKiyoung Kim		fi
7848*735d6239SKiyoung Kim	      fi
7849*735d6239SKiyoung Kim	      ;;
7850*735d6239SKiyoung Kim	    *)
7851*735d6239SKiyoung Kim	      # Add a -L argument.
7852*735d6239SKiyoung Kim	      func_append newdeplibs " $a_deplib"
7853*735d6239SKiyoung Kim	      ;;
7854*735d6239SKiyoung Kim	    esac
7855*735d6239SKiyoung Kim	  done # Gone through all deplibs.
7856*735d6239SKiyoung Kim	  ;;
7857*735d6239SKiyoung Kim	match_pattern*)
7858*735d6239SKiyoung Kim	  set dummy $deplibs_check_method; shift
7859*735d6239SKiyoung Kim	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7860*735d6239SKiyoung Kim	  for a_deplib in $deplibs; do
7861*735d6239SKiyoung Kim	    case $a_deplib in
7862*735d6239SKiyoung Kim	    -l*)
7863*735d6239SKiyoung Kim	      func_stripname -l '' "$a_deplib"
7864*735d6239SKiyoung Kim	      name=$func_stripname_result
7865*735d6239SKiyoung Kim	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7866*735d6239SKiyoung Kim		case " $predeps $postdeps " in
7867*735d6239SKiyoung Kim		*" $a_deplib "*)
7868*735d6239SKiyoung Kim		  func_append newdeplibs " $a_deplib"
7869*735d6239SKiyoung Kim		  a_deplib=""
7870*735d6239SKiyoung Kim		  ;;
7871*735d6239SKiyoung Kim		esac
7872*735d6239SKiyoung Kim	      fi
7873*735d6239SKiyoung Kim	      if test -n "$a_deplib" ; then
7874*735d6239SKiyoung Kim		libname=`eval "\\$ECHO \"$libname_spec\""`
7875*735d6239SKiyoung Kim		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7876*735d6239SKiyoung Kim		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7877*735d6239SKiyoung Kim		  for potent_lib in $potential_libs; do
7878*735d6239SKiyoung Kim		    potlib="$potent_lib" # see symlink-check above in file_magic test
7879*735d6239SKiyoung Kim		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7880*735d6239SKiyoung Kim		       $EGREP "$match_pattern_regex" > /dev/null; then
7881*735d6239SKiyoung Kim		      func_append newdeplibs " $a_deplib"
7882*735d6239SKiyoung Kim		      a_deplib=""
7883*735d6239SKiyoung Kim		      break 2
7884*735d6239SKiyoung Kim		    fi
7885*735d6239SKiyoung Kim		  done
7886*735d6239SKiyoung Kim		done
7887*735d6239SKiyoung Kim	      fi
7888*735d6239SKiyoung Kim	      if test -n "$a_deplib" ; then
7889*735d6239SKiyoung Kim		droppeddeps=yes
7890*735d6239SKiyoung Kim		echo
7891*735d6239SKiyoung Kim		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7892*735d6239SKiyoung Kim		echo "*** I have the capability to make that library automatically link in when"
7893*735d6239SKiyoung Kim		echo "*** you link to this library.  But I can only do this if you have a"
7894*735d6239SKiyoung Kim		echo "*** shared version of the library, which you do not appear to have"
7895*735d6239SKiyoung Kim		echo "*** because I did check the linker path looking for a file starting"
7896*735d6239SKiyoung Kim		if test -z "$potlib" ; then
7897*735d6239SKiyoung Kim		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7898*735d6239SKiyoung Kim		else
7899*735d6239SKiyoung Kim		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7900*735d6239SKiyoung Kim		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7901*735d6239SKiyoung Kim		fi
7902*735d6239SKiyoung Kim	      fi
7903*735d6239SKiyoung Kim	      ;;
7904*735d6239SKiyoung Kim	    *)
7905*735d6239SKiyoung Kim	      # Add a -L argument.
7906*735d6239SKiyoung Kim	      func_append newdeplibs " $a_deplib"
7907*735d6239SKiyoung Kim	      ;;
7908*735d6239SKiyoung Kim	    esac
7909*735d6239SKiyoung Kim	  done # Gone through all deplibs.
7910*735d6239SKiyoung Kim	  ;;
7911*735d6239SKiyoung Kim	none | unknown | *)
7912*735d6239SKiyoung Kim	  newdeplibs=""
7913*735d6239SKiyoung Kim	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7914*735d6239SKiyoung Kim	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7915*735d6239SKiyoung Kim	    for i in $predeps $postdeps ; do
7916*735d6239SKiyoung Kim	      # can't use Xsed below, because $i might contain '/'
7917*735d6239SKiyoung Kim	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7918*735d6239SKiyoung Kim	    done
7919*735d6239SKiyoung Kim	  fi
7920*735d6239SKiyoung Kim	  case $tmp_deplibs in
7921*735d6239SKiyoung Kim	  *[!\	\ ]*)
7922*735d6239SKiyoung Kim	    echo
7923*735d6239SKiyoung Kim	    if test "X$deplibs_check_method" = "Xnone"; then
7924*735d6239SKiyoung Kim	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7925*735d6239SKiyoung Kim	    else
7926*735d6239SKiyoung Kim	      echo "*** Warning: inter-library dependencies are not known to be supported."
7927*735d6239SKiyoung Kim	    fi
7928*735d6239SKiyoung Kim	    echo "*** All declared inter-library dependencies are being dropped."
7929*735d6239SKiyoung Kim	    droppeddeps=yes
7930*735d6239SKiyoung Kim	    ;;
7931*735d6239SKiyoung Kim	  esac
7932*735d6239SKiyoung Kim	  ;;
7933*735d6239SKiyoung Kim	esac
7934*735d6239SKiyoung Kim	versuffix=$versuffix_save
7935*735d6239SKiyoung Kim	major=$major_save
7936*735d6239SKiyoung Kim	release=$release_save
7937*735d6239SKiyoung Kim	libname=$libname_save
7938*735d6239SKiyoung Kim	name=$name_save
7939*735d6239SKiyoung Kim
7940*735d6239SKiyoung Kim	case $host in
7941*735d6239SKiyoung Kim	*-*-rhapsody* | *-*-darwin1.[012])
7942*735d6239SKiyoung Kim	  # On Rhapsody replace the C library with the System framework
7943*735d6239SKiyoung Kim	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7944*735d6239SKiyoung Kim	  ;;
7945*735d6239SKiyoung Kim	esac
7946*735d6239SKiyoung Kim
7947*735d6239SKiyoung Kim	if test "$droppeddeps" = yes; then
7948*735d6239SKiyoung Kim	  if test "$module" = yes; then
7949*735d6239SKiyoung Kim	    echo
7950*735d6239SKiyoung Kim	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7951*735d6239SKiyoung Kim	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7952*735d6239SKiyoung Kim	    echo "*** a static module, that should work as long as the dlopening"
7953*735d6239SKiyoung Kim	    echo "*** application is linked with the -dlopen flag."
7954*735d6239SKiyoung Kim	    if test -z "$global_symbol_pipe"; then
7955*735d6239SKiyoung Kim	      echo
7956*735d6239SKiyoung Kim	      echo "*** However, this would only work if libtool was able to extract symbol"
7957*735d6239SKiyoung Kim	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7958*735d6239SKiyoung Kim	      echo "*** not find such a program.  So, this module is probably useless."
7959*735d6239SKiyoung Kim	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7960*735d6239SKiyoung Kim	    fi
7961*735d6239SKiyoung Kim	    if test "$build_old_libs" = no; then
7962*735d6239SKiyoung Kim	      oldlibs="$output_objdir/$libname.$libext"
7963*735d6239SKiyoung Kim	      build_libtool_libs=module
7964*735d6239SKiyoung Kim	      build_old_libs=yes
7965*735d6239SKiyoung Kim	    else
7966*735d6239SKiyoung Kim	      build_libtool_libs=no
7967*735d6239SKiyoung Kim	    fi
7968*735d6239SKiyoung Kim	  else
7969*735d6239SKiyoung Kim	    echo "*** The inter-library dependencies that have been dropped here will be"
7970*735d6239SKiyoung Kim	    echo "*** automatically added whenever a program is linked with this library"
7971*735d6239SKiyoung Kim	    echo "*** or is declared to -dlopen it."
7972*735d6239SKiyoung Kim
7973*735d6239SKiyoung Kim	    if test "$allow_undefined" = no; then
7974*735d6239SKiyoung Kim	      echo
7975*735d6239SKiyoung Kim	      echo "*** Since this library must not contain undefined symbols,"
7976*735d6239SKiyoung Kim	      echo "*** because either the platform does not support them or"
7977*735d6239SKiyoung Kim	      echo "*** it was explicitly requested with -no-undefined,"
7978*735d6239SKiyoung Kim	      echo "*** libtool will only create a static version of it."
7979*735d6239SKiyoung Kim	      if test "$build_old_libs" = no; then
7980*735d6239SKiyoung Kim		oldlibs="$output_objdir/$libname.$libext"
7981*735d6239SKiyoung Kim		build_libtool_libs=module
7982*735d6239SKiyoung Kim		build_old_libs=yes
7983*735d6239SKiyoung Kim	      else
7984*735d6239SKiyoung Kim		build_libtool_libs=no
7985*735d6239SKiyoung Kim	      fi
7986*735d6239SKiyoung Kim	    fi
7987*735d6239SKiyoung Kim	  fi
7988*735d6239SKiyoung Kim	fi
7989*735d6239SKiyoung Kim	# Done checking deplibs!
7990*735d6239SKiyoung Kim	deplibs=$newdeplibs
7991*735d6239SKiyoung Kim      fi
7992*735d6239SKiyoung Kim      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7993*735d6239SKiyoung Kim      case $host in
7994*735d6239SKiyoung Kim	*-*-darwin*)
7995*735d6239SKiyoung Kim	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7996*735d6239SKiyoung Kim	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7997*735d6239SKiyoung Kim	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7998*735d6239SKiyoung Kim	  ;;
7999*735d6239SKiyoung Kim      esac
8000*735d6239SKiyoung Kim
8001*735d6239SKiyoung Kim      # move library search paths that coincide with paths to not yet
8002*735d6239SKiyoung Kim      # installed libraries to the beginning of the library search list
8003*735d6239SKiyoung Kim      new_libs=
8004*735d6239SKiyoung Kim      for path in $notinst_path; do
8005*735d6239SKiyoung Kim	case " $new_libs " in
8006*735d6239SKiyoung Kim	*" -L$path/$objdir "*) ;;
8007*735d6239SKiyoung Kim	*)
8008*735d6239SKiyoung Kim	  case " $deplibs " in
8009*735d6239SKiyoung Kim	  *" -L$path/$objdir "*)
8010*735d6239SKiyoung Kim	    func_append new_libs " -L$path/$objdir" ;;
8011*735d6239SKiyoung Kim	  esac
8012*735d6239SKiyoung Kim	  ;;
8013*735d6239SKiyoung Kim	esac
8014*735d6239SKiyoung Kim      done
8015*735d6239SKiyoung Kim      for deplib in $deplibs; do
8016*735d6239SKiyoung Kim	case $deplib in
8017*735d6239SKiyoung Kim	-L*)
8018*735d6239SKiyoung Kim	  case " $new_libs " in
8019*735d6239SKiyoung Kim	  *" $deplib "*) ;;
8020*735d6239SKiyoung Kim	  *) func_append new_libs " $deplib" ;;
8021*735d6239SKiyoung Kim	  esac
8022*735d6239SKiyoung Kim	  ;;
8023*735d6239SKiyoung Kim	*) func_append new_libs " $deplib" ;;
8024*735d6239SKiyoung Kim	esac
8025*735d6239SKiyoung Kim      done
8026*735d6239SKiyoung Kim      deplibs="$new_libs"
8027*735d6239SKiyoung Kim
8028*735d6239SKiyoung Kim      # All the library-specific variables (install_libdir is set above).
8029*735d6239SKiyoung Kim      library_names=
8030*735d6239SKiyoung Kim      old_library=
8031*735d6239SKiyoung Kim      dlname=
8032*735d6239SKiyoung Kim
8033*735d6239SKiyoung Kim      # Test again, we may have decided not to build it any more
8034*735d6239SKiyoung Kim      if test "$build_libtool_libs" = yes; then
8035*735d6239SKiyoung Kim	if test "$hardcode_into_libs" = yes; then
8036*735d6239SKiyoung Kim	  # Hardcode the library paths
8037*735d6239SKiyoung Kim	  hardcode_libdirs=
8038*735d6239SKiyoung Kim	  dep_rpath=
8039*735d6239SKiyoung Kim	  rpath="$finalize_rpath"
8040*735d6239SKiyoung Kim	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8041*735d6239SKiyoung Kim	  for libdir in $rpath; do
8042*735d6239SKiyoung Kim	    if test -n "$hardcode_libdir_flag_spec"; then
8043*735d6239SKiyoung Kim	      if test -n "$hardcode_libdir_separator"; then
8044*735d6239SKiyoung Kim		func_replace_sysroot "$libdir"
8045*735d6239SKiyoung Kim		libdir=$func_replace_sysroot_result
8046*735d6239SKiyoung Kim		if test -z "$hardcode_libdirs"; then
8047*735d6239SKiyoung Kim		  hardcode_libdirs="$libdir"
8048*735d6239SKiyoung Kim		else
8049*735d6239SKiyoung Kim		  # Just accumulate the unique libdirs.
8050*735d6239SKiyoung Kim		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8051*735d6239SKiyoung Kim		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8052*735d6239SKiyoung Kim		    ;;
8053*735d6239SKiyoung Kim		  *)
8054*735d6239SKiyoung Kim		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8055*735d6239SKiyoung Kim		    ;;
8056*735d6239SKiyoung Kim		  esac
8057*735d6239SKiyoung Kim		fi
8058*735d6239SKiyoung Kim	      else
8059*735d6239SKiyoung Kim		eval flag=\"$hardcode_libdir_flag_spec\"
8060*735d6239SKiyoung Kim		func_append dep_rpath " $flag"
8061*735d6239SKiyoung Kim	      fi
8062*735d6239SKiyoung Kim	    elif test -n "$runpath_var"; then
8063*735d6239SKiyoung Kim	      case "$perm_rpath " in
8064*735d6239SKiyoung Kim	      *" $libdir "*) ;;
8065*735d6239SKiyoung Kim	      *) func_apped perm_rpath " $libdir" ;;
8066*735d6239SKiyoung Kim	      esac
8067*735d6239SKiyoung Kim	    fi
8068*735d6239SKiyoung Kim	  done
8069*735d6239SKiyoung Kim	  # Substitute the hardcoded libdirs into the rpath.
8070*735d6239SKiyoung Kim	  if test -n "$hardcode_libdir_separator" &&
8071*735d6239SKiyoung Kim	     test -n "$hardcode_libdirs"; then
8072*735d6239SKiyoung Kim	    libdir="$hardcode_libdirs"
8073*735d6239SKiyoung Kim	    if test -n "$hardcode_libdir_flag_spec_ld"; then
8074*735d6239SKiyoung Kim	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
8075*735d6239SKiyoung Kim	    else
8076*735d6239SKiyoung Kim	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
8077*735d6239SKiyoung Kim	    fi
8078*735d6239SKiyoung Kim	  fi
8079*735d6239SKiyoung Kim	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8080*735d6239SKiyoung Kim	    # We should set the runpath_var.
8081*735d6239SKiyoung Kim	    rpath=
8082*735d6239SKiyoung Kim	    for dir in $perm_rpath; do
8083*735d6239SKiyoung Kim	      func_append rpath "$dir:"
8084*735d6239SKiyoung Kim	    done
8085*735d6239SKiyoung Kim	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8086*735d6239SKiyoung Kim	  fi
8087*735d6239SKiyoung Kim	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8088*735d6239SKiyoung Kim	fi
8089*735d6239SKiyoung Kim
8090*735d6239SKiyoung Kim	shlibpath="$finalize_shlibpath"
8091*735d6239SKiyoung Kim	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8092*735d6239SKiyoung Kim	if test -n "$shlibpath"; then
8093*735d6239SKiyoung Kim	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8094*735d6239SKiyoung Kim	fi
8095*735d6239SKiyoung Kim
8096*735d6239SKiyoung Kim	# Get the real and link names of the library.
8097*735d6239SKiyoung Kim	eval shared_ext=\"$shrext_cmds\"
8098*735d6239SKiyoung Kim	eval library_names=\"$library_names_spec\"
8099*735d6239SKiyoung Kim	set dummy $library_names
8100*735d6239SKiyoung Kim	shift
8101*735d6239SKiyoung Kim	realname="$1"
8102*735d6239SKiyoung Kim	shift
8103*735d6239SKiyoung Kim
8104*735d6239SKiyoung Kim	if test -n "$soname_spec"; then
8105*735d6239SKiyoung Kim	  eval soname=\"$soname_spec\"
8106*735d6239SKiyoung Kim	else
8107*735d6239SKiyoung Kim	  soname="$realname"
8108*735d6239SKiyoung Kim	fi
8109*735d6239SKiyoung Kim	if test -z "$dlname"; then
8110*735d6239SKiyoung Kim	  dlname=$soname
8111*735d6239SKiyoung Kim	fi
8112*735d6239SKiyoung Kim
8113*735d6239SKiyoung Kim	lib="$output_objdir/$realname"
8114*735d6239SKiyoung Kim	linknames=
8115*735d6239SKiyoung Kim	for link
8116*735d6239SKiyoung Kim	do
8117*735d6239SKiyoung Kim	  func_append linknames " $link"
8118*735d6239SKiyoung Kim	done
8119*735d6239SKiyoung Kim
8120*735d6239SKiyoung Kim	# Use standard objects if they are pic
8121*735d6239SKiyoung Kim	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8122*735d6239SKiyoung Kim	test "X$libobjs" = "X " && libobjs=
8123*735d6239SKiyoung Kim
8124*735d6239SKiyoung Kim	delfiles=
8125*735d6239SKiyoung Kim	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8126*735d6239SKiyoung Kim	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8127*735d6239SKiyoung Kim	  export_symbols="$output_objdir/$libname.uexp"
8128*735d6239SKiyoung Kim	  func_append delfiles " $export_symbols"
8129*735d6239SKiyoung Kim	fi
8130*735d6239SKiyoung Kim
8131*735d6239SKiyoung Kim	orig_export_symbols=
8132*735d6239SKiyoung Kim	case $host_os in
8133*735d6239SKiyoung Kim	cygwin* | mingw* | cegcc*)
8134*735d6239SKiyoung Kim	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8135*735d6239SKiyoung Kim	    # exporting using user supplied symfile
8136*735d6239SKiyoung Kim	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8137*735d6239SKiyoung Kim	      # and it's NOT already a .def file. Must figure out
8138*735d6239SKiyoung Kim	      # which of the given symbols are data symbols and tag
8139*735d6239SKiyoung Kim	      # them as such. So, trigger use of export_symbols_cmds.
8140*735d6239SKiyoung Kim	      # export_symbols gets reassigned inside the "prepare
8141*735d6239SKiyoung Kim	      # the list of exported symbols" if statement, so the
8142*735d6239SKiyoung Kim	      # include_expsyms logic still works.
8143*735d6239SKiyoung Kim	      orig_export_symbols="$export_symbols"
8144*735d6239SKiyoung Kim	      export_symbols=
8145*735d6239SKiyoung Kim	      always_export_symbols=yes
8146*735d6239SKiyoung Kim	    fi
8147*735d6239SKiyoung Kim	  fi
8148*735d6239SKiyoung Kim	  ;;
8149*735d6239SKiyoung Kim	esac
8150*735d6239SKiyoung Kim
8151*735d6239SKiyoung Kim	# Prepare the list of exported symbols
8152*735d6239SKiyoung Kim	if test -z "$export_symbols"; then
8153*735d6239SKiyoung Kim	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8154*735d6239SKiyoung Kim	    func_verbose "generating symbol list for \`$libname.la'"
8155*735d6239SKiyoung Kim	    export_symbols="$output_objdir/$libname.exp"
8156*735d6239SKiyoung Kim	    $opt_dry_run || $RM $export_symbols
8157*735d6239SKiyoung Kim	    cmds=$export_symbols_cmds
8158*735d6239SKiyoung Kim	    save_ifs="$IFS"; IFS='~'
8159*735d6239SKiyoung Kim	    for cmd1 in $cmds; do
8160*735d6239SKiyoung Kim	      IFS="$save_ifs"
8161*735d6239SKiyoung Kim	      # Take the normal branch if the nm_file_list_spec branch
8162*735d6239SKiyoung Kim	      # doesn't work or if tool conversion is not needed.
8163*735d6239SKiyoung Kim	      case $nm_file_list_spec~$to_tool_file_cmd in
8164*735d6239SKiyoung Kim		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8165*735d6239SKiyoung Kim		  try_normal_branch=yes
8166*735d6239SKiyoung Kim		  eval cmd=\"$cmd1\"
8167*735d6239SKiyoung Kim		  func_len " $cmd"
8168*735d6239SKiyoung Kim		  len=$func_len_result
8169*735d6239SKiyoung Kim		  ;;
8170*735d6239SKiyoung Kim		*)
8171*735d6239SKiyoung Kim		  try_normal_branch=no
8172*735d6239SKiyoung Kim		  ;;
8173*735d6239SKiyoung Kim	      esac
8174*735d6239SKiyoung Kim	      if test "$try_normal_branch" = yes \
8175*735d6239SKiyoung Kim		 && { test "$len" -lt "$max_cmd_len" \
8176*735d6239SKiyoung Kim		      || test "$max_cmd_len" -le -1; }
8177*735d6239SKiyoung Kim	      then
8178*735d6239SKiyoung Kim		func_show_eval "$cmd" 'exit $?'
8179*735d6239SKiyoung Kim		skipped_export=false
8180*735d6239SKiyoung Kim	      elif test -n "$nm_file_list_spec"; then
8181*735d6239SKiyoung Kim		func_basename "$output"
8182*735d6239SKiyoung Kim		output_la=$func_basename_result
8183*735d6239SKiyoung Kim		save_libobjs=$libobjs
8184*735d6239SKiyoung Kim		save_output=$output
8185*735d6239SKiyoung Kim		output=${output_objdir}/${output_la}.nm
8186*735d6239SKiyoung Kim		func_to_tool_file "$output"
8187*735d6239SKiyoung Kim		libobjs=$nm_file_list_spec$func_to_tool_file_result
8188*735d6239SKiyoung Kim		func_append delfiles " $output"
8189*735d6239SKiyoung Kim		func_verbose "creating $NM input file list: $output"
8190*735d6239SKiyoung Kim		for obj in $save_libobjs; do
8191*735d6239SKiyoung Kim		  func_to_tool_file "$obj"
8192*735d6239SKiyoung Kim		  $ECHO "$func_to_tool_file_result"
8193*735d6239SKiyoung Kim		done > "$output"
8194*735d6239SKiyoung Kim		eval cmd=\"$cmd1\"
8195*735d6239SKiyoung Kim		func_show_eval "$cmd" 'exit $?'
8196*735d6239SKiyoung Kim		output=$save_output
8197*735d6239SKiyoung Kim		libobjs=$save_libobjs
8198*735d6239SKiyoung Kim		skipped_export=false
8199*735d6239SKiyoung Kim	      else
8200*735d6239SKiyoung Kim		# The command line is too long to execute in one step.
8201*735d6239SKiyoung Kim		func_verbose "using reloadable object file for export list..."
8202*735d6239SKiyoung Kim		skipped_export=:
8203*735d6239SKiyoung Kim		# Break out early, otherwise skipped_export may be
8204*735d6239SKiyoung Kim		# set to false by a later but shorter cmd.
8205*735d6239SKiyoung Kim		break
8206*735d6239SKiyoung Kim	      fi
8207*735d6239SKiyoung Kim	    done
8208*735d6239SKiyoung Kim	    IFS="$save_ifs"
8209*735d6239SKiyoung Kim	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8210*735d6239SKiyoung Kim	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8211*735d6239SKiyoung Kim	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8212*735d6239SKiyoung Kim	    fi
8213*735d6239SKiyoung Kim	  fi
8214*735d6239SKiyoung Kim	fi
8215*735d6239SKiyoung Kim
8216*735d6239SKiyoung Kim	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8217*735d6239SKiyoung Kim	  tmp_export_symbols="$export_symbols"
8218*735d6239SKiyoung Kim	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8219*735d6239SKiyoung Kim	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8220*735d6239SKiyoung Kim	fi
8221*735d6239SKiyoung Kim
8222*735d6239SKiyoung Kim	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8223*735d6239SKiyoung Kim	  # The given exports_symbols file has to be filtered, so filter it.
8224*735d6239SKiyoung Kim	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8225*735d6239SKiyoung Kim	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8226*735d6239SKiyoung Kim	  # 's' commands which not all seds can handle. GNU sed should be fine
8227*735d6239SKiyoung Kim	  # though. Also, the filter scales superlinearly with the number of
8228*735d6239SKiyoung Kim	  # global variables. join(1) would be nice here, but unfortunately
8229*735d6239SKiyoung Kim	  # isn't a blessed tool.
8230*735d6239SKiyoung Kim	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8231*735d6239SKiyoung Kim	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8232*735d6239SKiyoung Kim	  export_symbols=$output_objdir/$libname.def
8233*735d6239SKiyoung Kim	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8234*735d6239SKiyoung Kim	fi
8235*735d6239SKiyoung Kim
8236*735d6239SKiyoung Kim	tmp_deplibs=
8237*735d6239SKiyoung Kim	inst_prefix_arg=
8238*735d6239SKiyoung Kim	for test_deplib in $deplibs; do
8239*735d6239SKiyoung Kim	  case " $convenience " in
8240*735d6239SKiyoung Kim	  *" $test_deplib "*) ;;
8241*735d6239SKiyoung Kim	  *)
8242*735d6239SKiyoung Kim	    if test -n "$inst_prefix_dir" && test "$inst_prefix_dir" != "/" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then
8243*735d6239SKiyoung Kim	    	func_append inst_prefix_arg " $test_deplib"
8244*735d6239SKiyoung Kim	    else
8245*735d6239SKiyoung Kim		func_append tmp_deplibs " $test_deplib"
8246*735d6239SKiyoung Kim	    fi
8247*735d6239SKiyoung Kim	    ;;
8248*735d6239SKiyoung Kim	  esac
8249*735d6239SKiyoung Kim	done
8250*735d6239SKiyoung Kim	deplibs="$tmp_deplibs"
8251*735d6239SKiyoung Kim	if test -n "$inst_prefix_arg"; then
8252*735d6239SKiyoung Kim		deplibs="$inst_prefix_arg $deplibs"
8253*735d6239SKiyoung Kim	fi
8254*735d6239SKiyoung Kim
8255*735d6239SKiyoung Kim	if test -n "$convenience"; then
8256*735d6239SKiyoung Kim	  if test -n "$whole_archive_flag_spec" &&
8257*735d6239SKiyoung Kim	    test "$compiler_needs_object" = yes &&
8258*735d6239SKiyoung Kim	    test -z "$libobjs"; then
8259*735d6239SKiyoung Kim	    # extract the archives, so we have objects to list.
8260*735d6239SKiyoung Kim	    # TODO: could optimize this to just extract one archive.
8261*735d6239SKiyoung Kim	    whole_archive_flag_spec=
8262*735d6239SKiyoung Kim	  fi
8263*735d6239SKiyoung Kim	  if test -n "$whole_archive_flag_spec"; then
8264*735d6239SKiyoung Kim	    save_libobjs=$libobjs
8265*735d6239SKiyoung Kim	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8266*735d6239SKiyoung Kim	    test "X$libobjs" = "X " && libobjs=
8267*735d6239SKiyoung Kim	  else
8268*735d6239SKiyoung Kim	    gentop="$output_objdir/${outputname}x"
8269*735d6239SKiyoung Kim	    func_append generated " $gentop"
8270*735d6239SKiyoung Kim
8271*735d6239SKiyoung Kim	    func_extract_archives $gentop $convenience
8272*735d6239SKiyoung Kim	    func_append libobjs " $func_extract_archives_result"
8273*735d6239SKiyoung Kim	    test "X$libobjs" = "X " && libobjs=
8274*735d6239SKiyoung Kim	  fi
8275*735d6239SKiyoung Kim	fi
8276*735d6239SKiyoung Kim
8277*735d6239SKiyoung Kim	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8278*735d6239SKiyoung Kim	  eval flag=\"$thread_safe_flag_spec\"
8279*735d6239SKiyoung Kim	  func_append linker_flags " $flag"
8280*735d6239SKiyoung Kim	fi
8281*735d6239SKiyoung Kim
8282*735d6239SKiyoung Kim	# Make a backup of the uninstalled library when relinking
8283*735d6239SKiyoung Kim	if test "$opt_mode" = relink; then
8284*735d6239SKiyoung Kim	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8285*735d6239SKiyoung Kim	fi
8286*735d6239SKiyoung Kim
8287*735d6239SKiyoung Kim	# Do each of the archive commands.
8288*735d6239SKiyoung Kim	if test "$module" = yes && test -n "$module_cmds" ; then
8289*735d6239SKiyoung Kim	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8290*735d6239SKiyoung Kim	    eval test_cmds=\"$module_expsym_cmds\"
8291*735d6239SKiyoung Kim	    cmds=$module_expsym_cmds
8292*735d6239SKiyoung Kim	  else
8293*735d6239SKiyoung Kim	    eval test_cmds=\"$module_cmds\"
8294*735d6239SKiyoung Kim	    cmds=$module_cmds
8295*735d6239SKiyoung Kim	  fi
8296*735d6239SKiyoung Kim	else
8297*735d6239SKiyoung Kim	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8298*735d6239SKiyoung Kim	    eval test_cmds=\"$archive_expsym_cmds\"
8299*735d6239SKiyoung Kim	    cmds=$archive_expsym_cmds
8300*735d6239SKiyoung Kim	  else
8301*735d6239SKiyoung Kim	    eval test_cmds=\"$archive_cmds\"
8302*735d6239SKiyoung Kim	    cmds=$archive_cmds
8303*735d6239SKiyoung Kim	  fi
8304*735d6239SKiyoung Kim	fi
8305*735d6239SKiyoung Kim
8306*735d6239SKiyoung Kim	if test "X$skipped_export" != "X:" &&
8307*735d6239SKiyoung Kim	   func_len " $test_cmds" &&
8308*735d6239SKiyoung Kim	   len=$func_len_result &&
8309*735d6239SKiyoung Kim	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8310*735d6239SKiyoung Kim	  :
8311*735d6239SKiyoung Kim	else
8312*735d6239SKiyoung Kim	  # The command line is too long to link in one step, link piecewise
8313*735d6239SKiyoung Kim	  # or, if using GNU ld and skipped_export is not :, use a linker
8314*735d6239SKiyoung Kim	  # script.
8315*735d6239SKiyoung Kim
8316*735d6239SKiyoung Kim	  # Save the value of $output and $libobjs because we want to
8317*735d6239SKiyoung Kim	  # use them later.  If we have whole_archive_flag_spec, we
8318*735d6239SKiyoung Kim	  # want to use save_libobjs as it was before
8319*735d6239SKiyoung Kim	  # whole_archive_flag_spec was expanded, because we can't
8320*735d6239SKiyoung Kim	  # assume the linker understands whole_archive_flag_spec.
8321*735d6239SKiyoung Kim	  # This may have to be revisited, in case too many
8322*735d6239SKiyoung Kim	  # convenience libraries get linked in and end up exceeding
8323*735d6239SKiyoung Kim	  # the spec.
8324*735d6239SKiyoung Kim	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8325*735d6239SKiyoung Kim	    save_libobjs=$libobjs
8326*735d6239SKiyoung Kim	  fi
8327*735d6239SKiyoung Kim	  save_output=$output
8328*735d6239SKiyoung Kim	  func_basename "$output"
8329*735d6239SKiyoung Kim	  output_la=$func_basename_result
8330*735d6239SKiyoung Kim
8331*735d6239SKiyoung Kim	  # Clear the reloadable object creation command queue and
8332*735d6239SKiyoung Kim	  # initialize k to one.
8333*735d6239SKiyoung Kim	  test_cmds=
8334*735d6239SKiyoung Kim	  concat_cmds=
8335*735d6239SKiyoung Kim	  objlist=
8336*735d6239SKiyoung Kim	  last_robj=
8337*735d6239SKiyoung Kim	  k=1
8338*735d6239SKiyoung Kim
8339*735d6239SKiyoung Kim	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8340*735d6239SKiyoung Kim	    output=${output_objdir}/${output_la}.lnkscript
8341*735d6239SKiyoung Kim	    func_verbose "creating GNU ld script: $output"
8342*735d6239SKiyoung Kim	    echo 'INPUT (' > $output
8343*735d6239SKiyoung Kim	    for obj in $save_libobjs
8344*735d6239SKiyoung Kim	    do
8345*735d6239SKiyoung Kim	      func_to_tool_file "$obj"
8346*735d6239SKiyoung Kim	      $ECHO "$func_to_tool_file_result" >> $output
8347*735d6239SKiyoung Kim	    done
8348*735d6239SKiyoung Kim	    echo ')' >> $output
8349*735d6239SKiyoung Kim	    func_append delfiles " $output"
8350*735d6239SKiyoung Kim	    func_to_tool_file "$output"
8351*735d6239SKiyoung Kim	    output=$func_to_tool_file_result
8352*735d6239SKiyoung Kim	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8353*735d6239SKiyoung Kim	    output=${output_objdir}/${output_la}.lnk
8354*735d6239SKiyoung Kim	    func_verbose "creating linker input file list: $output"
8355*735d6239SKiyoung Kim	    : > $output
8356*735d6239SKiyoung Kim	    set x $save_libobjs
8357*735d6239SKiyoung Kim	    shift
8358*735d6239SKiyoung Kim	    firstobj=
8359*735d6239SKiyoung Kim	    if test "$compiler_needs_object" = yes; then
8360*735d6239SKiyoung Kim	      firstobj="$1 "
8361*735d6239SKiyoung Kim	      shift
8362*735d6239SKiyoung Kim	    fi
8363*735d6239SKiyoung Kim	    for obj
8364*735d6239SKiyoung Kim	    do
8365*735d6239SKiyoung Kim	      func_to_tool_file "$obj"
8366*735d6239SKiyoung Kim	      $ECHO "$func_to_tool_file_result" >> $output
8367*735d6239SKiyoung Kim	    done
8368*735d6239SKiyoung Kim	    func_append delfiles " $output"
8369*735d6239SKiyoung Kim	    func_to_tool_file "$output"
8370*735d6239SKiyoung Kim	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8371*735d6239SKiyoung Kim	  else
8372*735d6239SKiyoung Kim	    if test -n "$save_libobjs"; then
8373*735d6239SKiyoung Kim	      func_verbose "creating reloadable object files..."
8374*735d6239SKiyoung Kim	      output=$output_objdir/$output_la-${k}.$objext
8375*735d6239SKiyoung Kim	      eval test_cmds=\"$reload_cmds\"
8376*735d6239SKiyoung Kim	      func_len " $test_cmds"
8377*735d6239SKiyoung Kim	      len0=$func_len_result
8378*735d6239SKiyoung Kim	      len=$len0
8379*735d6239SKiyoung Kim
8380*735d6239SKiyoung Kim	      # Loop over the list of objects to be linked.
8381*735d6239SKiyoung Kim	      for obj in $save_libobjs
8382*735d6239SKiyoung Kim	      do
8383*735d6239SKiyoung Kim		func_len " $obj"
8384*735d6239SKiyoung Kim		func_arith $len + $func_len_result
8385*735d6239SKiyoung Kim		len=$func_arith_result
8386*735d6239SKiyoung Kim		if test "X$objlist" = X ||
8387*735d6239SKiyoung Kim		   test "$len" -lt "$max_cmd_len"; then
8388*735d6239SKiyoung Kim		  func_append objlist " $obj"
8389*735d6239SKiyoung Kim		else
8390*735d6239SKiyoung Kim		  # The command $test_cmds is almost too long, add a
8391*735d6239SKiyoung Kim		  # command to the queue.
8392*735d6239SKiyoung Kim		  if test "$k" -eq 1 ; then
8393*735d6239SKiyoung Kim		    # The first file doesn't have a previous command to add.
8394*735d6239SKiyoung Kim		    reload_objs=$objlist
8395*735d6239SKiyoung Kim		    eval concat_cmds=\"$reload_cmds\"
8396*735d6239SKiyoung Kim		  else
8397*735d6239SKiyoung Kim		    # All subsequent reloadable object files will link in
8398*735d6239SKiyoung Kim		    # the last one created.
8399*735d6239SKiyoung Kim		    reload_objs="$objlist $last_robj"
8400*735d6239SKiyoung Kim		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8401*735d6239SKiyoung Kim		  fi
8402*735d6239SKiyoung Kim		  last_robj=$output_objdir/$output_la-${k}.$objext
8403*735d6239SKiyoung Kim		  func_arith $k + 1
8404*735d6239SKiyoung Kim		  k=$func_arith_result
8405*735d6239SKiyoung Kim		  output=$output_objdir/$output_la-${k}.$objext
8406*735d6239SKiyoung Kim		  objlist=" $obj"
8407*735d6239SKiyoung Kim		  func_len " $last_robj"
8408*735d6239SKiyoung Kim		  func_arith $len0 + $func_len_result
8409*735d6239SKiyoung Kim		  len=$func_arith_result
8410*735d6239SKiyoung Kim		fi
8411*735d6239SKiyoung Kim	      done
8412*735d6239SKiyoung Kim	      # Handle the remaining objects by creating one last
8413*735d6239SKiyoung Kim	      # reloadable object file.  All subsequent reloadable object
8414*735d6239SKiyoung Kim	      # files will link in the last one created.
8415*735d6239SKiyoung Kim	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8416*735d6239SKiyoung Kim	      reload_objs="$objlist $last_robj"
8417*735d6239SKiyoung Kim	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8418*735d6239SKiyoung Kim	      if test -n "$last_robj"; then
8419*735d6239SKiyoung Kim	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8420*735d6239SKiyoung Kim	      fi
8421*735d6239SKiyoung Kim	      func_append delfiles " $output"
8422*735d6239SKiyoung Kim
8423*735d6239SKiyoung Kim	    else
8424*735d6239SKiyoung Kim	      output=
8425*735d6239SKiyoung Kim	    fi
8426*735d6239SKiyoung Kim
8427*735d6239SKiyoung Kim	    if ${skipped_export-false}; then
8428*735d6239SKiyoung Kim	      func_verbose "generating symbol list for \`$libname.la'"
8429*735d6239SKiyoung Kim	      export_symbols="$output_objdir/$libname.exp"
8430*735d6239SKiyoung Kim	      $opt_dry_run || $RM $export_symbols
8431*735d6239SKiyoung Kim	      libobjs=$output
8432*735d6239SKiyoung Kim	      # Append the command to create the export file.
8433*735d6239SKiyoung Kim	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8434*735d6239SKiyoung Kim	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8435*735d6239SKiyoung Kim	      if test -n "$last_robj"; then
8436*735d6239SKiyoung Kim		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8437*735d6239SKiyoung Kim	      fi
8438*735d6239SKiyoung Kim	    fi
8439*735d6239SKiyoung Kim
8440*735d6239SKiyoung Kim	    test -n "$save_libobjs" &&
8441*735d6239SKiyoung Kim	      func_verbose "creating a temporary reloadable object file: $output"
8442*735d6239SKiyoung Kim
8443*735d6239SKiyoung Kim	    # Loop through the commands generated above and execute them.
8444*735d6239SKiyoung Kim	    save_ifs="$IFS"; IFS='~'
8445*735d6239SKiyoung Kim	    for cmd in $concat_cmds; do
8446*735d6239SKiyoung Kim	      IFS="$save_ifs"
8447*735d6239SKiyoung Kim	      $opt_silent || {
8448*735d6239SKiyoung Kim		  func_quote_for_expand "$cmd"
8449*735d6239SKiyoung Kim		  eval "func_echo $func_quote_for_expand_result"
8450*735d6239SKiyoung Kim	      }
8451*735d6239SKiyoung Kim	      $opt_dry_run || eval "$cmd" || {
8452*735d6239SKiyoung Kim		lt_exit=$?
8453*735d6239SKiyoung Kim
8454*735d6239SKiyoung Kim		# Restore the uninstalled library and exit
8455*735d6239SKiyoung Kim		if test "$opt_mode" = relink; then
8456*735d6239SKiyoung Kim		  ( cd "$output_objdir" && \
8457*735d6239SKiyoung Kim		    $RM "${realname}T" && \
8458*735d6239SKiyoung Kim		    $MV "${realname}U" "$realname" )
8459*735d6239SKiyoung Kim		fi
8460*735d6239SKiyoung Kim
8461*735d6239SKiyoung Kim		exit $lt_exit
8462*735d6239SKiyoung Kim	      }
8463*735d6239SKiyoung Kim	    done
8464*735d6239SKiyoung Kim	    IFS="$save_ifs"
8465*735d6239SKiyoung Kim
8466*735d6239SKiyoung Kim	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8467*735d6239SKiyoung Kim	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8468*735d6239SKiyoung Kim	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8469*735d6239SKiyoung Kim	    fi
8470*735d6239SKiyoung Kim	  fi
8471*735d6239SKiyoung Kim
8472*735d6239SKiyoung Kim          if ${skipped_export-false}; then
8473*735d6239SKiyoung Kim	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8474*735d6239SKiyoung Kim	      tmp_export_symbols="$export_symbols"
8475*735d6239SKiyoung Kim	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8476*735d6239SKiyoung Kim	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8477*735d6239SKiyoung Kim	    fi
8478*735d6239SKiyoung Kim
8479*735d6239SKiyoung Kim	    if test -n "$orig_export_symbols"; then
8480*735d6239SKiyoung Kim	      # The given exports_symbols file has to be filtered, so filter it.
8481*735d6239SKiyoung Kim	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8482*735d6239SKiyoung Kim	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8483*735d6239SKiyoung Kim	      # 's' commands which not all seds can handle. GNU sed should be fine
8484*735d6239SKiyoung Kim	      # though. Also, the filter scales superlinearly with the number of
8485*735d6239SKiyoung Kim	      # global variables. join(1) would be nice here, but unfortunately
8486*735d6239SKiyoung Kim	      # isn't a blessed tool.
8487*735d6239SKiyoung Kim	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8488*735d6239SKiyoung Kim	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8489*735d6239SKiyoung Kim	      export_symbols=$output_objdir/$libname.def
8490*735d6239SKiyoung Kim	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8491*735d6239SKiyoung Kim	    fi
8492*735d6239SKiyoung Kim	  fi
8493*735d6239SKiyoung Kim
8494*735d6239SKiyoung Kim	  libobjs=$output
8495*735d6239SKiyoung Kim	  # Restore the value of output.
8496*735d6239SKiyoung Kim	  output=$save_output
8497*735d6239SKiyoung Kim
8498*735d6239SKiyoung Kim	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8499*735d6239SKiyoung Kim	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8500*735d6239SKiyoung Kim	    test "X$libobjs" = "X " && libobjs=
8501*735d6239SKiyoung Kim	  fi
8502*735d6239SKiyoung Kim	  # Expand the library linking commands again to reset the
8503*735d6239SKiyoung Kim	  # value of $libobjs for piecewise linking.
8504*735d6239SKiyoung Kim
8505*735d6239SKiyoung Kim	  # Do each of the archive commands.
8506*735d6239SKiyoung Kim	  if test "$module" = yes && test -n "$module_cmds" ; then
8507*735d6239SKiyoung Kim	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8508*735d6239SKiyoung Kim	      cmds=$module_expsym_cmds
8509*735d6239SKiyoung Kim	    else
8510*735d6239SKiyoung Kim	      cmds=$module_cmds
8511*735d6239SKiyoung Kim	    fi
8512*735d6239SKiyoung Kim	  else
8513*735d6239SKiyoung Kim	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8514*735d6239SKiyoung Kim	      cmds=$archive_expsym_cmds
8515*735d6239SKiyoung Kim	    else
8516*735d6239SKiyoung Kim	      cmds=$archive_cmds
8517*735d6239SKiyoung Kim	    fi
8518*735d6239SKiyoung Kim	  fi
8519*735d6239SKiyoung Kim	fi
8520*735d6239SKiyoung Kim
8521*735d6239SKiyoung Kim	if test -n "$delfiles"; then
8522*735d6239SKiyoung Kim	  # Append the command to remove temporary files to $cmds.
8523*735d6239SKiyoung Kim	  eval cmds=\"\$cmds~\$RM $delfiles\"
8524*735d6239SKiyoung Kim	fi
8525*735d6239SKiyoung Kim
8526*735d6239SKiyoung Kim	# Add any objects from preloaded convenience libraries
8527*735d6239SKiyoung Kim	if test -n "$dlprefiles"; then
8528*735d6239SKiyoung Kim	  gentop="$output_objdir/${outputname}x"
8529*735d6239SKiyoung Kim	  func_append generated " $gentop"
8530*735d6239SKiyoung Kim
8531*735d6239SKiyoung Kim	  func_extract_archives $gentop $dlprefiles
8532*735d6239SKiyoung Kim	  func_append libobjs " $func_extract_archives_result"
8533*735d6239SKiyoung Kim	  test "X$libobjs" = "X " && libobjs=
8534*735d6239SKiyoung Kim	fi
8535*735d6239SKiyoung Kim
8536*735d6239SKiyoung Kim	save_ifs="$IFS"; IFS='~'
8537*735d6239SKiyoung Kim	for cmd in $cmds; do
8538*735d6239SKiyoung Kim	  IFS="$save_ifs"
8539*735d6239SKiyoung Kim	  eval cmd=\"$cmd\"
8540*735d6239SKiyoung Kim	  $opt_silent || {
8541*735d6239SKiyoung Kim	    func_quote_for_expand "$cmd"
8542*735d6239SKiyoung Kim	    eval "func_echo $func_quote_for_expand_result"
8543*735d6239SKiyoung Kim	  }
8544*735d6239SKiyoung Kim	  $opt_dry_run || eval "$cmd" || {
8545*735d6239SKiyoung Kim	    lt_exit=$?
8546*735d6239SKiyoung Kim
8547*735d6239SKiyoung Kim	    # Restore the uninstalled library and exit
8548*735d6239SKiyoung Kim	    if test "$opt_mode" = relink; then
8549*735d6239SKiyoung Kim	      ( cd "$output_objdir" && \
8550*735d6239SKiyoung Kim	        $RM "${realname}T" && \
8551*735d6239SKiyoung Kim		$MV "${realname}U" "$realname" )
8552*735d6239SKiyoung Kim	    fi
8553*735d6239SKiyoung Kim
8554*735d6239SKiyoung Kim	    exit $lt_exit
8555*735d6239SKiyoung Kim	  }
8556*735d6239SKiyoung Kim	done
8557*735d6239SKiyoung Kim	IFS="$save_ifs"
8558*735d6239SKiyoung Kim
8559*735d6239SKiyoung Kim	# Restore the uninstalled library and exit
8560*735d6239SKiyoung Kim	if test "$opt_mode" = relink; then
8561*735d6239SKiyoung Kim	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8562*735d6239SKiyoung Kim
8563*735d6239SKiyoung Kim	  if test -n "$convenience"; then
8564*735d6239SKiyoung Kim	    if test -z "$whole_archive_flag_spec"; then
8565*735d6239SKiyoung Kim	      func_show_eval '${RM}r "$gentop"'
8566*735d6239SKiyoung Kim	    fi
8567*735d6239SKiyoung Kim	  fi
8568*735d6239SKiyoung Kim
8569*735d6239SKiyoung Kim	  exit $EXIT_SUCCESS
8570*735d6239SKiyoung Kim	fi
8571*735d6239SKiyoung Kim
8572*735d6239SKiyoung Kim	# Create links to the real library.
8573*735d6239SKiyoung Kim	for linkname in $linknames; do
8574*735d6239SKiyoung Kim	  if test "$realname" != "$linkname"; then
8575*735d6239SKiyoung Kim	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8576*735d6239SKiyoung Kim	  fi
8577*735d6239SKiyoung Kim	done
8578*735d6239SKiyoung Kim
8579*735d6239SKiyoung Kim	# If -module or -export-dynamic was specified, set the dlname.
8580*735d6239SKiyoung Kim	if test "$module" = yes || test "$export_dynamic" = yes; then
8581*735d6239SKiyoung Kim	  # On all known operating systems, these are identical.
8582*735d6239SKiyoung Kim	  dlname="$soname"
8583*735d6239SKiyoung Kim	fi
8584*735d6239SKiyoung Kim      fi
8585*735d6239SKiyoung Kim      ;;
8586*735d6239SKiyoung Kim
8587*735d6239SKiyoung Kim    obj)
8588*735d6239SKiyoung Kim      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8589*735d6239SKiyoung Kim	func_warning "\`-dlopen' is ignored for objects"
8590*735d6239SKiyoung Kim      fi
8591*735d6239SKiyoung Kim
8592*735d6239SKiyoung Kim      case " $deplibs" in
8593*735d6239SKiyoung Kim      *\ -l* | *\ -L*)
8594*735d6239SKiyoung Kim	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8595*735d6239SKiyoung Kim      esac
8596*735d6239SKiyoung Kim
8597*735d6239SKiyoung Kim      test -n "$rpath" && \
8598*735d6239SKiyoung Kim	func_warning "\`-rpath' is ignored for objects"
8599*735d6239SKiyoung Kim
8600*735d6239SKiyoung Kim      test -n "$xrpath" && \
8601*735d6239SKiyoung Kim	func_warning "\`-R' is ignored for objects"
8602*735d6239SKiyoung Kim
8603*735d6239SKiyoung Kim      test -n "$vinfo" && \
8604*735d6239SKiyoung Kim	func_warning "\`-version-info' is ignored for objects"
8605*735d6239SKiyoung Kim
8606*735d6239SKiyoung Kim      test -n "$release" && \
8607*735d6239SKiyoung Kim	func_warning "\`-release' is ignored for objects"
8608*735d6239SKiyoung Kim
8609*735d6239SKiyoung Kim      case $output in
8610*735d6239SKiyoung Kim      *.lo)
8611*735d6239SKiyoung Kim	test -n "$objs$old_deplibs" && \
8612*735d6239SKiyoung Kim	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8613*735d6239SKiyoung Kim
8614*735d6239SKiyoung Kim	libobj=$output
8615*735d6239SKiyoung Kim	func_lo2o "$libobj"
8616*735d6239SKiyoung Kim	obj=$func_lo2o_result
8617*735d6239SKiyoung Kim	;;
8618*735d6239SKiyoung Kim      *)
8619*735d6239SKiyoung Kim	libobj=
8620*735d6239SKiyoung Kim	obj="$output"
8621*735d6239SKiyoung Kim	;;
8622*735d6239SKiyoung Kim      esac
8623*735d6239SKiyoung Kim
8624*735d6239SKiyoung Kim      # Delete the old objects.
8625*735d6239SKiyoung Kim      $opt_dry_run || $RM $obj $libobj
8626*735d6239SKiyoung Kim
8627*735d6239SKiyoung Kim      # Objects from convenience libraries.  This assumes
8628*735d6239SKiyoung Kim      # single-version convenience libraries.  Whenever we create
8629*735d6239SKiyoung Kim      # different ones for PIC/non-PIC, this we'll have to duplicate
8630*735d6239SKiyoung Kim      # the extraction.
8631*735d6239SKiyoung Kim      reload_conv_objs=
8632*735d6239SKiyoung Kim      gentop=
8633*735d6239SKiyoung Kim      # reload_cmds runs $LD directly, so let us get rid of
8634*735d6239SKiyoung Kim      # -Wl from whole_archive_flag_spec and hope we can get by with
8635*735d6239SKiyoung Kim      # turning comma into space..
8636*735d6239SKiyoung Kim      wl=
8637*735d6239SKiyoung Kim
8638*735d6239SKiyoung Kim      if test -n "$convenience"; then
8639*735d6239SKiyoung Kim	if test -n "$whole_archive_flag_spec"; then
8640*735d6239SKiyoung Kim	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8641*735d6239SKiyoung Kim	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8642*735d6239SKiyoung Kim	else
8643*735d6239SKiyoung Kim	  gentop="$output_objdir/${obj}x"
8644*735d6239SKiyoung Kim	  func_append generated " $gentop"
8645*735d6239SKiyoung Kim
8646*735d6239SKiyoung Kim	  func_extract_archives $gentop $convenience
8647*735d6239SKiyoung Kim	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8648*735d6239SKiyoung Kim	fi
8649*735d6239SKiyoung Kim      fi
8650*735d6239SKiyoung Kim
8651*735d6239SKiyoung Kim      # If we're not building shared, we need to use non_pic_objs
8652*735d6239SKiyoung Kim      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8653*735d6239SKiyoung Kim
8654*735d6239SKiyoung Kim      # Create the old-style object.
8655*735d6239SKiyoung Kim      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8656*735d6239SKiyoung Kim
8657*735d6239SKiyoung Kim      output="$obj"
8658*735d6239SKiyoung Kim      func_execute_cmds "$reload_cmds" 'exit $?'
8659*735d6239SKiyoung Kim
8660*735d6239SKiyoung Kim      # Exit if we aren't doing a library object file.
8661*735d6239SKiyoung Kim      if test -z "$libobj"; then
8662*735d6239SKiyoung Kim	if test -n "$gentop"; then
8663*735d6239SKiyoung Kim	  func_show_eval '${RM}r "$gentop"'
8664*735d6239SKiyoung Kim	fi
8665*735d6239SKiyoung Kim
8666*735d6239SKiyoung Kim	exit $EXIT_SUCCESS
8667*735d6239SKiyoung Kim      fi
8668*735d6239SKiyoung Kim
8669*735d6239SKiyoung Kim      if test "$build_libtool_libs" != yes; then
8670*735d6239SKiyoung Kim	if test -n "$gentop"; then
8671*735d6239SKiyoung Kim	  func_show_eval '${RM}r "$gentop"'
8672*735d6239SKiyoung Kim	fi
8673*735d6239SKiyoung Kim
8674*735d6239SKiyoung Kim	# Create an invalid libtool object if no PIC, so that we don't
8675*735d6239SKiyoung Kim	# accidentally link it into a program.
8676*735d6239SKiyoung Kim	# $show "echo timestamp > $libobj"
8677*735d6239SKiyoung Kim	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8678*735d6239SKiyoung Kim	exit $EXIT_SUCCESS
8679*735d6239SKiyoung Kim      fi
8680*735d6239SKiyoung Kim
8681*735d6239SKiyoung Kim      if test -n "$pic_flag" || test "$pic_mode" != default; then
8682*735d6239SKiyoung Kim	# Only do commands if we really have different PIC objects.
8683*735d6239SKiyoung Kim	reload_objs="$libobjs $reload_conv_objs"
8684*735d6239SKiyoung Kim	output="$libobj"
8685*735d6239SKiyoung Kim	func_execute_cmds "$reload_cmds" 'exit $?'
8686*735d6239SKiyoung Kim      fi
8687*735d6239SKiyoung Kim
8688*735d6239SKiyoung Kim      if test -n "$gentop"; then
8689*735d6239SKiyoung Kim	func_show_eval '${RM}r "$gentop"'
8690*735d6239SKiyoung Kim      fi
8691*735d6239SKiyoung Kim
8692*735d6239SKiyoung Kim      exit $EXIT_SUCCESS
8693*735d6239SKiyoung Kim      ;;
8694*735d6239SKiyoung Kim
8695*735d6239SKiyoung Kim    prog)
8696*735d6239SKiyoung Kim      case $host in
8697*735d6239SKiyoung Kim	*cygwin*) func_stripname '' '.exe' "$output"
8698*735d6239SKiyoung Kim	          output=$func_stripname_result.exe;;
8699*735d6239SKiyoung Kim      esac
8700*735d6239SKiyoung Kim      test -n "$vinfo" && \
8701*735d6239SKiyoung Kim	func_warning "\`-version-info' is ignored for programs"
8702*735d6239SKiyoung Kim
8703*735d6239SKiyoung Kim      test -n "$release" && \
8704*735d6239SKiyoung Kim	func_warning "\`-release' is ignored for programs"
8705*735d6239SKiyoung Kim
8706*735d6239SKiyoung Kim      test "$preload" = yes \
8707*735d6239SKiyoung Kim        && test "$dlopen_support" = unknown \
8708*735d6239SKiyoung Kim	&& test "$dlopen_self" = unknown \
8709*735d6239SKiyoung Kim	&& test "$dlopen_self_static" = unknown && \
8710*735d6239SKiyoung Kim	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8711*735d6239SKiyoung Kim
8712*735d6239SKiyoung Kim      case $host in
8713*735d6239SKiyoung Kim      *-*-rhapsody* | *-*-darwin1.[012])
8714*735d6239SKiyoung Kim	# On Rhapsody replace the C library is the System framework
8715*735d6239SKiyoung Kim	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8716*735d6239SKiyoung Kim	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8717*735d6239SKiyoung Kim	;;
8718*735d6239SKiyoung Kim      esac
8719*735d6239SKiyoung Kim
8720*735d6239SKiyoung Kim      case $host in
8721*735d6239SKiyoung Kim      *-*-darwin*)
8722*735d6239SKiyoung Kim	# Don't allow lazy linking, it breaks C++ global constructors
8723*735d6239SKiyoung Kim	# But is supposedly fixed on 10.4 or later (yay!).
8724*735d6239SKiyoung Kim	if test "$tagname" = CXX ; then
8725*735d6239SKiyoung Kim	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8726*735d6239SKiyoung Kim	    10.[0123])
8727*735d6239SKiyoung Kim	      func_append compile_command " ${wl}-bind_at_load"
8728*735d6239SKiyoung Kim	      func_append finalize_command " ${wl}-bind_at_load"
8729*735d6239SKiyoung Kim	    ;;
8730*735d6239SKiyoung Kim	  esac
8731*735d6239SKiyoung Kim	fi
8732*735d6239SKiyoung Kim	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8733*735d6239SKiyoung Kim	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8734*735d6239SKiyoung Kim	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8735*735d6239SKiyoung Kim	;;
8736*735d6239SKiyoung Kim      esac
8737*735d6239SKiyoung Kim
8738*735d6239SKiyoung Kim
8739*735d6239SKiyoung Kim      # move library search paths that coincide with paths to not yet
8740*735d6239SKiyoung Kim      # installed libraries to the beginning of the library search list
8741*735d6239SKiyoung Kim      new_libs=
8742*735d6239SKiyoung Kim      for path in $notinst_path; do
8743*735d6239SKiyoung Kim	case " $new_libs " in
8744*735d6239SKiyoung Kim	*" -L$path/$objdir "*) ;;
8745*735d6239SKiyoung Kim	*)
8746*735d6239SKiyoung Kim	  case " $compile_deplibs " in
8747*735d6239SKiyoung Kim	  *" -L$path/$objdir "*)
8748*735d6239SKiyoung Kim	    func_append new_libs " -L$path/$objdir" ;;
8749*735d6239SKiyoung Kim	  esac
8750*735d6239SKiyoung Kim	  ;;
8751*735d6239SKiyoung Kim	esac
8752*735d6239SKiyoung Kim      done
8753*735d6239SKiyoung Kim      for deplib in $compile_deplibs; do
8754*735d6239SKiyoung Kim	case $deplib in
8755*735d6239SKiyoung Kim	-L*)
8756*735d6239SKiyoung Kim	  case " $new_libs " in
8757*735d6239SKiyoung Kim	  *" $deplib "*) ;;
8758*735d6239SKiyoung Kim	  *) func_append new_libs " $deplib" ;;
8759*735d6239SKiyoung Kim	  esac
8760*735d6239SKiyoung Kim	  ;;
8761*735d6239SKiyoung Kim	*) func_append new_libs " $deplib" ;;
8762*735d6239SKiyoung Kim	esac
8763*735d6239SKiyoung Kim      done
8764*735d6239SKiyoung Kim      compile_deplibs="$new_libs"
8765*735d6239SKiyoung Kim
8766*735d6239SKiyoung Kim
8767*735d6239SKiyoung Kim      func_append compile_command " $compile_deplibs"
8768*735d6239SKiyoung Kim      func_append finalize_command " $finalize_deplibs"
8769*735d6239SKiyoung Kim
8770*735d6239SKiyoung Kim      if test -n "$rpath$xrpath"; then
8771*735d6239SKiyoung Kim	# If the user specified any rpath flags, then add them.
8772*735d6239SKiyoung Kim	for libdir in $rpath $xrpath; do
8773*735d6239SKiyoung Kim	  # This is the magic to use -rpath.
8774*735d6239SKiyoung Kim	  case "$finalize_rpath " in
8775*735d6239SKiyoung Kim	  *" $libdir "*) ;;
8776*735d6239SKiyoung Kim	  *) func_append finalize_rpath " $libdir" ;;
8777*735d6239SKiyoung Kim	  esac
8778*735d6239SKiyoung Kim	done
8779*735d6239SKiyoung Kim      fi
8780*735d6239SKiyoung Kim
8781*735d6239SKiyoung Kim      # Now hardcode the library paths
8782*735d6239SKiyoung Kim      rpath=
8783*735d6239SKiyoung Kim      hardcode_libdirs=
8784*735d6239SKiyoung Kim      for libdir in $compile_rpath $finalize_rpath; do
8785*735d6239SKiyoung Kim	if test -n "$hardcode_libdir_flag_spec"; then
8786*735d6239SKiyoung Kim	  if test -n "$hardcode_libdir_separator"; then
8787*735d6239SKiyoung Kim	    if test -z "$hardcode_libdirs"; then
8788*735d6239SKiyoung Kim	      hardcode_libdirs="$libdir"
8789*735d6239SKiyoung Kim	    else
8790*735d6239SKiyoung Kim	      # Just accumulate the unique libdirs.
8791*735d6239SKiyoung Kim	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8792*735d6239SKiyoung Kim	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8793*735d6239SKiyoung Kim		;;
8794*735d6239SKiyoung Kim	      *)
8795*735d6239SKiyoung Kim		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8796*735d6239SKiyoung Kim		;;
8797*735d6239SKiyoung Kim	      esac
8798*735d6239SKiyoung Kim	    fi
8799*735d6239SKiyoung Kim	  else
8800*735d6239SKiyoung Kim	    eval flag=\"$hardcode_libdir_flag_spec\"
8801*735d6239SKiyoung Kim	    func_append rpath " $flag"
8802*735d6239SKiyoung Kim	  fi
8803*735d6239SKiyoung Kim	elif test -n "$runpath_var"; then
8804*735d6239SKiyoung Kim	  case "$perm_rpath " in
8805*735d6239SKiyoung Kim	  *" $libdir "*) ;;
8806*735d6239SKiyoung Kim	  *) func_append perm_rpath " $libdir" ;;
8807*735d6239SKiyoung Kim	  esac
8808*735d6239SKiyoung Kim	fi
8809*735d6239SKiyoung Kim	case $host in
8810*735d6239SKiyoung Kim	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8811*735d6239SKiyoung Kim	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8812*735d6239SKiyoung Kim	  case :$dllsearchpath: in
8813*735d6239SKiyoung Kim	  *":$libdir:"*) ;;
8814*735d6239SKiyoung Kim	  ::) dllsearchpath=$libdir;;
8815*735d6239SKiyoung Kim	  *) func_append dllsearchpath ":$libdir";;
8816*735d6239SKiyoung Kim	  esac
8817*735d6239SKiyoung Kim	  case :$dllsearchpath: in
8818*735d6239SKiyoung Kim	  *":$testbindir:"*) ;;
8819*735d6239SKiyoung Kim	  ::) dllsearchpath=$testbindir;;
8820*735d6239SKiyoung Kim	  *) func_append dllsearchpath ":$testbindir";;
8821*735d6239SKiyoung Kim	  esac
8822*735d6239SKiyoung Kim	  ;;
8823*735d6239SKiyoung Kim	esac
8824*735d6239SKiyoung Kim      done
8825*735d6239SKiyoung Kim      # Substitute the hardcoded libdirs into the rpath.
8826*735d6239SKiyoung Kim      if test -n "$hardcode_libdir_separator" &&
8827*735d6239SKiyoung Kim	 test -n "$hardcode_libdirs"; then
8828*735d6239SKiyoung Kim	libdir="$hardcode_libdirs"
8829*735d6239SKiyoung Kim	eval rpath=\" $hardcode_libdir_flag_spec\"
8830*735d6239SKiyoung Kim      fi
8831*735d6239SKiyoung Kim      compile_rpath="$rpath"
8832*735d6239SKiyoung Kim
8833*735d6239SKiyoung Kim      rpath=
8834*735d6239SKiyoung Kim      hardcode_libdirs=
8835*735d6239SKiyoung Kim      for libdir in $finalize_rpath; do
8836*735d6239SKiyoung Kim	if test -n "$hardcode_libdir_flag_spec"; then
8837*735d6239SKiyoung Kim	  if test -n "$hardcode_libdir_separator"; then
8838*735d6239SKiyoung Kim	    if test -z "$hardcode_libdirs"; then
8839*735d6239SKiyoung Kim	      hardcode_libdirs="$libdir"
8840*735d6239SKiyoung Kim	    else
8841*735d6239SKiyoung Kim	      # Just accumulate the unique libdirs.
8842*735d6239SKiyoung Kim	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8843*735d6239SKiyoung Kim	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8844*735d6239SKiyoung Kim		;;
8845*735d6239SKiyoung Kim	      *)
8846*735d6239SKiyoung Kim		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8847*735d6239SKiyoung Kim		;;
8848*735d6239SKiyoung Kim	      esac
8849*735d6239SKiyoung Kim	    fi
8850*735d6239SKiyoung Kim	  else
8851*735d6239SKiyoung Kim	    eval flag=\"$hardcode_libdir_flag_spec\"
8852*735d6239SKiyoung Kim	    func_append rpath " $flag"
8853*735d6239SKiyoung Kim	  fi
8854*735d6239SKiyoung Kim	elif test -n "$runpath_var"; then
8855*735d6239SKiyoung Kim	  case "$finalize_perm_rpath " in
8856*735d6239SKiyoung Kim	  *" $libdir "*) ;;
8857*735d6239SKiyoung Kim	  *) func_append finalize_perm_rpath " $libdir" ;;
8858*735d6239SKiyoung Kim	  esac
8859*735d6239SKiyoung Kim	fi
8860*735d6239SKiyoung Kim      done
8861*735d6239SKiyoung Kim      # Substitute the hardcoded libdirs into the rpath.
8862*735d6239SKiyoung Kim      if test -n "$hardcode_libdir_separator" &&
8863*735d6239SKiyoung Kim	 test -n "$hardcode_libdirs"; then
8864*735d6239SKiyoung Kim	libdir="$hardcode_libdirs"
8865*735d6239SKiyoung Kim	eval rpath=\" $hardcode_libdir_flag_spec\"
8866*735d6239SKiyoung Kim      fi
8867*735d6239SKiyoung Kim      finalize_rpath="$rpath"
8868*735d6239SKiyoung Kim
8869*735d6239SKiyoung Kim      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8870*735d6239SKiyoung Kim	# Transform all the library objects into standard objects.
8871*735d6239SKiyoung Kim	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8872*735d6239SKiyoung Kim	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8873*735d6239SKiyoung Kim      fi
8874*735d6239SKiyoung Kim
8875*735d6239SKiyoung Kim      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8876*735d6239SKiyoung Kim
8877*735d6239SKiyoung Kim      # template prelinking step
8878*735d6239SKiyoung Kim      if test -n "$prelink_cmds"; then
8879*735d6239SKiyoung Kim	func_execute_cmds "$prelink_cmds" 'exit $?'
8880*735d6239SKiyoung Kim      fi
8881*735d6239SKiyoung Kim
8882*735d6239SKiyoung Kim      wrappers_required=yes
8883*735d6239SKiyoung Kim      case $host in
8884*735d6239SKiyoung Kim      *cegcc* | *mingw32ce*)
8885*735d6239SKiyoung Kim        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8886*735d6239SKiyoung Kim        wrappers_required=no
8887*735d6239SKiyoung Kim        ;;
8888*735d6239SKiyoung Kim      *cygwin* | *mingw* )
8889*735d6239SKiyoung Kim        if test "$build_libtool_libs" != yes; then
8890*735d6239SKiyoung Kim          wrappers_required=no
8891*735d6239SKiyoung Kim        fi
8892*735d6239SKiyoung Kim        ;;
8893*735d6239SKiyoung Kim      *)
8894*735d6239SKiyoung Kim        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8895*735d6239SKiyoung Kim          wrappers_required=no
8896*735d6239SKiyoung Kim        fi
8897*735d6239SKiyoung Kim        ;;
8898*735d6239SKiyoung Kim      esac
8899*735d6239SKiyoung Kim      if test "$wrappers_required" = no; then
8900*735d6239SKiyoung Kim	# Replace the output file specification.
8901*735d6239SKiyoung Kim	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8902*735d6239SKiyoung Kim	link_command="$compile_command$compile_rpath"
8903*735d6239SKiyoung Kim
8904*735d6239SKiyoung Kim	# We have no uninstalled library dependencies, so finalize right now.
8905*735d6239SKiyoung Kim	exit_status=0
8906*735d6239SKiyoung Kim	func_show_eval "$link_command" 'exit_status=$?'
8907*735d6239SKiyoung Kim
8908*735d6239SKiyoung Kim	if test -n "$postlink_cmds"; then
8909*735d6239SKiyoung Kim	  func_to_tool_file "$output"
8910*735d6239SKiyoung Kim	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8911*735d6239SKiyoung Kim	  func_execute_cmds "$postlink_cmds" 'exit $?'
8912*735d6239SKiyoung Kim	fi
8913*735d6239SKiyoung Kim
8914*735d6239SKiyoung Kim	# Delete the generated files.
8915*735d6239SKiyoung Kim	if test -f "$output_objdir/${outputname}S.${objext}"; then
8916*735d6239SKiyoung Kim	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8917*735d6239SKiyoung Kim	fi
8918*735d6239SKiyoung Kim
8919*735d6239SKiyoung Kim	exit $exit_status
8920*735d6239SKiyoung Kim      fi
8921*735d6239SKiyoung Kim
8922*735d6239SKiyoung Kim      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8923*735d6239SKiyoung Kim	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8924*735d6239SKiyoung Kim      fi
8925*735d6239SKiyoung Kim      if test -n "$finalize_shlibpath"; then
8926*735d6239SKiyoung Kim	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8927*735d6239SKiyoung Kim      fi
8928*735d6239SKiyoung Kim
8929*735d6239SKiyoung Kim      compile_var=
8930*735d6239SKiyoung Kim      finalize_var=
8931*735d6239SKiyoung Kim      if test -n "$runpath_var"; then
8932*735d6239SKiyoung Kim	if test -n "$perm_rpath"; then
8933*735d6239SKiyoung Kim	  # We should set the runpath_var.
8934*735d6239SKiyoung Kim	  rpath=
8935*735d6239SKiyoung Kim	  for dir in $perm_rpath; do
8936*735d6239SKiyoung Kim	    func_append rpath "$dir:"
8937*735d6239SKiyoung Kim	  done
8938*735d6239SKiyoung Kim	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8939*735d6239SKiyoung Kim	fi
8940*735d6239SKiyoung Kim	if test -n "$finalize_perm_rpath"; then
8941*735d6239SKiyoung Kim	  # We should set the runpath_var.
8942*735d6239SKiyoung Kim	  rpath=
8943*735d6239SKiyoung Kim	  for dir in $finalize_perm_rpath; do
8944*735d6239SKiyoung Kim	    func_append rpath "$dir:"
8945*735d6239SKiyoung Kim	  done
8946*735d6239SKiyoung Kim	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8947*735d6239SKiyoung Kim	fi
8948*735d6239SKiyoung Kim      fi
8949*735d6239SKiyoung Kim
8950*735d6239SKiyoung Kim      if test "$no_install" = yes; then
8951*735d6239SKiyoung Kim	# We don't need to create a wrapper script.
8952*735d6239SKiyoung Kim	link_command="$compile_var$compile_command$compile_rpath"
8953*735d6239SKiyoung Kim	# Replace the output file specification.
8954*735d6239SKiyoung Kim	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8955*735d6239SKiyoung Kim	# Delete the old output file.
8956*735d6239SKiyoung Kim	$opt_dry_run || $RM $output
8957*735d6239SKiyoung Kim	# Link the executable and exit
8958*735d6239SKiyoung Kim	func_show_eval "$link_command" 'exit $?'
8959*735d6239SKiyoung Kim
8960*735d6239SKiyoung Kim	if test -n "$postlink_cmds"; then
8961*735d6239SKiyoung Kim	  func_to_tool_file "$output"
8962*735d6239SKiyoung Kim	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8963*735d6239SKiyoung Kim	  func_execute_cmds "$postlink_cmds" 'exit $?'
8964*735d6239SKiyoung Kim	fi
8965*735d6239SKiyoung Kim
8966*735d6239SKiyoung Kim	exit $EXIT_SUCCESS
8967*735d6239SKiyoung Kim      fi
8968*735d6239SKiyoung Kim
8969*735d6239SKiyoung Kim      if test "$hardcode_action" = relink; then
8970*735d6239SKiyoung Kim	# Fast installation is not supported
8971*735d6239SKiyoung Kim	link_command="$compile_var$compile_command$compile_rpath"
8972*735d6239SKiyoung Kim	relink_command="$finalize_var$finalize_command$finalize_rpath"
8973*735d6239SKiyoung Kim
8974*735d6239SKiyoung Kim	func_warning "this platform does not like uninstalled shared libraries"
8975*735d6239SKiyoung Kim	func_warning "\`$output' will be relinked during installation"
8976*735d6239SKiyoung Kim      else
8977*735d6239SKiyoung Kim	if test "$fast_install" != no; then
8978*735d6239SKiyoung Kim	  link_command="$finalize_var$compile_command$finalize_rpath"
8979*735d6239SKiyoung Kim	  if test "$fast_install" = yes; then
8980*735d6239SKiyoung Kim	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8981*735d6239SKiyoung Kim	  else
8982*735d6239SKiyoung Kim	    # fast_install is set to needless
8983*735d6239SKiyoung Kim	    relink_command=
8984*735d6239SKiyoung Kim	  fi
8985*735d6239SKiyoung Kim	else
8986*735d6239SKiyoung Kim	  link_command="$compile_var$compile_command$compile_rpath"
8987*735d6239SKiyoung Kim	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8988*735d6239SKiyoung Kim	fi
8989*735d6239SKiyoung Kim      fi
8990*735d6239SKiyoung Kim
8991*735d6239SKiyoung Kim      # Replace the output file specification.
8992*735d6239SKiyoung Kim      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8993*735d6239SKiyoung Kim
8994*735d6239SKiyoung Kim      # Delete the old output files.
8995*735d6239SKiyoung Kim      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8996*735d6239SKiyoung Kim
8997*735d6239SKiyoung Kim      func_show_eval "$link_command" 'exit $?'
8998*735d6239SKiyoung Kim
8999*735d6239SKiyoung Kim      if test -n "$postlink_cmds"; then
9000*735d6239SKiyoung Kim	func_to_tool_file "$output_objdir/$outputname"
9001*735d6239SKiyoung Kim	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
9002*735d6239SKiyoung Kim	func_execute_cmds "$postlink_cmds" 'exit $?'
9003*735d6239SKiyoung Kim      fi
9004*735d6239SKiyoung Kim
9005*735d6239SKiyoung Kim      # Now create the wrapper script.
9006*735d6239SKiyoung Kim      func_verbose "creating $output"
9007*735d6239SKiyoung Kim
9008*735d6239SKiyoung Kim      # Quote the relink command for shipping.
9009*735d6239SKiyoung Kim      if test -n "$relink_command"; then
9010*735d6239SKiyoung Kim	# Preserve any variables that may affect compiler behavior
9011*735d6239SKiyoung Kim	for var in $variables_saved_for_relink; do
9012*735d6239SKiyoung Kim	  if eval test -z \"\${$var+set}\"; then
9013*735d6239SKiyoung Kim	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9014*735d6239SKiyoung Kim	  elif eval var_value=\$$var; test -z "$var_value"; then
9015*735d6239SKiyoung Kim	    relink_command="$var=; export $var; $relink_command"
9016*735d6239SKiyoung Kim	  else
9017*735d6239SKiyoung Kim	    func_quote_for_eval "$var_value"
9018*735d6239SKiyoung Kim	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9019*735d6239SKiyoung Kim	  fi
9020*735d6239SKiyoung Kim	done
9021*735d6239SKiyoung Kim	relink_command="(cd `pwd`; $relink_command)"
9022*735d6239SKiyoung Kim	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9023*735d6239SKiyoung Kim      fi
9024*735d6239SKiyoung Kim
9025*735d6239SKiyoung Kim      # Only actually do things if not in dry run mode.
9026*735d6239SKiyoung Kim      $opt_dry_run || {
9027*735d6239SKiyoung Kim	# win32 will think the script is a binary if it has
9028*735d6239SKiyoung Kim	# a .exe suffix, so we strip it off here.
9029*735d6239SKiyoung Kim	case $output in
9030*735d6239SKiyoung Kim	  *.exe) func_stripname '' '.exe' "$output"
9031*735d6239SKiyoung Kim	         output=$func_stripname_result ;;
9032*735d6239SKiyoung Kim	esac
9033*735d6239SKiyoung Kim	# test for cygwin because mv fails w/o .exe extensions
9034*735d6239SKiyoung Kim	case $host in
9035*735d6239SKiyoung Kim	  *cygwin*)
9036*735d6239SKiyoung Kim	    exeext=.exe
9037*735d6239SKiyoung Kim	    func_stripname '' '.exe' "$outputname"
9038*735d6239SKiyoung Kim	    outputname=$func_stripname_result ;;
9039*735d6239SKiyoung Kim	  *) exeext= ;;
9040*735d6239SKiyoung Kim	esac
9041*735d6239SKiyoung Kim	case $host in
9042*735d6239SKiyoung Kim	  *cygwin* | *mingw* )
9043*735d6239SKiyoung Kim	    func_dirname_and_basename "$output" "" "."
9044*735d6239SKiyoung Kim	    output_name=$func_basename_result
9045*735d6239SKiyoung Kim	    output_path=$func_dirname_result
9046*735d6239SKiyoung Kim	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9047*735d6239SKiyoung Kim	    cwrapper="$output_path/$output_name.exe"
9048*735d6239SKiyoung Kim	    $RM $cwrappersource $cwrapper
9049*735d6239SKiyoung Kim	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9050*735d6239SKiyoung Kim
9051*735d6239SKiyoung Kim	    func_emit_cwrapperexe_src > $cwrappersource
9052*735d6239SKiyoung Kim
9053*735d6239SKiyoung Kim	    # The wrapper executable is built using the $host compiler,
9054*735d6239SKiyoung Kim	    # because it contains $host paths and files. If cross-
9055*735d6239SKiyoung Kim	    # compiling, it, like the target executable, must be
9056*735d6239SKiyoung Kim	    # executed on the $host or under an emulation environment.
9057*735d6239SKiyoung Kim	    $opt_dry_run || {
9058*735d6239SKiyoung Kim	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9059*735d6239SKiyoung Kim	      $STRIP $cwrapper
9060*735d6239SKiyoung Kim	    }
9061*735d6239SKiyoung Kim
9062*735d6239SKiyoung Kim	    # Now, create the wrapper script for func_source use:
9063*735d6239SKiyoung Kim	    func_ltwrapper_scriptname $cwrapper
9064*735d6239SKiyoung Kim	    $RM $func_ltwrapper_scriptname_result
9065*735d6239SKiyoung Kim	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9066*735d6239SKiyoung Kim	    $opt_dry_run || {
9067*735d6239SKiyoung Kim	      # note: this script will not be executed, so do not chmod.
9068*735d6239SKiyoung Kim	      if test "x$build" = "x$host" ; then
9069*735d6239SKiyoung Kim		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9070*735d6239SKiyoung Kim	      else
9071*735d6239SKiyoung Kim		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9072*735d6239SKiyoung Kim	      fi
9073*735d6239SKiyoung Kim	    }
9074*735d6239SKiyoung Kim	  ;;
9075*735d6239SKiyoung Kim	  * )
9076*735d6239SKiyoung Kim	    $RM $output
9077*735d6239SKiyoung Kim	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9078*735d6239SKiyoung Kim
9079*735d6239SKiyoung Kim	    func_emit_wrapper no > $output
9080*735d6239SKiyoung Kim	    chmod +x $output
9081*735d6239SKiyoung Kim	  ;;
9082*735d6239SKiyoung Kim	esac
9083*735d6239SKiyoung Kim      }
9084*735d6239SKiyoung Kim      exit $EXIT_SUCCESS
9085*735d6239SKiyoung Kim      ;;
9086*735d6239SKiyoung Kim    esac
9087*735d6239SKiyoung Kim
9088*735d6239SKiyoung Kim    # See if we need to build an old-fashioned archive.
9089*735d6239SKiyoung Kim    for oldlib in $oldlibs; do
9090*735d6239SKiyoung Kim
9091*735d6239SKiyoung Kim      if test "$build_libtool_libs" = convenience; then
9092*735d6239SKiyoung Kim	oldobjs="$libobjs_save $symfileobj"
9093*735d6239SKiyoung Kim	addlibs="$convenience"
9094*735d6239SKiyoung Kim	build_libtool_libs=no
9095*735d6239SKiyoung Kim      else
9096*735d6239SKiyoung Kim	if test "$build_libtool_libs" = module; then
9097*735d6239SKiyoung Kim	  oldobjs="$libobjs_save"
9098*735d6239SKiyoung Kim	  build_libtool_libs=no
9099*735d6239SKiyoung Kim	else
9100*735d6239SKiyoung Kim	  oldobjs="$old_deplibs $non_pic_objects"
9101*735d6239SKiyoung Kim	  if test "$preload" = yes && test -f "$symfileobj"; then
9102*735d6239SKiyoung Kim	    func_append oldobjs " $symfileobj"
9103*735d6239SKiyoung Kim	  fi
9104*735d6239SKiyoung Kim	fi
9105*735d6239SKiyoung Kim	addlibs="$old_convenience"
9106*735d6239SKiyoung Kim      fi
9107*735d6239SKiyoung Kim
9108*735d6239SKiyoung Kim      if test -n "$addlibs"; then
9109*735d6239SKiyoung Kim	gentop="$output_objdir/${outputname}x"
9110*735d6239SKiyoung Kim	func_append generated " $gentop"
9111*735d6239SKiyoung Kim
9112*735d6239SKiyoung Kim	func_extract_archives $gentop $addlibs
9113*735d6239SKiyoung Kim	func_append oldobjs " $func_extract_archives_result"
9114*735d6239SKiyoung Kim      fi
9115*735d6239SKiyoung Kim
9116*735d6239SKiyoung Kim      # Do each command in the archive commands.
9117*735d6239SKiyoung Kim      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9118*735d6239SKiyoung Kim	cmds=$old_archive_from_new_cmds
9119*735d6239SKiyoung Kim      else
9120*735d6239SKiyoung Kim
9121*735d6239SKiyoung Kim	# Add any objects from preloaded convenience libraries
9122*735d6239SKiyoung Kim	if test -n "$dlprefiles"; then
9123*735d6239SKiyoung Kim	  gentop="$output_objdir/${outputname}x"
9124*735d6239SKiyoung Kim	  func_append generated " $gentop"
9125*735d6239SKiyoung Kim
9126*735d6239SKiyoung Kim	  func_extract_archives $gentop $dlprefiles
9127*735d6239SKiyoung Kim	  func_append oldobjs " $func_extract_archives_result"
9128*735d6239SKiyoung Kim	fi
9129*735d6239SKiyoung Kim
9130*735d6239SKiyoung Kim	# POSIX demands no paths to be encoded in archives.  We have
9131*735d6239SKiyoung Kim	# to avoid creating archives with duplicate basenames if we
9132*735d6239SKiyoung Kim	# might have to extract them afterwards, e.g., when creating a
9133*735d6239SKiyoung Kim	# static archive out of a convenience library, or when linking
9134*735d6239SKiyoung Kim	# the entirety of a libtool archive into another (currently
9135*735d6239SKiyoung Kim	# not supported by libtool).
9136*735d6239SKiyoung Kim	if (for obj in $oldobjs
9137*735d6239SKiyoung Kim	    do
9138*735d6239SKiyoung Kim	      func_basename "$obj"
9139*735d6239SKiyoung Kim	      $ECHO "$func_basename_result"
9140*735d6239SKiyoung Kim	    done | sort | sort -uc >/dev/null 2>&1); then
9141*735d6239SKiyoung Kim	  :
9142*735d6239SKiyoung Kim	else
9143*735d6239SKiyoung Kim	  echo "copying selected object files to avoid basename conflicts..."
9144*735d6239SKiyoung Kim	  gentop="$output_objdir/${outputname}x"
9145*735d6239SKiyoung Kim	  func_append generated " $gentop"
9146*735d6239SKiyoung Kim	  func_mkdir_p "$gentop"
9147*735d6239SKiyoung Kim	  save_oldobjs=$oldobjs
9148*735d6239SKiyoung Kim	  oldobjs=
9149*735d6239SKiyoung Kim	  counter=1
9150*735d6239SKiyoung Kim	  for obj in $save_oldobjs
9151*735d6239SKiyoung Kim	  do
9152*735d6239SKiyoung Kim	    func_basename "$obj"
9153*735d6239SKiyoung Kim	    objbase="$func_basename_result"
9154*735d6239SKiyoung Kim	    case " $oldobjs " in
9155*735d6239SKiyoung Kim	    " ") oldobjs=$obj ;;
9156*735d6239SKiyoung Kim	    *[\ /]"$objbase "*)
9157*735d6239SKiyoung Kim	      while :; do
9158*735d6239SKiyoung Kim		# Make sure we don't pick an alternate name that also
9159*735d6239SKiyoung Kim		# overlaps.
9160*735d6239SKiyoung Kim		newobj=lt$counter-$objbase
9161*735d6239SKiyoung Kim		func_arith $counter + 1
9162*735d6239SKiyoung Kim		counter=$func_arith_result
9163*735d6239SKiyoung Kim		case " $oldobjs " in
9164*735d6239SKiyoung Kim		*[\ /]"$newobj "*) ;;
9165*735d6239SKiyoung Kim		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9166*735d6239SKiyoung Kim		esac
9167*735d6239SKiyoung Kim	      done
9168*735d6239SKiyoung Kim	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9169*735d6239SKiyoung Kim	      func_append oldobjs " $gentop/$newobj"
9170*735d6239SKiyoung Kim	      ;;
9171*735d6239SKiyoung Kim	    *) func_append oldobjs " $obj" ;;
9172*735d6239SKiyoung Kim	    esac
9173*735d6239SKiyoung Kim	  done
9174*735d6239SKiyoung Kim	fi
9175*735d6239SKiyoung Kim	eval cmds=\"$old_archive_cmds\"
9176*735d6239SKiyoung Kim
9177*735d6239SKiyoung Kim	func_len " $cmds"
9178*735d6239SKiyoung Kim	len=$func_len_result
9179*735d6239SKiyoung Kim	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9180*735d6239SKiyoung Kim	  cmds=$old_archive_cmds
9181*735d6239SKiyoung Kim	elif test -n "$archiver_list_spec"; then
9182*735d6239SKiyoung Kim	  func_verbose "using command file archive linking..."
9183*735d6239SKiyoung Kim	  for obj in $oldobjs
9184*735d6239SKiyoung Kim	  do
9185*735d6239SKiyoung Kim	    func_to_tool_file "$obj"
9186*735d6239SKiyoung Kim	    $ECHO "$func_to_tool_file_result"
9187*735d6239SKiyoung Kim	  done > $output_objdir/$libname.libcmd
9188*735d6239SKiyoung Kim	  func_to_tool_file "$output_objdir/$libname.libcmd"
9189*735d6239SKiyoung Kim	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9190*735d6239SKiyoung Kim	  cmds=$old_archive_cmds
9191*735d6239SKiyoung Kim	else
9192*735d6239SKiyoung Kim	  # the command line is too long to link in one step, link in parts
9193*735d6239SKiyoung Kim	  func_verbose "using piecewise archive linking..."
9194*735d6239SKiyoung Kim	  save_RANLIB=$RANLIB
9195*735d6239SKiyoung Kim	  RANLIB=:
9196*735d6239SKiyoung Kim	  objlist=
9197*735d6239SKiyoung Kim	  concat_cmds=
9198*735d6239SKiyoung Kim	  save_oldobjs=$oldobjs
9199*735d6239SKiyoung Kim	  oldobjs=
9200*735d6239SKiyoung Kim	  # Is there a better way of finding the last object in the list?
9201*735d6239SKiyoung Kim	  for obj in $save_oldobjs
9202*735d6239SKiyoung Kim	  do
9203*735d6239SKiyoung Kim	    last_oldobj=$obj
9204*735d6239SKiyoung Kim	  done
9205*735d6239SKiyoung Kim	  eval test_cmds=\"$old_archive_cmds\"
9206*735d6239SKiyoung Kim	  func_len " $test_cmds"
9207*735d6239SKiyoung Kim	  len0=$func_len_result
9208*735d6239SKiyoung Kim	  len=$len0
9209*735d6239SKiyoung Kim	  for obj in $save_oldobjs
9210*735d6239SKiyoung Kim	  do
9211*735d6239SKiyoung Kim	    func_len " $obj"
9212*735d6239SKiyoung Kim	    func_arith $len + $func_len_result
9213*735d6239SKiyoung Kim	    len=$func_arith_result
9214*735d6239SKiyoung Kim	    func_append objlist " $obj"
9215*735d6239SKiyoung Kim	    if test "$len" -lt "$max_cmd_len"; then
9216*735d6239SKiyoung Kim	      :
9217*735d6239SKiyoung Kim	    else
9218*735d6239SKiyoung Kim	      # the above command should be used before it gets too long
9219*735d6239SKiyoung Kim	      oldobjs=$objlist
9220*735d6239SKiyoung Kim	      if test "$obj" = "$last_oldobj" ; then
9221*735d6239SKiyoung Kim		RANLIB=$save_RANLIB
9222*735d6239SKiyoung Kim	      fi
9223*735d6239SKiyoung Kim	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9224*735d6239SKiyoung Kim	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9225*735d6239SKiyoung Kim	      objlist=
9226*735d6239SKiyoung Kim	      len=$len0
9227*735d6239SKiyoung Kim	    fi
9228*735d6239SKiyoung Kim	  done
9229*735d6239SKiyoung Kim	  RANLIB=$save_RANLIB
9230*735d6239SKiyoung Kim	  oldobjs=$objlist
9231*735d6239SKiyoung Kim	  if test "X$oldobjs" = "X" ; then
9232*735d6239SKiyoung Kim	    eval cmds=\"\$concat_cmds\"
9233*735d6239SKiyoung Kim	  else
9234*735d6239SKiyoung Kim	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9235*735d6239SKiyoung Kim	  fi
9236*735d6239SKiyoung Kim	fi
9237*735d6239SKiyoung Kim      fi
9238*735d6239SKiyoung Kim      func_execute_cmds "$cmds" 'exit $?'
9239*735d6239SKiyoung Kim    done
9240*735d6239SKiyoung Kim
9241*735d6239SKiyoung Kim    test -n "$generated" && \
9242*735d6239SKiyoung Kim      func_show_eval "${RM}r$generated"
9243*735d6239SKiyoung Kim
9244*735d6239SKiyoung Kim    # Now create the libtool archive.
9245*735d6239SKiyoung Kim    case $output in
9246*735d6239SKiyoung Kim    *.la)
9247*735d6239SKiyoung Kim      old_library=
9248*735d6239SKiyoung Kim      test "$build_old_libs" = yes && old_library="$libname.$libext"
9249*735d6239SKiyoung Kim      func_verbose "creating $output"
9250*735d6239SKiyoung Kim
9251*735d6239SKiyoung Kim      # Preserve any variables that may affect compiler behavior
9252*735d6239SKiyoung Kim      for var in $variables_saved_for_relink; do
9253*735d6239SKiyoung Kim	if eval test -z \"\${$var+set}\"; then
9254*735d6239SKiyoung Kim	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9255*735d6239SKiyoung Kim	elif eval var_value=\$$var; test -z "$var_value"; then
9256*735d6239SKiyoung Kim	  relink_command="$var=; export $var; $relink_command"
9257*735d6239SKiyoung Kim	else
9258*735d6239SKiyoung Kim	  func_quote_for_eval "$var_value"
9259*735d6239SKiyoung Kim	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9260*735d6239SKiyoung Kim	fi
9261*735d6239SKiyoung Kim      done
9262*735d6239SKiyoung Kim      # Quote the link command for shipping.
9263*735d6239SKiyoung Kim      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9264*735d6239SKiyoung Kim      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9265*735d6239SKiyoung Kim      if test "$hardcode_automatic" = yes ; then
9266*735d6239SKiyoung Kim	relink_command=
9267*735d6239SKiyoung Kim      fi
9268*735d6239SKiyoung Kim
9269*735d6239SKiyoung Kim      # Only create the output if not a dry run.
9270*735d6239SKiyoung Kim      $opt_dry_run || {
9271*735d6239SKiyoung Kim	for installed in no yes; do
9272*735d6239SKiyoung Kim	  if test "$installed" = yes; then
9273*735d6239SKiyoung Kim	    if test -z "$install_libdir"; then
9274*735d6239SKiyoung Kim	      break
9275*735d6239SKiyoung Kim	    fi
9276*735d6239SKiyoung Kim	    output="$output_objdir/$outputname"i
9277*735d6239SKiyoung Kim	    # Replace all uninstalled libtool libraries with the installed ones
9278*735d6239SKiyoung Kim	    newdependency_libs=
9279*735d6239SKiyoung Kim	    for deplib in $dependency_libs; do
9280*735d6239SKiyoung Kim	      case $deplib in
9281*735d6239SKiyoung Kim	      *.la)
9282*735d6239SKiyoung Kim		func_basename "$deplib"
9283*735d6239SKiyoung Kim		name="$func_basename_result"
9284*735d6239SKiyoung Kim		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
9285*735d6239SKiyoung Kim		test -z "$libdir" && \
9286*735d6239SKiyoung Kim		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9287*735d6239SKiyoung Kim		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9288*735d6239SKiyoung Kim		;;
9289*735d6239SKiyoung Kim	      -L*)
9290*735d6239SKiyoung Kim		func_stripname -L '' "$deplib"
9291*735d6239SKiyoung Kim		func_replace_sysroot "$func_stripname_result"
9292*735d6239SKiyoung Kim		func_append newdependency_libs " -L$func_replace_sysroot_result"
9293*735d6239SKiyoung Kim		;;
9294*735d6239SKiyoung Kim	      -R*)
9295*735d6239SKiyoung Kim		func_stripname -R '' "$deplib"
9296*735d6239SKiyoung Kim		func_replace_sysroot "$func_stripname_result"
9297*735d6239SKiyoung Kim		func_append newdependency_libs " -R$func_replace_sysroot_result"
9298*735d6239SKiyoung Kim		;;
9299*735d6239SKiyoung Kim	      *) func_append newdependency_libs " $deplib" ;;
9300*735d6239SKiyoung Kim	      esac
9301*735d6239SKiyoung Kim	    done
9302*735d6239SKiyoung Kim	    dependency_libs="$newdependency_libs"
9303*735d6239SKiyoung Kim	    newdlfiles=
9304*735d6239SKiyoung Kim
9305*735d6239SKiyoung Kim	    for lib in $dlfiles; do
9306*735d6239SKiyoung Kim	      case $lib in
9307*735d6239SKiyoung Kim	      *.la)
9308*735d6239SKiyoung Kim	        func_basename "$lib"
9309*735d6239SKiyoung Kim		name="$func_basename_result"
9310*735d6239SKiyoung Kim		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9311*735d6239SKiyoung Kim		test -z "$libdir" && \
9312*735d6239SKiyoung Kim		  func_fatal_error "\`$lib' is not a valid libtool archive"
9313*735d6239SKiyoung Kim		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9314*735d6239SKiyoung Kim		;;
9315*735d6239SKiyoung Kim	      *) func_append newdlfiles " $lib" ;;
9316*735d6239SKiyoung Kim	      esac
9317*735d6239SKiyoung Kim	    done
9318*735d6239SKiyoung Kim	    dlfiles="$newdlfiles"
9319*735d6239SKiyoung Kim	    newdlprefiles=
9320*735d6239SKiyoung Kim	    for lib in $dlprefiles; do
9321*735d6239SKiyoung Kim	      case $lib in
9322*735d6239SKiyoung Kim	      *.la)
9323*735d6239SKiyoung Kim		# Only pass preopened files to the pseudo-archive (for
9324*735d6239SKiyoung Kim		# eventual linking with the app. that links it) if we
9325*735d6239SKiyoung Kim		# didn't already link the preopened objects directly into
9326*735d6239SKiyoung Kim		# the library:
9327*735d6239SKiyoung Kim		func_basename "$lib"
9328*735d6239SKiyoung Kim		name="$func_basename_result"
9329*735d6239SKiyoung Kim		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9330*735d6239SKiyoung Kim		test -z "$libdir" && \
9331*735d6239SKiyoung Kim		  func_fatal_error "\`$lib' is not a valid libtool archive"
9332*735d6239SKiyoung Kim		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9333*735d6239SKiyoung Kim		;;
9334*735d6239SKiyoung Kim	      esac
9335*735d6239SKiyoung Kim	    done
9336*735d6239SKiyoung Kim	    dlprefiles="$newdlprefiles"
9337*735d6239SKiyoung Kim	  else
9338*735d6239SKiyoung Kim	    newdlfiles=
9339*735d6239SKiyoung Kim	    for lib in $dlfiles; do
9340*735d6239SKiyoung Kim	      case $lib in
9341*735d6239SKiyoung Kim		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9342*735d6239SKiyoung Kim		*) abs=`pwd`"/$lib" ;;
9343*735d6239SKiyoung Kim	      esac
9344*735d6239SKiyoung Kim	      func_append newdlfiles " $abs"
9345*735d6239SKiyoung Kim	    done
9346*735d6239SKiyoung Kim	    dlfiles="$newdlfiles"
9347*735d6239SKiyoung Kim	    newdlprefiles=
9348*735d6239SKiyoung Kim	    for lib in $dlprefiles; do
9349*735d6239SKiyoung Kim	      case $lib in
9350*735d6239SKiyoung Kim		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9351*735d6239SKiyoung Kim		*) abs=`pwd`"/$lib" ;;
9352*735d6239SKiyoung Kim	      esac
9353*735d6239SKiyoung Kim	      func_append newdlprefiles " $abs"
9354*735d6239SKiyoung Kim	    done
9355*735d6239SKiyoung Kim	    dlprefiles="$newdlprefiles"
9356*735d6239SKiyoung Kim	  fi
9357*735d6239SKiyoung Kim	  $RM $output
9358*735d6239SKiyoung Kim	  # place dlname in correct position for cygwin
9359*735d6239SKiyoung Kim	  # In fact, it would be nice if we could use this code for all target
9360*735d6239SKiyoung Kim	  # systems that can't hard-code library paths into their executables
9361*735d6239SKiyoung Kim	  # and that have no shared library path variable independent of PATH,
9362*735d6239SKiyoung Kim	  # but it turns out we can't easily determine that from inspecting
9363*735d6239SKiyoung Kim	  # libtool variables, so we have to hard-code the OSs to which it
9364*735d6239SKiyoung Kim	  # applies here; at the moment, that means platforms that use the PE
9365*735d6239SKiyoung Kim	  # object format with DLL files.  See the long comment at the top of
9366*735d6239SKiyoung Kim	  # tests/bindir.at for full details.
9367*735d6239SKiyoung Kim	  tdlname=$dlname
9368*735d6239SKiyoung Kim	  case $host,$output,$installed,$module,$dlname in
9369*735d6239SKiyoung Kim	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9370*735d6239SKiyoung Kim	      # If a -bindir argument was supplied, place the dll there.
9371*735d6239SKiyoung Kim	      if test "x$bindir" != x ;
9372*735d6239SKiyoung Kim	      then
9373*735d6239SKiyoung Kim		func_relative_path "$install_libdir" "$bindir"
9374*735d6239SKiyoung Kim		tdlname=$func_relative_path_result$dlname
9375*735d6239SKiyoung Kim	      else
9376*735d6239SKiyoung Kim		# Otherwise fall back on heuristic.
9377*735d6239SKiyoung Kim		tdlname=../bin/$dlname
9378*735d6239SKiyoung Kim	      fi
9379*735d6239SKiyoung Kim	      ;;
9380*735d6239SKiyoung Kim	  esac
9381*735d6239SKiyoung Kim	  $ECHO > $output "\
9382*735d6239SKiyoung Kim# $outputname - a libtool library file
9383*735d6239SKiyoung Kim# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9384*735d6239SKiyoung Kim#
9385*735d6239SKiyoung Kim# Please DO NOT delete this file!
9386*735d6239SKiyoung Kim# It is necessary for linking the library.
9387*735d6239SKiyoung Kim
9388*735d6239SKiyoung Kim# The name that we can dlopen(3).
9389*735d6239SKiyoung Kimdlname='$tdlname'
9390*735d6239SKiyoung Kim
9391*735d6239SKiyoung Kim# Names of this library.
9392*735d6239SKiyoung Kimlibrary_names='$library_names'
9393*735d6239SKiyoung Kim
9394*735d6239SKiyoung Kim# The name of the static archive.
9395*735d6239SKiyoung Kimold_library='$old_library'
9396*735d6239SKiyoung Kim
9397*735d6239SKiyoung Kim# Linker flags that can not go in dependency_libs.
9398*735d6239SKiyoung Kiminherited_linker_flags='$new_inherited_linker_flags'
9399*735d6239SKiyoung Kim
9400*735d6239SKiyoung Kim# Libraries that this one depends upon.
9401*735d6239SKiyoung Kimdependency_libs='$dependency_libs'
9402*735d6239SKiyoung Kim
9403*735d6239SKiyoung Kim# Names of additional weak libraries provided by this library
9404*735d6239SKiyoung Kimweak_library_names='$weak_libs'
9405*735d6239SKiyoung Kim
9406*735d6239SKiyoung Kim# Version information for $libname.
9407*735d6239SKiyoung Kimcurrent=$current
9408*735d6239SKiyoung Kimage=$age
9409*735d6239SKiyoung Kimrevision=$revision
9410*735d6239SKiyoung Kim
9411*735d6239SKiyoung Kim# Is this an already installed library?
9412*735d6239SKiyoung Kiminstalled=$installed
9413*735d6239SKiyoung Kim
9414*735d6239SKiyoung Kim# Should we warn about portability when linking against -modules?
9415*735d6239SKiyoung Kimshouldnotlink=$module
9416*735d6239SKiyoung Kim
9417*735d6239SKiyoung Kim# Files to dlopen/dlpreopen
9418*735d6239SKiyoung Kimdlopen='$dlfiles'
9419*735d6239SKiyoung Kimdlpreopen='$dlprefiles'
9420*735d6239SKiyoung Kim
9421*735d6239SKiyoung Kim# Directory that this library needs to be installed in:
9422*735d6239SKiyoung Kimlibdir='$install_libdir'"
9423*735d6239SKiyoung Kim	  if test "$installed" = no && test "$need_relink" = yes; then
9424*735d6239SKiyoung Kim	    $ECHO >> $output "\
9425*735d6239SKiyoung Kimrelink_command=\"$relink_command\""
9426*735d6239SKiyoung Kim	  fi
9427*735d6239SKiyoung Kim	done
9428*735d6239SKiyoung Kim      }
9429*735d6239SKiyoung Kim
9430*735d6239SKiyoung Kim      # Do a symbolic link so that the libtool archive can be found in
9431*735d6239SKiyoung Kim      # LD_LIBRARY_PATH before the program is installed.
9432*735d6239SKiyoung Kim      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9433*735d6239SKiyoung Kim      ;;
9434*735d6239SKiyoung Kim    esac
9435*735d6239SKiyoung Kim    exit $EXIT_SUCCESS
9436*735d6239SKiyoung Kim}
9437*735d6239SKiyoung Kim
9438*735d6239SKiyoung Kim{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9439*735d6239SKiyoung Kim    func_mode_link ${1+"$@"}
9440*735d6239SKiyoung Kim
9441*735d6239SKiyoung Kim
9442*735d6239SKiyoung Kim# func_mode_uninstall arg...
9443*735d6239SKiyoung Kimfunc_mode_uninstall ()
9444*735d6239SKiyoung Kim{
9445*735d6239SKiyoung Kim    $opt_debug
9446*735d6239SKiyoung Kim    RM="$nonopt"
9447*735d6239SKiyoung Kim    files=
9448*735d6239SKiyoung Kim    rmforce=
9449*735d6239SKiyoung Kim    exit_status=0
9450*735d6239SKiyoung Kim
9451*735d6239SKiyoung Kim    # This variable tells wrapper scripts just to set variables rather
9452*735d6239SKiyoung Kim    # than running their programs.
9453*735d6239SKiyoung Kim    libtool_install_magic="$magic"
9454*735d6239SKiyoung Kim
9455*735d6239SKiyoung Kim    for arg
9456*735d6239SKiyoung Kim    do
9457*735d6239SKiyoung Kim      case $arg in
9458*735d6239SKiyoung Kim      -f) func_append RM " $arg"; rmforce=yes ;;
9459*735d6239SKiyoung Kim      -*) func_append RM " $arg" ;;
9460*735d6239SKiyoung Kim      *) func_append files " $arg" ;;
9461*735d6239SKiyoung Kim      esac
9462*735d6239SKiyoung Kim    done
9463*735d6239SKiyoung Kim
9464*735d6239SKiyoung Kim    test -z "$RM" && \
9465*735d6239SKiyoung Kim      func_fatal_help "you must specify an RM program"
9466*735d6239SKiyoung Kim
9467*735d6239SKiyoung Kim    rmdirs=
9468*735d6239SKiyoung Kim
9469*735d6239SKiyoung Kim    for file in $files; do
9470*735d6239SKiyoung Kim      func_dirname "$file" "" "."
9471*735d6239SKiyoung Kim      dir="$func_dirname_result"
9472*735d6239SKiyoung Kim      if test "X$dir" = X.; then
9473*735d6239SKiyoung Kim	odir="$objdir"
9474*735d6239SKiyoung Kim      else
9475*735d6239SKiyoung Kim	odir="$dir/$objdir"
9476*735d6239SKiyoung Kim      fi
9477*735d6239SKiyoung Kim      func_basename "$file"
9478*735d6239SKiyoung Kim      name="$func_basename_result"
9479*735d6239SKiyoung Kim      test "$opt_mode" = uninstall && odir="$dir"
9480*735d6239SKiyoung Kim
9481*735d6239SKiyoung Kim      # Remember odir for removal later, being careful to avoid duplicates
9482*735d6239SKiyoung Kim      if test "$opt_mode" = clean; then
9483*735d6239SKiyoung Kim	case " $rmdirs " in
9484*735d6239SKiyoung Kim	  *" $odir "*) ;;
9485*735d6239SKiyoung Kim	  *) func_append rmdirs " $odir" ;;
9486*735d6239SKiyoung Kim	esac
9487*735d6239SKiyoung Kim      fi
9488*735d6239SKiyoung Kim
9489*735d6239SKiyoung Kim      # Don't error if the file doesn't exist and rm -f was used.
9490*735d6239SKiyoung Kim      if { test -L "$file"; } >/dev/null 2>&1 ||
9491*735d6239SKiyoung Kim	 { test -h "$file"; } >/dev/null 2>&1 ||
9492*735d6239SKiyoung Kim	 test -f "$file"; then
9493*735d6239SKiyoung Kim	:
9494*735d6239SKiyoung Kim      elif test -d "$file"; then
9495*735d6239SKiyoung Kim	exit_status=1
9496*735d6239SKiyoung Kim	continue
9497*735d6239SKiyoung Kim      elif test "$rmforce" = yes; then
9498*735d6239SKiyoung Kim	continue
9499*735d6239SKiyoung Kim      fi
9500*735d6239SKiyoung Kim
9501*735d6239SKiyoung Kim      rmfiles="$file"
9502*735d6239SKiyoung Kim
9503*735d6239SKiyoung Kim      case $name in
9504*735d6239SKiyoung Kim      *.la)
9505*735d6239SKiyoung Kim	# Possibly a libtool archive, so verify it.
9506*735d6239SKiyoung Kim	if func_lalib_p "$file"; then
9507*735d6239SKiyoung Kim	  func_source $dir/$name
9508*735d6239SKiyoung Kim
9509*735d6239SKiyoung Kim	  # Delete the libtool libraries and symlinks.
9510*735d6239SKiyoung Kim	  for n in $library_names; do
9511*735d6239SKiyoung Kim	    func_append rmfiles " $odir/$n"
9512*735d6239SKiyoung Kim	  done
9513*735d6239SKiyoung Kim	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9514*735d6239SKiyoung Kim
9515*735d6239SKiyoung Kim	  case "$opt_mode" in
9516*735d6239SKiyoung Kim	  clean)
9517*735d6239SKiyoung Kim	    case " $library_names " in
9518*735d6239SKiyoung Kim	    *" $dlname "*) ;;
9519*735d6239SKiyoung Kim	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9520*735d6239SKiyoung Kim	    esac
9521*735d6239SKiyoung Kim	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9522*735d6239SKiyoung Kim	    ;;
9523*735d6239SKiyoung Kim	  uninstall)
9524*735d6239SKiyoung Kim	    if test -n "$library_names"; then
9525*735d6239SKiyoung Kim	      # Do each command in the postuninstall commands.
9526*735d6239SKiyoung Kim	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9527*735d6239SKiyoung Kim	    fi
9528*735d6239SKiyoung Kim
9529*735d6239SKiyoung Kim	    if test -n "$old_library"; then
9530*735d6239SKiyoung Kim	      # Do each command in the old_postuninstall commands.
9531*735d6239SKiyoung Kim	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532*735d6239SKiyoung Kim	    fi
9533*735d6239SKiyoung Kim	    # FIXME: should reinstall the best remaining shared library.
9534*735d6239SKiyoung Kim	    ;;
9535*735d6239SKiyoung Kim	  esac
9536*735d6239SKiyoung Kim	fi
9537*735d6239SKiyoung Kim	;;
9538*735d6239SKiyoung Kim
9539*735d6239SKiyoung Kim      *.lo)
9540*735d6239SKiyoung Kim	# Possibly a libtool object, so verify it.
9541*735d6239SKiyoung Kim	if func_lalib_p "$file"; then
9542*735d6239SKiyoung Kim
9543*735d6239SKiyoung Kim	  # Read the .lo file
9544*735d6239SKiyoung Kim	  func_source $dir/$name
9545*735d6239SKiyoung Kim
9546*735d6239SKiyoung Kim	  # Add PIC object to the list of files to remove.
9547*735d6239SKiyoung Kim	  if test -n "$pic_object" &&
9548*735d6239SKiyoung Kim	     test "$pic_object" != none; then
9549*735d6239SKiyoung Kim	    func_append rmfiles " $dir/$pic_object"
9550*735d6239SKiyoung Kim	  fi
9551*735d6239SKiyoung Kim
9552*735d6239SKiyoung Kim	  # Add non-PIC object to the list of files to remove.
9553*735d6239SKiyoung Kim	  if test -n "$non_pic_object" &&
9554*735d6239SKiyoung Kim	     test "$non_pic_object" != none; then
9555*735d6239SKiyoung Kim	    func_append rmfiles " $dir/$non_pic_object"
9556*735d6239SKiyoung Kim	  fi
9557*735d6239SKiyoung Kim	fi
9558*735d6239SKiyoung Kim	;;
9559*735d6239SKiyoung Kim
9560*735d6239SKiyoung Kim      *)
9561*735d6239SKiyoung Kim	if test "$opt_mode" = clean ; then
9562*735d6239SKiyoung Kim	  noexename=$name
9563*735d6239SKiyoung Kim	  case $file in
9564*735d6239SKiyoung Kim	  *.exe)
9565*735d6239SKiyoung Kim	    func_stripname '' '.exe' "$file"
9566*735d6239SKiyoung Kim	    file=$func_stripname_result
9567*735d6239SKiyoung Kim	    func_stripname '' '.exe' "$name"
9568*735d6239SKiyoung Kim	    noexename=$func_stripname_result
9569*735d6239SKiyoung Kim	    # $file with .exe has already been added to rmfiles,
9570*735d6239SKiyoung Kim	    # add $file without .exe
9571*735d6239SKiyoung Kim	    func_append rmfiles " $file"
9572*735d6239SKiyoung Kim	    ;;
9573*735d6239SKiyoung Kim	  esac
9574*735d6239SKiyoung Kim	  # Do a test to see if this is a libtool program.
9575*735d6239SKiyoung Kim	  if func_ltwrapper_p "$file"; then
9576*735d6239SKiyoung Kim	    if func_ltwrapper_executable_p "$file"; then
9577*735d6239SKiyoung Kim	      func_ltwrapper_scriptname "$file"
9578*735d6239SKiyoung Kim	      relink_command=
9579*735d6239SKiyoung Kim	      func_source $func_ltwrapper_scriptname_result
9580*735d6239SKiyoung Kim	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9581*735d6239SKiyoung Kim	    else
9582*735d6239SKiyoung Kim	      relink_command=
9583*735d6239SKiyoung Kim	      func_source $dir/$noexename
9584*735d6239SKiyoung Kim	    fi
9585*735d6239SKiyoung Kim
9586*735d6239SKiyoung Kim	    # note $name still contains .exe if it was in $file originally
9587*735d6239SKiyoung Kim	    # as does the version of $file that was added into $rmfiles
9588*735d6239SKiyoung Kim	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9589*735d6239SKiyoung Kim	    if test "$fast_install" = yes && test -n "$relink_command"; then
9590*735d6239SKiyoung Kim	      func_append rmfiles " $odir/lt-$name"
9591*735d6239SKiyoung Kim	    fi
9592*735d6239SKiyoung Kim	    if test "X$noexename" != "X$name" ; then
9593*735d6239SKiyoung Kim	      func_append rmfiles " $odir/lt-${noexename}.c"
9594*735d6239SKiyoung Kim	    fi
9595*735d6239SKiyoung Kim	  fi
9596*735d6239SKiyoung Kim	fi
9597*735d6239SKiyoung Kim	;;
9598*735d6239SKiyoung Kim      esac
9599*735d6239SKiyoung Kim      func_show_eval "$RM $rmfiles" 'exit_status=1'
9600*735d6239SKiyoung Kim    done
9601*735d6239SKiyoung Kim
9602*735d6239SKiyoung Kim    # Try to remove the ${objdir}s in the directories where we deleted files
9603*735d6239SKiyoung Kim    for dir in $rmdirs; do
9604*735d6239SKiyoung Kim      if test -d "$dir"; then
9605*735d6239SKiyoung Kim	func_show_eval "rmdir $dir >/dev/null 2>&1"
9606*735d6239SKiyoung Kim      fi
9607*735d6239SKiyoung Kim    done
9608*735d6239SKiyoung Kim
9609*735d6239SKiyoung Kim    exit $exit_status
9610*735d6239SKiyoung Kim}
9611*735d6239SKiyoung Kim
9612*735d6239SKiyoung Kim{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9613*735d6239SKiyoung Kim    func_mode_uninstall ${1+"$@"}
9614*735d6239SKiyoung Kim
9615*735d6239SKiyoung Kimtest -z "$opt_mode" && {
9616*735d6239SKiyoung Kim  help="$generic_help"
9617*735d6239SKiyoung Kim  func_fatal_help "you must specify a MODE"
9618*735d6239SKiyoung Kim}
9619*735d6239SKiyoung Kim
9620*735d6239SKiyoung Kimtest -z "$exec_cmd" && \
9621*735d6239SKiyoung Kim  func_fatal_help "invalid operation mode \`$opt_mode'"
9622*735d6239SKiyoung Kim
9623*735d6239SKiyoung Kimif test -n "$exec_cmd"; then
9624*735d6239SKiyoung Kim  eval exec "$exec_cmd"
9625*735d6239SKiyoung Kim  exit $EXIT_FAILURE
9626*735d6239SKiyoung Kimfi
9627*735d6239SKiyoung Kim
9628*735d6239SKiyoung Kimexit $exit_status
9629*735d6239SKiyoung Kim
9630*735d6239SKiyoung Kim
9631*735d6239SKiyoung Kim# The TAGs below are defined such that we never get into a situation
9632*735d6239SKiyoung Kim# in which we disable both kinds of libraries.  Given conflicting
9633*735d6239SKiyoung Kim# choices, we go for a static library, that is the most portable,
9634*735d6239SKiyoung Kim# since we can't tell whether shared libraries were disabled because
9635*735d6239SKiyoung Kim# the user asked for that or because the platform doesn't support
9636*735d6239SKiyoung Kim# them.  This is particularly important on AIX, because we don't
9637*735d6239SKiyoung Kim# support having both static and shared libraries enabled at the same
9638*735d6239SKiyoung Kim# time on that platform, so we default to a shared-only configuration.
9639*735d6239SKiyoung Kim# If a disable-shared tag is given, we'll fallback to a static-only
9640*735d6239SKiyoung Kim# configuration.  But we'll never go from static-only to shared-only.
9641*735d6239SKiyoung Kim
9642*735d6239SKiyoung Kim# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9643*735d6239SKiyoung Kimbuild_libtool_libs=no
9644*735d6239SKiyoung Kimbuild_old_libs=yes
9645*735d6239SKiyoung Kim# ### END LIBTOOL TAG CONFIG: disable-shared
9646*735d6239SKiyoung Kim
9647*735d6239SKiyoung Kim# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9648*735d6239SKiyoung Kimbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9649*735d6239SKiyoung Kim# ### END LIBTOOL TAG CONFIG: disable-static
9650*735d6239SKiyoung Kim
9651*735d6239SKiyoung Kim# Local Variables:
9652*735d6239SKiyoung Kim# mode:shell-script
9653*735d6239SKiyoung Kim# sh-indentation:2
9654*735d6239SKiyoung Kim# End:
9655*735d6239SKiyoung Kim# vi:sw=2
9656*735d6239SKiyoung Kim
9657