To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / ltmain.sh @ 164:9fa11135915a

History | View | Annotate | Download (277 KB)

1

    
2
# libtool (GNU libtool) 2.4.2
3
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4

    
5
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6
# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7
# This is free software; see the source for copying conditions.  There is NO
8
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9

    
10
# GNU Libtool is free software; you can redistribute it and/or modify
11
# it under the terms of the GNU General Public License as published by
12
# the Free Software Foundation; either version 2 of the License, or
13
# (at your option) any later version.
14
#
15
# As a special exception to the GNU General Public License,
16
# if you distribute this file as part of a program or library that
17
# is built using GNU Libtool, you may include this file under the
18
# same distribution terms that you use for the rest of that program.
19
#
20
# GNU Libtool is distributed in the hope that it will be useful, but
21
# WITHOUT ANY WARRANTY; without even the implied warranty of
22
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23
# General Public License for more details.
24
#
25
# You should have received a copy of the GNU General Public License
26
# along with GNU Libtool; see the file COPYING.  If not, a copy
27
# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28
# or obtained by writing to the Free Software Foundation, Inc.,
29
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30

    
31
# Usage: $progname [OPTION]... [MODE-ARG]...
32
#
33
# Provide generalized library-building support services.
34
#
35
#       --config             show all configuration variables
36
#       --debug              enable verbose shell tracing
37
#   -n, --dry-run            display commands without modifying any files
38
#       --features           display basic configuration information and exit
39
#       --mode=MODE          use operation mode MODE
40
#       --preserve-dup-deps  don't remove duplicate dependency libraries
41
#       --quiet, --silent    don't print informational messages
42
#       --no-quiet, --no-silent
43
#                            print informational messages (default)
44
#       --no-warn            don't display warning messages
45
#       --tag=TAG            use configuration variables from tag TAG
46
#   -v, --verbose            print more informational messages than default
47
#       --no-verbose         don't print the extra informational messages
48
#       --version            print version information
49
#   -h, --help, --help-all   print short, long, or detailed help message
50
#
51
# MODE must be one of the following:
52
#
53
#         clean              remove files from the build directory
54
#         compile            compile a source file into a libtool object
55
#         execute            automatically set library path, then run a program
56
#         finish             complete the installation of libtool libraries
57
#         install            install libraries or executables
58
#         link               create a library or an executable
59
#         uninstall          remove libraries from an installed directory
60
#
61
# MODE-ARGS vary depending on the MODE.  When passed as first option,
62
# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63
# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64
#
65
# When reporting a bug, please describe a test case to reproduce it and
66
# include the following information:
67
#
68
#         host-triplet:	$host
69
#         shell:		$SHELL
70
#         compiler:		$LTCC
71
#         compiler flags:		$LTCFLAGS
72
#         linker:		$LD (gnu? $with_gnu_ld)
73
#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
74
#         automake:	$automake_version
75
#         autoconf:	$autoconf_version
76
#
77
# Report bugs to <bug-libtool@gnu.org>.
78
# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79
# General help using GNU software: <http://www.gnu.org/gethelp/>.
80

    
81
PROGRAM=libtool
82
PACKAGE=libtool
83
VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
84
TIMESTAMP=""
85
package_revision=1.3337
86

    
87
# Be Bourne compatible
88
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
89
  emulate sh
90
  NULLCMD=:
91
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
92
  # is contrary to our usage.  Disable this feature.
93
  alias -g '${1+"$@"}'='"$@"'
94
  setopt NO_GLOB_SUBST
95
else
96
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
97
fi
98
BIN_SH=xpg4; export BIN_SH # for Tru64
99
DUALCASE=1; export DUALCASE # for MKS sh
100

    
101
# A function that is used when there is no print builtin or printf.
102
func_fallback_echo ()
103
{
104
  eval 'cat <<_LTECHO_EOF
105
$1
106
_LTECHO_EOF'
107
}
108

    
109
# NLS nuisances: We save the old values to restore during execute mode.
110
lt_user_locale=
111
lt_safe_locale=
112
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113
do
114
  eval "if test \"\${$lt_var+set}\" = set; then
115
          save_$lt_var=\$$lt_var
116
          $lt_var=C
117
	  export $lt_var
118
	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119
	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120
	fi"
121
done
122
LC_ALL=C
123
LANGUAGE=C
124
export LANGUAGE LC_ALL
125

    
126
$lt_unset CDPATH
127

    
128

    
129
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130
# is ksh but when the shell is invoked as "sh" and the current value of
131
# the _XPG environment variable is not equal to 1 (one), the special
132
# positional parameter $0, within a function call, is the name of the
133
# function.
134
progpath="$0"
135

    
136

    
137

    
138
: ${CP="cp -f"}
139
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
140
: ${MAKE="make"}
141
: ${MKDIR="mkdir"}
142
: ${MV="mv -f"}
143
: ${RM="rm -f"}
144
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145
: ${Xsed="$SED -e 1s/^X//"}
146

    
147
# Global variables:
148
EXIT_SUCCESS=0
149
EXIT_FAILURE=1
150
EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
151
EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
152

    
153
exit_status=$EXIT_SUCCESS
154

    
155
# Make sure IFS has a sensible default
156
lt_nl='
157
'
158
IFS=" 	$lt_nl"
159

    
160
dirname="s,/[^/]*$,,"
161
basename="s,^.*/,,"
162

    
163
# func_dirname file append nondir_replacement
164
# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
165
# otherwise set result to NONDIR_REPLACEMENT.
166
func_dirname ()
167
{
168
    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169
    if test "X$func_dirname_result" = "X${1}"; then
170
      func_dirname_result="${3}"
171
    else
172
      func_dirname_result="$func_dirname_result${2}"
173
    fi
174
} # func_dirname may be replaced by extended shell implementation
175

    
176

    
177
# func_basename file
178
func_basename ()
179
{
180
    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181
} # func_basename may be replaced by extended shell implementation
182

    
183

    
184
# func_dirname_and_basename file append nondir_replacement
185
# perform func_basename and func_dirname in a single function
186
# call:
187
#   dirname:  Compute the dirname of FILE.  If nonempty,
188
#             add APPEND to the result, otherwise set result
189
#             to NONDIR_REPLACEMENT.
190
#             value returned in "$func_dirname_result"
191
#   basename: Compute filename of FILE.
192
#             value retuned in "$func_basename_result"
193
# Implementation must be kept synchronized with func_dirname
194
# and func_basename. For efficiency, we do not delegate to
195
# those functions but instead duplicate the functionality here.
196
func_dirname_and_basename ()
197
{
198
    # Extract subdirectory from the argument.
199
    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200
    if test "X$func_dirname_result" = "X${1}"; then
201
      func_dirname_result="${3}"
202
    else
203
      func_dirname_result="$func_dirname_result${2}"
204
    fi
205
    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206
} # func_dirname_and_basename may be replaced by extended shell implementation
207

    
208

    
209
# func_stripname prefix suffix name
210
# strip PREFIX and SUFFIX off of NAME.
211
# PREFIX and SUFFIX must not contain globbing or regex special
212
# characters, hashes, percent signs, but SUFFIX may contain a leading
213
# dot (in which case that matches only a dot).
214
# func_strip_suffix prefix name
215
func_stripname ()
216
{
217
    case ${2} in
218
      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219
      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220
    esac
221
} # func_stripname may be replaced by extended shell implementation
222

    
223

    
224
# These SED scripts presuppose an absolute path with a trailing slash.
225
pathcar='s,^/\([^/]*\).*$,\1,'
226
pathcdr='s,^/[^/]*,,'
227
removedotparts=':dotsl
228
		s@/\./@/@g
229
		t dotsl
230
		s,/\.$,/,'
231
collapseslashes='s@/\{1,\}@/@g'
232
finalslash='s,/*$,/,'
233

    
234
# func_normal_abspath PATH
235
# Remove doubled-up and trailing slashes, "." path components,
236
# and cancel out any ".." path components in PATH after making
237
# it an absolute path.
238
#             value returned in "$func_normal_abspath_result"
239
func_normal_abspath ()
240
{
241
  # Start from root dir and reassemble the path.
242
  func_normal_abspath_result=
243
  func_normal_abspath_tpath=$1
244
  func_normal_abspath_altnamespace=
245
  case $func_normal_abspath_tpath in
246
    "")
247
      # Empty path, that just means $cwd.
248
      func_stripname '' '/' "`pwd`"
249
      func_normal_abspath_result=$func_stripname_result
250
      return
251
    ;;
252
    # The next three entries are used to spot a run of precisely
253
    # two leading slashes without using negated character classes;
254
    # we take advantage of case's first-match behaviour.
255
    ///*)
256
      # Unusual form of absolute path, do nothing.
257
    ;;
258
    //*)
259
      # Not necessarily an ordinary path; POSIX reserves leading '//'
260
      # and for example Cygwin uses it to access remote file shares
261
      # over CIFS/SMB, so we conserve a leading double slash if found.
262
      func_normal_abspath_altnamespace=/
263
    ;;
264
    /*)
265
      # Absolute path, do nothing.
266
    ;;
267
    *)
268
      # Relative path, prepend $cwd.
269
      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270
    ;;
271
  esac
272
  # Cancel out all the simple stuff to save iterations.  We also want
273
  # the path to end with a slash for ease of parsing, so make sure
274
  # there is one (and only one) here.
275
  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276
        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277
  while :; do
278
    # Processed it all yet?
279
    if test "$func_normal_abspath_tpath" = / ; then
280
      # If we ascended to the root using ".." the result may be empty now.
281
      if test -z "$func_normal_abspath_result" ; then
282
        func_normal_abspath_result=/
283
      fi
284
      break
285
    fi
286
    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287
        -e "$pathcar"`
288
    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289
        -e "$pathcdr"`
290
    # Figure out what to do with it
291
    case $func_normal_abspath_tcomponent in
292
      "")
293
        # Trailing empty path component, ignore it.
294
      ;;
295
      ..)
296
        # Parent dir; strip last assembled component from result.
297
        func_dirname "$func_normal_abspath_result"
298
        func_normal_abspath_result=$func_dirname_result
299
      ;;
300
      *)
301
        # Actual path component, append it.
302
        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303
      ;;
304
    esac
305
  done
306
  # Restore leading double-slash if one was found on entry.
307
  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308
}
309

    
310
# func_relative_path SRCDIR DSTDIR
311
# generates a relative path from SRCDIR to DSTDIR, with a trailing
312
# slash if non-empty, suitable for immediately appending a filename
313
# without needing to append a separator.
314
#             value returned in "$func_relative_path_result"
315
func_relative_path ()
316
{
317
  func_relative_path_result=
318
  func_normal_abspath "$1"
319
  func_relative_path_tlibdir=$func_normal_abspath_result
320
  func_normal_abspath "$2"
321
  func_relative_path_tbindir=$func_normal_abspath_result
322

    
323
  # Ascend the tree starting from libdir
324
  while :; do
325
    # check if we have found a prefix of bindir
326
    case $func_relative_path_tbindir in
327
      $func_relative_path_tlibdir)
328
        # found an exact match
329
        func_relative_path_tcancelled=
330
        break
331
        ;;
332
      $func_relative_path_tlibdir*)
333
        # found a matching prefix
334
        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335
        func_relative_path_tcancelled=$func_stripname_result
336
        if test -z "$func_relative_path_result"; then
337
          func_relative_path_result=.
338
        fi
339
        break
340
        ;;
341
      *)
342
        func_dirname $func_relative_path_tlibdir
343
        func_relative_path_tlibdir=${func_dirname_result}
344
        if test "x$func_relative_path_tlibdir" = x ; then
345
          # Have to descend all the way to the root!
346
          func_relative_path_result=../$func_relative_path_result
347
          func_relative_path_tcancelled=$func_relative_path_tbindir
348
          break
349
        fi
350
        func_relative_path_result=../$func_relative_path_result
351
        ;;
352
    esac
353
  done
354

    
355
  # Now calculate path; take care to avoid doubling-up slashes.
356
  func_stripname '' '/' "$func_relative_path_result"
357
  func_relative_path_result=$func_stripname_result
358
  func_stripname '/' '/' "$func_relative_path_tcancelled"
359
  if test "x$func_stripname_result" != x ; then
360
    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361
  fi
362

    
363
  # Normalisation. If bindir is libdir, return empty string,
364
  # else relative path ending with a slash; either way, target
365
  # file name can be directly appended.
366
  if test ! -z "$func_relative_path_result"; then
367
    func_stripname './' '' "$func_relative_path_result/"
368
    func_relative_path_result=$func_stripname_result
369
  fi
370
}
371

    
372
# The name of this program:
373
func_dirname_and_basename "$progpath"
374
progname=$func_basename_result
375

    
376
# Make sure we have an absolute path for reexecution:
377
case $progpath in
378
  [\\/]*|[A-Za-z]:\\*) ;;
379
  *[\\/]*)
380
     progdir=$func_dirname_result
381
     progdir=`cd "$progdir" && pwd`
382
     progpath="$progdir/$progname"
383
     ;;
384
  *)
385
     save_IFS="$IFS"
386
     IFS=${PATH_SEPARATOR-:}
387
     for progdir in $PATH; do
388
       IFS="$save_IFS"
389
       test -x "$progdir/$progname" && break
390
     done
391
     IFS="$save_IFS"
392
     test -n "$progdir" || progdir=`pwd`
393
     progpath="$progdir/$progname"
394
     ;;
395
esac
396

    
397
# Sed substitution that helps us do robust quoting.  It backslashifies
398
# metacharacters that are still active within double-quoted strings.
399
Xsed="${SED}"' -e 1s/^X//'
400
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401

    
402
# Same as above, but do not quote variable references.
403
double_quote_subst='s/\(["`\\]\)/\\\1/g'
404

    
405
# Sed substitution that turns a string into a regex matching for the
406
# string literally.
407
sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408

    
409
# Sed substitution that converts a w32 file name or path
410
# which contains forward slashes, into one that contains
411
# (escaped) backslashes.  A very naive implementation.
412
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413

    
414
# Re-`\' parameter expansions in output of double_quote_subst that were
415
# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
416
# in input to double_quote_subst, that '$' was protected from expansion.
417
# Since each input `\' is now two `\'s, look for any number of runs of
418
# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
419
bs='\\'
420
bs2='\\\\'
421
bs4='\\\\\\\\'
422
dollar='\$'
423
sed_double_backslash="\
424
  s/$bs4/&\\
425
/g
426
  s/^$bs2$dollar/$bs&/
427
  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428
  s/\n//g"
429

    
430
# Standard options:
431
opt_dry_run=false
432
opt_help=false
433
opt_quiet=false
434
opt_verbose=false
435
opt_warning=:
436

    
437
# func_echo arg...
438
# Echo program name prefixed message, along with the current mode
439
# name if it has been set yet.
440
func_echo ()
441
{
442
    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443
}
444

    
445
# func_verbose arg...
446
# Echo program name prefixed message in verbose mode only.
447
func_verbose ()
448
{
449
    $opt_verbose && func_echo ${1+"$@"}
450

    
451
    # A bug in bash halts the script if the last line of a function
452
    # fails when set -e is in force, so we need another command to
453
    # work around that:
454
    :
455
}
456

    
457
# func_echo_all arg...
458
# Invoke $ECHO with all args, space-separated.
459
func_echo_all ()
460
{
461
    $ECHO "$*"
462
}
463

    
464
# func_error arg...
465
# Echo program name prefixed message to standard error.
466
func_error ()
467
{
468
    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469
}
470

    
471
# func_warning arg...
472
# Echo program name prefixed warning message to standard error.
473
func_warning ()
474
{
475
    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476

    
477
    # bash bug again:
478
    :
479
}
480

    
481
# func_fatal_error arg...
482
# Echo program name prefixed message to standard error, and exit.
483
func_fatal_error ()
484
{
485
    func_error ${1+"$@"}
486
    exit $EXIT_FAILURE
487
}
488

    
489
# func_fatal_help arg...
490
# Echo program name prefixed message to standard error, followed by
491
# a help hint, and exit.
492
func_fatal_help ()
493
{
494
    func_error ${1+"$@"}
495
    func_fatal_error "$help"
496
}
497
help="Try \`$progname --help' for more information."  ## default
498

    
499

    
500
# func_grep expression filename
501
# Check whether EXPRESSION matches any line of FILENAME, without output.
502
func_grep ()
503
{
504
    $GREP "$1" "$2" >/dev/null 2>&1
505
}
506

    
507

    
508
# func_mkdir_p directory-path
509
# Make sure the entire path to DIRECTORY-PATH is available.
510
func_mkdir_p ()
511
{
512
    my_directory_path="$1"
513
    my_dir_list=
514

    
515
    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
516

    
517
      # Protect directory names starting with `-'
518
      case $my_directory_path in
519
        -*) my_directory_path="./$my_directory_path" ;;
520
      esac
521

    
522
      # While some portion of DIR does not yet exist...
523
      while test ! -d "$my_directory_path"; do
524
        # ...make a list in topmost first order.  Use a colon delimited
525
	# list incase some portion of path contains whitespace.
526
        my_dir_list="$my_directory_path:$my_dir_list"
527

    
528
        # If the last portion added has no slash in it, the list is done
529
        case $my_directory_path in */*) ;; *) break ;; esac
530

    
531
        # ...otherwise throw away the child directory and loop
532
        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
533
      done
534
      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
535

    
536
      save_mkdir_p_IFS="$IFS"; IFS=':'
537
      for my_dir in $my_dir_list; do
538
	IFS="$save_mkdir_p_IFS"
539
        # mkdir can fail with a `File exist' error if two processes
540
        # try to create one of the directories concurrently.  Don't
541
        # stop in that case!
542
        $MKDIR "$my_dir" 2>/dev/null || :
543
      done
544
      IFS="$save_mkdir_p_IFS"
545

    
546
      # Bail out if we (or some other process) failed to create a directory.
547
      test -d "$my_directory_path" || \
548
        func_fatal_error "Failed to create \`$1'"
549
    fi
550
}
551

    
552

    
553
# func_mktempdir [string]
554
# Make a temporary directory that won't clash with other running
555
# libtool processes, and avoids race conditions if possible.  If
556
# given, STRING is the basename for that directory.
557
func_mktempdir ()
558
{
559
    my_template="${TMPDIR-/tmp}/${1-$progname}"
560

    
561
    if test "$opt_dry_run" = ":"; then
562
      # Return a directory name, but don't create it in dry-run mode
563
      my_tmpdir="${my_template}-$$"
564
    else
565

    
566
      # If mktemp works, use that first and foremost
567
      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568

    
569
      if test ! -d "$my_tmpdir"; then
570
        # Failing that, at least try and use $RANDOM to avoid a race
571
        my_tmpdir="${my_template}-${RANDOM-0}$$"
572

    
573
        save_mktempdir_umask=`umask`
574
        umask 0077
575
        $MKDIR "$my_tmpdir"
576
        umask $save_mktempdir_umask
577
      fi
578

    
579
      # If we're not in dry-run mode, bomb out on failure
580
      test -d "$my_tmpdir" || \
581
        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582
    fi
583

    
584
    $ECHO "$my_tmpdir"
585
}
586

    
587

    
588
# func_quote_for_eval arg
589
# Aesthetically quote ARG to be evaled later.
590
# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
591
# is double-quoted, suitable for a subsequent eval, whereas
592
# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
593
# which are still active within double quotes backslashified.
594
func_quote_for_eval ()
595
{
596
    case $1 in
597
      *[\\\`\"\$]*)
598
	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
599
      *)
600
        func_quote_for_eval_unquoted_result="$1" ;;
601
    esac
602

    
603
    case $func_quote_for_eval_unquoted_result in
604
      # Double-quote args containing shell metacharacters to delay
605
      # word splitting, command substitution and and variable
606
      # expansion for a subsequent eval.
607
      # Many Bourne shells cannot handle close brackets correctly
608
      # in scan sets, so we specify it separately.
609
      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
610
        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
611
        ;;
612
      *)
613
        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614
    esac
615
}
616

    
617

    
618
# func_quote_for_expand arg
619
# Aesthetically quote ARG to be evaled later; same as above,
620
# but do not quote variable references.
621
func_quote_for_expand ()
622
{
623
    case $1 in
624
      *[\\\`\"]*)
625
	my_arg=`$ECHO "$1" | $SED \
626
	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627
      *)
628
        my_arg="$1" ;;
629
    esac
630

    
631
    case $my_arg in
632
      # Double-quote args containing shell metacharacters to delay
633
      # word splitting and command substitution for a subsequent eval.
634
      # Many Bourne shells cannot handle close brackets correctly
635
      # in scan sets, so we specify it separately.
636
      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
637
        my_arg="\"$my_arg\""
638
        ;;
639
    esac
640

    
641
    func_quote_for_expand_result="$my_arg"
642
}
643

    
644

    
645
# func_show_eval cmd [fail_exp]
646
# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
647
# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
648
# is given, then evaluate it.
649
func_show_eval ()
650
{
651
    my_cmd="$1"
652
    my_fail_exp="${2-:}"
653

    
654
    ${opt_silent-false} || {
655
      func_quote_for_expand "$my_cmd"
656
      eval "func_echo $func_quote_for_expand_result"
657
    }
658

    
659
    if ${opt_dry_run-false}; then :; else
660
      eval "$my_cmd"
661
      my_status=$?
662
      if test "$my_status" -eq 0; then :; else
663
	eval "(exit $my_status); $my_fail_exp"
664
      fi
665
    fi
666
}
667

    
668

    
669
# func_show_eval_locale cmd [fail_exp]
670
# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
671
# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
672
# is given, then evaluate it.  Use the saved locale for evaluation.
673
func_show_eval_locale ()
674
{
675
    my_cmd="$1"
676
    my_fail_exp="${2-:}"
677

    
678
    ${opt_silent-false} || {
679
      func_quote_for_expand "$my_cmd"
680
      eval "func_echo $func_quote_for_expand_result"
681
    }
682

    
683
    if ${opt_dry_run-false}; then :; else
684
      eval "$lt_user_locale
685
	    $my_cmd"
686
      my_status=$?
687
      eval "$lt_safe_locale"
688
      if test "$my_status" -eq 0; then :; else
689
	eval "(exit $my_status); $my_fail_exp"
690
      fi
691
    fi
692
}
693

    
694
# func_tr_sh
695
# Turn $1 into a string suitable for a shell variable name.
696
# Result is stored in $func_tr_sh_result.  All characters
697
# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698
# if $1 begins with a digit, a '_' is prepended as well.
699
func_tr_sh ()
700
{
701
  case $1 in
702
  [0-9]* | *[!a-zA-Z0-9_]*)
703
    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704
    ;;
705
  * )
706
    func_tr_sh_result=$1
707
    ;;
708
  esac
709
}
710

    
711

    
712
# func_version
713
# Echo version message to standard output and exit.
714
func_version ()
715
{
716
    $opt_debug
717

    
718
    $SED -n '/(C)/!b go
719
	:more
720
	/\./!{
721
	  N
722
	  s/\n# / /
723
	  b more
724
	}
725
	:go
726
	/^# '$PROGRAM' (GNU /,/# warranty; / {
727
        s/^# //
728
	s/^# *$//
729
        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730
        p
731
     }' < "$progpath"
732
     exit $?
733
}
734

    
735
# func_usage
736
# Echo short help message to standard output and exit.
737
func_usage ()
738
{
739
    $opt_debug
740

    
741
    $SED -n '/^# Usage:/,/^#  *.*--help/ {
742
        s/^# //
743
	s/^# *$//
744
	s/\$progname/'$progname'/
745
	p
746
    }' < "$progpath"
747
    echo
748
    $ECHO "run \`$progname --help | more' for full usage"
749
    exit $?
750
}
751

    
752
# func_help [NOEXIT]
753
# Echo long help message to standard output and exit,
754
# unless 'noexit' is passed as argument.
755
func_help ()
756
{
757
    $opt_debug
758

    
759
    $SED -n '/^# Usage:/,/# Report bugs to/ {
760
	:print
761
        s/^# //
762
	s/^# *$//
763
	s*\$progname*'$progname'*
764
	s*\$host*'"$host"'*
765
	s*\$SHELL*'"$SHELL"'*
766
	s*\$LTCC*'"$LTCC"'*
767
	s*\$LTCFLAGS*'"$LTCFLAGS"'*
768
	s*\$LD*'"$LD"'*
769
	s/\$with_gnu_ld/'"$with_gnu_ld"'/
770
	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771
	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772
	p
773
	d
774
     }
775
     /^# .* home page:/b print
776
     /^# General help using/b print
777
     ' < "$progpath"
778
    ret=$?
779
    if test -z "$1"; then
780
      exit $ret
781
    fi
782
}
783

    
784
# func_missing_arg argname
785
# Echo program name prefixed message to standard error and set global
786
# exit_cmd.
787
func_missing_arg ()
788
{
789
    $opt_debug
790

    
791
    func_error "missing argument for $1."
792
    exit_cmd=exit
793
}
794

    
795

    
796
# func_split_short_opt shortopt
797
# Set func_split_short_opt_name and func_split_short_opt_arg shell
798
# variables after splitting SHORTOPT after the 2nd character.
799
func_split_short_opt ()
800
{
801
    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802
    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803

    
804
    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805
    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806
} # func_split_short_opt may be replaced by extended shell implementation
807

    
808

    
809
# func_split_long_opt longopt
810
# Set func_split_long_opt_name and func_split_long_opt_arg shell
811
# variables after splitting LONGOPT at the `=' sign.
812
func_split_long_opt ()
813
{
814
    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815
    my_sed_long_arg='1s/^--[^=]*=//'
816

    
817
    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818
    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819
} # func_split_long_opt may be replaced by extended shell implementation
820

    
821
exit_cmd=:
822

    
823

    
824

    
825

    
826

    
827
magic="%%%MAGIC variable%%%"
828
magic_exe="%%%MAGIC EXE variable%%%"
829

    
830
# Global variables.
831
nonopt=
832
preserve_args=
833
lo2o="s/\\.lo\$/.${objext}/"
834
o2lo="s/\\.${objext}\$/.lo/"
835
extracted_archives=
836
extracted_serial=0
837

    
838
# If this variable is set in any of the actions, the command in it
839
# will be execed at the end.  This prevents here-documents from being
840
# left over by shells.
841
exec_cmd=
842

    
843
# func_append var value
844
# Append VALUE to the end of shell variable VAR.
845
func_append ()
846
{
847
    eval "${1}=\$${1}\${2}"
848
} # func_append may be replaced by extended shell implementation
849

    
850
# func_append_quoted var value
851
# Quote VALUE and append to the end of shell variable VAR, separated
852
# by a space.
853
func_append_quoted ()
854
{
855
    func_quote_for_eval "${2}"
856
    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857
} # func_append_quoted may be replaced by extended shell implementation
858

    
859

    
860
# func_arith arithmetic-term...
861
func_arith ()
862
{
863
    func_arith_result=`expr "${@}"`
864
} # func_arith may be replaced by extended shell implementation
865

    
866

    
867
# func_len string
868
# STRING may not start with a hyphen.
869
func_len ()
870
{
871
    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872
} # func_len may be replaced by extended shell implementation
873

    
874

    
875
# func_lo2o object
876
func_lo2o ()
877
{
878
    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879
} # func_lo2o may be replaced by extended shell implementation
880

    
881

    
882
# func_xform libobj-or-source
883
func_xform ()
884
{
885
    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886
} # func_xform may be replaced by extended shell implementation
887

    
888

    
889
# func_fatal_configuration arg...
890
# Echo program name prefixed message to standard error, followed by
891
# a configuration failure hint, and exit.
892
func_fatal_configuration ()
893
{
894
    func_error ${1+"$@"}
895
    func_error "See the $PACKAGE documentation for more information."
896
    func_fatal_error "Fatal configuration error."
897
}
898

    
899

    
900
# func_config
901
# Display the configuration for all the tags in this script.
902
func_config ()
903
{
904
    re_begincf='^# ### BEGIN LIBTOOL'
905
    re_endcf='^# ### END LIBTOOL'
906

    
907
    # Default configuration.
908
    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909

    
910
    # Now print the configurations for the tags.
911
    for tagname in $taglist; do
912
      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913
    done
914

    
915
    exit $?
916
}
917

    
918
# func_features
919
# Display the features supported by this script.
920
func_features ()
921
{
922
    echo "host: $host"
923
    if test "$build_libtool_libs" = yes; then
924
      echo "enable shared libraries"
925
    else
926
      echo "disable shared libraries"
927
    fi
928
    if test "$build_old_libs" = yes; then
929
      echo "enable static libraries"
930
    else
931
      echo "disable static libraries"
932
    fi
933

    
934
    exit $?
935
}
936

    
937
# func_enable_tag tagname
938
# Verify that TAGNAME is valid, and either flag an error and exit, or
939
# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
940
# variable here.
941
func_enable_tag ()
942
{
943
  # Global variable:
944
  tagname="$1"
945

    
946
  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
947
  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
948
  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949

    
950
  # Validate tagname.
951
  case $tagname in
952
    *[!-_A-Za-z0-9,/]*)
953
      func_fatal_error "invalid tag name: $tagname"
954
      ;;
955
  esac
956

    
957
  # Don't test for the "default" C tag, as we know it's
958
  # there but not specially marked.
959
  case $tagname in
960
    CC) ;;
961
    *)
962
      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
963
	taglist="$taglist $tagname"
964

    
965
	# Evaluate the configuration.  Be careful to quote the path
966
	# and the sed script, to avoid splitting on whitespace, but
967
	# also don't use non-portable quotes within backquotes within
968
	# quotes we have to do it in 2 steps:
969
	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
970
	eval "$extractedcf"
971
      else
972
	func_error "ignoring unknown tag $tagname"
973
      fi
974
      ;;
975
  esac
976
}
977

    
978
# func_check_version_match
979
# Ensure that we are using m4 macros, and libtool script from the same
980
# release of libtool.
981
func_check_version_match ()
982
{
983
  if test "$package_revision" != "$macro_revision"; then
984
    if test "$VERSION" != "$macro_version"; then
985
      if test -z "$macro_version"; then
986
        cat >&2 <<_LT_EOF
987
$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988
$progname: definition of this LT_INIT comes from an older release.
989
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990
$progname: and run autoconf again.
991
_LT_EOF
992
      else
993
        cat >&2 <<_LT_EOF
994
$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997
$progname: and run autoconf again.
998
_LT_EOF
999
      fi
1000
    else
1001
      cat >&2 <<_LT_EOF
1002
$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005
$progname: of $PACKAGE $VERSION and run autoconf again.
1006
_LT_EOF
1007
    fi
1008

    
1009
    exit $EXIT_MISMATCH
1010
  fi
1011
}
1012

    
1013

    
1014
# Shorthand for --mode=foo, only valid as the first argument
1015
case $1 in
1016
clean|clea|cle|cl)
1017
  shift; set dummy --mode clean ${1+"$@"}; shift
1018
  ;;
1019
compile|compil|compi|comp|com|co|c)
1020
  shift; set dummy --mode compile ${1+"$@"}; shift
1021
  ;;
1022
execute|execut|execu|exec|exe|ex|e)
1023
  shift; set dummy --mode execute ${1+"$@"}; shift
1024
  ;;
1025
finish|finis|fini|fin|fi|f)
1026
  shift; set dummy --mode finish ${1+"$@"}; shift
1027
  ;;
1028
install|instal|insta|inst|ins|in|i)
1029
  shift; set dummy --mode install ${1+"$@"}; shift
1030
  ;;
1031
link|lin|li|l)
1032
  shift; set dummy --mode link ${1+"$@"}; shift
1033
  ;;
1034
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035
  shift; set dummy --mode uninstall ${1+"$@"}; shift
1036
  ;;
1037
esac
1038

    
1039

    
1040

    
1041
# Option defaults:
1042
opt_debug=:
1043
opt_dry_run=false
1044
opt_config=false
1045
opt_preserve_dup_deps=false
1046
opt_features=false
1047
opt_finish=false
1048
opt_help=false
1049
opt_help_all=false
1050
opt_silent=:
1051
opt_warning=:
1052
opt_verbose=:
1053
opt_silent=false
1054
opt_verbose=false
1055

    
1056

    
1057
# Parse options once, thoroughly.  This comes as soon as possible in the
1058
# script to make things like `--version' happen as quickly as we can.
1059
{
1060
  # this just eases exit handling
1061
  while test $# -gt 0; do
1062
    opt="$1"
1063
    shift
1064
    case $opt in
1065
      --debug|-x)	opt_debug='set -x'
1066
			func_echo "enabling shell trace mode"
1067
			$opt_debug
1068
			;;
1069
      --dry-run|--dryrun|-n)
1070
			opt_dry_run=:
1071
			;;
1072
      --config)
1073
			opt_config=:
1074
func_config
1075
			;;
1076
      --dlopen|-dlopen)
1077
			optarg="$1"
1078
			opt_dlopen="${opt_dlopen+$opt_dlopen
1079
}$optarg"
1080
			shift
1081
			;;
1082
      --preserve-dup-deps)
1083
			opt_preserve_dup_deps=:
1084
			;;
1085
      --features)
1086
			opt_features=:
1087
func_features
1088
			;;
1089
      --finish)
1090
			opt_finish=:
1091
set dummy --mode finish ${1+"$@"}; shift
1092
			;;
1093
      --help)
1094
			opt_help=:
1095
			;;
1096
      --help-all)
1097
			opt_help_all=:
1098
opt_help=': help-all'
1099
			;;
1100
      --mode)
1101
			test $# = 0 && func_missing_arg $opt && break
1102
			optarg="$1"
1103
			opt_mode="$optarg"
1104
case $optarg in
1105
  # Valid mode arguments:
1106
  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1107

    
1108
  # Catch anything else as an error
1109
  *) func_error "invalid argument for $opt"
1110
     exit_cmd=exit
1111
     break
1112
     ;;
1113
esac
1114
			shift
1115
			;;
1116
      --no-silent|--no-quiet)
1117
			opt_silent=false
1118
func_append preserve_args " $opt"
1119
			;;
1120
      --no-warning|--no-warn)
1121
			opt_warning=false
1122
func_append preserve_args " $opt"
1123
			;;
1124
      --no-verbose)
1125
			opt_verbose=false
1126
func_append preserve_args " $opt"
1127
			;;
1128
      --silent|--quiet)
1129
			opt_silent=:
1130
func_append preserve_args " $opt"
1131
        opt_verbose=false
1132
			;;
1133
      --verbose|-v)
1134
			opt_verbose=:
1135
func_append preserve_args " $opt"
1136
opt_silent=false
1137
			;;
1138
      --tag)
1139
			test $# = 0 && func_missing_arg $opt && break
1140
			optarg="$1"
1141
			opt_tag="$optarg"
1142
func_append preserve_args " $opt $optarg"
1143
func_enable_tag "$optarg"
1144
			shift
1145
			;;
1146

    
1147
      -\?|-h)		func_usage				;;
1148
      --help)		func_help				;;
1149
      --version)	func_version				;;
1150

    
1151
      # Separate optargs to long options:
1152
      --*=*)
1153
			func_split_long_opt "$opt"
1154
			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1155
			shift
1156
			;;
1157

    
1158
      # Separate non-argument short options:
1159
      -\?*|-h*|-n*|-v*)
1160
			func_split_short_opt "$opt"
1161
			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162
			shift
1163
			;;
1164

    
1165
      --)		break					;;
1166
      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1167
      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1168
    esac
1169
  done
1170

    
1171
  # Validate options:
1172

    
1173
  # save first non-option argument
1174
  if test "$#" -gt 0; then
1175
    nonopt="$opt"
1176
    shift
1177
  fi
1178

    
1179
  # preserve --debug
1180
  test "$opt_debug" = : || func_append preserve_args " --debug"
1181

    
1182
  case $host in
1183
    *cygwin* | *mingw* | *pw32* | *cegcc*)
1184
      # don't eliminate duplications in $postdeps and $predeps
1185
      opt_duplicate_compiler_generated_deps=:
1186
      ;;
1187
    *)
1188
      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1189
      ;;
1190
  esac
1191

    
1192
  $opt_help || {
1193
    # Sanity checks first:
1194
    func_check_version_match
1195

    
1196
    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1197
      func_fatal_configuration "not configured to build any kind of library"
1198
    fi
1199

    
1200
    # Darwin sucks
1201
    eval std_shrext=\"$shrext_cmds\"
1202

    
1203
    # Only execute mode is allowed to have -dlopen flags.
1204
    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205
      func_error "unrecognized option \`-dlopen'"
1206
      $ECHO "$help" 1>&2
1207
      exit $EXIT_FAILURE
1208
    fi
1209

    
1210
    # Change the help message to a mode-specific one.
1211
    generic_help="$help"
1212
    help="Try \`$progname --help --mode=$opt_mode' for more information."
1213
  }
1214

    
1215

    
1216
  # Bail if the options were screwed
1217
  $exit_cmd $EXIT_FAILURE
1218
}
1219

    
1220

    
1221

    
1222

    
1223
## ----------- ##
1224
##    Main.    ##
1225
## ----------- ##
1226

    
1227
# func_lalib_p file
1228
# True iff FILE is a libtool `.la' library or `.lo' object file.
1229
# This function is only a basic sanity check; it will hardly flush out
1230
# determined imposters.
1231
func_lalib_p ()
1232
{
1233
    test -f "$1" &&
1234
      $SED -e 4q "$1" 2>/dev/null \
1235
        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1236
}
1237

    
1238
# func_lalib_unsafe_p file
1239
# True iff FILE is a libtool `.la' library or `.lo' object file.
1240
# This function implements the same check as func_lalib_p without
1241
# resorting to external programs.  To this end, it redirects stdin and
1242
# closes it afterwards, without saving the original file descriptor.
1243
# As a safety measure, use it only where a negative result would be
1244
# fatal anyway.  Works if `file' does not exist.
1245
func_lalib_unsafe_p ()
1246
{
1247
    lalib_p=no
1248
    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1249
	for lalib_p_l in 1 2 3 4
1250
	do
1251
	    read lalib_p_line
1252
	    case "$lalib_p_line" in
1253
		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1254
	    esac
1255
	done
1256
	exec 0<&5 5<&-
1257
    fi
1258
    test "$lalib_p" = yes
1259
}
1260

    
1261
# func_ltwrapper_script_p file
1262
# True iff FILE is a libtool wrapper script
1263
# This function is only a basic sanity check; it will hardly flush out
1264
# determined imposters.
1265
func_ltwrapper_script_p ()
1266
{
1267
    func_lalib_p "$1"
1268
}
1269

    
1270
# func_ltwrapper_executable_p file
1271
# True iff FILE is a libtool wrapper executable
1272
# This function is only a basic sanity check; it will hardly flush out
1273
# determined imposters.
1274
func_ltwrapper_executable_p ()
1275
{
1276
    func_ltwrapper_exec_suffix=
1277
    case $1 in
1278
    *.exe) ;;
1279
    *) func_ltwrapper_exec_suffix=.exe ;;
1280
    esac
1281
    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1282
}
1283

    
1284
# func_ltwrapper_scriptname file
1285
# Assumes file is an ltwrapper_executable
1286
# uses $file to determine the appropriate filename for a
1287
# temporary ltwrapper_script.
1288
func_ltwrapper_scriptname ()
1289
{
1290
    func_dirname_and_basename "$1" "" "."
1291
    func_stripname '' '.exe' "$func_basename_result"
1292
    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1293
}
1294

    
1295
# func_ltwrapper_p file
1296
# True iff FILE is a libtool wrapper script or wrapper executable
1297
# This function is only a basic sanity check; it will hardly flush out
1298
# determined imposters.
1299
func_ltwrapper_p ()
1300
{
1301
    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1302
}
1303

    
1304

    
1305
# func_execute_cmds commands fail_cmd
1306
# Execute tilde-delimited COMMANDS.
1307
# If FAIL_CMD is given, eval that upon failure.
1308
# FAIL_CMD may read-access the current command in variable CMD!
1309
func_execute_cmds ()
1310
{
1311
    $opt_debug
1312
    save_ifs=$IFS; IFS='~'
1313
    for cmd in $1; do
1314
      IFS=$save_ifs
1315
      eval cmd=\"$cmd\"
1316
      func_show_eval "$cmd" "${2-:}"
1317
    done
1318
    IFS=$save_ifs
1319
}
1320

    
1321

    
1322
# func_source file
1323
# Source FILE, adding directory component if necessary.
1324
# Note that it is not necessary on cygwin/mingw to append a dot to
1325
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1326
# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1327
# `FILE.' does not work on cygwin managed mounts.
1328
func_source ()
1329
{
1330
    $opt_debug
1331
    case $1 in
1332
    */* | *\\*)	. "$1" ;;
1333
    *)		. "./$1" ;;
1334
    esac
1335
}
1336

    
1337

    
1338
# func_resolve_sysroot PATH
1339
# Replace a leading = in PATH with a sysroot.  Store the result into
1340
# func_resolve_sysroot_result
1341
func_resolve_sysroot ()
1342
{
1343
  func_resolve_sysroot_result=$1
1344
  case $func_resolve_sysroot_result in
1345
  =*)
1346
    func_stripname '=' '' "$func_resolve_sysroot_result"
1347
    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348
    ;;
1349
  esac
1350
}
1351

    
1352
# func_replace_sysroot PATH
1353
# If PATH begins with the sysroot, replace it with = and
1354
# store the result into func_replace_sysroot_result.
1355
func_replace_sysroot ()
1356
{
1357
  case "$lt_sysroot:$1" in
1358
  ?*:"$lt_sysroot"*)
1359
    func_stripname "$lt_sysroot" '' "$1"
1360
    func_replace_sysroot_result="=$func_stripname_result"
1361
    ;;
1362
  *)
1363
    # Including no sysroot.
1364
    func_replace_sysroot_result=$1
1365
    ;;
1366
  esac
1367
}
1368

    
1369
# func_infer_tag arg
1370
# Infer tagged configuration to use if any are available and
1371
# if one wasn't chosen via the "--tag" command line option.
1372
# Only attempt this if the compiler in the base compile
1373
# command doesn't match the default compiler.
1374
# arg is usually of the form 'gcc ...'
1375
func_infer_tag ()
1376
{
1377
    $opt_debug
1378
    if test -n "$available_tags" && test -z "$tagname"; then
1379
      CC_quoted=
1380
      for arg in $CC; do
1381
	func_append_quoted CC_quoted "$arg"
1382
      done
1383
      CC_expanded=`func_echo_all $CC`
1384
      CC_quoted_expanded=`func_echo_all $CC_quoted`
1385
      case $@ in
1386
      # Blanks in the command may have been stripped by the calling shell,
1387
      # but not from the CC environment variable when configure was run.
1388
      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1389
      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390
      # Blanks at the start of $base_compile will cause this to fail
1391
      # if we don't check for them as well.
1392
      *)
1393
	for z in $available_tags; do
1394
	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1395
	    # Evaluate the configuration.
1396
	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1397
	    CC_quoted=
1398
	    for arg in $CC; do
1399
	      # Double-quote args containing other shell metacharacters.
1400
	      func_append_quoted CC_quoted "$arg"
1401
	    done
1402
	    CC_expanded=`func_echo_all $CC`
1403
	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1404
	    case "$@ " in
1405
	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1406
	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407
	      # The compiler in the base compile command matches
1408
	      # the one in the tagged configuration.
1409
	      # Assume this is the tagged configuration we want.
1410
	      tagname=$z
1411
	      break
1412
	      ;;
1413
	    esac
1414
	  fi
1415
	done
1416
	# If $tagname still isn't set, then no tagged configuration
1417
	# was found and let the user know that the "--tag" command
1418
	# line option must be used.
1419
	if test -z "$tagname"; then
1420
	  func_echo "unable to infer tagged configuration"
1421
	  func_fatal_error "specify a tag with \`--tag'"
1422
#	else
1423
#	  func_verbose "using $tagname tagged configuration"
1424
	fi
1425
	;;
1426
      esac
1427
    fi
1428
}
1429

    
1430

    
1431

    
1432
# func_write_libtool_object output_name pic_name nonpic_name
1433
# Create a libtool object file (analogous to a ".la" file),
1434
# but don't create it if we're doing a dry run.
1435
func_write_libtool_object ()
1436
{
1437
    write_libobj=${1}
1438
    if test "$build_libtool_libs" = yes; then
1439
      write_lobj=\'${2}\'
1440
    else
1441
      write_lobj=none
1442
    fi
1443

    
1444
    if test "$build_old_libs" = yes; then
1445
      write_oldobj=\'${3}\'
1446
    else
1447
      write_oldobj=none
1448
    fi
1449

    
1450
    $opt_dry_run || {
1451
      cat >${write_libobj}T <<EOF
1452
# $write_libobj - a libtool object file
1453
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1454
#
1455
# Please DO NOT delete this file!
1456
# It is necessary for linking the library.
1457

    
1458
# Name of the PIC object.
1459
pic_object=$write_lobj
1460

    
1461
# Name of the non-PIC object
1462
non_pic_object=$write_oldobj
1463

    
1464
EOF
1465
      $MV "${write_libobj}T" "${write_libobj}"
1466
    }
1467
}
1468

    
1469

    
1470
##################################################
1471
# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472
##################################################
1473

    
1474
# func_convert_core_file_wine_to_w32 ARG
1475
# Helper function used by file name conversion functions when $build is *nix,
1476
# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477
# correctly configured wine environment available, with the winepath program
1478
# in $build's $PATH.
1479
#
1480
# ARG is the $build file name to be converted to w32 format.
1481
# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482
# be empty on error (or when ARG is empty)
1483
func_convert_core_file_wine_to_w32 ()
1484
{
1485
  $opt_debug
1486
  func_convert_core_file_wine_to_w32_result="$1"
1487
  if test -n "$1"; then
1488
    # Unfortunately, winepath does not exit with a non-zero error code, so we
1489
    # are forced to check the contents of stdout. On the other hand, if the
1490
    # command is not found, the shell will set an exit code of 127 and print
1491
    # *an error message* to stdout. So we must check for both error code of
1492
    # zero AND non-empty stdout, which explains the odd construction:
1493
    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494
    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495
      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496
        $SED -e "$lt_sed_naive_backslashify"`
1497
    else
1498
      func_convert_core_file_wine_to_w32_result=
1499
    fi
1500
  fi
1501
}
1502
# end: func_convert_core_file_wine_to_w32
1503

    
1504

    
1505
# func_convert_core_path_wine_to_w32 ARG
1506
# Helper function used by path conversion functions when $build is *nix, and
1507
# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508
# configured wine environment available, with the winepath program in $build's
1509
# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510
#
1511
# ARG is path to be converted from $build format to win32.
1512
# Result is available in $func_convert_core_path_wine_to_w32_result.
1513
# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514
# are convertible, then the result may be empty.
1515
func_convert_core_path_wine_to_w32 ()
1516
{
1517
  $opt_debug
1518
  # unfortunately, winepath doesn't convert paths, only file names
1519
  func_convert_core_path_wine_to_w32_result=""
1520
  if test -n "$1"; then
1521
    oldIFS=$IFS
1522
    IFS=:
1523
    for func_convert_core_path_wine_to_w32_f in $1; do
1524
      IFS=$oldIFS
1525
      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526
      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527
        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528
          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529
        else
1530
          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531
        fi
1532
      fi
1533
    done
1534
    IFS=$oldIFS
1535
  fi
1536
}
1537
# end: func_convert_core_path_wine_to_w32
1538

    
1539

    
1540
# func_cygpath ARGS...
1541
# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542
# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543
# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544
# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545
# file name or path is assumed to be in w32 format, as previously converted
1546
# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547
# or path in func_cygpath_result (input file name or path is assumed to be in
1548
# Cygwin format). Returns an empty string on error.
1549
#
1550
# ARGS are passed to cygpath, with the last one being the file name or path to
1551
# be converted.
1552
#
1553
# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554
# environment variable; do not put it in $PATH.
1555
func_cygpath ()
1556
{
1557
  $opt_debug
1558
  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559
    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560
    if test "$?" -ne 0; then
1561
      # on failure, ensure result is empty
1562
      func_cygpath_result=
1563
    fi
1564
  else
1565
    func_cygpath_result=
1566
    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567
  fi
1568
}
1569
#end: func_cygpath
1570

    
1571

    
1572
# func_convert_core_msys_to_w32 ARG
1573
# Convert file name or path ARG from MSYS format to w32 format.  Return
1574
# result in func_convert_core_msys_to_w32_result.
1575
func_convert_core_msys_to_w32 ()
1576
{
1577
  $opt_debug
1578
  # awkward: cmd appends spaces to result
1579
  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580
    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581
}
1582
#end: func_convert_core_msys_to_w32
1583

    
1584

    
1585
# func_convert_file_check ARG1 ARG2
1586
# Verify that ARG1 (a file name in $build format) was converted to $host
1587
# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588
# func_to_host_file_result to ARG1).
1589
func_convert_file_check ()
1590
{
1591
  $opt_debug
1592
  if test -z "$2" && test -n "$1" ; then
1593
    func_error "Could not determine host file name corresponding to"
1594
    func_error "  \`$1'"
1595
    func_error "Continuing, but uninstalled executables may not work."
1596
    # Fallback:
1597
    func_to_host_file_result="$1"
1598
  fi
1599
}
1600
# end func_convert_file_check
1601

    
1602

    
1603
# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604
# Verify that FROM_PATH (a path in $build format) was converted to $host
1605
# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606
# func_to_host_file_result to a simplistic fallback value (see below).
1607
func_convert_path_check ()
1608
{
1609
  $opt_debug
1610
  if test -z "$4" && test -n "$3"; then
1611
    func_error "Could not determine the host path corresponding to"
1612
    func_error "  \`$3'"
1613
    func_error "Continuing, but uninstalled executables may not work."
1614
    # Fallback.  This is a deliberately simplistic "conversion" and
1615
    # should not be "improved".  See libtool.info.
1616
    if test "x$1" != "x$2"; then
1617
      lt_replace_pathsep_chars="s|$1|$2|g"
1618
      func_to_host_path_result=`echo "$3" |
1619
        $SED -e "$lt_replace_pathsep_chars"`
1620
    else
1621
      func_to_host_path_result="$3"
1622
    fi
1623
  fi
1624
}
1625
# end func_convert_path_check
1626

    
1627

    
1628
# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629
# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630
# and appending REPL if ORIG matches BACKPAT.
1631
func_convert_path_front_back_pathsep ()
1632
{
1633
  $opt_debug
1634
  case $4 in
1635
  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636
    ;;
1637
  esac
1638
  case $4 in
1639
  $2 ) func_append func_to_host_path_result "$3"
1640
    ;;
1641
  esac
1642
}
1643
# end func_convert_path_front_back_pathsep
1644

    
1645

    
1646
##################################################
1647
# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648
##################################################
1649
# invoked via `$to_host_file_cmd ARG'
1650
#
1651
# In each case, ARG is the path to be converted from $build to $host format.
1652
# Result will be available in $func_to_host_file_result.
1653

    
1654

    
1655
# func_to_host_file ARG
1656
# Converts the file name ARG from $build format to $host format. Return result
1657
# in func_to_host_file_result.
1658
func_to_host_file ()
1659
{
1660
  $opt_debug
1661
  $to_host_file_cmd "$1"
1662
}
1663
# end func_to_host_file
1664

    
1665

    
1666
# func_to_tool_file ARG LAZY
1667
# converts the file name ARG from $build format to toolchain format. Return
1668
# result in func_to_tool_file_result.  If the conversion in use is listed
1669
# in (the comma separated) LAZY, no conversion takes place.
1670
func_to_tool_file ()
1671
{
1672
  $opt_debug
1673
  case ,$2, in
1674
    *,"$to_tool_file_cmd",*)
1675
      func_to_tool_file_result=$1
1676
      ;;
1677
    *)
1678
      $to_tool_file_cmd "$1"
1679
      func_to_tool_file_result=$func_to_host_file_result
1680
      ;;
1681
  esac
1682
}
1683
# end func_to_tool_file
1684

    
1685

    
1686
# func_convert_file_noop ARG
1687
# Copy ARG to func_to_host_file_result.
1688
func_convert_file_noop ()
1689
{
1690
  func_to_host_file_result="$1"
1691
}
1692
# end func_convert_file_noop
1693

    
1694

    
1695
# func_convert_file_msys_to_w32 ARG
1696
# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697
# conversion to w32 is not available inside the cwrapper.  Returns result in
1698
# func_to_host_file_result.
1699
func_convert_file_msys_to_w32 ()
1700
{
1701
  $opt_debug
1702
  func_to_host_file_result="$1"
1703
  if test -n "$1"; then
1704
    func_convert_core_msys_to_w32 "$1"
1705
    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706
  fi
1707
  func_convert_file_check "$1" "$func_to_host_file_result"
1708
}
1709
# end func_convert_file_msys_to_w32
1710

    
1711

    
1712
# func_convert_file_cygwin_to_w32 ARG
1713
# Convert file name ARG from Cygwin to w32 format.  Returns result in
1714
# func_to_host_file_result.
1715
func_convert_file_cygwin_to_w32 ()
1716
{
1717
  $opt_debug
1718
  func_to_host_file_result="$1"
1719
  if test -n "$1"; then
1720
    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721
    # LT_CYGPATH in this case.
1722
    func_to_host_file_result=`cygpath -m "$1"`
1723
  fi
1724
  func_convert_file_check "$1" "$func_to_host_file_result"
1725
}
1726
# end func_convert_file_cygwin_to_w32
1727

    
1728

    
1729
# func_convert_file_nix_to_w32 ARG
1730
# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1731
# and a working winepath. Returns result in func_to_host_file_result.
1732
func_convert_file_nix_to_w32 ()
1733
{
1734
  $opt_debug
1735
  func_to_host_file_result="$1"
1736
  if test -n "$1"; then
1737
    func_convert_core_file_wine_to_w32 "$1"
1738
    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739
  fi
1740
  func_convert_file_check "$1" "$func_to_host_file_result"
1741
}
1742
# end func_convert_file_nix_to_w32
1743

    
1744

    
1745
# func_convert_file_msys_to_cygwin ARG
1746
# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1747
# Returns result in func_to_host_file_result.
1748
func_convert_file_msys_to_cygwin ()
1749
{
1750
  $opt_debug
1751
  func_to_host_file_result="$1"
1752
  if test -n "$1"; then
1753
    func_convert_core_msys_to_w32 "$1"
1754
    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755
    func_to_host_file_result="$func_cygpath_result"
1756
  fi
1757
  func_convert_file_check "$1" "$func_to_host_file_result"
1758
}
1759
# end func_convert_file_msys_to_cygwin
1760

    
1761

    
1762
# func_convert_file_nix_to_cygwin ARG
1763
# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1764
# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1765
# in func_to_host_file_result.
1766
func_convert_file_nix_to_cygwin ()
1767
{
1768
  $opt_debug
1769
  func_to_host_file_result="$1"
1770
  if test -n "$1"; then
1771
    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772
    func_convert_core_file_wine_to_w32 "$1"
1773
    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774
    func_to_host_file_result="$func_cygpath_result"
1775
  fi
1776
  func_convert_file_check "$1" "$func_to_host_file_result"
1777
}
1778
# end func_convert_file_nix_to_cygwin
1779

    
1780

    
1781
#############################################
1782
# $build to $host PATH CONVERSION FUNCTIONS #
1783
#############################################
1784
# invoked via `$to_host_path_cmd ARG'
1785
#
1786
# In each case, ARG is the path to be converted from $build to $host format.
1787
# The result will be available in $func_to_host_path_result.
1788
#
1789
# Path separators are also converted from $build format to $host format.  If
1790
# ARG begins or ends with a path separator character, it is preserved (but
1791
# converted to $host format) on output.
1792
#
1793
# All path conversion functions are named using the following convention:
1794
#   file name conversion function    : func_convert_file_X_to_Y ()
1795
#   path conversion function         : func_convert_path_X_to_Y ()
1796
# where, for any given $build/$host combination the 'X_to_Y' value is the
1797
# same.  If conversion functions are added for new $build/$host combinations,
1798
# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799
# will break.
1800

    
1801

    
1802
# func_init_to_host_path_cmd
1803
# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804
# appropriate value, based on the value of $to_host_file_cmd.
1805
to_host_path_cmd=
1806
func_init_to_host_path_cmd ()
1807
{
1808
  $opt_debug
1809
  if test -z "$to_host_path_cmd"; then
1810
    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811
    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812
  fi
1813
}
1814

    
1815

    
1816
# func_to_host_path ARG
1817
# Converts the path ARG from $build format to $host format. Return result
1818
# in func_to_host_path_result.
1819
func_to_host_path ()
1820
{
1821
  $opt_debug
1822
  func_init_to_host_path_cmd
1823
  $to_host_path_cmd "$1"
1824
}
1825
# end func_to_host_path
1826

    
1827

    
1828
# func_convert_path_noop ARG
1829
# Copy ARG to func_to_host_path_result.
1830
func_convert_path_noop ()
1831
{
1832
  func_to_host_path_result="$1"
1833
}
1834
# end func_convert_path_noop
1835

    
1836

    
1837
# func_convert_path_msys_to_w32 ARG
1838
# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839
# conversion to w32 is not available inside the cwrapper.  Returns result in
1840
# func_to_host_path_result.
1841
func_convert_path_msys_to_w32 ()
1842
{
1843
  $opt_debug
1844
  func_to_host_path_result="$1"
1845
  if test -n "$1"; then
1846
    # Remove leading and trailing path separator characters from ARG.  MSYS
1847
    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848
    # and winepath ignores them completely.
1849
    func_stripname : : "$1"
1850
    func_to_host_path_tmp1=$func_stripname_result
1851
    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852
    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853
    func_convert_path_check : ";" \
1854
      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855
    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856
  fi
1857
}
1858
# end func_convert_path_msys_to_w32
1859

    
1860

    
1861
# func_convert_path_cygwin_to_w32 ARG
1862
# Convert path ARG from Cygwin to w32 format.  Returns result in
1863
# func_to_host_file_result.
1864
func_convert_path_cygwin_to_w32 ()
1865
{
1866
  $opt_debug
1867
  func_to_host_path_result="$1"
1868
  if test -n "$1"; then
1869
    # See func_convert_path_msys_to_w32:
1870
    func_stripname : : "$1"
1871
    func_to_host_path_tmp1=$func_stripname_result
1872
    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873
    func_convert_path_check : ";" \
1874
      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875
    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876
  fi
1877
}
1878
# end func_convert_path_cygwin_to_w32
1879

    
1880

    
1881
# func_convert_path_nix_to_w32 ARG
1882
# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1883
# a working winepath.  Returns result in func_to_host_file_result.
1884
func_convert_path_nix_to_w32 ()
1885
{
1886
  $opt_debug
1887
  func_to_host_path_result="$1"
1888
  if test -n "$1"; then
1889
    # See func_convert_path_msys_to_w32:
1890
    func_stripname : : "$1"
1891
    func_to_host_path_tmp1=$func_stripname_result
1892
    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893
    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894
    func_convert_path_check : ";" \
1895
      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896
    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897
  fi
1898
}
1899
# end func_convert_path_nix_to_w32
1900

    
1901

    
1902
# func_convert_path_msys_to_cygwin ARG
1903
# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1904
# Returns result in func_to_host_file_result.
1905
func_convert_path_msys_to_cygwin ()
1906
{
1907
  $opt_debug
1908
  func_to_host_path_result="$1"
1909
  if test -n "$1"; then
1910
    # See func_convert_path_msys_to_w32:
1911
    func_stripname : : "$1"
1912
    func_to_host_path_tmp1=$func_stripname_result
1913
    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914
    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915
    func_to_host_path_result="$func_cygpath_result"
1916
    func_convert_path_check : : \
1917
      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918
    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919
  fi
1920
}
1921
# end func_convert_path_msys_to_cygwin
1922

    
1923

    
1924
# func_convert_path_nix_to_cygwin ARG
1925
# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1926
# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1927
# func_to_host_file_result.
1928
func_convert_path_nix_to_cygwin ()
1929
{
1930
  $opt_debug
1931
  func_to_host_path_result="$1"
1932
  if test -n "$1"; then
1933
    # Remove leading and trailing path separator characters from
1934
    # ARG. msys behavior is inconsistent here, cygpath turns them
1935
    # into '.;' and ';.', and winepath ignores them completely.
1936
    func_stripname : : "$1"
1937
    func_to_host_path_tmp1=$func_stripname_result
1938
    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939
    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940
    func_to_host_path_result="$func_cygpath_result"
1941
    func_convert_path_check : : \
1942
      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943
    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944
  fi
1945
}
1946
# end func_convert_path_nix_to_cygwin
1947

    
1948

    
1949
# func_mode_compile arg...
1950
func_mode_compile ()
1951
{
1952
    $opt_debug
1953
    # Get the compilation command and the source file.
1954
    base_compile=
1955
    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1956
    suppress_opt=yes
1957
    suppress_output=
1958
    arg_mode=normal
1959
    libobj=
1960
    later=
1961
    pie_flag=
1962

    
1963
    for arg
1964
    do
1965
      case $arg_mode in
1966
      arg  )
1967
	# do not "continue".  Instead, add this to base_compile
1968
	lastarg="$arg"
1969
	arg_mode=normal
1970
	;;
1971

    
1972
      target )
1973
	libobj="$arg"
1974
	arg_mode=normal
1975
	continue
1976
	;;
1977

    
1978
      normal )
1979
	# Accept any command-line options.
1980
	case $arg in
1981
	-o)
1982
	  test -n "$libobj" && \
1983
	    func_fatal_error "you cannot specify \`-o' more than once"
1984
	  arg_mode=target
1985
	  continue
1986
	  ;;
1987

    
1988
	-pie | -fpie | -fPIE)
1989
          func_append pie_flag " $arg"
1990
	  continue
1991
	  ;;
1992

    
1993
	-shared | -static | -prefer-pic | -prefer-non-pic)
1994
	  func_append later " $arg"
1995
	  continue
1996
	  ;;
1997

    
1998
	-no-suppress)
1999
	  suppress_opt=no
2000
	  continue
2001
	  ;;
2002

    
2003
	-Xcompiler)
2004
	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2005
	  continue      #  The current "srcfile" will either be retained or
2006
	  ;;            #  replaced later.  I would guess that would be a bug.
2007

    
2008
	-Wc,*)
2009
	  func_stripname '-Wc,' '' "$arg"
2010
	  args=$func_stripname_result
2011
	  lastarg=
2012
	  save_ifs="$IFS"; IFS=','
2013
	  for arg in $args; do
2014
	    IFS="$save_ifs"
2015
	    func_append_quoted lastarg "$arg"
2016
	  done
2017
	  IFS="$save_ifs"
2018
	  func_stripname ' ' '' "$lastarg"
2019
	  lastarg=$func_stripname_result
2020

    
2021
	  # Add the arguments to base_compile.
2022
	  func_append base_compile " $lastarg"
2023
	  continue
2024
	  ;;
2025

    
2026
	*)
2027
	  # Accept the current argument as the source file.
2028
	  # The previous "srcfile" becomes the current argument.
2029
	  #
2030
	  lastarg="$srcfile"
2031
	  srcfile="$arg"
2032
	  ;;
2033
	esac  #  case $arg
2034
	;;
2035
      esac    #  case $arg_mode
2036

    
2037
      # Aesthetically quote the previous argument.
2038
      func_append_quoted base_compile "$lastarg"
2039
    done # for arg
2040

    
2041
    case $arg_mode in
2042
    arg)
2043
      func_fatal_error "you must specify an argument for -Xcompile"
2044
      ;;
2045
    target)
2046
      func_fatal_error "you must specify a target with \`-o'"
2047
      ;;
2048
    *)
2049
      # Get the name of the library object.
2050
      test -z "$libobj" && {
2051
	func_basename "$srcfile"
2052
	libobj="$func_basename_result"
2053
      }
2054
      ;;
2055
    esac
2056

    
2057
    # Recognize several different file suffixes.
2058
    # If the user specifies -o file.o, it is replaced with file.lo
2059
    case $libobj in
2060
    *.[cCFSifmso] | \
2061
    *.ada | *.adb | *.ads | *.asm | \
2062
    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063
    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2064
      func_xform "$libobj"
2065
      libobj=$func_xform_result
2066
      ;;
2067
    esac
2068

    
2069
    case $libobj in
2070
    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071
    *)
2072
      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073
      ;;
2074
    esac
2075

    
2076
    func_infer_tag $base_compile
2077

    
2078
    for arg in $later; do
2079
      case $arg in
2080
      -shared)
2081
	test "$build_libtool_libs" != yes && \
2082
	  func_fatal_configuration "can not build a shared library"
2083
	build_old_libs=no
2084
	continue
2085
	;;
2086

    
2087
      -static)
2088
	build_libtool_libs=no
2089
	build_old_libs=yes
2090
	continue
2091
	;;
2092

    
2093
      -prefer-pic)
2094
	pic_mode=yes
2095
	continue
2096
	;;
2097

    
2098
      -prefer-non-pic)
2099
	pic_mode=no
2100
	continue
2101
	;;
2102
      esac
2103
    done
2104

    
2105
    func_quote_for_eval "$libobj"
2106
    test "X$libobj" != "X$func_quote_for_eval_result" \
2107
      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2108
      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2109
    func_dirname_and_basename "$obj" "/" ""
2110
    objname="$func_basename_result"
2111
    xdir="$func_dirname_result"
2112
    lobj=${xdir}$objdir/$objname
2113

    
2114
    test -z "$base_compile" && \
2115
      func_fatal_help "you must specify a compilation command"
2116

    
2117
    # Delete any leftover library objects.
2118
    if test "$build_old_libs" = yes; then
2119
      removelist="$obj $lobj $libobj ${libobj}T"
2120
    else
2121
      removelist="$lobj $libobj ${libobj}T"
2122
    fi
2123

    
2124
    # On Cygwin there's no "real" PIC flag so we must build both object types
2125
    case $host_os in
2126
    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127
      pic_mode=default
2128
      ;;
2129
    esac
2130
    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131
      # non-PIC code in shared libraries is not supported
2132
      pic_mode=default
2133
    fi
2134

    
2135
    # Calculate the filename of the output object if compiler does
2136
    # not support -o with -c
2137
    if test "$compiler_c_o" = no; then
2138
      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139
      lockfile="$output_obj.lock"
2140
    else
2141
      output_obj=
2142
      need_locks=no
2143
      lockfile=
2144
    fi
2145

    
2146
    # Lock this critical section if it is needed
2147
    # We use this script file to make the link, it avoids creating a new file
2148
    if test "$need_locks" = yes; then
2149
      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2150
	func_echo "Waiting for $lockfile to be removed"
2151
	sleep 2
2152
      done
2153
    elif test "$need_locks" = warn; then
2154
      if test -f "$lockfile"; then
2155
	$ECHO "\
2156
*** ERROR, $lockfile exists and contains:
2157
`cat $lockfile 2>/dev/null`
2158

    
2159
This indicates that another process is trying to use the same
2160
temporary object file, and libtool could not work around it because
2161
your compiler does not support \`-c' and \`-o' together.  If you
2162
repeat this compilation, it may succeed, by chance, but you had better
2163
avoid parallel builds (make -j) in this platform, or get a better
2164
compiler."
2165

    
2166
	$opt_dry_run || $RM $removelist
2167
	exit $EXIT_FAILURE
2168
      fi
2169
      func_append removelist " $output_obj"
2170
      $ECHO "$srcfile" > "$lockfile"
2171
    fi
2172

    
2173
    $opt_dry_run || $RM $removelist
2174
    func_append removelist " $lockfile"
2175
    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176

    
2177
    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2178
    srcfile=$func_to_tool_file_result
2179
    func_quote_for_eval "$srcfile"
2180
    qsrcfile=$func_quote_for_eval_result
2181

    
2182
    # Only build a PIC object if we are building libtool libraries.
2183
    if test "$build_libtool_libs" = yes; then
2184
      # Without this assignment, base_compile gets emptied.
2185
      fbsd_hideous_sh_bug=$base_compile
2186

    
2187
      if test "$pic_mode" != no; then
2188
	command="$base_compile $qsrcfile $pic_flag"
2189
      else
2190
	# Don't build PIC code
2191
	command="$base_compile $qsrcfile"
2192
      fi
2193

    
2194
      func_mkdir_p "$xdir$objdir"
2195

    
2196
      if test -z "$output_obj"; then
2197
	# Place PIC objects in $objdir
2198
	func_append command " -o $lobj"
2199
      fi
2200

    
2201
      func_show_eval_locale "$command"	\
2202
          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203

    
2204
      if test "$need_locks" = warn &&
2205
	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2206
	$ECHO "\
2207
*** ERROR, $lockfile contains:
2208
`cat $lockfile 2>/dev/null`
2209

    
2210
but it should contain:
2211
$srcfile
2212

    
2213
This indicates that another process is trying to use the same
2214
temporary object file, and libtool could not work around it because
2215
your compiler does not support \`-c' and \`-o' together.  If you
2216
repeat this compilation, it may succeed, by chance, but you had better
2217
avoid parallel builds (make -j) in this platform, or get a better
2218
compiler."
2219

    
2220
	$opt_dry_run || $RM $removelist
2221
	exit $EXIT_FAILURE
2222
      fi
2223

    
2224
      # Just move the object if needed, then go on to compile the next one
2225
      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2226
	func_show_eval '$MV "$output_obj" "$lobj"' \
2227
	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228
      fi
2229

    
2230
      # Allow error messages only from the first compilation.
2231
      if test "$suppress_opt" = yes; then
2232
	suppress_output=' >/dev/null 2>&1'
2233
      fi
2234
    fi
2235

    
2236
    # Only build a position-dependent object if we build old libraries.
2237
    if test "$build_old_libs" = yes; then
2238
      if test "$pic_mode" != yes; then
2239
	# Don't build PIC code
2240
	command="$base_compile $qsrcfile$pie_flag"
2241
      else
2242
	command="$base_compile $qsrcfile $pic_flag"
2243
      fi
2244
      if test "$compiler_c_o" = yes; then
2245
	func_append command " -o $obj"
2246
      fi
2247

    
2248
      # Suppress compiler output if we already did a PIC compilation.
2249
      func_append command "$suppress_output"
2250
      func_show_eval_locale "$command" \
2251
        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252

    
2253
      if test "$need_locks" = warn &&
2254
	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2255
	$ECHO "\
2256
*** ERROR, $lockfile contains:
2257
`cat $lockfile 2>/dev/null`
2258

    
2259
but it should contain:
2260
$srcfile
2261

    
2262
This indicates that another process is trying to use the same
2263
temporary object file, and libtool could not work around it because
2264
your compiler does not support \`-c' and \`-o' together.  If you
2265
repeat this compilation, it may succeed, by chance, but you had better
2266
avoid parallel builds (make -j) in this platform, or get a better
2267
compiler."
2268

    
2269
	$opt_dry_run || $RM $removelist
2270
	exit $EXIT_FAILURE
2271
      fi
2272

    
2273
      # Just move the object if needed
2274
      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2275
	func_show_eval '$MV "$output_obj" "$obj"' \
2276
	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277
      fi
2278
    fi
2279

    
2280
    $opt_dry_run || {
2281
      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282

    
2283
      # Unlock the critical section if it was locked
2284
      if test "$need_locks" != no; then
2285
	removelist=$lockfile
2286
        $RM "$lockfile"
2287
      fi
2288
    }
2289

    
2290
    exit $EXIT_SUCCESS
2291
}
2292

    
2293
$opt_help || {
2294
  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2295
}
2296

    
2297
func_mode_help ()
2298
{
2299
    # We need to display help for each of the modes.
2300
    case $opt_mode in
2301
      "")
2302
        # Generic help is extracted from the usage comments
2303
        # at the start of this file.
2304
        func_help
2305
        ;;
2306

    
2307
      clean)
2308
        $ECHO \
2309
"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310

    
2311
Remove files from the build directory.
2312

    
2313
RM is the name of the program to use to delete files associated with each FILE
2314
(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2315
to RM.
2316

    
2317
If FILE is a libtool library, object or program, all the files associated
2318
with it are deleted. Otherwise, only FILE itself is deleted using RM."
2319
        ;;
2320

    
2321
      compile)
2322
      $ECHO \
2323
"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324

    
2325
Compile a source file into a libtool library object.
2326

    
2327
This mode accepts the following additional options:
2328

    
2329
  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2330
  -no-suppress      do not suppress compiler output for multiple passes
2331
  -prefer-pic       try to build PIC objects only
2332
  -prefer-non-pic   try to build non-PIC objects only
2333
  -shared           do not build a \`.o' file suitable for static linking
2334
  -static           only build a \`.o' file suitable for static linking
2335
  -Wc,FLAG          pass FLAG directly to the compiler
2336

    
2337
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338
from the given SOURCEFILE.
2339

    
2340
The output file name is determined by removing the directory component from
2341
SOURCEFILE, then substituting the C source code suffix \`.c' with the
2342
library object suffix, \`.lo'."
2343
        ;;
2344

    
2345
      execute)
2346
        $ECHO \
2347
"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348

    
2349
Automatically set library path, then run a program.
2350

    
2351
This mode accepts the following additional options:
2352

    
2353
  -dlopen FILE      add the directory containing FILE to the library path
2354

    
2355
This mode sets the library path environment variable according to \`-dlopen'
2356
flags.
2357

    
2358
If any of the ARGS are libtool executable wrappers, then they are translated
2359
into their corresponding uninstalled binary, and any of their required library
2360
directories are added to the library path.
2361

    
2362
Then, COMMAND is executed, with ARGS as arguments."
2363
        ;;
2364

    
2365
      finish)
2366
        $ECHO \
2367
"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368

    
2369
Complete the installation of libtool libraries.
2370

    
2371
Each LIBDIR is a directory that contains libtool libraries.
2372

    
2373
The commands that this mode executes may require superuser privileges.  Use
2374
the \`--dry-run' option if you just want to see what would be executed."
2375
        ;;
2376

    
2377
      install)
2378
        $ECHO \
2379
"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380

    
2381
Install executables or libraries.
2382

    
2383
INSTALL-COMMAND is the installation command.  The first component should be
2384
either the \`install' or \`cp' program.
2385

    
2386
The following components of INSTALL-COMMAND are treated specially:
2387

    
2388
  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389

    
2390
The rest of the components are interpreted as arguments to that command (only
2391
BSD-compatible install options are recognized)."
2392
        ;;
2393

    
2394
      link)
2395
        $ECHO \
2396
"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397

    
2398
Link object files or libraries together to form another library, or to
2399
create an executable program.
2400

    
2401
LINK-COMMAND is a command using the C compiler that you would use to create
2402
a program from several object files.
2403

    
2404
The following components of LINK-COMMAND are treated specially:
2405

    
2406
  -all-static       do not do any dynamic linking at all
2407
  -avoid-version    do not add a version suffix if possible
2408
  -bindir BINDIR    specify path to binaries directory (for systems where
2409
                    libraries must be found in the PATH setting at runtime)
2410
  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411
  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2412
  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2413
  -export-symbols SYMFILE
2414
                    try to export only the symbols listed in SYMFILE
2415
  -export-symbols-regex REGEX
2416
                    try to export only the symbols matching REGEX
2417
  -LLIBDIR          search LIBDIR for required installed libraries
2418
  -lNAME            OUTPUT-FILE requires the installed library libNAME
2419
  -module           build a library that can dlopened
2420
  -no-fast-install  disable the fast-install mode
2421
  -no-install       link a not-installable executable
2422
  -no-undefined     declare that a library does not refer to external symbols
2423
  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2424
  -objectlist FILE  Use a list of object files found in FILE to specify objects
2425
  -precious-files-regex REGEX
2426
                    don't remove output files matching REGEX
2427
  -release RELEASE  specify package release information
2428
  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2429
  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2430
  -shared           only do dynamic linking of libtool libraries
2431
  -shrext SUFFIX    override the standard shared library file extension
2432
  -static           do not do any dynamic linking of uninstalled libtool libraries
2433
  -static-libtool-libs
2434
                    do not do any dynamic linking of libtool libraries
2435
  -version-info CURRENT[:REVISION[:AGE]]
2436
                    specify library version info [each variable defaults to 0]
2437
  -weak LIBNAME     declare that the target provides the LIBNAME interface
2438
  -Wc,FLAG
2439
  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2440
  -Wl,FLAG
2441
  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2442
  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443

    
2444
All other options (arguments beginning with \`-') are ignored.
2445

    
2446
Every other argument is treated as a filename.  Files ending in \`.la' are
2447
treated as uninstalled libtool libraries, other files are standard or library
2448
object files.
2449

    
2450
If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2451
only library objects (\`.lo' files) may be specified, and \`-rpath' is
2452
required, except when creating a convenience library.
2453

    
2454
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2455
using \`ar' and \`ranlib', or on Windows using \`lib'.
2456

    
2457
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2458
is created, otherwise an executable program is created."
2459
        ;;
2460

    
2461
      uninstall)
2462
        $ECHO \
2463
"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464

    
2465
Remove libraries from an installation directory.
2466

    
2467
RM is the name of the program to use to delete files associated with each FILE
2468
(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2469
to RM.
2470

    
2471
If FILE is a libtool library, all the files associated with it are deleted.
2472
Otherwise, only FILE itself is deleted using RM."
2473
        ;;
2474

    
2475
      *)
2476
        func_fatal_help "invalid operation mode \`$opt_mode'"
2477
        ;;
2478
    esac
2479

    
2480
    echo
2481
    $ECHO "Try \`$progname --help' for more information about other modes."
2482
}
2483

    
2484
# Now that we've collected a possible --mode arg, show help if necessary
2485
if $opt_help; then
2486
  if test "$opt_help" = :; then
2487
    func_mode_help
2488
  else
2489
    {
2490
      func_help noexit
2491
      for opt_mode in compile link execute install finish uninstall clean; do
2492
	func_mode_help
2493
      done
2494
    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2495
    {
2496
      func_help noexit
2497
      for opt_mode in compile link execute install finish uninstall clean; do
2498
	echo
2499
	func_mode_help
2500
      done
2501
    } |
2502
    sed '1d
2503
      /^When reporting/,/^Report/{
2504
	H
2505
	d
2506
      }
2507
      $x
2508
      /information about other modes/d
2509
      /more detailed .*MODE/d
2510
      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511
  fi
2512
  exit $?
2513
fi
2514

    
2515

    
2516
# func_mode_execute arg...
2517
func_mode_execute ()
2518
{
2519
    $opt_debug
2520
    # The first argument is the command name.
2521
    cmd="$nonopt"
2522
    test -z "$cmd" && \
2523
      func_fatal_help "you must specify a COMMAND"
2524

    
2525
    # Handle -dlopen flags immediately.
2526
    for file in $opt_dlopen; do
2527
      test -f "$file" \
2528
	|| func_fatal_help "\`$file' is not a file"
2529

    
2530
      dir=
2531
      case $file in
2532
      *.la)
2533
	func_resolve_sysroot "$file"
2534
	file=$func_resolve_sysroot_result
2535

    
2536
	# Check to see that this really is a libtool archive.
2537
	func_lalib_unsafe_p "$file" \
2538
	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539

    
2540
	# Read the libtool library.
2541
	dlname=
2542
	library_names=
2543
	func_source "$file"
2544

    
2545
	# Skip this library if it cannot be dlopened.
2546
	if test -z "$dlname"; then
2547
	  # Warn if it was a shared library.
2548
	  test -n "$library_names" && \
2549
	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2550
	  continue
2551
	fi
2552

    
2553
	func_dirname "$file" "" "."
2554
	dir="$func_dirname_result"
2555

    
2556
	if test -f "$dir/$objdir/$dlname"; then
2557
	  func_append dir "/$objdir"
2558
	else
2559
	  if test ! -f "$dir/$dlname"; then
2560
	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2561
	  fi
2562
	fi
2563
	;;
2564

    
2565
      *.lo)
2566
	# Just add the directory containing the .lo file.
2567
	func_dirname "$file" "" "."
2568
	dir="$func_dirname_result"
2569
	;;
2570

    
2571
      *)
2572
	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573
	continue
2574
	;;
2575
      esac
2576

    
2577
      # Get the absolute pathname.
2578
      absdir=`cd "$dir" && pwd`
2579
      test -n "$absdir" && dir="$absdir"
2580

    
2581
      # Now add the directory to shlibpath_var.
2582
      if eval "test -z \"\$$shlibpath_var\""; then
2583
	eval "$shlibpath_var=\"\$dir\""
2584
      else
2585
	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2586
      fi
2587
    done
2588

    
2589
    # This variable tells wrapper scripts just to set shlibpath_var
2590
    # rather than running their programs.
2591
    libtool_execute_magic="$magic"
2592

    
2593
    # Check if any of the arguments is a wrapper script.
2594
    args=
2595
    for file
2596
    do
2597
      case $file in
2598
      -* | *.la | *.lo ) ;;
2599
      *)
2600
	# Do a test to see if this is really a libtool program.
2601
	if func_ltwrapper_script_p "$file"; then
2602
	  func_source "$file"
2603
	  # Transform arg to wrapped name.
2604
	  file="$progdir/$program"
2605
	elif func_ltwrapper_executable_p "$file"; then
2606
	  func_ltwrapper_scriptname "$file"
2607
	  func_source "$func_ltwrapper_scriptname_result"
2608
	  # Transform arg to wrapped name.
2609
	  file="$progdir/$program"
2610
	fi
2611
	;;
2612
      esac
2613
      # Quote arguments (to preserve shell metacharacters).
2614
      func_append_quoted args "$file"
2615
    done
2616

    
2617
    if test "X$opt_dry_run" = Xfalse; then
2618
      if test -n "$shlibpath_var"; then
2619
	# Export the shlibpath_var.
2620
	eval "export $shlibpath_var"
2621
      fi
2622

    
2623
      # Restore saved environment variables
2624
      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625
      do
2626
	eval "if test \"\${save_$lt_var+set}\" = set; then
2627
                $lt_var=\$save_$lt_var; export $lt_var
2628
	      else
2629
		$lt_unset $lt_var
2630
	      fi"
2631
      done
2632

    
2633
      # Now prepare to actually exec the command.
2634
      exec_cmd="\$cmd$args"
2635
    else
2636
      # Display what would be done.
2637
      if test -n "$shlibpath_var"; then
2638
	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639
	echo "export $shlibpath_var"
2640
      fi
2641
      $ECHO "$cmd$args"
2642
      exit $EXIT_SUCCESS
2643
    fi
2644
}
2645

    
2646
test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647

    
2648

    
2649
# func_mode_finish arg...
2650
func_mode_finish ()
2651
{
2652
    $opt_debug
2653
    libs=
2654
    libdirs=
2655
    admincmds=
2656

    
2657
    for opt in "$nonopt" ${1+"$@"}
2658
    do
2659
      if test -d "$opt"; then
2660
	func_append libdirs " $opt"
2661

    
2662
      elif test -f "$opt"; then
2663
	if func_lalib_unsafe_p "$opt"; then
2664
	  func_append libs " $opt"
2665
	else
2666
	  func_warning "\`$opt' is not a valid libtool archive"
2667
	fi
2668

    
2669
      else
2670
	func_fatal_error "invalid argument \`$opt'"
2671
      fi
2672
    done
2673

    
2674
    if test -n "$libs"; then
2675
      if test -n "$lt_sysroot"; then
2676
        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677
        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678
      else
2679
        sysroot_cmd=
2680
      fi
2681

    
2682
      # Remove sysroot references
2683
      if $opt_dry_run; then
2684
        for lib in $libs; do
2685
          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686
        done
2687
      else
2688
        tmpdir=`func_mktempdir`
2689
        for lib in $libs; do
2690
	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691
	    > $tmpdir/tmp-la
2692
	  mv -f $tmpdir/tmp-la $lib
2693
	done
2694
        ${RM}r "$tmpdir"
2695
      fi
2696
    fi
2697

    
2698
    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2699
      for libdir in $libdirs; do
2700
	if test -n "$finish_cmds"; then
2701
	  # Do each command in the finish commands.
2702
	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2703
'"$cmd"'"'
2704
	fi
2705
	if test -n "$finish_eval"; then
2706
	  # Do the single finish_eval.
2707
	  eval cmds=\"$finish_eval\"
2708
	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2709
       $cmds"
2710
	fi
2711
      done
2712
    fi
2713

    
2714
    # Exit here if they wanted silent mode.
2715
    $opt_silent && exit $EXIT_SUCCESS
2716

    
2717
    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2718
      echo "----------------------------------------------------------------------"
2719
      echo "Libraries have been installed in:"
2720
      for libdir in $libdirs; do
2721
	$ECHO "   $libdir"
2722
      done
2723
      echo
2724
      echo "If you ever happen to want to link against installed libraries"
2725
      echo "in a given directory, LIBDIR, you must either use libtool, and"
2726
      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2727
      echo "flag during linking and do at least one of the following:"
2728
      if test -n "$shlibpath_var"; then
2729
	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2730
	echo "     during execution"
2731
      fi
2732
      if test -n "$runpath_var"; then
2733
	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2734
	echo "     during linking"
2735
      fi
2736
      if test -n "$hardcode_libdir_flag_spec"; then
2737
	libdir=LIBDIR
2738
	eval flag=\"$hardcode_libdir_flag_spec\"
2739

    
2740
	$ECHO "   - use the \`$flag' linker flag"
2741
      fi
2742
      if test -n "$admincmds"; then
2743
	$ECHO "   - have your system administrator run these commands:$admincmds"
2744
      fi
2745
      if test -f /etc/ld.so.conf; then
2746
	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747
      fi
2748
      echo
2749

    
2750
      echo "See any operating system documentation about shared libraries for"
2751
      case $host in
2752
	solaris2.[6789]|solaris2.1[0-9])
2753
	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2754
	  echo "pages."
2755
	  ;;
2756
	*)
2757
	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758
	  ;;
2759
      esac
2760
      echo "----------------------------------------------------------------------"
2761
    fi
2762
    exit $EXIT_SUCCESS
2763
}
2764

    
2765
test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766

    
2767

    
2768
# func_mode_install arg...
2769
func_mode_install ()
2770
{
2771
    $opt_debug
2772
    # There may be an optional sh(1) argument at the beginning of
2773
    # install_prog (especially on Windows NT).
2774
    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775
       # Allow the use of GNU shtool's install command.
2776
       case $nonopt in *shtool*) :;; *) false;; esac; then
2777
      # Aesthetically quote it.
2778
      func_quote_for_eval "$nonopt"
2779
      install_prog="$func_quote_for_eval_result "
2780
      arg=$1
2781
      shift
2782
    else
2783
      install_prog=
2784
      arg=$nonopt
2785
    fi
2786

    
2787
    # The real first argument should be the name of the installation program.
2788
    # Aesthetically quote it.
2789
    func_quote_for_eval "$arg"
2790
    func_append install_prog "$func_quote_for_eval_result"
2791
    install_shared_prog=$install_prog
2792
    case " $install_prog " in
2793
      *[\\\ /]cp\ *) install_cp=: ;;
2794
      *) install_cp=false ;;
2795
    esac
2796

    
2797
    # We need to accept at least all the BSD install flags.
2798
    dest=
2799
    files=
2800
    opts=
2801
    prev=
2802
    install_type=
2803
    isdir=no
2804
    stripme=
2805
    no_mode=:
2806
    for arg
2807
    do
2808
      arg2=
2809
      if test -n "$dest"; then
2810
	func_append files " $dest"
2811
	dest=$arg
2812
	continue
2813
      fi
2814

    
2815
      case $arg in
2816
      -d) isdir=yes ;;
2817
      -f)
2818
	if $install_cp; then :; else
2819
	  prev=$arg
2820
	fi
2821
	;;
2822
      -g | -m | -o)
2823
	prev=$arg
2824
	;;
2825
      -s)
2826
	stripme=" -s"
2827
	continue
2828
	;;
2829
      -*)
2830
	;;
2831
      *)
2832
	# If the previous option needed an argument, then skip it.
2833
	if test -n "$prev"; then
2834
	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835
	    arg2=$install_override_mode
2836
	    no_mode=false
2837
	  fi
2838
	  prev=
2839
	else
2840
	  dest=$arg
2841
	  continue
2842
	fi
2843
	;;
2844
      esac
2845

    
2846
      # Aesthetically quote the argument.
2847
      func_quote_for_eval "$arg"
2848
      func_append install_prog " $func_quote_for_eval_result"
2849
      if test -n "$arg2"; then
2850
	func_quote_for_eval "$arg2"
2851
      fi
2852
      func_append install_shared_prog " $func_quote_for_eval_result"
2853
    done
2854

    
2855
    test -z "$install_prog" && \
2856
      func_fatal_help "you must specify an install program"
2857

    
2858
    test -n "$prev" && \
2859
      func_fatal_help "the \`$prev' option requires an argument"
2860

    
2861
    if test -n "$install_override_mode" && $no_mode; then
2862
      if $install_cp; then :; else
2863
	func_quote_for_eval "$install_override_mode"
2864
	func_append install_shared_prog " -m $func_quote_for_eval_result"
2865
      fi
2866
    fi
2867

    
2868
    if test -z "$files"; then
2869
      if test -z "$dest"; then
2870
	func_fatal_help "no file or destination specified"
2871
      else
2872
	func_fatal_help "you must specify a destination"
2873
      fi
2874
    fi
2875

    
2876
    # Strip any trailing slash from the destination.
2877
    func_stripname '' '/' "$dest"
2878
    dest=$func_stripname_result
2879

    
2880
    # Check to see that the destination is a directory.
2881
    test -d "$dest" && isdir=yes
2882
    if test "$isdir" = yes; then
2883
      destdir="$dest"
2884
      destname=
2885
    else
2886
      func_dirname_and_basename "$dest" "" "."
2887
      destdir="$func_dirname_result"
2888
      destname="$func_basename_result"
2889

    
2890
      # Not a directory, so check to see that there is only one file specified.
2891
      set dummy $files; shift
2892
      test "$#" -gt 1 && \
2893
	func_fatal_help "\`$dest' is not a directory"
2894
    fi
2895
    case $destdir in
2896
    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897
    *)
2898
      for file in $files; do
2899
	case $file in
2900
	*.lo) ;;
2901
	*)
2902
	  func_fatal_help "\`$destdir' must be an absolute directory name"
2903
	  ;;
2904
	esac
2905
      done
2906
      ;;
2907
    esac
2908

    
2909
    # This variable tells wrapper scripts just to set variables rather
2910
    # than running their programs.
2911
    libtool_install_magic="$magic"
2912

    
2913
    staticlibs=
2914
    future_libdirs=
2915
    current_libdirs=
2916
    for file in $files; do
2917

    
2918
      # Do each installation.
2919
      case $file in
2920
      *.$libext)
2921
	# Do the static libraries later.
2922
	func_append staticlibs " $file"
2923
	;;
2924

    
2925
      *.la)
2926
	func_resolve_sysroot "$file"
2927
	file=$func_resolve_sysroot_result
2928

    
2929
	# Check to see that this really is a libtool archive.
2930
	func_lalib_unsafe_p "$file" \
2931
	  || func_fatal_help "\`$file' is not a valid libtool archive"
2932

    
2933
	library_names=
2934
	old_library=
2935
	relink_command=
2936
	func_source "$file"
2937

    
2938
	# Add the libdir to current_libdirs if it is the destination.
2939
	if test "X$destdir" = "X$libdir"; then
2940
	  case "$current_libdirs " in
2941
	  *" $libdir "*) ;;
2942
	  *) func_append current_libdirs " $libdir" ;;
2943
	  esac
2944
	else
2945
	  # Note the libdir as a future libdir.
2946
	  case "$future_libdirs " in
2947
	  *" $libdir "*) ;;
2948
	  *) func_append future_libdirs " $libdir" ;;
2949
	  esac
2950
	fi
2951

    
2952
	func_dirname "$file" "/" ""
2953
	dir="$func_dirname_result"
2954
	func_append dir "$objdir"
2955

    
2956
	if test -n "$relink_command"; then
2957
	  # Determine the prefix the user has applied to our future dir.
2958
	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959

    
2960
	  # Don't allow the user to place us outside of our expected
2961
	  # location b/c this prevents finding dependent libraries that
2962
	  # are installed to the same prefix.
2963
	  # At present, this check doesn't affect windows .dll's that
2964
	  # are installed into $libdir/../bin (currently, that works fine)
2965
	  # but it's something to keep an eye on.
2966
	  test "$inst_prefix_dir" = "$destdir" && \
2967
	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968

    
2969
	  if test -n "$inst_prefix_dir"; then
2970
	    # Stick the inst_prefix_dir data into the link command.
2971
	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972
	  else
2973
	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2974
	  fi
2975

    
2976
	  func_warning "relinking \`$file'"
2977
	  func_show_eval "$relink_command" \
2978
	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2979
	fi
2980

    
2981
	# See the names of the shared library.
2982
	set dummy $library_names; shift
2983
	if test -n "$1"; then
2984
	  realname="$1"
2985
	  shift
2986

    
2987
	  srcname="$realname"
2988
	  test -n "$relink_command" && srcname="$realname"T
2989

    
2990
	  # Install the shared library and build the symlinks.
2991
	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2992
	      'exit $?'
2993
	  tstripme="$stripme"
2994
	  case $host_os in
2995
	  cygwin* | mingw* | pw32* | cegcc*)
2996
	    case $realname in
2997
	    *.dll.a)
2998
	      tstripme=""
2999
	      ;;
3000
	    esac
3001
	    ;;
3002
	  esac
3003
	  if test -n "$tstripme" && test -n "$striplib"; then
3004
	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005
	  fi
3006

    
3007
	  if test "$#" -gt 0; then
3008
	    # Delete the old symlinks, and create new ones.
3009
	    # Try `ln -sf' first, because the `ln' binary might depend on
3010
	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3011
	    # so we also need to try rm && ln -s.
3012
	    for linkname
3013
	    do
3014
	      test "$linkname" != "$realname" \
3015
		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016
	    done
3017
	  fi
3018

    
3019
	  # Do each command in the postinstall commands.
3020
	  lib="$destdir/$realname"
3021
	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022
	fi
3023

    
3024
	# Install the pseudo-library for information purposes.
3025
	func_basename "$file"
3026
	name="$func_basename_result"
3027
	instname="$dir/$name"i
3028
	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029

    
3030
	# Maybe install the static library, too.
3031
	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3032
	;;
3033

    
3034
      *.lo)
3035
	# Install (i.e. copy) a libtool object.
3036

    
3037
	# Figure out destination file name, if it wasn't already specified.
3038
	if test -n "$destname"; then
3039
	  destfile="$destdir/$destname"
3040
	else
3041
	  func_basename "$file"
3042
	  destfile="$func_basename_result"
3043
	  destfile="$destdir/$destfile"
3044
	fi
3045

    
3046
	# Deduce the name of the destination old-style object file.
3047
	case $destfile in
3048
	*.lo)
3049
	  func_lo2o "$destfile"
3050
	  staticdest=$func_lo2o_result
3051
	  ;;
3052
	*.$objext)
3053
	  staticdest="$destfile"
3054
	  destfile=
3055
	  ;;
3056
	*)
3057
	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3058
	  ;;
3059
	esac
3060

    
3061
	# Install the libtool object if requested.
3062
	test -n "$destfile" && \
3063
	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3064

    
3065
	# Install the old object if enabled.
3066
	if test "$build_old_libs" = yes; then
3067
	  # Deduce the name of the old-style object file.
3068
	  func_lo2o "$file"
3069
	  staticobj=$func_lo2o_result
3070
	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071
	fi
3072
	exit $EXIT_SUCCESS
3073
	;;
3074

    
3075
      *)
3076
	# Figure out destination file name, if it wasn't already specified.
3077
	if test -n "$destname"; then
3078
	  destfile="$destdir/$destname"
3079
	else
3080
	  func_basename "$file"
3081
	  destfile="$func_basename_result"
3082
	  destfile="$destdir/$destfile"
3083
	fi
3084

    
3085
	# If the file is missing, and there is a .exe on the end, strip it
3086
	# because it is most likely a libtool script we actually want to
3087
	# install
3088
	stripped_ext=""
3089
	case $file in
3090
	  *.exe)
3091
	    if test ! -f "$file"; then
3092
	      func_stripname '' '.exe' "$file"
3093
	      file=$func_stripname_result
3094
	      stripped_ext=".exe"
3095
	    fi
3096
	    ;;
3097
	esac
3098

    
3099
	# Do a test to see if this is really a libtool program.
3100
	case $host in
3101
	*cygwin* | *mingw*)
3102
	    if func_ltwrapper_executable_p "$file"; then
3103
	      func_ltwrapper_scriptname "$file"
3104
	      wrapper=$func_ltwrapper_scriptname_result
3105
	    else
3106
	      func_stripname '' '.exe' "$file"
3107
	      wrapper=$func_stripname_result
3108
	    fi
3109
	    ;;
3110
	*)
3111
	    wrapper=$file
3112
	    ;;
3113
	esac
3114
	if func_ltwrapper_script_p "$wrapper"; then
3115
	  notinst_deplibs=
3116
	  relink_command=
3117

    
3118
	  func_source "$wrapper"
3119

    
3120
	  # Check the variables that should have been set.
3121
	  test -z "$generated_by_libtool_version" && \
3122
	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3123

    
3124
	  finalize=yes
3125
	  for lib in $notinst_deplibs; do
3126
	    # Check to see that each library is installed.
3127
	    libdir=
3128
	    if test -f "$lib"; then
3129
	      func_source "$lib"
3130
	    fi
3131
	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132
	    if test -n "$libdir" && test ! -f "$libfile"; then
3133
	      func_warning "\`$lib' has not been installed in \`$libdir'"
3134
	      finalize=no
3135
	    fi
3136
	  done
3137

    
3138
	  relink_command=
3139
	  func_source "$wrapper"
3140

    
3141
	  outputname=
3142
	  if test "$fast_install" = no && test -n "$relink_command"; then
3143
	    $opt_dry_run || {
3144
	      if test "$finalize" = yes; then
3145
	        tmpdir=`func_mktempdir`
3146
		func_basename "$file$stripped_ext"
3147
		file="$func_basename_result"
3148
	        outputname="$tmpdir/$file"
3149
	        # Replace the output file specification.
3150
	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3151

    
3152
	        $opt_silent || {
3153
	          func_quote_for_expand "$relink_command"
3154
		  eval "func_echo $func_quote_for_expand_result"
3155
	        }
3156
	        if eval "$relink_command"; then :
3157
	          else
3158
		  func_error "error: relink \`$file' with the above command before installing it"
3159
		  $opt_dry_run || ${RM}r "$tmpdir"
3160
		  continue
3161
	        fi
3162
	        file="$outputname"
3163
	      else
3164
	        func_warning "cannot relink \`$file'"
3165
	      fi
3166
	    }
3167
	  else
3168
	    # Install the binary that we compiled earlier.
3169
	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170
	  fi
3171
	fi
3172

    
3173
	# remove .exe since cygwin /usr/bin/install will append another
3174
	# one anyway
3175
	case $install_prog,$host in
3176
	*/usr/bin/install*,*cygwin*)
3177
	  case $file:$destfile in
3178
	  *.exe:*.exe)
3179
	    # this is ok
3180
	    ;;
3181
	  *.exe:*)
3182
	    destfile=$destfile.exe
3183
	    ;;
3184
	  *:*.exe)
3185
	    func_stripname '' '.exe' "$destfile"
3186
	    destfile=$func_stripname_result
3187
	    ;;
3188
	  esac
3189
	  ;;
3190
	esac
3191
	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3192
	$opt_dry_run || if test -n "$outputname"; then
3193
	  ${RM}r "$tmpdir"
3194
	fi
3195
	;;
3196
      esac
3197
    done
3198

    
3199
    for file in $staticlibs; do
3200
      func_basename "$file"
3201
      name="$func_basename_result"
3202

    
3203
      # Set up the ranlib parameters.
3204
      oldlib="$destdir/$name"
3205
      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206
      tool_oldlib=$func_to_tool_file_result
3207

    
3208
      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209

    
3210
      if test -n "$stripme" && test -n "$old_striplib"; then
3211
	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3212
      fi
3213

    
3214
      # Do each command in the postinstall commands.
3215
      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216
    done
3217

    
3218
    test -n "$future_libdirs" && \
3219
      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220

    
3221
    if test -n "$current_libdirs"; then
3222
      # Maybe just do a dry run.
3223
      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224
      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225
    else
3226
      exit $EXIT_SUCCESS
3227
    fi
3228
}
3229

    
3230
test "$opt_mode" = install && func_mode_install ${1+"$@"}
3231

    
3232

    
3233
# func_generate_dlsyms outputname originator pic_p
3234
# Extract symbols from dlprefiles and create ${outputname}S.o with
3235
# a dlpreopen symbol table.
3236
func_generate_dlsyms ()
3237
{
3238
    $opt_debug
3239
    my_outputname="$1"
3240
    my_originator="$2"
3241
    my_pic_p="${3-no}"
3242
    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243
    my_dlsyms=
3244

    
3245
    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246
      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247
	my_dlsyms="${my_outputname}S.c"
3248
      else
3249
	func_error "not configured to extract global symbols from dlpreopened files"
3250
      fi
3251
    fi
3252

    
3253
    if test -n "$my_dlsyms"; then
3254
      case $my_dlsyms in
3255
      "") ;;
3256
      *.c)
3257
	# Discover the nlist of each of the dlfiles.
3258
	nlist="$output_objdir/${my_outputname}.nm"
3259

    
3260
	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261

    
3262
	# Parse the name list into a source file.
3263
	func_verbose "creating $output_objdir/$my_dlsyms"
3264

    
3265
	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266
/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267
/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268

    
3269
#ifdef __cplusplus
3270
extern \"C\" {
3271
#endif
3272

    
3273
#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275
#endif
3276

    
3277
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278
#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279
/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280
   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281
# define LT_DLSYM_CONST
3282
#elif defined(__osf__)
3283
/* This system does not cope well with relocations in const data.  */
3284
# define LT_DLSYM_CONST
3285
#else
3286
# define LT_DLSYM_CONST const
3287
#endif
3288

    
3289
/* External symbol declarations for the compiler. */\
3290
"
3291

    
3292
	if test "$dlself" = yes; then
3293
	  func_verbose "generating symbol list for \`$output'"
3294

    
3295
	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296

    
3297
	  # Add our own program objects to the symbol list.
3298
	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299
	  for progfile in $progfiles; do
3300
	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301
	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302
	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303
	  done
3304

    
3305
	  if test -n "$exclude_expsyms"; then
3306
	    $opt_dry_run || {
3307
	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308
	      eval '$MV "$nlist"T "$nlist"'
3309
	    }
3310
	  fi
3311

    
3312
	  if test -n "$export_symbols_regex"; then
3313
	    $opt_dry_run || {
3314
	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315
	      eval '$MV "$nlist"T "$nlist"'
3316
	    }
3317
	  fi
3318

    
3319
	  # Prepare the list of exported symbols
3320
	  if test -z "$export_symbols"; then
3321
	    export_symbols="$output_objdir/$outputname.exp"
3322
	    $opt_dry_run || {
3323
	      $RM $export_symbols
3324
	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325
	      case $host in
3326
	      *cygwin* | *mingw* | *cegcc* )
3327
                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328
                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329
	        ;;
3330
	      esac
3331
	    }
3332
	  else
3333
	    $opt_dry_run || {
3334
	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335
	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336
	      eval '$MV "$nlist"T "$nlist"'
3337
	      case $host in
3338
	        *cygwin* | *mingw* | *cegcc* )
3339
	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340
	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341
	          ;;
3342
	      esac
3343
	    }
3344
	  fi
3345
	fi
3346

    
3347
	for dlprefile in $dlprefiles; do
3348
	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349
	  func_basename "$dlprefile"
3350
	  name="$func_basename_result"
3351
          case $host in
3352
	    *cygwin* | *mingw* | *cegcc* )
3353
	      # if an import library, we need to obtain dlname
3354
	      if func_win32_import_lib_p "$dlprefile"; then
3355
	        func_tr_sh "$dlprefile"
3356
	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357
	        dlprefile_dlbasename=""
3358
	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359
	          # Use subshell, to avoid clobbering current variable values
3360
	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361
	          if test -n "$dlprefile_dlname" ; then
3362
	            func_basename "$dlprefile_dlname"
3363
	            dlprefile_dlbasename="$func_basename_result"
3364
	          else
3365
	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366
	            $sharedlib_from_linklib_cmd "$dlprefile"
3367
	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368
	          fi
3369
	        fi
3370
	        $opt_dry_run || {
3371
	          if test -n "$dlprefile_dlbasename" ; then
3372
	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373
	          else
3374
	            func_warning "Could not compute DLL name from $name"
3375
	            eval '$ECHO ": $name " >> "$nlist"'
3376
	          fi
3377
	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378
	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379
	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380
	        }
3381
	      else # not an import lib
3382
	        $opt_dry_run || {
3383
	          eval '$ECHO ": $name " >> "$nlist"'
3384
	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385
	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386
	        }
3387
	      fi
3388
	    ;;
3389
	    *)
3390
	      $opt_dry_run || {
3391
	        eval '$ECHO ": $name " >> "$nlist"'
3392
	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393
	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394
	      }
3395
	    ;;
3396
          esac
3397
	done
3398

    
3399
	$opt_dry_run || {
3400
	  # Make sure we have at least an empty file.
3401
	  test -f "$nlist" || : > "$nlist"
3402

    
3403
	  if test -n "$exclude_expsyms"; then
3404
	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405
	    $MV "$nlist"T "$nlist"
3406
	  fi
3407

    
3408
	  # Try sorting and uniquifying the output.
3409
	  if $GREP -v "^: " < "$nlist" |
3410
	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411
		sort -k 3
3412
	      else
3413
		sort +2
3414
	      fi |
3415
	      uniq > "$nlist"S; then
3416
	    :
3417
	  else
3418
	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419
	  fi
3420

    
3421
	  if test -f "$nlist"S; then
3422
	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423
	  else
3424
	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425
	  fi
3426

    
3427
	  echo >> "$output_objdir/$my_dlsyms" "\
3428

    
3429
/* The mapping between symbol names and symbols.  */
3430
typedef struct {
3431
  const char *name;
3432
  void *address;
3433
} lt_dlsymlist;
3434
extern LT_DLSYM_CONST lt_dlsymlist
3435
lt_${my_prefix}_LTX_preloaded_symbols[];
3436
LT_DLSYM_CONST lt_dlsymlist
3437
lt_${my_prefix}_LTX_preloaded_symbols[] =
3438
{\
3439
  { \"$my_originator\", (void *) 0 },"
3440

    
3441
	  case $need_lib_prefix in
3442
	  no)
3443
	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444
	    ;;
3445
	  *)
3446
	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447
	    ;;
3448
	  esac
3449
	  echo >> "$output_objdir/$my_dlsyms" "\
3450
  {0, (void *) 0}
3451
};
3452

    
3453
/* This works around a problem in FreeBSD linker */
3454
#ifdef FREEBSD_WORKAROUND
3455
static const void *lt_preloaded_setup() {
3456
  return lt_${my_prefix}_LTX_preloaded_symbols;
3457
}
3458
#endif
3459

    
3460
#ifdef __cplusplus
3461
}
3462
#endif\
3463
"
3464
	} # !$opt_dry_run
3465

    
3466
	pic_flag_for_symtable=
3467
	case "$compile_command " in
3468
	*" -static "*) ;;
3469
	*)
3470
	  case $host in
3471
	  # compiling the symbol table file with pic_flag works around
3472
	  # a FreeBSD bug that causes programs to crash when -lm is
3473
	  # linked before any other PIC object.  But we must not use
3474
	  # pic_flag when linking with -static.  The problem exists in
3475
	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476
	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477
	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478
	  *-*-hpux*)
3479
	    pic_flag_for_symtable=" $pic_flag"  ;;
3480
	  *)
3481
	    if test "X$my_pic_p" != Xno; then
3482
	      pic_flag_for_symtable=" $pic_flag"
3483
	    fi
3484
	    ;;
3485
	  esac
3486
	  ;;
3487
	esac
3488
	symtab_cflags=
3489
	for arg in $LTCFLAGS; do
3490
	  case $arg in
3491
	  -pie | -fpie | -fPIE) ;;
3492
	  *) func_append symtab_cflags " $arg" ;;
3493
	  esac
3494
	done
3495

    
3496
	# Now compile the dynamic symbol file.
3497
	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498

    
3499
	# Clean up the generated files.
3500
	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501

    
3502
	# Transform the symbol file into the correct name.
3503
	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504
	case $host in
3505
	*cygwin* | *mingw* | *cegcc* )
3506
	  if test -f "$output_objdir/$my_outputname.def"; then
3507
	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508
	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509
	  else
3510
	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511
	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512
	  fi
3513
	  ;;
3514
	*)
3515
	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516
	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517
	  ;;
3518
	esac
3519
	;;
3520
      *)
3521
	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522
	;;
3523
      esac
3524
    else
3525
      # We keep going just in case the user didn't refer to
3526
      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527
      # really was required.
3528

    
3529
      # Nullify the symbol file.
3530
      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531
      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532
    fi
3533
}
3534

    
3535
# func_win32_libid arg
3536
# return the library type of file 'arg'
3537
#
3538
# Need a lot of goo to handle *both* DLLs and import libs
3539
# Has to be a shell function in order to 'eat' the argument
3540
# that is supplied when $file_magic_command is called.
3541
# Despite the name, also deal with 64 bit binaries.
3542
func_win32_libid ()
3543
{
3544
  $opt_debug
3545
  win32_libid_type="unknown"
3546
  win32_fileres=`file -L $1 2>/dev/null`
3547
  case $win32_fileres in
3548
  *ar\ archive\ import\ library*) # definitely import
3549
    win32_libid_type="x86 archive import"
3550
    ;;
3551
  *ar\ archive*) # could be an import, or static
3552
    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553
    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554
       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555
      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556
      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557
	$SED -n -e '
3558
	    1,100{
3559
		/ I /{
3560
		    s,.*,import,
3561
		    p
3562
		    q
3563
		}
3564
	    }'`
3565
      case $win32_nmres in
3566
      import*)  win32_libid_type="x86 archive import";;
3567
      *)        win32_libid_type="x86 archive static";;
3568
      esac
3569
    fi
3570
    ;;
3571
  *DLL*)
3572
    win32_libid_type="x86 DLL"
3573
    ;;
3574
  *executable*) # but shell scripts are "executable" too...
3575
    case $win32_fileres in
3576
    *MS\ Windows\ PE\ Intel*)
3577
      win32_libid_type="x86 DLL"
3578
      ;;
3579
    esac
3580
    ;;
3581
  esac
3582
  $ECHO "$win32_libid_type"
3583
}
3584

    
3585
# func_cygming_dll_for_implib ARG
3586
#
3587
# Platform-specific function to extract the
3588
# name of the DLL associated with the specified
3589
# import library ARG.
3590
# Invoked by eval'ing the libtool variable
3591
#    $sharedlib_from_linklib_cmd
3592
# Result is available in the variable
3593
#    $sharedlib_from_linklib_result
3594
func_cygming_dll_for_implib ()
3595
{
3596
  $opt_debug
3597
  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598
}
3599

    
3600
# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601
#
3602
# The is the core of a fallback implementation of a
3603
# platform-specific function to extract the name of the
3604
# DLL associated with the specified import library LIBNAME.
3605
#
3606
# SECTION_NAME is either .idata$6 or .idata$7, depending
3607
# on the platform and compiler that created the implib.
3608
#
3609
# Echos the name of the DLL associated with the
3610
# specified import library.
3611
func_cygming_dll_for_implib_fallback_core ()
3612
{
3613
  $opt_debug
3614
  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615
  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616
    $SED '/^Contents of section '"$match_literal"':/{
3617
      # Place marker at beginning of archive member dllname section
3618
      s/.*/====MARK====/
3619
      p
3620
      d
3621
    }
3622
    # These lines can sometimes be longer than 43 characters, but
3623
    # are always uninteresting
3624
    /:[	 ]*file format pe[i]\{,1\}-/d
3625
    /^In archive [^:]*:/d
3626
    # Ensure marker is printed
3627
    /^====MARK====/p
3628
    # Remove all lines with less than 43 characters
3629
    /^.\{43\}/!d
3630
    # From remaining lines, remove first 43 characters
3631
    s/^.\{43\}//' |
3632
    $SED -n '
3633
      # Join marker and all lines until next marker into a single line
3634
      /^====MARK====/ b para
3635
      H
3636
      $ b para
3637
      b
3638
      :para
3639
      x
3640
      s/\n//g
3641
      # Remove the marker
3642
      s/^====MARK====//
3643
      # Remove trailing dots and whitespace
3644
      s/[\. \t]*$//
3645
      # Print
3646
      /./p' |
3647
    # we now have a list, one entry per line, of the stringified
3648
    # contents of the appropriate section of all members of the
3649
    # archive which possess that section. Heuristic: eliminate
3650
    # all those which have a first or second character that is
3651
    # a '.' (that is, objdump's representation of an unprintable
3652
    # character.) This should work for all archives with less than
3653
    # 0x302f exports -- but will fail for DLLs whose name actually
3654
    # begins with a literal '.' or a single character followed by
3655
    # a '.'.
3656
    #
3657
    # Of those that remain, print the first one.
3658
    $SED -e '/^\./d;/^.\./d;q'
3659
}
3660

    
3661
# func_cygming_gnu_implib_p ARG
3662
# This predicate returns with zero status (TRUE) if
3663
# ARG is a GNU/binutils-style import library. Returns
3664
# with nonzero status (FALSE) otherwise.
3665
func_cygming_gnu_implib_p ()
3666
{
3667
  $opt_debug
3668
  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669
  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
  test -n "$func_cygming_gnu_implib_tmp"
3671
}
3672

    
3673
# func_cygming_ms_implib_p ARG
3674
# This predicate returns with zero status (TRUE) if
3675
# ARG is an MS-style import library. Returns
3676
# with nonzero status (FALSE) otherwise.
3677
func_cygming_ms_implib_p ()
3678
{
3679
  $opt_debug
3680
  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681
  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682
  test -n "$func_cygming_ms_implib_tmp"
3683
}
3684

    
3685
# func_cygming_dll_for_implib_fallback ARG
3686
# Platform-specific function to extract the
3687
# name of the DLL associated with the specified
3688
# import library ARG.
3689
#
3690
# This fallback implementation is for use when $DLLTOOL
3691
# does not support the --identify-strict option.
3692
# Invoked by eval'ing the libtool variable
3693
#    $sharedlib_from_linklib_cmd
3694
# Result is available in the variable
3695
#    $sharedlib_from_linklib_result
3696
func_cygming_dll_for_implib_fallback ()
3697
{
3698
  $opt_debug
3699
  if func_cygming_gnu_implib_p "$1" ; then
3700
    # binutils import library
3701
    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702
  elif func_cygming_ms_implib_p "$1" ; then
3703
    # ms-generated import library
3704
    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705
  else
3706
    # unknown
3707
    sharedlib_from_linklib_result=""
3708
  fi
3709
}
3710

    
3711

    
3712
# func_extract_an_archive dir oldlib
3713
func_extract_an_archive ()
3714
{
3715
    $opt_debug
3716
    f_ex_an_ar_dir="$1"; shift
3717
    f_ex_an_ar_oldlib="$1"
3718
    if test "$lock_old_archive_extraction" = yes; then
3719
      lockfile=$f_ex_an_ar_oldlib.lock
3720
      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721
	func_echo "Waiting for $lockfile to be removed"
3722
	sleep 2
3723
      done
3724
    fi
3725
    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726
		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727
    if test "$lock_old_archive_extraction" = yes; then
3728
      $opt_dry_run || rm -f "$lockfile"
3729
    fi
3730
    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731
     :
3732
    else
3733
      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734
    fi
3735
}
3736

    
3737

    
3738
# func_extract_archives gentop oldlib ...
3739
func_extract_archives ()
3740
{
3741
    $opt_debug
3742
    my_gentop="$1"; shift
3743
    my_oldlibs=${1+"$@"}
3744
    my_oldobjs=""
3745
    my_xlib=""
3746
    my_xabs=""
3747
    my_xdir=""
3748

    
3749
    for my_xlib in $my_oldlibs; do
3750
      # Extract the objects.
3751
      case $my_xlib in
3752
	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753
	*) my_xabs=`pwd`"/$my_xlib" ;;
3754
      esac
3755
      func_basename "$my_xlib"
3756
      my_xlib="$func_basename_result"
3757
      my_xlib_u=$my_xlib
3758
      while :; do
3759
        case " $extracted_archives " in
3760
	*" $my_xlib_u "*)
3761
	  func_arith $extracted_serial + 1
3762
	  extracted_serial=$func_arith_result
3763
	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764
	*) break ;;
3765
	esac
3766
      done
3767
      extracted_archives="$extracted_archives $my_xlib_u"
3768
      my_xdir="$my_gentop/$my_xlib_u"
3769

    
3770
      func_mkdir_p "$my_xdir"
3771

    
3772
      case $host in
3773
      *-darwin*)
3774
	func_verbose "Extracting $my_xabs"
3775
	# Do not bother doing anything if just a dry run
3776
	$opt_dry_run || {
3777
	  darwin_orig_dir=`pwd`
3778
	  cd $my_xdir || exit $?
3779
	  darwin_archive=$my_xabs
3780
	  darwin_curdir=`pwd`
3781
	  darwin_base_archive=`basename "$darwin_archive"`
3782
	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783
	  if test -n "$darwin_arches"; then
3784
	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785
	    darwin_arch=
3786
	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787
	    for darwin_arch in  $darwin_arches ; do
3788
	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789
	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790
	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791
	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792
	      cd "$darwin_curdir"
3793
	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794
	    done # $darwin_arches
3795
            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796
	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797
	    darwin_file=
3798
	    darwin_files=
3799
	    for darwin_file in $darwin_filelist; do
3800
	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801
	      $LIPO -create -output "$darwin_file" $darwin_files
3802
	    done # $darwin_filelist
3803
	    $RM -rf unfat-$$
3804
	    cd "$darwin_orig_dir"
3805
	  else
3806
	    cd $darwin_orig_dir
3807
	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808
	  fi # $darwin_arches
3809
	} # !$opt_dry_run
3810
	;;
3811
      *)
3812
        func_extract_an_archive "$my_xdir" "$my_xabs"
3813
	;;
3814
      esac
3815
      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816
    done
3817

    
3818
    func_extract_archives_result="$my_oldobjs"
3819
}
3820

    
3821

    
3822
# func_emit_wrapper [arg=no]
3823
#
3824
# Emit a libtool wrapper script on stdout.
3825
# Don't directly open a file because we may want to
3826
# incorporate the script contents within a cygwin/mingw
3827
# wrapper executable.  Must ONLY be called from within
3828
# func_mode_link because it depends on a number of variables
3829
# set therein.
3830
#
3831
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832
# variable will take.  If 'yes', then the emitted script
3833
# will assume that the directory in which it is stored is
3834
# the $objdir directory.  This is a cygwin/mingw-specific
3835
# behavior.
3836
func_emit_wrapper ()
3837
{
3838
	func_emit_wrapper_arg1=${1-no}
3839

    
3840
	$ECHO "\
3841
#! $SHELL
3842

    
3843
# $output - temporary wrapper script for $objdir/$outputname
3844
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845
#
3846
# The $output program cannot be directly executed until all the libtool
3847
# libraries that it depends on are installed.
3848
#
3849
# This wrapper script should never be moved out of the build directory.
3850
# If it is, it will not operate correctly.
3851

    
3852
# Sed substitution that helps us do robust quoting.  It backslashifies
3853
# metacharacters that are still active within double-quoted strings.
3854
sed_quote_subst='$sed_quote_subst'
3855

    
3856
# Be Bourne compatible
3857
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858
  emulate sh
3859
  NULLCMD=:
3860
  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861
  # is contrary to our usage.  Disable this feature.
3862
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863
  setopt NO_GLOB_SUBST
3864
else
3865
  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866
fi
3867
BIN_SH=xpg4; export BIN_SH # for Tru64
3868
DUALCASE=1; export DUALCASE # for MKS sh
3869

    
3870
# The HP-UX ksh and POSIX shell print the target directory to stdout
3871
# if CDPATH is set.
3872
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873

    
3874
relink_command=\"$relink_command\"
3875

    
3876
# This environment variable determines our operation mode.
3877
if test \"\$libtool_install_magic\" = \"$magic\"; then
3878
  # install mode needs the following variables:
3879
  generated_by_libtool_version='$macro_version'
3880
  notinst_deplibs='$notinst_deplibs'
3881
else
3882
  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883
  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884
    file=\"\$0\""
3885

    
3886
    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887
    $ECHO "\
3888

    
3889
# A function that is used when there is no print builtin or printf.
3890
func_fallback_echo ()
3891
{
3892
  eval 'cat <<_LTECHO_EOF
3893
\$1
3894
_LTECHO_EOF'
3895
}
3896
    ECHO=\"$qECHO\"
3897
  fi
3898

    
3899
# Very basic option parsing. These options are (a) specific to
3900
# the libtool wrapper, (b) are identical between the wrapper
3901
# /script/ and the wrapper /executable/ which is used only on
3902
# windows platforms, and (c) all begin with the string "--lt-"
3903
# (application programs are unlikely to have options which match
3904
# this pattern).
3905
#
3906
# There are only two supported options: --lt-debug and
3907
# --lt-dump-script. There is, deliberately, no --lt-help.
3908
#
3909
# The first argument to this parsing function should be the
3910
# script's $0 value, followed by "$@".
3911
lt_option_debug=
3912
func_parse_lt_options ()
3913
{
3914
  lt_script_arg0=\$0
3915
  shift
3916
  for lt_opt
3917
  do
3918
    case \"\$lt_opt\" in
3919
    --lt-debug) lt_option_debug=1 ;;
3920
    --lt-dump-script)
3921
        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922
        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923
        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924
        cat \"\$lt_dump_D/\$lt_dump_F\"
3925
        exit 0
3926
      ;;
3927
    --lt-*)
3928
        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929
        exit 1
3930
      ;;
3931
    esac
3932
  done
3933

    
3934
  # Print the debug banner immediately:
3935
  if test -n \"\$lt_option_debug\"; then
3936
    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937
  fi
3938
}
3939

    
3940
# Used when --lt-debug. Prints its arguments to stdout
3941
# (redirection is the responsibility of the caller)
3942
func_lt_dump_args ()
3943
{
3944
  lt_dump_args_N=1;
3945
  for lt_arg
3946
  do
3947
    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948
    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949
  done
3950
}
3951

    
3952
# Core function for launching the target application
3953
func_exec_program_core ()
3954
{
3955
"
3956
  case $host in
3957
  # Backslashes separate directories on plain windows
3958
  *-*-mingw | *-*-os2* | *-cegcc*)
3959
    $ECHO "\
3960
      if test -n \"\$lt_option_debug\"; then
3961
        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962
        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963
      fi
3964
      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965
"
3966
    ;;
3967

    
3968
  *)
3969
    $ECHO "\
3970
      if test -n \"\$lt_option_debug\"; then
3971
        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972
        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973
      fi
3974
      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975
"
3976
    ;;
3977
  esac
3978
  $ECHO "\
3979
      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980
      exit 1
3981
}
3982

    
3983
# A function to encapsulate launching the target application
3984
# Strips options in the --lt-* namespace from \$@ and
3985
# launches target application with the remaining arguments.
3986
func_exec_program ()
3987
{
3988
  case \" \$* \" in
3989
  *\\ --lt-*)
3990
    for lt_wr_arg
3991
    do
3992
      case \$lt_wr_arg in
3993
      --lt-*) ;;
3994
      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995
      esac
3996
      shift
3997
    done ;;
3998
  esac
3999
  func_exec_program_core \${1+\"\$@\"}
4000
}
4001

    
4002
  # Parse options
4003
  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004

    
4005
  # Find the directory that this script lives in.
4006
  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4007
  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008

    
4009
  # Follow symbolic links until we get to the real thisdir.
4010
  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4011
  while test -n \"\$file\"; do
4012
    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013

    
4014
    # If there was a directory component, then change thisdir.
4015
    if test \"x\$destdir\" != \"x\$file\"; then
4016
      case \"\$destdir\" in
4017
      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4018
      *) thisdir=\"\$thisdir/\$destdir\" ;;
4019
      esac
4020
    fi
4021

    
4022
    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4023
    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4024
  done
4025

    
4026
  # Usually 'no', except on cygwin/mingw when embedded into
4027
  # the cwrapper.
4028
  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4029
  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030
    # special case for '.'
4031
    if test \"\$thisdir\" = \".\"; then
4032
      thisdir=\`pwd\`
4033
    fi
4034
    # remove .libs from thisdir
4035
    case \"\$thisdir\" in
4036
    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037
    $objdir )   thisdir=. ;;
4038
    esac
4039
  fi
4040

    
4041
  # Try to get the absolute directory name.
4042
  absdir=\`cd \"\$thisdir\" && pwd\`
4043
  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4044
"
4045

    
4046
	if test "$fast_install" = yes; then
4047
	  $ECHO "\
4048
  program=lt-'$outputname'$exeext
4049
  progdir=\"\$thisdir/$objdir\"
4050

    
4051
  if test ! -f \"\$progdir/\$program\" ||
4052
     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4053
       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054

    
4055
    file=\"\$\$-\$program\"
4056

    
4057
    if test ! -d \"\$progdir\"; then
4058
      $MKDIR \"\$progdir\"
4059
    else
4060
      $RM \"\$progdir/\$file\"
4061
    fi"
4062

    
4063
	  $ECHO "\
4064

    
4065
    # relink executable if necessary
4066
    if test -n \"\$relink_command\"; then
4067
      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4068
      else
4069
	$ECHO \"\$relink_command_output\" >&2
4070
	$RM \"\$progdir/\$file\"
4071
	exit 1
4072
      fi
4073
    fi
4074

    
4075
    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4076
    { $RM \"\$progdir/\$program\";
4077
      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4078
    $RM \"\$progdir/\$file\"
4079
  fi"
4080
	else
4081
	  $ECHO "\
4082
  program='$outputname'
4083
  progdir=\"\$thisdir/$objdir\"
4084
"
4085
	fi
4086

    
4087
	$ECHO "\
4088

    
4089
  if test -f \"\$progdir/\$program\"; then"
4090

    
4091
	# fixup the dll searchpath if we need to.
4092
	#
4093
	# Fix the DLL searchpath if we need to.  Do this before prepending
4094
	# to shlibpath, because on Windows, both are PATH and uninstalled
4095
	# libraries must come first.
4096
	if test -n "$dllsearchpath"; then
4097
	  $ECHO "\
4098
    # Add the dll search path components to the executable PATH
4099
    PATH=$dllsearchpath:\$PATH
4100
"
4101
	fi
4102

    
4103
	# Export our shlibpath_var if we have one.
4104
	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105
	  $ECHO "\
4106
    # Add our own library path to $shlibpath_var
4107
    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108

    
4109
    # Some systems cannot cope with colon-terminated $shlibpath_var
4110
    # The second colon is a workaround for a bug in BeOS R4 sed
4111
    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4112

    
4113
    export $shlibpath_var
4114
"
4115
	fi
4116

    
4117
	$ECHO "\
4118
    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119
      # Run the actual program with our arguments.
4120
      func_exec_program \${1+\"\$@\"}
4121
    fi
4122
  else
4123
    # The program doesn't exist.
4124
    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125
    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126
    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127
    exit 1
4128
  fi
4129
fi\
4130
"
4131
}
4132

    
4133

    
4134
# func_emit_cwrapperexe_src
4135
# emit the source code for a wrapper executable on stdout
4136
# Must ONLY be called from within func_mode_link because
4137
# it depends on a number of variable set therein.
4138
func_emit_cwrapperexe_src ()
4139
{
4140
	cat <<EOF
4141

    
4142
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4143
   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4144

    
4145
   The $output program cannot be directly executed until all the libtool
4146
   libraries that it depends on are installed.
4147

    
4148
   This wrapper executable should never be moved out of the build directory.
4149
   If it is, it will not operate correctly.
4150
*/
4151
EOF
4152
	    cat <<"EOF"
4153
#ifdef _MSC_VER
4154
# define _CRT_SECURE_NO_DEPRECATE 1
4155
#endif
4156
#include <stdio.h>
4157
#include <stdlib.h>
4158
#ifdef _MSC_VER
4159
# include <direct.h>
4160
# include <process.h>
4161
# include <io.h>
4162
#else
4163
# include <unistd.h>
4164
# include <stdint.h>
4165
# ifdef __CYGWIN__
4166
#  include <io.h>
4167
# endif
4168
#endif
4169
#include <malloc.h>
4170
#include <stdarg.h>
4171
#include <assert.h>
4172
#include <string.h>
4173
#include <ctype.h>
4174
#include <errno.h>
4175
#include <fcntl.h>
4176
#include <sys/stat.h>
4177

    
4178
/* declarations of non-ANSI functions */
4179
#if defined(__MINGW32__)
4180
# ifdef __STRICT_ANSI__
4181
int _putenv (const char *);
4182
# endif
4183
#elif defined(__CYGWIN__)
4184
# ifdef __STRICT_ANSI__
4185
char *realpath (const char *, char *);
4186
int putenv (char *);
4187
int setenv (const char *, const char *, int);
4188
# endif
4189
/* #elif defined (other platforms) ... */
4190
#endif
4191

    
4192
/* portability defines, excluding path handling macros */
4193
#if defined(_MSC_VER)
4194
# define setmode _setmode
4195
# define stat    _stat
4196
# define chmod   _chmod
4197
# define getcwd  _getcwd
4198
# define putenv  _putenv
4199
# define S_IXUSR _S_IEXEC
4200
# ifndef _INTPTR_T_DEFINED
4201
#  define _INTPTR_T_DEFINED
4202
#  define intptr_t int
4203
# endif
4204
#elif defined(__MINGW32__)
4205
# define setmode _setmode
4206
# define stat    _stat
4207
# define chmod   _chmod
4208
# define getcwd  _getcwd
4209
# define putenv  _putenv
4210
#elif defined(__CYGWIN__)
4211
# define HAVE_SETENV
4212
# define FOPEN_WB "wb"
4213
/* #elif defined (other platforms) ... */
4214
#endif
4215

    
4216
#if defined(PATH_MAX)
4217
# define LT_PATHMAX PATH_MAX
4218
#elif defined(MAXPATHLEN)
4219
# define LT_PATHMAX MAXPATHLEN
4220
#else
4221
# define LT_PATHMAX 1024
4222
#endif
4223

    
4224
#ifndef S_IXOTH
4225
# define S_IXOTH 0
4226
#endif
4227
#ifndef S_IXGRP
4228
# define S_IXGRP 0
4229
#endif
4230

    
4231
/* path handling portability macros */
4232
#ifndef DIR_SEPARATOR
4233
# define DIR_SEPARATOR '/'
4234
# define PATH_SEPARATOR ':'
4235
#endif
4236

    
4237
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4238
  defined (__OS2__)
4239
# define HAVE_DOS_BASED_FILE_SYSTEM
4240
# define FOPEN_WB "wb"
4241
# ifndef DIR_SEPARATOR_2
4242
#  define DIR_SEPARATOR_2 '\\'
4243
# endif
4244
# ifndef PATH_SEPARATOR_2
4245
#  define PATH_SEPARATOR_2 ';'
4246
# endif
4247
#endif
4248

    
4249
#ifndef DIR_SEPARATOR_2
4250
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4251
#else /* DIR_SEPARATOR_2 */
4252
# define IS_DIR_SEPARATOR(ch) \
4253
	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4254
#endif /* DIR_SEPARATOR_2 */
4255

    
4256
#ifndef PATH_SEPARATOR_2
4257
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4258
#else /* PATH_SEPARATOR_2 */
4259
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260
#endif /* PATH_SEPARATOR_2 */
4261

    
4262
#ifndef FOPEN_WB
4263
# define FOPEN_WB "w"
4264
#endif
4265
#ifndef _O_BINARY
4266
# define _O_BINARY 0
4267
#endif
4268

    
4269
#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4270
#define XFREE(stale) do { \
4271
  if (stale) { free ((void *) stale); stale = 0; } \
4272
} while (0)
4273

    
4274
#if defined(LT_DEBUGWRAPPER)
4275
static int lt_debug = 1;
4276
#else
4277
static int lt_debug = 0;
4278
#endif
4279

    
4280
const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4281

    
4282
void *xmalloc (size_t num);
4283
char *xstrdup (const char *string);
4284
const char *base_name (const char *name);
4285
char *find_executable (const char *wrapper);
4286
char *chase_symlinks (const char *pathspec);
4287
int make_executable (const char *path);
4288
int check_executable (const char *path);
4289
char *strendzap (char *str, const char *pat);
4290
void lt_debugprintf (const char *file, int line, const char *fmt, ...);
4291
void lt_fatal (const char *file, int line, const char *message, ...);
4292
static const char *nonnull (const char *s);
4293
static const char *nonempty (const char *s);
4294
void lt_setenv (const char *name, const char *value);
4295
char *lt_extend_str (const char *orig_value, const char *add, int to_end);
4296
void lt_update_exe_path (const char *name, const char *value);
4297
void lt_update_lib_path (const char *name, const char *value);
4298
char **prepare_spawn (char **argv);
4299
void lt_dump_script (FILE *f);
4300
EOF
4301

    
4302
	    cat <<EOF
4303
volatile const char * MAGIC_EXE = "$magic_exe";
4304
const char * LIB_PATH_VARNAME = "$shlibpath_var";
4305
EOF
4306

    
4307
	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308
              func_to_host_path "$temp_rpath"
4309
	      cat <<EOF
4310
const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4311
EOF
4312
	    else
4313
	      cat <<"EOF"
4314
const char * LIB_PATH_VALUE   = "";
4315
EOF
4316
	    fi
4317

    
4318
	    if test -n "$dllsearchpath"; then
4319
              func_to_host_path "$dllsearchpath:"
4320
	      cat <<EOF
4321
const char * EXE_PATH_VARNAME = "PATH";
4322
const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4323
EOF
4324
	    else
4325
	      cat <<"EOF"
4326
const char * EXE_PATH_VARNAME = "";
4327
const char * EXE_PATH_VALUE   = "";
4328
EOF
4329
	    fi
4330

    
4331
	    if test "$fast_install" = yes; then
4332
	      cat <<EOF
4333
const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4334
EOF
4335
	    else
4336
	      cat <<EOF
4337
const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4338
EOF
4339
	    fi
4340

    
4341

    
4342
	    cat <<"EOF"
4343

    
4344
#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4345

    
4346
static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4347
static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4348
static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4349

    
4350
int
4351
main (int argc, char *argv[])
4352
{
4353
  char **newargz;
4354
  int  newargc;
4355
  char *tmp_pathspec;
4356
  char *actual_cwrapper_path;
4357
  char *actual_cwrapper_name;
4358
  char *target_name;
4359
  char *lt_argv_zero;
4360
  intptr_t rval = 127;
4361

    
4362
  int i;
4363

    
4364
  program_name = (char *) xstrdup (base_name (argv[0]));
4365
  newargz = XMALLOC (char *, argc + 1);
4366

    
4367
  /* very simple arg parsing; don't want to rely on getopt
4368
   * also, copy all non cwrapper options to newargz, except
4369
   * argz[0], which is handled differently
4370
   */
4371
  newargc=0;
4372
  for (i = 1; i < argc; i++)
4373
    {
4374
      if (strcmp (argv[i], dumpscript_opt) == 0)
4375
	{
4376
EOF
4377
	    case "$host" in
4378
	      *mingw* | *cygwin* )
4379
		# make stdout use "unix" line endings
4380
		echo "          setmode(1,_O_BINARY);"
4381
		;;
4382
	      esac
4383

    
4384
	    cat <<"EOF"
4385
	  lt_dump_script (stdout);
4386
	  return 0;
4387
	}
4388
      if (strcmp (argv[i], debug_opt) == 0)
4389
	{
4390
          lt_debug = 1;
4391
          continue;
4392
	}
4393
      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394
        {
4395
          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396
             namespace, but it is not one of the ones we know about and
4397
             have already dealt with, above (inluding dump-script), then
4398
             report an error. Otherwise, targets might begin to believe
4399
             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400
             namespace. The first time any user complains about this, we'll
4401
             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402
             or a configure.ac-settable value.
4403
           */
4404
          lt_fatal (__FILE__, __LINE__,
4405
		    "unrecognized %s option: '%s'",
4406
                    ltwrapper_option_prefix, argv[i]);
4407
        }
4408
      /* otherwise ... */
4409
      newargz[++newargc] = xstrdup (argv[i]);
4410
    }
4411
  newargz[++newargc] = NULL;
4412

    
4413
EOF
4414
	    cat <<EOF
4415
  /* The GNU banner must be the first non-error debug message */
4416
  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417
EOF
4418
	    cat <<"EOF"
4419
  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420
  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4421

    
4422
  tmp_pathspec = find_executable (argv[0]);
4423
  if (tmp_pathspec == NULL)
4424
    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4425
  lt_debugprintf (__FILE__, __LINE__,
4426
                  "(main) found exe (before symlink chase) at: %s\n",
4427
		  tmp_pathspec);
4428

    
4429
  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430
  lt_debugprintf (__FILE__, __LINE__,
4431
                  "(main) found exe (after symlink chase) at: %s\n",
4432
		  actual_cwrapper_path);
4433
  XFREE (tmp_pathspec);
4434

    
4435
  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4436
  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4437

    
4438
  /* wrapper name transforms */
4439
  strendzap (actual_cwrapper_name, ".exe");
4440
  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4441
  XFREE (actual_cwrapper_name);
4442
  actual_cwrapper_name = tmp_pathspec;
4443
  tmp_pathspec = 0;
4444

    
4445
  /* target_name transforms -- use actual target program name; might have lt- prefix */
4446
  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4447
  strendzap (target_name, ".exe");
4448
  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4449
  XFREE (target_name);
4450
  target_name = tmp_pathspec;
4451
  tmp_pathspec = 0;
4452

    
4453
  lt_debugprintf (__FILE__, __LINE__,
4454
		  "(main) libtool target name: %s\n",
4455
		  target_name);
4456
EOF
4457

    
4458
	    cat <<EOF
4459
  newargz[0] =
4460
    XMALLOC (char, (strlen (actual_cwrapper_path) +
4461
		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4462
  strcpy (newargz[0], actual_cwrapper_path);
4463
  strcat (newargz[0], "$objdir");
4464
  strcat (newargz[0], "/");
4465
EOF
4466

    
4467
	    cat <<"EOF"
4468
  /* stop here, and copy so we don't have to do this twice */
4469
  tmp_pathspec = xstrdup (newargz[0]);
4470

    
4471
  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4472
  strcat (newargz[0], actual_cwrapper_name);
4473

    
4474
  /* DO want the lt- prefix here if it exists, so use target_name */
4475
  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4476
  XFREE (tmp_pathspec);
4477
  tmp_pathspec = NULL;
4478
EOF
4479

    
4480
	    case $host_os in
4481
	      mingw*)
4482
	    cat <<"EOF"
4483
  {
4484
    char* p;
4485
    while ((p = strchr (newargz[0], '\\')) != NULL)
4486
      {
4487
	*p = '/';
4488
      }
4489
    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4490
      {
4491
	*p = '/';
4492
      }
4493
  }
4494
EOF
4495
	    ;;
4496
	    esac
4497

    
4498
	    cat <<"EOF"
4499
  XFREE (target_name);
4500
  XFREE (actual_cwrapper_path);
4501
  XFREE (actual_cwrapper_name);
4502

    
4503
  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4504
  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4505
  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4506
     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507
     because on Windows, both *_VARNAMEs are PATH but uninstalled
4508
     libraries must come first. */
4509
  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510
  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4511

    
4512
  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4513
		  nonnull (lt_argv_zero));
4514
  for (i = 0; i < newargc; i++)
4515
    {
4516
      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4517
		      i, nonnull (newargz[i]));
4518
    }
4519

    
4520
EOF
4521

    
4522
	    case $host_os in
4523
	      mingw*)
4524
		cat <<"EOF"
4525
  /* execv doesn't actually work on mingw as expected on unix */
4526
  newargz = prepare_spawn (newargz);
4527
  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528
  if (rval == -1)
4529
    {
4530
      /* failed to start process */
4531
      lt_debugprintf (__FILE__, __LINE__,
4532
		      "(main) failed to launch target \"%s\": %s\n",
4533
		      lt_argv_zero, nonnull (strerror (errno)));
4534
      return 127;
4535
    }
4536
  return rval;
4537
EOF
4538
		;;
4539
	      *)
4540
		cat <<"EOF"
4541
  execv (lt_argv_zero, newargz);
4542
  return rval; /* =127, but avoids unused variable warning */
4543
EOF
4544
		;;
4545
	    esac
4546

    
4547
	    cat <<"EOF"
4548
}
4549

    
4550
void *
4551
xmalloc (size_t num)
4552
{
4553
  void *p = (void *) malloc (num);
4554
  if (!p)
4555
    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556

    
4557
  return p;
4558
}
4559

    
4560
char *
4561
xstrdup (const char *string)
4562
{
4563
  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4564
			  string) : NULL;
4565
}
4566

    
4567
const char *
4568
base_name (const char *name)
4569
{
4570
  const char *base;
4571

    
4572
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4573
  /* Skip over the disk name in MSDOS pathnames. */
4574
  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4575
    name += 2;
4576
#endif
4577

    
4578
  for (base = name; *name; name++)
4579
    if (IS_DIR_SEPARATOR (*name))
4580
      base = name + 1;
4581
  return base;
4582
}
4583

    
4584
int
4585
check_executable (const char *path)
4586
{
4587
  struct stat st;
4588

    
4589
  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4590
                  nonempty (path));
4591
  if ((!path) || (!*path))
4592
    return 0;
4593

    
4594
  if ((stat (path, &st) >= 0)
4595
      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596
    return 1;
4597
  else
4598
    return 0;
4599
}
4600

    
4601
int
4602
make_executable (const char *path)
4603
{
4604
  int rval = 0;
4605
  struct stat st;
4606

    
4607
  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4608
                  nonempty (path));
4609
  if ((!path) || (!*path))
4610
    return 0;
4611

    
4612
  if (stat (path, &st) >= 0)
4613
    {
4614
      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4615
    }
4616
  return rval;
4617
}
4618

    
4619
/* Searches for the full path of the wrapper.  Returns
4620
   newly allocated full path name if found, NULL otherwise
4621
   Does not chase symlinks, even on platforms that support them.
4622
*/
4623
char *
4624
find_executable (const char *wrapper)
4625
{
4626
  int has_slash = 0;
4627
  const char *p;
4628
  const char *p_next;
4629
  /* static buffer for getcwd */
4630
  char tmp[LT_PATHMAX + 1];
4631
  int tmp_len;
4632
  char *concat_name;
4633

    
4634
  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4635
                  nonempty (wrapper));
4636

    
4637
  if ((wrapper == NULL) || (*wrapper == '\0'))
4638
    return NULL;
4639

    
4640
  /* Absolute path? */
4641
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4642
  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4643
    {
4644
      concat_name = xstrdup (wrapper);
4645
      if (check_executable (concat_name))
4646
	return concat_name;
4647
      XFREE (concat_name);
4648
    }
4649
  else
4650
    {
4651
#endif
4652
      if (IS_DIR_SEPARATOR (wrapper[0]))
4653
	{
4654
	  concat_name = xstrdup (wrapper);
4655
	  if (check_executable (concat_name))
4656
	    return concat_name;
4657
	  XFREE (concat_name);
4658
	}
4659
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4660
    }
4661
#endif
4662

    
4663
  for (p = wrapper; *p; p++)
4664
    if (*p == '/')
4665
      {
4666
	has_slash = 1;
4667
	break;
4668
      }
4669
  if (!has_slash)
4670
    {
4671
      /* no slashes; search PATH */
4672
      const char *path = getenv ("PATH");
4673
      if (path != NULL)
4674
	{
4675
	  for (p = path; *p; p = p_next)
4676
	    {
4677
	      const char *q;
4678
	      size_t p_len;
4679
	      for (q = p; *q; q++)
4680
		if (IS_PATH_SEPARATOR (*q))
4681
		  break;
4682
	      p_len = q - p;
4683
	      p_next = (*q == '\0' ? q : q + 1);
4684
	      if (p_len == 0)
4685
		{
4686
		  /* empty path: current directory */
4687
		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4688
		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4689
                              nonnull (strerror (errno)));
4690
		  tmp_len = strlen (tmp);
4691
		  concat_name =
4692
		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4693
		  memcpy (concat_name, tmp, tmp_len);
4694
		  concat_name[tmp_len] = '/';
4695
		  strcpy (concat_name + tmp_len + 1, wrapper);
4696
		}
4697
	      else
4698
		{
4699
		  concat_name =
4700
		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4701
		  memcpy (concat_name, p, p_len);
4702
		  concat_name[p_len] = '/';
4703
		  strcpy (concat_name + p_len + 1, wrapper);
4704
		}
4705
	      if (check_executable (concat_name))
4706
		return concat_name;
4707
	      XFREE (concat_name);
4708
	    }
4709
	}
4710
      /* not found in PATH; assume curdir */
4711
    }
4712
  /* Relative path | not found in path: prepend cwd */
4713
  if (getcwd (tmp, LT_PATHMAX) == NULL)
4714
    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4715
              nonnull (strerror (errno)));
4716
  tmp_len = strlen (tmp);
4717
  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718
  memcpy (concat_name, tmp, tmp_len);
4719
  concat_name[tmp_len] = '/';
4720
  strcpy (concat_name + tmp_len + 1, wrapper);
4721

    
4722
  if (check_executable (concat_name))
4723
    return concat_name;
4724
  XFREE (concat_name);
4725
  return NULL;
4726
}
4727

    
4728
char *
4729
chase_symlinks (const char *pathspec)
4730
{
4731
#ifndef S_ISLNK
4732
  return xstrdup (pathspec);
4733
#else
4734
  char buf[LT_PATHMAX];
4735
  struct stat s;
4736
  char *tmp_pathspec = xstrdup (pathspec);
4737
  char *p;
4738
  int has_symlinks = 0;
4739
  while (strlen (tmp_pathspec) && !has_symlinks)
4740
    {
4741
      lt_debugprintf (__FILE__, __LINE__,
4742
		      "checking path component for symlinks: %s\n",
4743
		      tmp_pathspec);
4744
      if (lstat (tmp_pathspec, &s) == 0)
4745
	{
4746
	  if (S_ISLNK (s.st_mode) != 0)
4747
	    {
4748
	      has_symlinks = 1;
4749
	      break;
4750
	    }
4751

    
4752
	  /* search backwards for last DIR_SEPARATOR */
4753
	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4754
	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4755
	    p--;
4756
	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4757
	    {
4758
	      /* no more DIR_SEPARATORS left */
4759
	      break;
4760
	    }
4761
	  *p = '\0';
4762
	}
4763
      else
4764
	{
4765
	  lt_fatal (__FILE__, __LINE__,
4766
		    "error accessing file \"%s\": %s",
4767
		    tmp_pathspec, nonnull (strerror (errno)));
4768
	}
4769
    }
4770
  XFREE (tmp_pathspec);
4771

    
4772
  if (!has_symlinks)
4773
    {
4774
      return xstrdup (pathspec);
4775
    }
4776

    
4777
  tmp_pathspec = realpath (pathspec, buf);
4778
  if (tmp_pathspec == 0)
4779
    {
4780
      lt_fatal (__FILE__, __LINE__,
4781
		"could not follow symlinks for %s", pathspec);
4782
    }
4783
  return xstrdup (tmp_pathspec);
4784
#endif
4785
}
4786

    
4787
char *
4788
strendzap (char *str, const char *pat)
4789
{
4790
  size_t len, patlen;
4791

    
4792
  assert (str != NULL);
4793
  assert (pat != NULL);
4794

    
4795
  len = strlen (str);
4796
  patlen = strlen (pat);
4797

    
4798
  if (patlen <= len)
4799
    {
4800
      str += len - patlen;
4801
      if (strcmp (str, pat) == 0)
4802
	*str = '\0';
4803
    }
4804
  return str;
4805
}
4806

    
4807
void
4808
lt_debugprintf (const char *file, int line, const char *fmt, ...)
4809
{
4810
  va_list args;
4811
  if (lt_debug)
4812
    {
4813
      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814
      va_start (args, fmt);
4815
      (void) vfprintf (stderr, fmt, args);
4816
      va_end (args);
4817
    }
4818
}
4819

    
4820
static void
4821
lt_error_core (int exit_status, const char *file,
4822
	       int line, const char *mode,
4823
	       const char *message, va_list ap)
4824
{
4825
  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4826
  vfprintf (stderr, message, ap);
4827
  fprintf (stderr, ".\n");
4828

    
4829
  if (exit_status >= 0)
4830
    exit (exit_status);
4831
}
4832

    
4833
void
4834
lt_fatal (const char *file, int line, const char *message, ...)
4835
{
4836
  va_list ap;
4837
  va_start (ap, message);
4838
  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4839
  va_end (ap);
4840
}
4841

    
4842
static const char *
4843
nonnull (const char *s)
4844
{
4845
  return s ? s : "(null)";
4846
}
4847

    
4848
static const char *
4849
nonempty (const char *s)
4850
{
4851
  return (s && !*s) ? "(empty)" : nonnull (s);
4852
}
4853

    
4854
void
4855
lt_setenv (const char *name, const char *value)
4856
{
4857
  lt_debugprintf (__FILE__, __LINE__,
4858
		  "(lt_setenv) setting '%s' to '%s'\n",
4859
                  nonnull (name), nonnull (value));
4860
  {
4861
#ifdef HAVE_SETENV
4862
    /* always make a copy, for consistency with !HAVE_SETENV */
4863
    char *str = xstrdup (value);
4864
    setenv (name, str, 1);
4865
#else
4866
    int len = strlen (name) + 1 + strlen (value) + 1;
4867
    char *str = XMALLOC (char, len);
4868
    sprintf (str, "%s=%s", name, value);
4869
    if (putenv (str) != EXIT_SUCCESS)
4870
      {
4871
        XFREE (str);
4872
      }
4873
#endif
4874
  }
4875
}
4876

    
4877
char *
4878
lt_extend_str (const char *orig_value, const char *add, int to_end)
4879
{
4880
  char *new_value;
4881
  if (orig_value && *orig_value)
4882
    {
4883
      int orig_value_len = strlen (orig_value);
4884
      int add_len = strlen (add);
4885
      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4886
      if (to_end)
4887
        {
4888
          strcpy (new_value, orig_value);
4889
          strcpy (new_value + orig_value_len, add);
4890
        }
4891
      else
4892
        {
4893
          strcpy (new_value, add);
4894
          strcpy (new_value + add_len, orig_value);
4895
        }
4896
    }
4897
  else
4898
    {
4899
      new_value = xstrdup (add);
4900
    }
4901
  return new_value;
4902
}
4903

    
4904
void
4905
lt_update_exe_path (const char *name, const char *value)
4906
{
4907
  lt_debugprintf (__FILE__, __LINE__,
4908
		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4909
                  nonnull (name), nonnull (value));
4910

    
4911
  if (name && *name && value && *value)
4912
    {
4913
      char *new_value = lt_extend_str (getenv (name), value, 0);
4914
      /* some systems can't cope with a ':'-terminated path #' */
4915
      int len = strlen (new_value);
4916
      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4917
        {
4918
          new_value[len-1] = '\0';
4919
        }
4920
      lt_setenv (name, new_value);
4921
      XFREE (new_value);
4922
    }
4923
}
4924

    
4925
void
4926
lt_update_lib_path (const char *name, const char *value)
4927
{
4928
  lt_debugprintf (__FILE__, __LINE__,
4929
		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4930
                  nonnull (name), nonnull (value));
4931

    
4932
  if (name && *name && value && *value)
4933
    {
4934
      char *new_value = lt_extend_str (getenv (name), value, 0);
4935
      lt_setenv (name, new_value);
4936
      XFREE (new_value);
4937
    }
4938
}
4939

    
4940
EOF
4941
	    case $host_os in
4942
	      mingw*)
4943
		cat <<"EOF"
4944

    
4945
/* Prepares an argument vector before calling spawn().
4946
   Note that spawn() does not by itself call the command interpreter
4947
     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948
      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949
         GetVersionEx(&v);
4950
         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951
      }) ? "cmd.exe" : "command.com").
4952
   Instead it simply concatenates the arguments, separated by ' ', and calls
4953
   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4954
   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955
   special way:
4956
   - Space and tab are interpreted as delimiters. They are not treated as
4957
     delimiters if they are surrounded by double quotes: "...".
4958
   - Unescaped double quotes are removed from the input. Their only effect is
4959
     that within double quotes, space and tab are treated like normal
4960
     characters.
4961
   - Backslashes not followed by double quotes are not special.
4962
   - But 2*n+1 backslashes followed by a double quote become
4963
     n backslashes followed by a double quote (n >= 0):
4964
       \" -> "
4965
       \\\" -> \"
4966
       \\\\\" -> \\"
4967
 */
4968
#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"
4969
#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"
4970
char **
4971
prepare_spawn (char **argv)
4972
{
4973
  size_t argc;
4974
  char **new_argv;
4975
  size_t i;
4976

    
4977
  /* Count number of arguments.  */
4978
  for (argc = 0; argv[argc] != NULL; argc++)
4979
    ;
4980

    
4981
  /* Allocate new argument vector.  */
4982
  new_argv = XMALLOC (char *, argc + 1);
4983

    
4984
  /* Put quoted arguments into the new argument vector.  */
4985
  for (i = 0; i < argc; i++)
4986
    {
4987
      const char *string = argv[i];
4988

    
4989
      if (string[0] == '\0')
4990
	new_argv[i] = xstrdup ("\"\"");
4991
      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4992
	{
4993
	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4994
	  size_t length;
4995
	  unsigned int backslashes;
4996
	  const char *s;
4997
	  char *quoted_string;
4998
	  char *p;
4999

    
5000
	  length = 0;
5001
	  backslashes = 0;
5002
	  if (quote_around)
5003
	    length++;
5004
	  for (s = string; *s != '\0'; s++)
5005
	    {
5006
	      char c = *s;
5007
	      if (c == '"')
5008
		length += backslashes + 1;
5009
	      length++;
5010
	      if (c == '\\')
5011
		backslashes++;
5012
	      else
5013
		backslashes = 0;
5014
	    }
5015
	  if (quote_around)
5016
	    length += backslashes + 1;
5017

    
5018
	  quoted_string = XMALLOC (char, length + 1);
5019

    
5020
	  p = quoted_string;
5021
	  backslashes = 0;
5022
	  if (quote_around)
5023
	    *p++ = '"';
5024
	  for (s = string; *s != '\0'; s++)
5025
	    {
5026
	      char c = *s;
5027
	      if (c == '"')
5028
		{
5029
		  unsigned int j;
5030
		  for (j = backslashes + 1; j > 0; j--)
5031
		    *p++ = '\\';
5032
		}
5033
	      *p++ = c;
5034
	      if (c == '\\')
5035
		backslashes++;
5036
	      else
5037
		backslashes = 0;
5038
	    }
5039
	  if (quote_around)
5040
	    {
5041
	      unsigned int j;
5042
	      for (j = backslashes; j > 0; j--)
5043
		*p++ = '\\';
5044
	      *p++ = '"';
5045
	    }
5046
	  *p = '\0';
5047

    
5048
	  new_argv[i] = quoted_string;
5049
	}
5050
      else
5051
	new_argv[i] = (char *) string;
5052
    }
5053
  new_argv[argc] = NULL;
5054

    
5055
  return new_argv;
5056
}
5057
EOF
5058
		;;
5059
	    esac
5060

    
5061
            cat <<"EOF"
5062
void lt_dump_script (FILE* f)
5063
{
5064
EOF
5065
	    func_emit_wrapper yes |
5066
	      $SED -n -e '
5067
s/^\(.\{79\}\)\(..*\)/\1\
5068
\2/
5069
h
5070
s/\([\\"]\)/\\\1/g
5071
s/$/\\n/
5072
s/\([^\n]*\).*/  fputs ("\1", f);/p
5073
g
5074
D'
5075
            cat <<"EOF"
5076
}
5077
EOF
5078
}
5079
# end: func_emit_cwrapperexe_src
5080

    
5081
# func_win32_import_lib_p ARG
5082
# True if ARG is an import lib, as indicated by $file_magic_cmd
5083
func_win32_import_lib_p ()
5084
{
5085
    $opt_debug
5086
    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5087
    *import*) : ;;
5088
    *) false ;;
5089
    esac
5090
}
5091

    
5092
# func_mode_link arg...
5093
func_mode_link ()
5094
{
5095
    $opt_debug
5096
    case $host in
5097
    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5098
      # It is impossible to link a dll without this setting, and
5099
      # we shouldn't force the makefile maintainer to figure out
5100
      # which system we are compiling for in order to pass an extra
5101
      # flag for every libtool invocation.
5102
      # allow_undefined=no
5103

    
5104
      # FIXME: Unfortunately, there are problems with the above when trying
5105
      # to make a dll which has undefined symbols, in which case not
5106
      # even a static library is built.  For now, we need to specify
5107
      # -no-undefined on the libtool link line when we can be certain
5108
      # that all symbols are satisfied, otherwise we get a static library.
5109
      allow_undefined=yes
5110
      ;;
5111
    *)
5112
      allow_undefined=yes
5113
      ;;
5114
    esac
5115
    libtool_args=$nonopt
5116
    base_compile="$nonopt $@"
5117
    compile_command=$nonopt
5118
    finalize_command=$nonopt
5119

    
5120
    compile_rpath=
5121
    finalize_rpath=
5122
    compile_shlibpath=
5123
    finalize_shlibpath=
5124
    convenience=
5125
    old_convenience=
5126
    deplibs=
5127
    old_deplibs=
5128
    compiler_flags=
5129
    linker_flags=
5130
    dllsearchpath=
5131
    lib_search_path=`pwd`
5132
    inst_prefix_dir=
5133
    new_inherited_linker_flags=
5134

    
5135
    avoid_version=no
5136
    bindir=
5137
    dlfiles=
5138
    dlprefiles=
5139
    dlself=no
5140
    export_dynamic=no
5141
    export_symbols=
5142
    export_symbols_regex=
5143
    generated=
5144
    libobjs=
5145
    ltlibs=
5146
    module=no
5147
    no_install=no
5148
    objs=
5149
    non_pic_objects=
5150
    precious_files_regex=
5151
    prefer_static_libs=no
5152
    preload=no
5153
    prev=
5154
    prevarg=
5155
    release=
5156
    rpath=
5157
    xrpath=
5158
    perm_rpath=
5159
    temp_rpath=
5160
    thread_safe=no
5161
    vinfo=
5162
    vinfo_number=no
5163
    weak_libs=
5164
    single_module="${wl}-single_module"
5165
    func_infer_tag $base_compile
5166

    
5167
    # We need to know -static, to get the right output filenames.
5168
    for arg
5169
    do
5170
      case $arg in
5171
      -shared)
5172
	test "$build_libtool_libs" != yes && \
5173
	  func_fatal_configuration "can not build a shared library"
5174
	build_old_libs=no
5175
	break
5176
	;;
5177
      -all-static | -static | -static-libtool-libs)
5178
	case $arg in
5179
	-all-static)
5180
	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5181
	    func_warning "complete static linking is impossible in this configuration"
5182
	  fi
5183
	  if test -n "$link_static_flag"; then
5184
	    dlopen_self=$dlopen_self_static
5185
	  fi
5186
	  prefer_static_libs=yes
5187
	  ;;
5188
	-static)
5189
	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5190
	    dlopen_self=$dlopen_self_static
5191
	  fi
5192
	  prefer_static_libs=built
5193
	  ;;
5194
	-static-libtool-libs)
5195
	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5196
	    dlopen_self=$dlopen_self_static
5197
	  fi
5198
	  prefer_static_libs=yes
5199
	  ;;
5200
	esac
5201
	build_libtool_libs=no
5202
	build_old_libs=yes
5203
	break
5204
	;;
5205
      esac
5206
    done
5207

    
5208
    # See if our shared archives depend on static archives.
5209
    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210

    
5211
    # Go through the arguments, transforming them on the way.
5212
    while test "$#" -gt 0; do
5213
      arg="$1"
5214
      shift
5215
      func_quote_for_eval "$arg"
5216
      qarg=$func_quote_for_eval_unquoted_result
5217
      func_append libtool_args " $func_quote_for_eval_result"
5218

    
5219
      # If the previous option needs an argument, assign it.
5220
      if test -n "$prev"; then
5221
	case $prev in
5222
	output)
5223
	  func_append compile_command " @OUTPUT@"
5224
	  func_append finalize_command " @OUTPUT@"
5225
	  ;;
5226
	esac
5227

    
5228
	case $prev in
5229
	bindir)
5230
	  bindir="$arg"
5231
	  prev=
5232
	  continue
5233
	  ;;
5234
	dlfiles|dlprefiles)
5235
	  if test "$preload" = no; then
5236
	    # Add the symbol object into the linking commands.
5237
	    func_append compile_command " @SYMFILE@"
5238
	    func_append finalize_command " @SYMFILE@"
5239
	    preload=yes
5240
	  fi
5241
	  case $arg in
5242
	  *.la | *.lo) ;;  # We handle these cases below.
5243
	  force)
5244
	    if test "$dlself" = no; then
5245
	      dlself=needless
5246
	      export_dynamic=yes
5247
	    fi
5248
	    prev=
5249
	    continue
5250
	    ;;
5251
	  self)
5252
	    if test "$prev" = dlprefiles; then
5253
	      dlself=yes
5254
	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5255
	      dlself=yes
5256
	    else
5257
	      dlself=needless
5258
	      export_dynamic=yes
5259
	    fi
5260
	    prev=
5261
	    continue
5262
	    ;;
5263
	  *)
5264
	    if test "$prev" = dlfiles; then
5265
	      func_append dlfiles " $arg"
5266
	    else
5267
	      func_append dlprefiles " $arg"
5268
	    fi
5269
	    prev=
5270
	    continue
5271
	    ;;
5272
	  esac
5273
	  ;;
5274
	expsyms)
5275
	  export_symbols="$arg"
5276
	  test -f "$arg" \
5277
	    || func_fatal_error "symbol file \`$arg' does not exist"
5278
	  prev=
5279
	  continue
5280
	  ;;
5281
	expsyms_regex)
5282
	  export_symbols_regex="$arg"
5283
	  prev=
5284
	  continue
5285
	  ;;
5286
	framework)
5287
	  case $host in
5288
	    *-*-darwin*)
5289
	      case "$deplibs " in
5290
		*" $qarg.ltframework "*) ;;
5291
		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5292
		   ;;
5293
	      esac
5294
	      ;;
5295
	  esac
5296
	  prev=
5297
	  continue
5298
	  ;;
5299
	inst_prefix)
5300
	  inst_prefix_dir="$arg"
5301
	  prev=
5302
	  continue
5303
	  ;;
5304
	objectlist)
5305
	  if test -f "$arg"; then
5306
	    save_arg=$arg
5307
	    moreargs=
5308
	    for fil in `cat "$save_arg"`
5309
	    do
5310
#	      func_append moreargs " $fil"
5311
	      arg=$fil
5312
	      # A libtool-controlled object.
5313

    
5314
	      # Check to see that this really is a libtool object.
5315
	      if func_lalib_unsafe_p "$arg"; then
5316
		pic_object=
5317
		non_pic_object=
5318

    
5319
		# Read the .lo file
5320
		func_source "$arg"
5321

    
5322
		if test -z "$pic_object" ||
5323
		   test -z "$non_pic_object" ||
5324
		   test "$pic_object" = none &&
5325
		   test "$non_pic_object" = none; then
5326
		  func_fatal_error "cannot find name of object for \`$arg'"
5327
		fi
5328

    
5329
		# Extract subdirectory from the argument.
5330
		func_dirname "$arg" "/" ""
5331
		xdir="$func_dirname_result"
5332

    
5333
		if test "$pic_object" != none; then
5334
		  # Prepend the subdirectory the object is found in.
5335
		  pic_object="$xdir$pic_object"
5336

    
5337
		  if test "$prev" = dlfiles; then
5338
		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5339
		      func_append dlfiles " $pic_object"
5340
		      prev=
5341
		      continue
5342
		    else
5343
		      # If libtool objects are unsupported, then we need to preload.
5344
		      prev=dlprefiles
5345
		    fi
5346
		  fi
5347

    
5348
		  # CHECK ME:  I think I busted this.  -Ossama
5349
		  if test "$prev" = dlprefiles; then
5350
		    # Preload the old-style object.
5351
		    func_append dlprefiles " $pic_object"
5352
		    prev=
5353
		  fi
5354

    
5355
		  # A PIC object.
5356
		  func_append libobjs " $pic_object"
5357
		  arg="$pic_object"
5358
		fi
5359

    
5360
		# Non-PIC object.
5361
		if test "$non_pic_object" != none; then
5362
		  # Prepend the subdirectory the object is found in.
5363
		  non_pic_object="$xdir$non_pic_object"
5364

    
5365
		  # A standard non-PIC object
5366
		  func_append non_pic_objects " $non_pic_object"
5367
		  if test -z "$pic_object" || test "$pic_object" = none ; then
5368
		    arg="$non_pic_object"
5369
		  fi
5370
		else
5371
		  # If the PIC object exists, use it instead.
5372
		  # $xdir was prepended to $pic_object above.
5373
		  non_pic_object="$pic_object"
5374
		  func_append non_pic_objects " $non_pic_object"
5375
		fi
5376
	      else
5377
		# Only an error if not doing a dry-run.
5378
		if $opt_dry_run; then
5379
		  # Extract subdirectory from the argument.
5380
		  func_dirname "$arg" "/" ""
5381
		  xdir="$func_dirname_result"
5382

    
5383
		  func_lo2o "$arg"
5384
		  pic_object=$xdir$objdir/$func_lo2o_result
5385
		  non_pic_object=$xdir$func_lo2o_result
5386
		  func_append libobjs " $pic_object"
5387
		  func_append non_pic_objects " $non_pic_object"
5388
	        else
5389
		  func_fatal_error "\`$arg' is not a valid libtool object"
5390
		fi
5391
	      fi
5392
	    done
5393
	  else
5394
	    func_fatal_error "link input file \`$arg' does not exist"
5395
	  fi
5396
	  arg=$save_arg
5397
	  prev=
5398
	  continue
5399
	  ;;
5400
	precious_regex)
5401
	  precious_files_regex="$arg"
5402
	  prev=
5403
	  continue
5404
	  ;;
5405
	release)
5406
	  release="-$arg"
5407
	  prev=
5408
	  continue
5409
	  ;;
5410
	rpath | xrpath)
5411
	  # We need an absolute path.
5412
	  case $arg in
5413
	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5414
	  *)
5415
	    func_fatal_error "only absolute run-paths are allowed"
5416
	    ;;
5417
	  esac
5418
	  if test "$prev" = rpath; then
5419
	    case "$rpath " in
5420
	    *" $arg "*) ;;
5421
	    *) func_append rpath " $arg" ;;
5422
	    esac
5423
	  else
5424
	    case "$xrpath " in
5425
	    *" $arg "*) ;;
5426
	    *) func_append xrpath " $arg" ;;
5427
	    esac
5428
	  fi
5429
	  prev=
5430
	  continue
5431
	  ;;
5432
	shrext)
5433
	  shrext_cmds="$arg"
5434
	  prev=
5435
	  continue
5436
	  ;;
5437
	weak)
5438
	  func_append weak_libs " $arg"
5439
	  prev=
5440
	  continue
5441
	  ;;
5442
	xcclinker)
5443
	  func_append linker_flags " $qarg"
5444
	  func_append compiler_flags " $qarg"
5445
	  prev=
5446
	  func_append compile_command " $qarg"
5447
	  func_append finalize_command " $qarg"
5448
	  continue
5449
	  ;;
5450
	xcompiler)
5451
	  func_append compiler_flags " $qarg"
5452
	  prev=
5453
	  func_append compile_command " $qarg"
5454
	  func_append finalize_command " $qarg"
5455
	  continue
5456
	  ;;
5457
	xlinker)
5458
	  func_append linker_flags " $qarg"
5459
	  func_append compiler_flags " $wl$qarg"
5460
	  prev=
5461
	  func_append compile_command " $wl$qarg"
5462
	  func_append finalize_command " $wl$qarg"
5463
	  continue
5464
	  ;;
5465
	*)
5466
	  eval "$prev=\"\$arg\""
5467
	  prev=
5468
	  continue
5469
	  ;;
5470
	esac
5471
      fi # test -n "$prev"
5472

    
5473
      prevarg="$arg"
5474

    
5475
      case $arg in
5476
      -all-static)
5477
	if test -n "$link_static_flag"; then
5478
	  # See comment for -static flag below, for more details.
5479
	  func_append compile_command " $link_static_flag"
5480
	  func_append finalize_command " $link_static_flag"
5481
	fi
5482
	continue
5483
	;;
5484

    
5485
      -allow-undefined)
5486
	# FIXME: remove this flag sometime in the future.
5487
	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5488
	;;
5489

    
5490
      -avoid-version)
5491
	avoid_version=yes
5492
	continue
5493
	;;
5494

    
5495
      -bindir)
5496
	prev=bindir
5497
	continue
5498
	;;
5499

    
5500
      -dlopen)
5501
	prev=dlfiles
5502
	continue
5503
	;;
5504

    
5505
      -dlpreopen)
5506
	prev=dlprefiles
5507
	continue
5508
	;;
5509

    
5510
      -export-dynamic)
5511
	export_dynamic=yes
5512
	continue
5513
	;;
5514

    
5515
      -export-symbols | -export-symbols-regex)
5516
	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5517
	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5518
	fi
5519
	if test "X$arg" = "X-export-symbols"; then
5520
	  prev=expsyms
5521
	else
5522
	  prev=expsyms_regex
5523
	fi
5524
	continue
5525
	;;
5526

    
5527
      -framework)
5528
	prev=framework
5529
	continue
5530
	;;
5531

    
5532
      -inst-prefix-dir)
5533
	prev=inst_prefix
5534
	continue
5535
	;;
5536

    
5537
      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5538
      # so, if we see these flags be careful not to treat them like -L
5539
      -L[A-Z][A-Z]*:*)
5540
	case $with_gcc/$host in
5541
	no/*-*-irix* | /*-*-irix*)
5542
	  func_append compile_command " $arg"
5543
	  func_append finalize_command " $arg"
5544
	  ;;
5545
	esac
5546
	continue
5547
	;;
5548

    
5549
      -L*)
5550
	func_stripname "-L" '' "$arg"
5551
	if test -z "$func_stripname_result"; then
5552
	  if test "$#" -gt 0; then
5553
	    func_fatal_error "require no space between \`-L' and \`$1'"
5554
	  else
5555
	    func_fatal_error "need path for \`-L' option"
5556
	  fi
5557
	fi
5558
	func_resolve_sysroot "$func_stripname_result"
5559
	dir=$func_resolve_sysroot_result
5560
	# We need an absolute path.
5561
	case $dir in
5562
	[\\/]* | [A-Za-z]:[\\/]*) ;;
5563
	*)
5564
	  absdir=`cd "$dir" && pwd`
5565
	  test -z "$absdir" && \
5566
	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5567
	  dir="$absdir"
5568
	  ;;
5569
	esac
5570
	case "$deplibs " in
5571
	*" -L$dir "* | *" $arg "*)
5572
	  # Will only happen for absolute or sysroot arguments
5573
	  ;;
5574
	*)
5575
	  # Preserve sysroot, but never include relative directories
5576
	  case $dir in
5577
	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5578
	    *) func_append deplibs " -L$dir" ;;
5579
	  esac
5580
	  func_append lib_search_path " $dir"
5581
	  ;;
5582
	esac
5583
	case $host in
5584
	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5585
	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586
	  case :$dllsearchpath: in
5587
	  *":$dir:"*) ;;
5588
	  ::) dllsearchpath=$dir;;
5589
	  *) func_append dllsearchpath ":$dir";;
5590
	  esac
5591
	  case :$dllsearchpath: in
5592
	  *":$testbindir:"*) ;;
5593
	  ::) dllsearchpath=$testbindir;;
5594
	  *) func_append dllsearchpath ":$testbindir";;
5595
	  esac
5596
	  ;;
5597
	esac
5598
	continue
5599
	;;
5600

    
5601
      -l*)
5602
	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5603
	  case $host in
5604
	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5605
	    # These systems don't actually have a C or math library (as such)
5606
	    continue
5607
	    ;;
5608
	  *-*-os2*)
5609
	    # These systems don't actually have a C library (as such)
5610
	    test "X$arg" = "X-lc" && continue
5611
	    ;;
5612
	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5613
	    # Do not include libc due to us having libc/libc_r.
5614
	    test "X$arg" = "X-lc" && continue
5615
	    ;;
5616
	  *-*-rhapsody* | *-*-darwin1.[012])
5617
	    # Rhapsody C and math libraries are in the System framework
5618
	    func_append deplibs " System.ltframework"
5619
	    continue
5620
	    ;;
5621
	  *-*-sco3.2v5* | *-*-sco5v6*)
5622
	    # Causes problems with __ctype
5623
	    test "X$arg" = "X-lc" && continue
5624
	    ;;
5625
	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5626
	    # Compiler inserts libc in the correct place for threads to work
5627
	    test "X$arg" = "X-lc" && continue
5628
	    ;;
5629
	  esac
5630
	elif test "X$arg" = "X-lc_r"; then
5631
	 case $host in
5632
	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5633
	   # Do not include libc_r directly, use -pthread flag.
5634
	   continue
5635
	   ;;
5636
	 esac
5637
	fi
5638
	func_append deplibs " $arg"
5639
	continue
5640
	;;
5641

    
5642
      -module)
5643
	module=yes
5644
	continue
5645
	;;
5646

    
5647
      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5648
      # classes, name mangling, and exception handling.
5649
      # Darwin uses the -arch flag to determine output architecture.
5650
      -model|-arch|-isysroot|--sysroot)
5651
	func_append compiler_flags " $arg"
5652
	func_append compile_command " $arg"
5653
	func_append finalize_command " $arg"
5654
	prev=xcompiler
5655
	continue
5656
	;;
5657

    
5658
      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5659
      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5660
	func_append compiler_flags " $arg"
5661
	func_append compile_command " $arg"
5662
	func_append finalize_command " $arg"
5663
	case "$new_inherited_linker_flags " in
5664
	    *" $arg "*) ;;
5665
	    * ) func_append new_inherited_linker_flags " $arg" ;;
5666
	esac
5667
	continue
5668
	;;
5669

    
5670
      -multi_module)
5671
	single_module="${wl}-multi_module"
5672
	continue
5673
	;;
5674

    
5675
      -no-fast-install)
5676
	fast_install=no
5677
	continue
5678
	;;
5679

    
5680
      -no-install)
5681
	case $host in
5682
	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5683
	  # The PATH hackery in wrapper scripts is required on Windows
5684
	  # and Darwin in order for the loader to find any dlls it needs.
5685
	  func_warning "\`-no-install' is ignored for $host"
5686
	  func_warning "assuming \`-no-fast-install' instead"
5687
	  fast_install=no
5688
	  ;;
5689
	*) no_install=yes ;;
5690
	esac
5691
	continue
5692
	;;
5693

    
5694
      -no-undefined)
5695
	allow_undefined=no
5696
	continue
5697
	;;
5698

    
5699
      -objectlist)
5700
	prev=objectlist
5701
	continue
5702
	;;
5703

    
5704
      -o) prev=output ;;
5705

    
5706
      -precious-files-regex)
5707
	prev=precious_regex
5708
	continue
5709
	;;
5710

    
5711
      -release)
5712
	prev=release
5713
	continue
5714
	;;
5715

    
5716
      -rpath)
5717
	prev=rpath
5718
	continue
5719
	;;
5720

    
5721
      -R)
5722
	prev=xrpath
5723
	continue
5724
	;;
5725

    
5726
      -R*)
5727
	func_stripname '-R' '' "$arg"
5728
	dir=$func_stripname_result
5729
	# We need an absolute path.
5730
	case $dir in
5731
	[\\/]* | [A-Za-z]:[\\/]*) ;;
5732
	=*)
5733
	  func_stripname '=' '' "$dir"
5734
	  dir=$lt_sysroot$func_stripname_result
5735
	  ;;
5736
	*)
5737
	  func_fatal_error "only absolute run-paths are allowed"
5738
	  ;;
5739
	esac
5740
	case "$xrpath " in
5741
	*" $dir "*) ;;
5742
	*) func_append xrpath " $dir" ;;
5743
	esac
5744
	continue
5745
	;;
5746

    
5747
      -shared)
5748
	# The effects of -shared are defined in a previous loop.
5749
	continue
5750
	;;
5751

    
5752
      -shrext)
5753
	prev=shrext
5754
	continue
5755
	;;
5756

    
5757
      -static | -static-libtool-libs)
5758
	# The effects of -static are defined in a previous loop.
5759
	# We used to do the same as -all-static on platforms that
5760
	# didn't have a PIC flag, but the assumption that the effects
5761
	# would be equivalent was wrong.  It would break on at least
5762
	# Digital Unix and AIX.
5763
	continue
5764
	;;
5765

    
5766
      -thread-safe)
5767
	thread_safe=yes
5768
	continue
5769
	;;
5770

    
5771
      -version-info)
5772
	prev=vinfo
5773
	continue
5774
	;;
5775

    
5776
      -version-number)
5777
	prev=vinfo
5778
	vinfo_number=yes
5779
	continue
5780
	;;
5781

    
5782
      -weak)
5783
        prev=weak
5784
	continue
5785
	;;
5786

    
5787
      -Wc,*)
5788
	func_stripname '-Wc,' '' "$arg"
5789
	args=$func_stripname_result
5790
	arg=
5791
	save_ifs="$IFS"; IFS=','
5792
	for flag in $args; do
5793
	  IFS="$save_ifs"
5794
          func_quote_for_eval "$flag"
5795
	  func_append arg " $func_quote_for_eval_result"
5796
	  func_append compiler_flags " $func_quote_for_eval_result"
5797
	done
5798
	IFS="$save_ifs"
5799
	func_stripname ' ' '' "$arg"
5800
	arg=$func_stripname_result
5801
	;;
5802

    
5803
      -Wl,*)
5804
	func_stripname '-Wl,' '' "$arg"
5805
	args=$func_stripname_result
5806
	arg=
5807
	save_ifs="$IFS"; IFS=','
5808
	for flag in $args; do
5809
	  IFS="$save_ifs"
5810
          func_quote_for_eval "$flag"
5811
	  func_append arg " $wl$func_quote_for_eval_result"
5812
	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5813
	  func_append linker_flags " $func_quote_for_eval_result"
5814
	done
5815
	IFS="$save_ifs"
5816
	func_stripname ' ' '' "$arg"
5817
	arg=$func_stripname_result
5818
	;;
5819

    
5820
      -Xcompiler)
5821
	prev=xcompiler
5822
	continue
5823
	;;
5824

    
5825
      -Xlinker)
5826
	prev=xlinker
5827
	continue
5828
	;;
5829

    
5830
      -XCClinker)
5831
	prev=xcclinker
5832
	continue
5833
	;;
5834

    
5835
      # -msg_* for osf cc
5836
      -msg_*)
5837
	func_quote_for_eval "$arg"
5838
	arg="$func_quote_for_eval_result"
5839
	;;
5840

    
5841
      # Flags to be passed through unchanged, with rationale:
5842
      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5843
      # -r[0-9][0-9]*        specify processor for the SGI compiler
5844
      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5845
      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5846
      # -q*                  compiler args for the IBM compiler
5847
      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5848
      # -F/path              path to uninstalled frameworks, gcc on darwin
5849
      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5850
      # @file                GCC response files
5851
      # -tp=*                Portland pgcc target processor selection
5852
      # --sysroot=*          for sysroot support
5853
      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5854
      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5855
      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5856
      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5857
        func_quote_for_eval "$arg"
5858
	arg="$func_quote_for_eval_result"
5859
        func_append compile_command " $arg"
5860
        func_append finalize_command " $arg"
5861
        func_append compiler_flags " $arg"
5862
        continue
5863
        ;;
5864

    
5865
      # Some other compiler flag.
5866
      -* | +*)
5867
        func_quote_for_eval "$arg"
5868
	arg="$func_quote_for_eval_result"
5869
	;;
5870

    
5871
      *.$objext)
5872
	# A standard object.
5873
	func_append objs " $arg"
5874
	;;
5875

    
5876
      *.lo)
5877
	# A libtool-controlled object.
5878

    
5879
	# Check to see that this really is a libtool object.
5880
	if func_lalib_unsafe_p "$arg"; then
5881
	  pic_object=
5882
	  non_pic_object=
5883

    
5884
	  # Read the .lo file
5885
	  func_source "$arg"
5886

    
5887
	  if test -z "$pic_object" ||
5888
	     test -z "$non_pic_object" ||
5889
	     test "$pic_object" = none &&
5890
	     test "$non_pic_object" = none; then
5891
	    func_fatal_error "cannot find name of object for \`$arg'"
5892
	  fi
5893

    
5894
	  # Extract subdirectory from the argument.
5895
	  func_dirname "$arg" "/" ""
5896
	  xdir="$func_dirname_result"
5897

    
5898
	  if test "$pic_object" != none; then
5899
	    # Prepend the subdirectory the object is found in.
5900
	    pic_object="$xdir$pic_object"
5901

    
5902
	    if test "$prev" = dlfiles; then
5903
	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5904
		func_append dlfiles " $pic_object"
5905
		prev=
5906
		continue
5907
	      else
5908
		# If libtool objects are unsupported, then we need to preload.
5909
		prev=dlprefiles
5910
	      fi
5911
	    fi
5912

    
5913
	    # CHECK ME:  I think I busted this.  -Ossama
5914
	    if test "$prev" = dlprefiles; then
5915
	      # Preload the old-style object.
5916
	      func_append dlprefiles " $pic_object"
5917
	      prev=
5918
	    fi
5919

    
5920
	    # A PIC object.
5921
	    func_append libobjs " $pic_object"
5922
	    arg="$pic_object"
5923
	  fi
5924

    
5925
	  # Non-PIC object.
5926
	  if test "$non_pic_object" != none; then
5927
	    # Prepend the subdirectory the object is found in.
5928
	    non_pic_object="$xdir$non_pic_object"
5929

    
5930
	    # A standard non-PIC object
5931
	    func_append non_pic_objects " $non_pic_object"
5932
	    if test -z "$pic_object" || test "$pic_object" = none ; then
5933
	      arg="$non_pic_object"
5934
	    fi
5935
	  else
5936
	    # If the PIC object exists, use it instead.
5937
	    # $xdir was prepended to $pic_object above.
5938
	    non_pic_object="$pic_object"
5939
	    func_append non_pic_objects " $non_pic_object"
5940
	  fi
5941
	else
5942
	  # Only an error if not doing a dry-run.
5943
	  if $opt_dry_run; then
5944
	    # Extract subdirectory from the argument.
5945
	    func_dirname "$arg" "/" ""
5946
	    xdir="$func_dirname_result"
5947

    
5948
	    func_lo2o "$arg"
5949
	    pic_object=$xdir$objdir/$func_lo2o_result
5950
	    non_pic_object=$xdir$func_lo2o_result
5951
	    func_append libobjs " $pic_object"
5952
	    func_append non_pic_objects " $non_pic_object"
5953
	  else
5954
	    func_fatal_error "\`$arg' is not a valid libtool object"
5955
	  fi
5956
	fi
5957
	;;
5958

    
5959
      *.$libext)
5960
	# An archive.
5961
	func_append deplibs " $arg"
5962
	func_append old_deplibs " $arg"
5963
	continue
5964
	;;
5965

    
5966
      *.la)
5967
	# A libtool-controlled library.
5968

    
5969
	func_resolve_sysroot "$arg"
5970
	if test "$prev" = dlfiles; then
5971
	  # This library was specified with -dlopen.
5972
	  func_append dlfiles " $func_resolve_sysroot_result"
5973
	  prev=
5974
	elif test "$prev" = dlprefiles; then
5975
	  # The library was specified with -dlpreopen.
5976
	  func_append dlprefiles " $func_resolve_sysroot_result"
5977
	  prev=
5978
	else
5979
	  func_append deplibs " $func_resolve_sysroot_result"
5980
	fi
5981
	continue
5982
	;;
5983

    
5984
      # Some other compiler argument.
5985
      *)
5986
	# Unknown arguments in both finalize_command and compile_command need
5987
	# to be aesthetically quoted because they are evaled later.
5988
	func_quote_for_eval "$arg"
5989
	arg="$func_quote_for_eval_result"
5990
	;;
5991
      esac # arg
5992

    
5993
      # Now actually substitute the argument into the commands.
5994
      if test -n "$arg"; then
5995
	func_append compile_command " $arg"
5996
	func_append finalize_command " $arg"
5997
      fi
5998
    done # argument parsing loop
5999

    
6000
    test -n "$prev" && \
6001
      func_fatal_help "the \`$prevarg' option requires an argument"
6002

    
6003
    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6004
      eval arg=\"$export_dynamic_flag_spec\"
6005
      func_append compile_command " $arg"
6006
      func_append finalize_command " $arg"
6007
    fi
6008

    
6009
    oldlibs=
6010
    # calculate the name of the file, without its directory
6011
    func_basename "$output"
6012
    outputname="$func_basename_result"
6013
    libobjs_save="$libobjs"
6014

    
6015
    if test -n "$shlibpath_var"; then
6016
      # get the directories listed in $shlibpath_var
6017
      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6018
    else
6019
      shlib_search_path=
6020
    fi
6021
    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6022
    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023

    
6024
    func_dirname "$output" "/" ""
6025
    output_objdir="$func_dirname_result$objdir"
6026
    func_to_tool_file "$output_objdir/"
6027
    tool_output_objdir=$func_to_tool_file_result
6028
    # Create the object directory.
6029
    func_mkdir_p "$output_objdir"
6030

    
6031
    # Determine the type of output
6032
    case $output in
6033
    "")
6034
      func_fatal_help "you must specify an output file"
6035
      ;;
6036
    *.$libext) linkmode=oldlib ;;
6037
    *.lo | *.$objext) linkmode=obj ;;
6038
    *.la) linkmode=lib ;;
6039
    *) linkmode=prog ;; # Anything else should be a program.
6040
    esac
6041

    
6042
    specialdeplibs=
6043

    
6044
    libs=
6045
    # Find all interdependent deplibs by searching for libraries
6046
    # that are linked more than once (e.g. -la -lb -la)
6047
    for deplib in $deplibs; do
6048
      if $opt_preserve_dup_deps ; then
6049
	case "$libs " in
6050
	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6051
	esac
6052
      fi
6053
      func_append libs " $deplib"
6054
    done
6055

    
6056
    if test "$linkmode" = lib; then
6057
      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058

    
6059
      # Compute libraries that are listed more than once in $predeps
6060
      # $postdeps and mark them as special (i.e., whose duplicates are
6061
      # not to be eliminated).
6062
      pre_post_deps=
6063
      if $opt_duplicate_compiler_generated_deps; then
6064
	for pre_post_dep in $predeps $postdeps; do
6065
	  case "$pre_post_deps " in
6066
	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6067
	  esac
6068
	  func_append pre_post_deps " $pre_post_dep"
6069
	done
6070
      fi
6071
      pre_post_deps=
6072
    fi
6073

    
6074
    deplibs=
6075
    newdependency_libs=
6076
    newlib_search_path=
6077
    need_relink=no # whether we're linking any uninstalled libtool libraries
6078
    notinst_deplibs= # not-installed libtool libraries
6079
    notinst_path= # paths that contain not-installed libtool libraries
6080

    
6081
    case $linkmode in
6082
    lib)
6083
	passes="conv dlpreopen link"
6084
	for file in $dlfiles $dlprefiles; do
6085
	  case $file in
6086
	  *.la) ;;
6087
	  *)
6088
	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6089
	    ;;
6090
	  esac
6091
	done
6092
	;;
6093
    prog)
6094
	compile_deplibs=
6095
	finalize_deplibs=
6096
	alldeplibs=no
6097
	newdlfiles=
6098
	newdlprefiles=
6099
	passes="conv scan dlopen dlpreopen link"
6100
	;;
6101
    *)  passes="conv"
6102
	;;
6103
    esac
6104

    
6105
    for pass in $passes; do
6106
      # The preopen pass in lib mode reverses $deplibs; put it back here
6107
      # so that -L comes before libs that need it for instance...
6108
      if test "$linkmode,$pass" = "lib,link"; then
6109
	## FIXME: Find the place where the list is rebuilt in the wrong
6110
	##        order, and fix it there properly
6111
        tmp_deplibs=
6112
	for deplib in $deplibs; do
6113
	  tmp_deplibs="$deplib $tmp_deplibs"
6114
	done
6115
	deplibs="$tmp_deplibs"
6116
      fi
6117

    
6118
      if test "$linkmode,$pass" = "lib,link" ||
6119
	 test "$linkmode,$pass" = "prog,scan"; then
6120
	libs="$deplibs"
6121
	deplibs=
6122
      fi
6123
      if test "$linkmode" = prog; then
6124
	case $pass in
6125
	dlopen) libs="$dlfiles" ;;
6126
	dlpreopen) libs="$dlprefiles" ;;
6127
	link)
6128
	  libs="$deplibs %DEPLIBS%"
6129
	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
6130
	  ;;
6131
	esac
6132
      fi
6133
      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6134
	# Collect and forward deplibs of preopened libtool libs
6135
	for lib in $dlprefiles; do
6136
	  # Ignore non-libtool-libs
6137
	  dependency_libs=
6138
	  func_resolve_sysroot "$lib"
6139
	  case $lib in
6140
	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6141
	  esac
6142

    
6143
	  # Collect preopened libtool deplibs, except any this library
6144
	  # has declared as weak libs
6145
	  for deplib in $dependency_libs; do
6146
	    func_basename "$deplib"
6147
            deplib_base=$func_basename_result
6148
	    case " $weak_libs " in
6149
	    *" $deplib_base "*) ;;
6150
	    *) func_append deplibs " $deplib" ;;
6151
	    esac
6152
	  done
6153
	done
6154
	libs="$dlprefiles"
6155
      fi
6156
      if test "$pass" = dlopen; then
6157
	# Collect dlpreopened libraries
6158
	save_deplibs="$deplibs"
6159
	deplibs=
6160
      fi
6161

    
6162
      for deplib in $libs; do
6163
	lib=
6164
	found=no
6165
	case $deplib in
6166
	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6167
        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6168
	  if test "$linkmode,$pass" = "prog,link"; then
6169
	    compile_deplibs="$deplib $compile_deplibs"
6170
	    finalize_deplibs="$deplib $finalize_deplibs"
6171
	  else
6172
	    func_append compiler_flags " $deplib"
6173
	    if test "$linkmode" = lib ; then
6174
		case "$new_inherited_linker_flags " in
6175
		    *" $deplib "*) ;;
6176
		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6177
		esac
6178
	    fi
6179
	  fi
6180
	  continue
6181
	  ;;
6182
	-l*)
6183
	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6184
	    func_warning "\`-l' is ignored for archives/objects"
6185
	    continue
6186
	  fi
6187
	  func_stripname '-l' '' "$deplib"
6188
	  name=$func_stripname_result
6189
	  if test "$linkmode" = lib; then
6190
	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6191
	  else
6192
	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6193
	  fi
6194
	  for searchdir in $searchdirs; do
6195
	    for search_ext in .la $std_shrext .so .a; do
6196
	      # Search the libtool library
6197
	      lib="$searchdir/lib${name}${search_ext}"
6198
	      if test -f "$lib"; then
6199
		if test "$search_ext" = ".la"; then
6200
		  found=yes
6201
		else
6202
		  found=no
6203
		fi
6204
		break 2
6205
	      fi
6206
	    done
6207
	  done
6208
	  if test "$found" != yes; then
6209
	    # deplib doesn't seem to be a libtool library
6210
	    if test "$linkmode,$pass" = "prog,link"; then
6211
	      compile_deplibs="$deplib $compile_deplibs"
6212
	      finalize_deplibs="$deplib $finalize_deplibs"
6213
	    else
6214
	      deplibs="$deplib $deplibs"
6215
	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6216
	    fi
6217
	    continue
6218
	  else # deplib is a libtool library
6219
	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6220
	    # We need to do some special things here, and not later.
6221
	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6222
	      case " $predeps $postdeps " in
6223
	      *" $deplib "*)
6224
		if func_lalib_p "$lib"; then
6225
		  library_names=
6226
		  old_library=
6227
		  func_source "$lib"
6228
		  for l in $old_library $library_names; do
6229
		    ll="$l"
6230
		  done
6231
		  if test "X$ll" = "X$old_library" ; then # only static version available
6232
		    found=no
6233
		    func_dirname "$lib" "" "."
6234
		    ladir="$func_dirname_result"
6235
		    lib=$ladir/$old_library
6236
		    if test "$linkmode,$pass" = "prog,link"; then
6237
		      compile_deplibs="$deplib $compile_deplibs"
6238
		      finalize_deplibs="$deplib $finalize_deplibs"
6239
		    else
6240
		      deplibs="$deplib $deplibs"
6241
		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6242
		    fi
6243
		    continue
6244
		  fi
6245
		fi
6246
		;;
6247
	      *) ;;
6248
	      esac
6249
	    fi
6250
	  fi
6251
	  ;; # -l
6252
	*.ltframework)
6253
	  if test "$linkmode,$pass" = "prog,link"; then
6254
	    compile_deplibs="$deplib $compile_deplibs"
6255
	    finalize_deplibs="$deplib $finalize_deplibs"
6256
	  else
6257
	    deplibs="$deplib $deplibs"
6258
	    if test "$linkmode" = lib ; then
6259
		case "$new_inherited_linker_flags " in
6260
		    *" $deplib "*) ;;
6261
		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6262
		esac
6263
	    fi
6264
	  fi
6265
	  continue
6266
	  ;;
6267
	-L*)
6268
	  case $linkmode in
6269
	  lib)
6270
	    deplibs="$deplib $deplibs"
6271
	    test "$pass" = conv && continue
6272
	    newdependency_libs="$deplib $newdependency_libs"
6273
	    func_stripname '-L' '' "$deplib"
6274
	    func_resolve_sysroot "$func_stripname_result"
6275
	    func_append newlib_search_path " $func_resolve_sysroot_result"
6276
	    ;;
6277
	  prog)
6278
	    if test "$pass" = conv; then
6279
	      deplibs="$deplib $deplibs"
6280
	      continue
6281
	    fi
6282
	    if test "$pass" = scan; then
6283
	      deplibs="$deplib $deplibs"
6284
	    else
6285
	      compile_deplibs="$deplib $compile_deplibs"
6286
	      finalize_deplibs="$deplib $finalize_deplibs"
6287
	    fi
6288
	    func_stripname '-L' '' "$deplib"
6289
	    func_resolve_sysroot "$func_stripname_result"
6290
	    func_append newlib_search_path " $func_resolve_sysroot_result"
6291
	    ;;
6292
	  *)
6293
	    func_warning "\`-L' is ignored for archives/objects"
6294
	    ;;
6295
	  esac # linkmode
6296
	  continue
6297
	  ;; # -L
6298
	-R*)
6299
	  if test "$pass" = link; then
6300
	    func_stripname '-R' '' "$deplib"
6301
	    func_resolve_sysroot "$func_stripname_result"
6302
	    dir=$func_resolve_sysroot_result
6303
	    # Make sure the xrpath contains only unique directories.
6304
	    case "$xrpath " in
6305
	    *" $dir "*) ;;
6306
	    *) func_append xrpath " $dir" ;;
6307
	    esac
6308
	  fi
6309
	  deplibs="$deplib $deplibs"
6310
	  continue
6311
	  ;;
6312
	*.la)
6313
	  func_resolve_sysroot "$deplib"
6314
	  lib=$func_resolve_sysroot_result
6315
	  ;;
6316
	*.$libext)
6317
	  if test "$pass" = conv; then
6318
	    deplibs="$deplib $deplibs"
6319
	    continue
6320
	  fi
6321
	  case $linkmode in
6322
	  lib)
6323
	    # Linking convenience modules into shared libraries is allowed,
6324
	    # but linking other static libraries is non-portable.
6325
	    case " $dlpreconveniencelibs " in
6326
	    *" $deplib "*) ;;
6327
	    *)
6328
	      valid_a_lib=no
6329
	      case $deplibs_check_method in
6330
		match_pattern*)
6331
		  set dummy $deplibs_check_method; shift
6332
		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6333
		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6334
		    | $EGREP "$match_pattern_regex" > /dev/null; then
6335
		    valid_a_lib=yes
6336
		  fi
6337
		;;
6338
		pass_all)
6339
		  valid_a_lib=yes
6340
		;;
6341
	      esac
6342
	      if test "$valid_a_lib" != yes; then
6343
		echo
6344
		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6345
		echo "*** I have the capability to make that library automatically link in when"
6346
		echo "*** you link to this library.  But I can only do this if you have a"
6347
		echo "*** shared version of the library, which you do not appear to have"
6348
		echo "*** because the file extensions .$libext of this argument makes me believe"
6349
		echo "*** that it is just a static archive that I should not use here."
6350
	      else
6351
		echo
6352
		$ECHO "*** Warning: Linking the shared library $output against the"
6353
		$ECHO "*** static library $deplib is not portable!"
6354
		deplibs="$deplib $deplibs"
6355
	      fi
6356
	      ;;
6357
	    esac
6358
	    continue
6359
	    ;;
6360
	  prog)
6361
	    if test "$pass" != link; then
6362
	      deplibs="$deplib $deplibs"
6363
	    else
6364
	      compile_deplibs="$deplib $compile_deplibs"
6365
	      finalize_deplibs="$deplib $finalize_deplibs"
6366
	    fi
6367
	    continue
6368
	    ;;
6369
	  esac # linkmode
6370
	  ;; # *.$libext
6371
	*.lo | *.$objext)
6372
	  if test "$pass" = conv; then
6373
	    deplibs="$deplib $deplibs"
6374
	  elif test "$linkmode" = prog; then
6375
	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6376
	      # If there is no dlopen support or we're linking statically,
6377
	      # we need to preload.
6378
	      func_append newdlprefiles " $deplib"
6379
	      compile_deplibs="$deplib $compile_deplibs"
6380
	      finalize_deplibs="$deplib $finalize_deplibs"
6381
	    else
6382
	      func_append newdlfiles " $deplib"
6383
	    fi
6384
	  fi
6385
	  continue
6386
	  ;;
6387
	%DEPLIBS%)
6388
	  alldeplibs=yes
6389
	  continue
6390
	  ;;
6391
	esac # case $deplib
6392

    
6393
	if test "$found" = yes || test -f "$lib"; then :
6394
	else
6395
	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6396
	fi
6397

    
6398
	# Check to see that this really is a libtool archive.
6399
	func_lalib_unsafe_p "$lib" \
6400
	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6401

    
6402
	func_dirname "$lib" "" "."
6403
	ladir="$func_dirname_result"
6404

    
6405
	dlname=
6406
	dlopen=
6407
	dlpreopen=
6408
	libdir=
6409
	library_names=
6410
	old_library=
6411
	inherited_linker_flags=
6412
	# If the library was installed with an old release of libtool,
6413
	# it will not redefine variables installed, or shouldnotlink
6414
	installed=yes
6415
	shouldnotlink=no
6416
	avoidtemprpath=
6417

    
6418

    
6419
	# Read the .la file
6420
	func_source "$lib"
6421

    
6422
	# Convert "-framework foo" to "foo.ltframework"
6423
	if test -n "$inherited_linker_flags"; then
6424
	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6425
	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6426
	    case " $new_inherited_linker_flags " in
6427
	      *" $tmp_inherited_linker_flag "*) ;;
6428
	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6429
	    esac
6430
	  done
6431
	fi
6432
	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6433
	if test "$linkmode,$pass" = "lib,link" ||
6434
	   test "$linkmode,$pass" = "prog,scan" ||
6435
	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6436
	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6437
	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6438
	fi
6439

    
6440
	if test "$pass" = conv; then
6441
	  # Only check for convenience libraries
6442
	  deplibs="$lib $deplibs"
6443
	  if test -z "$libdir"; then
6444
	    if test -z "$old_library"; then
6445
	      func_fatal_error "cannot find name of link library for \`$lib'"
6446
	    fi
6447
	    # It is a libtool convenience library, so add in its objects.
6448
	    func_append convenience " $ladir/$objdir/$old_library"
6449
	    func_append old_convenience " $ladir/$objdir/$old_library"
6450
	    tmp_libs=
6451
	    for deplib in $dependency_libs; do
6452
	      deplibs="$deplib $deplibs"
6453
	      if $opt_preserve_dup_deps ; then
6454
		case "$tmp_libs " in
6455
		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6456
		esac
6457
	      fi
6458
	      func_append tmp_libs " $deplib"
6459
	    done
6460
	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6461
	    func_fatal_error "\`$lib' is not a convenience library"
6462
	  fi
6463
	  continue
6464
	fi # $pass = conv
6465

    
6466

    
6467
	# Get the name of the library we link against.
6468
	linklib=
6469
	if test -n "$old_library" &&
6470
	   { test "$prefer_static_libs" = yes ||
6471
	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6472
	  linklib=$old_library
6473
	else
6474
	  for l in $old_library $library_names; do
6475
	    linklib="$l"
6476
	  done
6477
	fi
6478
	if test -z "$linklib"; then
6479
	  func_fatal_error "cannot find name of link library for \`$lib'"
6480
	fi
6481

    
6482
	# This library was specified with -dlopen.
6483
	if test "$pass" = dlopen; then
6484
	  if test -z "$libdir"; then
6485
	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6486
	  fi
6487
	  if test -z "$dlname" ||
6488
	     test "$dlopen_support" != yes ||
6489
	     test "$build_libtool_libs" = no; then
6490
	    # If there is no dlname, no dlopen support or we're linking
6491
	    # statically, we need to preload.  We also need to preload any
6492
	    # dependent libraries so libltdl's deplib preloader doesn't
6493
	    # bomb out in the load deplibs phase.
6494
	    func_append dlprefiles " $lib $dependency_libs"
6495
	  else
6496
	    func_append newdlfiles " $lib"
6497
	  fi
6498
	  continue
6499
	fi # $pass = dlopen
6500

    
6501
	# We need an absolute path.
6502
	case $ladir in
6503
	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6504
	*)
6505
	  abs_ladir=`cd "$ladir" && pwd`
6506
	  if test -z "$abs_ladir"; then
6507
	    func_warning "cannot determine absolute directory name of \`$ladir'"
6508
	    func_warning "passing it literally to the linker, although it might fail"
6509
	    abs_ladir="$ladir"
6510
	  fi
6511
	  ;;
6512
	esac
6513
	func_basename "$lib"
6514
	laname="$func_basename_result"
6515

    
6516
	# Find the relevant object directory and library name.
6517
	if test "X$installed" = Xyes; then
6518
	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6519
	    func_warning "library \`$lib' was moved."
6520
	    dir="$ladir"
6521
	    absdir="$abs_ladir"
6522
	    libdir="$abs_ladir"
6523
	  else
6524
	    dir="$lt_sysroot$libdir"
6525
	    absdir="$lt_sysroot$libdir"
6526
	  fi
6527
	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6528
	else
6529
	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6530
	    dir="$ladir"
6531
	    absdir="$abs_ladir"
6532
	    # Remove this search path later
6533
	    func_append notinst_path " $abs_ladir"
6534
	  else
6535
	    dir="$ladir/$objdir"
6536
	    absdir="$abs_ladir/$objdir"
6537
	    # Remove this search path later
6538
	    func_append notinst_path " $abs_ladir"
6539
	  fi
6540
	fi # $installed = yes
6541
	func_stripname 'lib' '.la' "$laname"
6542
	name=$func_stripname_result
6543

    
6544
	# This library was specified with -dlpreopen.
6545
	if test "$pass" = dlpreopen; then
6546
	  if test -z "$libdir" && test "$linkmode" = prog; then
6547
	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6548
	  fi
6549
	  case "$host" in
6550
	    # special handling for platforms with PE-DLLs.
6551
	    *cygwin* | *mingw* | *cegcc* )
6552
	      # Linker will automatically link against shared library if both
6553
	      # static and shared are present.  Therefore, ensure we extract
6554
	      # symbols from the import library if a shared library is present
6555
	      # (otherwise, the dlopen module name will be incorrect).  We do
6556
	      # this by putting the import library name into $newdlprefiles.
6557
	      # We recover the dlopen module name by 'saving' the la file
6558
	      # name in a special purpose variable, and (later) extracting the
6559
	      # dlname from the la file.
6560
	      if test -n "$dlname"; then
6561
	        func_tr_sh "$dir/$linklib"
6562
	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6563
	        func_append newdlprefiles " $dir/$linklib"
6564
	      else
6565
	        func_append newdlprefiles " $dir/$old_library"
6566
	        # Keep a list of preopened convenience libraries to check
6567
	        # that they are being used correctly in the link pass.
6568
	        test -z "$libdir" && \
6569
	          func_append dlpreconveniencelibs " $dir/$old_library"
6570
	      fi
6571
	    ;;
6572
	    * )
6573
	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6574
	      # are required to link).
6575
	      if test -n "$old_library"; then
6576
	        func_append newdlprefiles " $dir/$old_library"
6577
	        # Keep a list of preopened convenience libraries to check
6578
	        # that they are being used correctly in the link pass.
6579
	        test -z "$libdir" && \
6580
	          func_append dlpreconveniencelibs " $dir/$old_library"
6581
	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6582
	      elif test -n "$dlname"; then
6583
	        func_append newdlprefiles " $dir/$dlname"
6584
	      else
6585
	        func_append newdlprefiles " $dir/$linklib"
6586
	      fi
6587
	    ;;
6588
	  esac
6589
	fi # $pass = dlpreopen
6590

    
6591
	if test -z "$libdir"; then
6592
	  # Link the convenience library
6593
	  if test "$linkmode" = lib; then
6594
	    deplibs="$dir/$old_library $deplibs"
6595
	  elif test "$linkmode,$pass" = "prog,link"; then
6596
	    compile_deplibs="$dir/$old_library $compile_deplibs"
6597
	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6598
	  else
6599
	    deplibs="$lib $deplibs" # used for prog,scan pass
6600
	  fi
6601
	  continue
6602
	fi
6603

    
6604

    
6605
	if test "$linkmode" = prog && test "$pass" != link; then
6606
	  func_append newlib_search_path " $ladir"
6607
	  deplibs="$lib $deplibs"
6608

    
6609
	  linkalldeplibs=no
6610
	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6611
	     test "$build_libtool_libs" = no; then
6612
	    linkalldeplibs=yes
6613
	  fi
6614

    
6615
	  tmp_libs=
6616
	  for deplib in $dependency_libs; do
6617
	    case $deplib in
6618
	    -L*) func_stripname '-L' '' "$deplib"
6619
	         func_resolve_sysroot "$func_stripname_result"
6620
	         func_append newlib_search_path " $func_resolve_sysroot_result"
6621
		 ;;
6622
	    esac
6623
	    # Need to link against all dependency_libs?
6624
	    if test "$linkalldeplibs" = yes; then
6625
	      deplibs="$deplib $deplibs"
6626
	    else
6627
	      # Need to hardcode shared library paths
6628
	      # or/and link against static libraries
6629
	      newdependency_libs="$deplib $newdependency_libs"
6630
	    fi
6631
	    if $opt_preserve_dup_deps ; then
6632
	      case "$tmp_libs " in
6633
	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6634
	      esac
6635
	    fi
6636
	    func_append tmp_libs " $deplib"
6637
	  done # for deplib
6638
	  continue
6639
	fi # $linkmode = prog...
6640

    
6641
	if test "$linkmode,$pass" = "prog,link"; then
6642
	  if test -n "$library_names" &&
6643
	     { { test "$prefer_static_libs" = no ||
6644
	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6645
	       test -z "$old_library"; }; then
6646
	    # We need to hardcode the library path
6647
	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6648
	      # Make sure the rpath contains only unique directories.
6649
	      case "$temp_rpath:" in
6650
	      *"$absdir:"*) ;;
6651
	      *) func_append temp_rpath "$absdir:" ;;
6652
	      esac
6653
	    fi
6654

    
6655
	    # Hardcode the library path.
6656
	    # Skip directories that are in the system default run-time
6657
	    # search path.
6658
	    case " $sys_lib_dlsearch_path " in
6659
	    *" $absdir "*) ;;
6660
	    *)
6661
	      case "$compile_rpath " in
6662
	      *" $absdir "*) ;;
6663
	      *) func_append compile_rpath " $absdir" ;;
6664
	      esac
6665
	      ;;
6666
	    esac
6667
	    case " $sys_lib_dlsearch_path " in
6668
	    *" $libdir "*) ;;
6669
	    *)
6670
	      case "$finalize_rpath " in
6671
	      *" $libdir "*) ;;
6672
	      *) func_append finalize_rpath " $libdir" ;;
6673
	      esac
6674
	      ;;
6675
	    esac
6676
	  fi # $linkmode,$pass = prog,link...
6677

    
6678
	  if test "$alldeplibs" = yes &&
6679
	     { test "$deplibs_check_method" = pass_all ||
6680
	       { test "$build_libtool_libs" = yes &&
6681
		 test -n "$library_names"; }; }; then
6682
	    # We only need to search for static libraries
6683
	    continue
6684
	  fi
6685
	fi
6686

    
6687
	link_static=no # Whether the deplib will be linked statically
6688
	use_static_libs=$prefer_static_libs
6689
	if test "$use_static_libs" = built && test "$installed" = yes; then
6690
	  use_static_libs=no
6691
	fi
6692
	if test -n "$library_names" &&
6693
	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6694
	  case $host in
6695
	  *cygwin* | *mingw* | *cegcc*)
6696
	      # No point in relinking DLLs because paths are not encoded
6697
	      func_append notinst_deplibs " $lib"
6698
	      need_relink=no
6699
	    ;;
6700
	  *)
6701
	    if test "$installed" = no; then
6702
	      func_append notinst_deplibs " $lib"
6703
	      need_relink=yes
6704
	    fi
6705
	    ;;
6706
	  esac
6707
	  # This is a shared library
6708

    
6709
	  # Warn about portability, can't link against -module's on some
6710
	  # systems (darwin).  Don't bleat about dlopened modules though!
6711
	  dlopenmodule=""
6712
	  for dlpremoduletest in $dlprefiles; do
6713
	    if test "X$dlpremoduletest" = "X$lib"; then
6714
	      dlopenmodule="$dlpremoduletest"
6715
	      break
6716
	    fi
6717
	  done
6718
	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6719
	    echo
6720
	    if test "$linkmode" = prog; then
6721
	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6722
	    else
6723
	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6724
	    fi
6725
	    $ECHO "*** $linklib is not portable!"
6726
	  fi
6727
	  if test "$linkmode" = lib &&
6728
	     test "$hardcode_into_libs" = yes; then
6729
	    # Hardcode the library path.
6730
	    # Skip directories that are in the system default run-time
6731
	    # search path.
6732
	    case " $sys_lib_dlsearch_path " in
6733
	    *" $absdir "*) ;;
6734
	    *)
6735
	      case "$compile_rpath " in
6736
	      *" $absdir "*) ;;
6737
	      *) func_append compile_rpath " $absdir" ;;
6738
	      esac
6739
	      ;;
6740
	    esac
6741
	    case " $sys_lib_dlsearch_path " in
6742
	    *" $libdir "*) ;;
6743
	    *)
6744
	      case "$finalize_rpath " in
6745
	      *" $libdir "*) ;;
6746
	      *) func_append finalize_rpath " $libdir" ;;
6747
	      esac
6748
	      ;;
6749
	    esac
6750
	  fi
6751

    
6752
	  if test -n "$old_archive_from_expsyms_cmds"; then
6753
	    # figure out the soname
6754
	    set dummy $library_names
6755
	    shift
6756
	    realname="$1"
6757
	    shift
6758
	    libname=`eval "\\$ECHO \"$libname_spec\""`
6759
	    # use dlname if we got it. it's perfectly good, no?
6760
	    if test -n "$dlname"; then
6761
	      soname="$dlname"
6762
	    elif test -n "$soname_spec"; then
6763
	      # bleh windows
6764
	      case $host in
6765
	      *cygwin* | mingw* | *cegcc*)
6766
	        func_arith $current - $age
6767
		major=$func_arith_result
6768
		versuffix="-$major"
6769
		;;
6770
	      esac
6771
	      eval soname=\"$soname_spec\"
6772
	    else
6773
	      soname="$realname"
6774
	    fi
6775

    
6776
	    # Make a new name for the extract_expsyms_cmds to use
6777
	    soroot="$soname"
6778
	    func_basename "$soroot"
6779
	    soname="$func_basename_result"
6780
	    func_stripname 'lib' '.dll' "$soname"
6781
	    newlib=libimp-$func_stripname_result.a
6782

    
6783
	    # If the library has no export list, then create one now
6784
	    if test -f "$output_objdir/$soname-def"; then :
6785
	    else
6786
	      func_verbose "extracting exported symbol list from \`$soname'"
6787
	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6788
	    fi
6789

    
6790
	    # Create $newlib
6791
	    if test -f "$output_objdir/$newlib"; then :; else
6792
	      func_verbose "generating import library for \`$soname'"
6793
	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6794
	    fi
6795
	    # make sure the library variables are pointing to the new library
6796
	    dir=$output_objdir
6797
	    linklib=$newlib
6798
	  fi # test -n "$old_archive_from_expsyms_cmds"
6799

    
6800
	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6801
	    add_shlibpath=
6802
	    add_dir=
6803
	    add=
6804
	    lib_linked=yes
6805
	    case $hardcode_action in
6806
	    immediate | unsupported)
6807
	      if test "$hardcode_direct" = no; then
6808
		add="$dir/$linklib"
6809
		case $host in
6810
		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6811
		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6812
		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6813
		    *-*-unixware7*) add_dir="-L$dir" ;;
6814
		  *-*-darwin* )
6815
		    # if the lib is a (non-dlopened) module then we can not
6816
		    # link against it, someone is ignoring the earlier warnings
6817
		    if /usr/bin/file -L $add 2> /dev/null |
6818
			 $GREP ": [^:]* bundle" >/dev/null ; then
6819
		      if test "X$dlopenmodule" != "X$lib"; then
6820
			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6821
			if test -z "$old_library" ; then
6822
			  echo
6823
			  echo "*** And there doesn't seem to be a static archive available"
6824
			  echo "*** The link will probably fail, sorry"
6825
			else
6826
			  add="$dir/$old_library"
6827
			fi
6828
		      elif test -n "$old_library"; then
6829
			add="$dir/$old_library"
6830
		      fi
6831
		    fi
6832
		esac
6833
	      elif test "$hardcode_minus_L" = no; then
6834
		case $host in
6835
		*-*-sunos*) add_shlibpath="$dir" ;;
6836
		esac
6837
		add_dir="-L$dir"
6838
		add="-l$name"
6839
	      elif test "$hardcode_shlibpath_var" = no; then
6840
		add_shlibpath="$dir"
6841
		add="-l$name"
6842
	      else
6843
		lib_linked=no
6844
	      fi
6845
	      ;;
6846
	    relink)
6847
	      if test "$hardcode_direct" = yes &&
6848
	         test "$hardcode_direct_absolute" = no; then
6849
		add="$dir/$linklib"
6850
	      elif test "$hardcode_minus_L" = yes; then
6851
		add_dir="-L$absdir"
6852
		# Try looking first in the location we're being installed to.
6853
		if test -n "$inst_prefix_dir"; then
6854
		  case $libdir in
6855
		    [\\/]*)
6856
		      func_append add_dir " -L$inst_prefix_dir$libdir"
6857
		      ;;
6858
		  esac
6859
		fi
6860
		add="-l$name"
6861
	      elif test "$hardcode_shlibpath_var" = yes; then
6862
		add_shlibpath="$dir"
6863
		add="-l$name"
6864
	      else
6865
		lib_linked=no
6866
	      fi
6867
	      ;;
6868
	    *) lib_linked=no ;;
6869
	    esac
6870

    
6871
	    if test "$lib_linked" != yes; then
6872
	      func_fatal_configuration "unsupported hardcode properties"
6873
	    fi
6874

    
6875
	    if test -n "$add_shlibpath"; then
6876
	      case :$compile_shlibpath: in
6877
	      *":$add_shlibpath:"*) ;;
6878
	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6879
	      esac
6880
	    fi
6881
	    if test "$linkmode" = prog; then
6882
	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6883
	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6884
	    else
6885
	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6886
	      test -n "$add" && deplibs="$add $deplibs"
6887
	      if test "$hardcode_direct" != yes &&
6888
		 test "$hardcode_minus_L" != yes &&
6889
		 test "$hardcode_shlibpath_var" = yes; then
6890
		case :$finalize_shlibpath: in
6891
		*":$libdir:"*) ;;
6892
		*) func_append finalize_shlibpath "$libdir:" ;;
6893
		esac
6894
	      fi
6895
	    fi
6896
	  fi
6897

    
6898
	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6899
	    add_shlibpath=
6900
	    add_dir=
6901
	    add=
6902
	    # Finalize command for both is simple: just hardcode it.
6903
	    if test "$hardcode_direct" = yes &&
6904
	       test "$hardcode_direct_absolute" = no; then
6905
	      add="$libdir/$linklib"
6906
	    elif test "$hardcode_minus_L" = yes; then
6907
	      add_dir="-L$libdir"
6908
	      add="-l$name"
6909
	    elif test "$hardcode_shlibpath_var" = yes; then
6910
	      case :$finalize_shlibpath: in
6911
	      *":$libdir:"*) ;;
6912
	      *) func_append finalize_shlibpath "$libdir:" ;;
6913
	      esac
6914
	      add="-l$name"
6915
	    elif test "$hardcode_automatic" = yes; then
6916
	      if test -n "$inst_prefix_dir" &&
6917
		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6918
		add="$inst_prefix_dir$libdir/$linklib"
6919
	      else
6920
		add="$libdir/$linklib"
6921
	      fi
6922
	    else
6923
	      # We cannot seem to hardcode it, guess we'll fake it.
6924
	      add_dir="-L$libdir"
6925
	      # Try looking first in the location we're being installed to.
6926
	      if test -n "$inst_prefix_dir"; then
6927
		case $libdir in
6928
		  [\\/]*)
6929
		    func_append add_dir " -L$inst_prefix_dir$libdir"
6930
		    ;;
6931
		esac
6932
	      fi
6933
	      add="-l$name"
6934
	    fi
6935

    
6936
	    if test "$linkmode" = prog; then
6937
	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6938
	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6939
	    else
6940
	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6941
	      test -n "$add" && deplibs="$add $deplibs"
6942
	    fi
6943
	  fi
6944
	elif test "$linkmode" = prog; then
6945
	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6946
	  # is not unsupported.  This is valid on all known static and
6947
	  # shared platforms.
6948
	  if test "$hardcode_direct" != unsupported; then
6949
	    test -n "$old_library" && linklib="$old_library"
6950
	    compile_deplibs="$dir/$linklib $compile_deplibs"
6951
	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6952
	  else
6953
	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6954
	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6955
	  fi
6956
	elif test "$build_libtool_libs" = yes; then
6957
	  # Not a shared library
6958
	  if test "$deplibs_check_method" != pass_all; then
6959
	    # We're trying link a shared library against a static one
6960
	    # but the system doesn't support it.
6961

    
6962
	    # Just print a warning and add the library to dependency_libs so
6963
	    # that the program can be linked against the static library.
6964
	    echo
6965
	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6966
	    echo "*** I have the capability to make that library automatically link in when"
6967
	    echo "*** you link to this library.  But I can only do this if you have a"
6968
	    echo "*** shared version of the library, which you do not appear to have."
6969
	    if test "$module" = yes; then
6970
	      echo "*** But as you try to build a module library, libtool will still create "
6971
	      echo "*** a static module, that should work as long as the dlopening application"
6972
	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6973
	      if test -z "$global_symbol_pipe"; then
6974
		echo
6975
		echo "*** However, this would only work if libtool was able to extract symbol"
6976
		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6977
		echo "*** not find such a program.  So, this module is probably useless."
6978
		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6979
	      fi
6980
	      if test "$build_old_libs" = no; then
6981
		build_libtool_libs=module
6982
		build_old_libs=yes
6983
	      else
6984
		build_libtool_libs=no
6985
	      fi
6986
	    fi
6987
	  else
6988
	    deplibs="$dir/$old_library $deplibs"
6989
	    link_static=yes
6990
	  fi
6991
	fi # link shared/static library?
6992

    
6993
	if test "$linkmode" = lib; then
6994
	  if test -n "$dependency_libs" &&
6995
	     { test "$hardcode_into_libs" != yes ||
6996
	       test "$build_old_libs" = yes ||
6997
	       test "$link_static" = yes; }; then
6998
	    # Extract -R from dependency_libs
6999
	    temp_deplibs=
7000
	    for libdir in $dependency_libs; do
7001
	      case $libdir in
7002
	      -R*) func_stripname '-R' '' "$libdir"
7003
	           temp_xrpath=$func_stripname_result
7004
		   case " $xrpath " in
7005
		   *" $temp_xrpath "*) ;;
7006
		   *) func_append xrpath " $temp_xrpath";;
7007
		   esac;;
7008
	      *) func_append temp_deplibs " $libdir";;
7009
	      esac
7010
	    done
7011
	    dependency_libs="$temp_deplibs"
7012
	  fi
7013

    
7014
	  func_append newlib_search_path " $absdir"
7015
	  # Link against this library
7016
	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7017
	  # ... and its dependency_libs
7018
	  tmp_libs=
7019
	  for deplib in $dependency_libs; do
7020
	    newdependency_libs="$deplib $newdependency_libs"
7021
	    case $deplib in
7022
              -L*) func_stripname '-L' '' "$deplib"
7023
                   func_resolve_sysroot "$func_stripname_result";;
7024
              *) func_resolve_sysroot "$deplib" ;;
7025
            esac
7026
	    if $opt_preserve_dup_deps ; then
7027
	      case "$tmp_libs " in
7028
	      *" $func_resolve_sysroot_result "*)
7029
                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7030
	      esac
7031
	    fi
7032
	    func_append tmp_libs " $func_resolve_sysroot_result"
7033
	  done
7034

    
7035
	  if test "$link_all_deplibs" != no; then
7036
	    # Add the search paths of all dependency libraries
7037
	    for deplib in $dependency_libs; do
7038
	      path=
7039
	      case $deplib in
7040
	      -L*) path="$deplib" ;;
7041
	      *.la)
7042
	        func_resolve_sysroot "$deplib"
7043
	        deplib=$func_resolve_sysroot_result
7044
	        func_dirname "$deplib" "" "."
7045
		dir=$func_dirname_result
7046
		# We need an absolute path.
7047
		case $dir in
7048
		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7049
		*)
7050
		  absdir=`cd "$dir" && pwd`
7051
		  if test -z "$absdir"; then
7052
		    func_warning "cannot determine absolute directory name of \`$dir'"
7053
		    absdir="$dir"
7054
		  fi
7055
		  ;;
7056
		esac
7057
		if $GREP "^installed=no" $deplib > /dev/null; then
7058
		case $host in
7059
		*-*-darwin*)
7060
		  depdepl=
7061
		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7062
		  if test -n "$deplibrary_names" ; then
7063
		    for tmp in $deplibrary_names ; do
7064
		      depdepl=$tmp
7065
		    done
7066
		    if test -f "$absdir/$objdir/$depdepl" ; then
7067
		      depdepl="$absdir/$objdir/$depdepl"
7068
		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7069
                      if test -z "$darwin_install_name"; then
7070
                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7071
                      fi
7072
		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7073
		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7074
		      path=
7075
		    fi
7076
		  fi
7077
		  ;;
7078
		*)
7079
		  path="-L$absdir/$objdir"
7080
		  ;;
7081
		esac
7082
		else
7083
		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7084
		  test -z "$libdir" && \
7085
		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7086
		  test "$absdir" != "$libdir" && \
7087
		    func_warning "\`$deplib' seems to be moved"
7088

    
7089
		  path="-L$absdir"
7090
		fi
7091
		;;
7092
	      esac
7093
	      case " $deplibs " in
7094
	      *" $path "*) ;;
7095
	      *) deplibs="$path $deplibs" ;;
7096
	      esac
7097
	    done
7098
	  fi # link_all_deplibs != no
7099
	fi # linkmode = lib
7100
      done # for deplib in $libs
7101
      if test "$pass" = link; then
7102
	if test "$linkmode" = "prog"; then
7103
	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7104
	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7105
	else
7106
	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7107
	fi
7108
      fi
7109
      dependency_libs="$newdependency_libs"
7110
      if test "$pass" = dlpreopen; then
7111
	# Link the dlpreopened libraries before other libraries
7112
	for deplib in $save_deplibs; do
7113
	  deplibs="$deplib $deplibs"
7114
	done
7115
      fi
7116
      if test "$pass" != dlopen; then
7117
	if test "$pass" != conv; then
7118
	  # Make sure lib_search_path contains only unique directories.
7119
	  lib_search_path=
7120
	  for dir in $newlib_search_path; do
7121
	    case "$lib_search_path " in
7122
	    *" $dir "*) ;;
7123
	    *) func_append lib_search_path " $dir" ;;
7124
	    esac
7125
	  done
7126
	  newlib_search_path=
7127
	fi
7128

    
7129
	if test "$linkmode,$pass" != "prog,link"; then
7130
	  vars="deplibs"
7131
	else
7132
	  vars="compile_deplibs finalize_deplibs"
7133
	fi
7134
	for var in $vars dependency_libs; do
7135
	  # Add libraries to $var in reverse order
7136
	  eval tmp_libs=\"\$$var\"
7137
	  new_libs=
7138
	  for deplib in $tmp_libs; do
7139
	    # FIXME: Pedantically, this is the right thing to do, so
7140
	    #        that some nasty dependency loop isn't accidentally
7141
	    #        broken:
7142
	    #new_libs="$deplib $new_libs"
7143
	    # Pragmatically, this seems to cause very few problems in
7144
	    # practice:
7145
	    case $deplib in
7146
	    -L*) new_libs="$deplib $new_libs" ;;
7147
	    -R*) ;;
7148
	    *)
7149
	      # And here is the reason: when a library appears more
7150
	      # than once as an explicit dependence of a library, or
7151
	      # is implicitly linked in more than once by the
7152
	      # compiler, it is considered special, and multiple
7153
	      # occurrences thereof are not removed.  Compare this
7154
	      # with having the same library being listed as a
7155
	      # dependency of multiple other libraries: in this case,
7156
	      # we know (pedantically, we assume) the library does not
7157
	      # need to be listed more than once, so we keep only the
7158
	      # last copy.  This is not always right, but it is rare
7159
	      # enough that we require users that really mean to play
7160
	      # such unportable linking tricks to link the library
7161
	      # using -Wl,-lname, so that libtool does not consider it
7162
	      # for duplicate removal.
7163
	      case " $specialdeplibs " in
7164
	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7165
	      *)
7166
		case " $new_libs " in
7167
		*" $deplib "*) ;;
7168
		*) new_libs="$deplib $new_libs" ;;
7169
		esac
7170
		;;
7171
	      esac
7172
	      ;;
7173
	    esac
7174
	  done
7175
	  tmp_libs=
7176
	  for deplib in $new_libs; do
7177
	    case $deplib in
7178
	    -L*)
7179
	      case " $tmp_libs " in
7180
	      *" $deplib "*) ;;
7181
	      *) func_append tmp_libs " $deplib" ;;
7182
	      esac
7183
	      ;;
7184
	    *) func_append tmp_libs " $deplib" ;;
7185
	    esac
7186
	  done
7187
	  eval $var=\"$tmp_libs\"
7188
	done # for var
7189
      fi
7190
      # Last step: remove runtime libs from dependency_libs
7191
      # (they stay in deplibs)
7192
      tmp_libs=
7193
      for i in $dependency_libs ; do
7194
	case " $predeps $postdeps $compiler_lib_search_path " in
7195
	*" $i "*)
7196
	  i=""
7197
	  ;;
7198
	esac
7199
	if test -n "$i" ; then
7200
	  func_append tmp_libs " $i"
7201
	fi
7202
      done
7203
      dependency_libs=$tmp_libs
7204
    done # for pass
7205
    if test "$linkmode" = prog; then
7206
      dlfiles="$newdlfiles"
7207
    fi
7208
    if test "$linkmode" = prog || test "$linkmode" = lib; then
7209
      dlprefiles="$newdlprefiles"
7210
    fi
7211

    
7212
    case $linkmode in
7213
    oldlib)
7214
      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7215
	func_warning "\`-dlopen' is ignored for archives"
7216
      fi
7217

    
7218
      case " $deplibs" in
7219
      *\ -l* | *\ -L*)
7220
	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7221
      esac
7222

    
7223
      test -n "$rpath" && \
7224
	func_warning "\`-rpath' is ignored for archives"
7225

    
7226
      test -n "$xrpath" && \
7227
	func_warning "\`-R' is ignored for archives"
7228

    
7229
      test -n "$vinfo" && \
7230
	func_warning "\`-version-info/-version-number' is ignored for archives"
7231

    
7232
      test -n "$release" && \
7233
	func_warning "\`-release' is ignored for archives"
7234

    
7235
      test -n "$export_symbols$export_symbols_regex" && \
7236
	func_warning "\`-export-symbols' is ignored for archives"
7237

    
7238
      # Now set the variables for building old libraries.
7239
      build_libtool_libs=no
7240
      oldlibs="$output"
7241
      func_append objs "$old_deplibs"
7242
      ;;
7243

    
7244
    lib)
7245
      # Make sure we only generate libraries of the form `libNAME.la'.
7246
      case $outputname in
7247
      lib*)
7248
	func_stripname 'lib' '.la' "$outputname"
7249
	name=$func_stripname_result
7250
	eval shared_ext=\"$shrext_cmds\"
7251
	eval libname=\"$libname_spec\"
7252
	;;
7253
      *)
7254
	test "$module" = no && \
7255
	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7256

    
7257
	if test "$need_lib_prefix" != no; then
7258
	  # Add the "lib" prefix for modules if required
7259
	  func_stripname '' '.la' "$outputname"
7260
	  name=$func_stripname_result
7261
	  eval shared_ext=\"$shrext_cmds\"
7262
	  eval libname=\"$libname_spec\"
7263
	else
7264
	  func_stripname '' '.la' "$outputname"
7265
	  libname=$func_stripname_result
7266
	fi
7267
	;;
7268
      esac
7269

    
7270
      if test -n "$objs"; then
7271
	if test "$deplibs_check_method" != pass_all; then
7272
	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7273
	else
7274
	  echo
7275
	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7276
	  $ECHO "*** objects $objs is not portable!"
7277
	  func_append libobjs " $objs"
7278
	fi
7279
      fi
7280

    
7281
      test "$dlself" != no && \
7282
	func_warning "\`-dlopen self' is ignored for libtool libraries"
7283

    
7284
      set dummy $rpath
7285
      shift
7286
      test "$#" -gt 1 && \
7287
	func_warning "ignoring multiple \`-rpath's for a libtool library"
7288

    
7289
      install_libdir="$1"
7290

    
7291
      oldlibs=
7292
      if test -z "$rpath"; then
7293
	if test "$build_libtool_libs" = yes; then
7294
	  # Building a libtool convenience library.
7295
	  # Some compilers have problems with a `.al' extension so
7296
	  # convenience libraries should have the same extension an
7297
	  # archive normally would.
7298
	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7299
	  build_libtool_libs=convenience
7300
	  build_old_libs=yes
7301
	fi
7302

    
7303
	test -n "$vinfo" && \
7304
	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7305

    
7306
	test -n "$release" && \
7307
	  func_warning "\`-release' is ignored for convenience libraries"
7308
      else
7309

    
7310
	# Parse the version information argument.
7311
	save_ifs="$IFS"; IFS=':'
7312
	set dummy $vinfo 0 0 0
7313
	shift
7314
	IFS="$save_ifs"
7315

    
7316
	test -n "$7" && \
7317
	  func_fatal_help "too many parameters to \`-version-info'"
7318

    
7319
	# convert absolute version numbers to libtool ages
7320
	# this retains compatibility with .la files and attempts
7321
	# to make the code below a bit more comprehensible
7322

    
7323
	case $vinfo_number in
7324
	yes)
7325
	  number_major="$1"
7326
	  number_minor="$2"
7327
	  number_revision="$3"
7328
	  #
7329
	  # There are really only two kinds -- those that
7330
	  # use the current revision as the major version
7331
	  # and those that subtract age and use age as
7332
	  # a minor version.  But, then there is irix
7333
	  # which has an extra 1 added just for fun
7334
	  #
7335
	  case $version_type in
7336
	  # correct linux to gnu/linux during the next big refactor
7337
	  darwin|linux|osf|windows|none)
7338
	    func_arith $number_major + $number_minor
7339
	    current=$func_arith_result
7340
	    age="$number_minor"
7341
	    revision="$number_revision"
7342
	    ;;
7343
	  freebsd-aout|freebsd-elf|qnx|sunos)
7344
	    current="$number_major"
7345
	    revision="$number_minor"
7346
	    age="0"
7347
	    ;;
7348
	  irix|nonstopux)
7349
	    func_arith $number_major + $number_minor
7350
	    current=$func_arith_result
7351
	    age="$number_minor"
7352
	    revision="$number_minor"
7353
	    lt_irix_increment=no
7354
	    ;;
7355
	  *)
7356
	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
7357
	    ;;
7358
	  esac
7359
	  ;;
7360
	no)
7361
	  current="$1"
7362
	  revision="$2"
7363
	  age="$3"
7364
	  ;;
7365
	esac
7366

    
7367
	# Check that each of the things are valid numbers.
7368
	case $current in
7369
	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]) ;;
7370
	*)
7371
	  func_error "CURRENT \`$current' must be a nonnegative integer"
7372
	  func_fatal_error "\`$vinfo' is not valid version information"
7373
	  ;;
7374
	esac
7375

    
7376
	case $revision in
7377
	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]) ;;
7378
	*)
7379
	  func_error "REVISION \`$revision' must be a nonnegative integer"
7380
	  func_fatal_error "\`$vinfo' is not valid version information"
7381
	  ;;
7382
	esac
7383

    
7384
	case $age in
7385
	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]) ;;
7386
	*)
7387
	  func_error "AGE \`$age' must be a nonnegative integer"
7388
	  func_fatal_error "\`$vinfo' is not valid version information"
7389
	  ;;
7390
	esac
7391

    
7392
	if test "$age" -gt "$current"; then
7393
	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7394
	  func_fatal_error "\`$vinfo' is not valid version information"
7395
	fi
7396

    
7397
	# Calculate the version variables.
7398
	major=
7399
	versuffix=
7400
	verstring=
7401
	case $version_type in
7402
	none) ;;
7403

    
7404
	darwin)
7405
	  # Like Linux, but with the current version available in
7406
	  # verstring for coding it into the library header
7407
	  func_arith $current - $age
7408
	  major=.$func_arith_result
7409
	  versuffix="$major.$age.$revision"
7410
	  # Darwin ld doesn't like 0 for these options...
7411
	  func_arith $current + 1
7412
	  minor_current=$func_arith_result
7413
	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7414
	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7415
	  ;;
7416

    
7417
	freebsd-aout)
7418
	  major=".$current"
7419
	  versuffix=".$current.$revision";
7420
	  ;;
7421

    
7422
	freebsd-elf)
7423
	  major=".$current"
7424
	  versuffix=".$current"
7425
	  ;;
7426

    
7427
	irix | nonstopux)
7428
	  if test "X$lt_irix_increment" = "Xno"; then
7429
	    func_arith $current - $age
7430
	  else
7431
	    func_arith $current - $age + 1
7432
	  fi
7433
	  major=$func_arith_result
7434

    
7435
	  case $version_type in
7436
	    nonstopux) verstring_prefix=nonstopux ;;
7437
	    *)         verstring_prefix=sgi ;;
7438
	  esac
7439
	  verstring="$verstring_prefix$major.$revision"
7440

    
7441
	  # Add in all the interfaces that we are compatible with.
7442
	  loop=$revision
7443
	  while test "$loop" -ne 0; do
7444
	    func_arith $revision - $loop
7445
	    iface=$func_arith_result
7446
	    func_arith $loop - 1
7447
	    loop=$func_arith_result
7448
	    verstring="$verstring_prefix$major.$iface:$verstring"
7449
	  done
7450

    
7451
	  # Before this point, $major must not contain `.'.
7452
	  major=.$major
7453
	  versuffix="$major.$revision"
7454
	  ;;
7455

    
7456
	linux) # correct to gnu/linux during the next big refactor
7457
	  func_arith $current - $age
7458
	  major=.$func_arith_result
7459
	  versuffix="$major.$age.$revision"
7460
	  ;;
7461

    
7462
	osf)
7463
	  func_arith $current - $age
7464
	  major=.$func_arith_result
7465
	  versuffix=".$current.$age.$revision"
7466
	  verstring="$current.$age.$revision"
7467

    
7468
	  # Add in all the interfaces that we are compatible with.
7469
	  loop=$age
7470
	  while test "$loop" -ne 0; do
7471
	    func_arith $current - $loop
7472
	    iface=$func_arith_result
7473
	    func_arith $loop - 1
7474
	    loop=$func_arith_result
7475
	    verstring="$verstring:${iface}.0"
7476
	  done
7477

    
7478
	  # Make executables depend on our current version.
7479
	  func_append verstring ":${current}.0"
7480
	  ;;
7481

    
7482
	qnx)
7483
	  major=".$current"
7484
	  versuffix=".$current"
7485
	  ;;
7486

    
7487
	sunos)
7488
	  major=".$current"
7489
	  versuffix=".$current.$revision"
7490
	  ;;
7491

    
7492
	windows)
7493
	  # Use '-' rather than '.', since we only want one
7494
	  # extension on DOS 8.3 filesystems.
7495
	  func_arith $current - $age
7496
	  major=$func_arith_result
7497
	  versuffix="-$major"
7498
	  ;;
7499

    
7500
	*)
7501
	  func_fatal_configuration "unknown library version type \`$version_type'"
7502
	  ;;
7503
	esac
7504

    
7505
	# Clear the version info if we defaulted, and they specified a release.
7506
	if test -z "$vinfo" && test -n "$release"; then
7507
	  major=
7508
	  case $version_type in
7509
	  darwin)
7510
	    # we can't check for "0.0" in archive_cmds due to quoting
7511
	    # problems, so we reset it completely
7512
	    verstring=
7513
	    ;;
7514
	  *)
7515
	    verstring="0.0"
7516
	    ;;
7517
	  esac
7518
	  if test "$need_version" = no; then
7519
	    versuffix=
7520
	  else
7521
	    versuffix=".0.0"
7522
	  fi
7523
	fi
7524

    
7525
	# Remove version info from name if versioning should be avoided
7526
	if test "$avoid_version" = yes && test "$need_version" = no; then
7527
	  major=
7528
	  versuffix=
7529
	  verstring=""
7530
	fi
7531

    
7532
	# Check to see if the archive will have undefined symbols.
7533
	if test "$allow_undefined" = yes; then
7534
	  if test "$allow_undefined_flag" = unsupported; then
7535
	    func_warning "undefined symbols not allowed in $host shared libraries"
7536
	    build_libtool_libs=no
7537
	    build_old_libs=yes
7538
	  fi
7539
	else
7540
	  # Don't allow undefined symbols.
7541
	  allow_undefined_flag="$no_undefined_flag"
7542
	fi
7543

    
7544
      fi
7545

    
7546
      func_generate_dlsyms "$libname" "$libname" "yes"
7547
      func_append libobjs " $symfileobj"
7548
      test "X$libobjs" = "X " && libobjs=
7549

    
7550
      if test "$opt_mode" != relink; then
7551
	# Remove our outputs, but don't remove object files since they
7552
	# may have been created when compiling PIC objects.
7553
	removelist=
7554
	tempremovelist=`$ECHO "$output_objdir/*"`
7555
	for p in $tempremovelist; do
7556
	  case $p in
7557
	    *.$objext | *.gcno)
7558
	       ;;
7559
	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7560
	       if test "X$precious_files_regex" != "X"; then
7561
		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7562
		 then
7563
		   continue
7564
		 fi
7565
	       fi
7566
	       func_append removelist " $p"
7567
	       ;;
7568
	    *) ;;
7569
	  esac
7570
	done
7571
	test -n "$removelist" && \
7572
	  func_show_eval "${RM}r \$removelist"
7573
      fi
7574

    
7575
      # Now set the variables for building old libraries.
7576
      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7577
	func_append oldlibs " $output_objdir/$libname.$libext"
7578

    
7579
	# Transform .lo files to .o files.
7580
	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7581
      fi
7582

    
7583
      # Eliminate all temporary directories.
7584
      #for path in $notinst_path; do
7585
      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7586
      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7587
      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7588
      #done
7589

    
7590
      if test -n "$xrpath"; then
7591
	# If the user specified any rpath flags, then add them.
7592
	temp_xrpath=
7593
	for libdir in $xrpath; do
7594
	  func_replace_sysroot "$libdir"
7595
	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7596
	  case "$finalize_rpath " in
7597
	  *" $libdir "*) ;;
7598
	  *) func_append finalize_rpath " $libdir" ;;
7599
	  esac
7600
	done
7601
	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7602
	  dependency_libs="$temp_xrpath $dependency_libs"
7603
	fi
7604
      fi
7605

    
7606
      # Make sure dlfiles contains only unique files that won't be dlpreopened
7607
      old_dlfiles="$dlfiles"
7608
      dlfiles=
7609
      for lib in $old_dlfiles; do
7610
	case " $dlprefiles $dlfiles " in
7611
	*" $lib "*) ;;
7612
	*) func_append dlfiles " $lib" ;;
7613
	esac
7614
      done
7615

    
7616
      # Make sure dlprefiles contains only unique files
7617
      old_dlprefiles="$dlprefiles"
7618
      dlprefiles=
7619
      for lib in $old_dlprefiles; do
7620
	case "$dlprefiles " in
7621
	*" $lib "*) ;;
7622
	*) func_append dlprefiles " $lib" ;;
7623
	esac
7624
      done
7625

    
7626
      if test "$build_libtool_libs" = yes; then
7627
	if test -n "$rpath"; then
7628
	  case $host in
7629
	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7630
	    # these systems don't actually have a c library (as such)!
7631
	    ;;
7632
	  *-*-rhapsody* | *-*-darwin1.[012])
7633
	    # Rhapsody C library is in the System framework
7634
	    func_append deplibs " System.ltframework"
7635
	    ;;
7636
	  *-*-netbsd*)
7637
	    # Don't link with libc until the a.out ld.so is fixed.
7638
	    ;;
7639
	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7640
	    # Do not include libc due to us having libc/libc_r.
7641
	    ;;
7642
	  *-*-sco3.2v5* | *-*-sco5v6*)
7643
	    # Causes problems with __ctype
7644
	    ;;
7645
	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7646
	    # Compiler inserts libc in the correct place for threads to work
7647
	    ;;
7648
	  *)
7649
	    # Add libc to deplibs on all other systems if necessary.
7650
	    if test "$build_libtool_need_lc" = "yes"; then
7651
	      func_append deplibs " -lc"
7652
	    fi
7653
	    ;;
7654
	  esac
7655
	fi
7656

    
7657
	# Transform deplibs into only deplibs that can be linked in shared.
7658
	name_save=$name
7659
	libname_save=$libname
7660
	release_save=$release
7661
	versuffix_save=$versuffix
7662
	major_save=$major
7663
	# I'm not sure if I'm treating the release correctly.  I think
7664
	# release should show up in the -l (ie -lgmp5) so we don't want to
7665
	# add it in twice.  Is that correct?
7666
	release=""
7667
	versuffix=""
7668
	major=""
7669
	newdeplibs=
7670
	droppeddeps=no
7671
	case $deplibs_check_method in
7672
	pass_all)
7673
	  # Don't check for shared/static.  Everything works.
7674
	  # This might be a little naive.  We might want to check
7675
	  # whether the library exists or not.  But this is on
7676
	  # osf3 & osf4 and I'm not really sure... Just
7677
	  # implementing what was already the behavior.
7678
	  newdeplibs=$deplibs
7679
	  ;;
7680
	test_compile)
7681
	  # This code stresses the "libraries are programs" paradigm to its
7682
	  # limits. Maybe even breaks it.  We compile a program, linking it
7683
	  # against the deplibs as a proxy for the library.  Then we can check
7684
	  # whether they linked in statically or dynamically with ldd.
7685
	  $opt_dry_run || $RM conftest.c
7686
	  cat > conftest.c <<EOF
7687
	  int main() { return 0; }
7688
EOF
7689
	  $opt_dry_run || $RM conftest
7690
	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7691
	    ldd_output=`ldd conftest`
7692
	    for i in $deplibs; do
7693
	      case $i in
7694
	      -l*)
7695
		func_stripname -l '' "$i"
7696
		name=$func_stripname_result
7697
		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7698
		  case " $predeps $postdeps " in
7699
		  *" $i "*)
7700
		    func_append newdeplibs " $i"
7701
		    i=""
7702
		    ;;
7703
		  esac
7704
		fi
7705
		if test -n "$i" ; then
7706
		  libname=`eval "\\$ECHO \"$libname_spec\""`
7707
		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7708
		  set dummy $deplib_matches; shift
7709
		  deplib_match=$1
7710
		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7711
		    func_append newdeplibs " $i"
7712
		  else
7713
		    droppeddeps=yes
7714
		    echo
7715
		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7716
		    echo "*** I have the capability to make that library automatically link in when"
7717
		    echo "*** you link to this library.  But I can only do this if you have a"
7718
		    echo "*** shared version of the library, which I believe you do not have"
7719
		    echo "*** because a test_compile did reveal that the linker did not use it for"
7720
		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7721
		  fi
7722
		fi
7723
		;;
7724
	      *)
7725
		func_append newdeplibs " $i"
7726
		;;
7727
	      esac
7728
	    done
7729
	  else
7730
	    # Error occurred in the first compile.  Let's try to salvage
7731
	    # the situation: Compile a separate program for each library.
7732
	    for i in $deplibs; do
7733
	      case $i in
7734
	      -l*)
7735
		func_stripname -l '' "$i"
7736
		name=$func_stripname_result
7737
		$opt_dry_run || $RM conftest
7738
		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7739
		  ldd_output=`ldd conftest`
7740
		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7741
		    case " $predeps $postdeps " in
7742
		    *" $i "*)
7743
		      func_append newdeplibs " $i"
7744
		      i=""
7745
		      ;;
7746
		    esac
7747
		  fi
7748
		  if test -n "$i" ; then
7749
		    libname=`eval "\\$ECHO \"$libname_spec\""`
7750
		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7751
		    set dummy $deplib_matches; shift
7752
		    deplib_match=$1
7753
		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7754
		      func_append newdeplibs " $i"
7755
		    else
7756
		      droppeddeps=yes
7757
		      echo
7758
		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7759
		      echo "*** I have the capability to make that library automatically link in when"
7760
		      echo "*** you link to this library.  But I can only do this if you have a"
7761
		      echo "*** shared version of the library, which you do not appear to have"
7762
		      echo "*** because a test_compile did reveal that the linker did not use this one"
7763
		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7764
		    fi
7765
		  fi
7766
		else
7767
		  droppeddeps=yes
7768
		  echo
7769
		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7770
		  echo "*** make it link in!  You will probably need to install it or some"
7771
		  echo "*** library that it depends on before this library will be fully"
7772
		  echo "*** functional.  Installing it before continuing would be even better."
7773
		fi
7774
		;;
7775
	      *)
7776
		func_append newdeplibs " $i"
7777
		;;
7778
	      esac
7779
	    done
7780
	  fi
7781
	  ;;
7782
	file_magic*)
7783
	  set dummy $deplibs_check_method; shift
7784
	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7785
	  for a_deplib in $deplibs; do
7786
	    case $a_deplib in
7787
	    -l*)
7788
	      func_stripname -l '' "$a_deplib"
7789
	      name=$func_stripname_result
7790
	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7791
		case " $predeps $postdeps " in
7792
		*" $a_deplib "*)
7793
		  func_append newdeplibs " $a_deplib"
7794
		  a_deplib=""
7795
		  ;;
7796
		esac
7797
	      fi
7798
	      if test -n "$a_deplib" ; then
7799
		libname=`eval "\\$ECHO \"$libname_spec\""`
7800
		if test -n "$file_magic_glob"; then
7801
		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7802
		else
7803
		  libnameglob=$libname
7804
		fi
7805
		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7806
		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7807
		  if test "$want_nocaseglob" = yes; then
7808
		    shopt -s nocaseglob
7809
		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7810
		    $nocaseglob
7811
		  else
7812
		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7813
		  fi
7814
		  for potent_lib in $potential_libs; do
7815
		      # Follow soft links.
7816
		      if ls -lLd "$potent_lib" 2>/dev/null |
7817
			 $GREP " -> " >/dev/null; then
7818
			continue
7819
		      fi
7820
		      # The statement above tries to avoid entering an
7821
		      # endless loop below, in case of cyclic links.
7822
		      # We might still enter an endless loop, since a link
7823
		      # loop can be closed while we follow links,
7824
		      # but so what?
7825
		      potlib="$potent_lib"
7826
		      while test -h "$potlib" 2>/dev/null; do
7827
			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7828
			case $potliblink in
7829
			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7830
			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7831
			esac
7832
		      done
7833
		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7834
			 $SED -e 10q |
7835
			 $EGREP "$file_magic_regex" > /dev/null; then
7836
			func_append newdeplibs " $a_deplib"
7837
			a_deplib=""
7838
			break 2
7839
		      fi
7840
		  done
7841
		done
7842
	      fi
7843
	      if test -n "$a_deplib" ; then
7844
		droppeddeps=yes
7845
		echo
7846
		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7847
		echo "*** I have the capability to make that library automatically link in when"
7848
		echo "*** you link to this library.  But I can only do this if you have a"
7849
		echo "*** shared version of the library, which you do not appear to have"
7850
		echo "*** because I did check the linker path looking for a file starting"
7851
		if test -z "$potlib" ; then
7852
		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7853
		else
7854
		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7855
		  $ECHO "*** using a file magic. Last file checked: $potlib"
7856
		fi
7857
	      fi
7858
	      ;;
7859
	    *)
7860
	      # Add a -L argument.
7861
	      func_append newdeplibs " $a_deplib"
7862
	      ;;
7863
	    esac
7864
	  done # Gone through all deplibs.
7865
	  ;;
7866
	match_pattern*)
7867
	  set dummy $deplibs_check_method; shift
7868
	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7869
	  for a_deplib in $deplibs; do
7870
	    case $a_deplib in
7871
	    -l*)
7872
	      func_stripname -l '' "$a_deplib"
7873
	      name=$func_stripname_result
7874
	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7875
		case " $predeps $postdeps " in
7876
		*" $a_deplib "*)
7877
		  func_append newdeplibs " $a_deplib"
7878
		  a_deplib=""
7879
		  ;;
7880
		esac
7881
	      fi
7882
	      if test -n "$a_deplib" ; then
7883
		libname=`eval "\\$ECHO \"$libname_spec\""`
7884
		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7885
		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7886
		  for potent_lib in $potential_libs; do
7887
		    potlib="$potent_lib" # see symlink-check above in file_magic test
7888
		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7889
		       $EGREP "$match_pattern_regex" > /dev/null; then
7890
		      func_append newdeplibs " $a_deplib"
7891
		      a_deplib=""
7892
		      break 2
7893
		    fi
7894
		  done
7895
		done
7896
	      fi
7897
	      if test -n "$a_deplib" ; then
7898
		droppeddeps=yes
7899
		echo
7900
		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7901
		echo "*** I have the capability to make that library automatically link in when"
7902
		echo "*** you link to this library.  But I can only do this if you have a"
7903
		echo "*** shared version of the library, which you do not appear to have"
7904
		echo "*** because I did check the linker path looking for a file starting"
7905
		if test -z "$potlib" ; then
7906
		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7907
		else
7908
		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7909
		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7910
		fi
7911
	      fi
7912
	      ;;
7913
	    *)
7914
	      # Add a -L argument.
7915
	      func_append newdeplibs " $a_deplib"
7916
	      ;;
7917
	    esac
7918
	  done # Gone through all deplibs.
7919
	  ;;
7920
	none | unknown | *)
7921
	  newdeplibs=""
7922
	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7923
	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7924
	    for i in $predeps $postdeps ; do
7925
	      # can't use Xsed below, because $i might contain '/'
7926
	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7927
	    done
7928
	  fi
7929
	  case $tmp_deplibs in
7930
	  *[!\	\ ]*)
7931
	    echo
7932
	    if test "X$deplibs_check_method" = "Xnone"; then
7933
	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7934
	    else
7935
	      echo "*** Warning: inter-library dependencies are not known to be supported."
7936
	    fi
7937
	    echo "*** All declared inter-library dependencies are being dropped."
7938
	    droppeddeps=yes
7939
	    ;;
7940
	  esac
7941
	  ;;
7942
	esac
7943
	versuffix=$versuffix_save
7944
	major=$major_save
7945
	release=$release_save
7946
	libname=$libname_save
7947
	name=$name_save
7948

    
7949
	case $host in
7950
	*-*-rhapsody* | *-*-darwin1.[012])
7951
	  # On Rhapsody replace the C library with the System framework
7952
	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7953
	  ;;
7954
	esac
7955

    
7956
	if test "$droppeddeps" = yes; then
7957
	  if test "$module" = yes; then
7958
	    echo
7959
	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7960
	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7961
	    echo "*** a static module, that should work as long as the dlopening"
7962
	    echo "*** application is linked with the -dlopen flag."
7963
	    if test -z "$global_symbol_pipe"; then
7964
	      echo
7965
	      echo "*** However, this would only work if libtool was able to extract symbol"
7966
	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7967
	      echo "*** not find such a program.  So, this module is probably useless."
7968
	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7969
	    fi
7970
	    if test "$build_old_libs" = no; then
7971
	      oldlibs="$output_objdir/$libname.$libext"
7972
	      build_libtool_libs=module
7973
	      build_old_libs=yes
7974
	    else
7975
	      build_libtool_libs=no
7976
	    fi
7977
	  else
7978
	    echo "*** The inter-library dependencies that have been dropped here will be"
7979
	    echo "*** automatically added whenever a program is linked with this library"
7980
	    echo "*** or is declared to -dlopen it."
7981

    
7982
	    if test "$allow_undefined" = no; then
7983
	      echo
7984
	      echo "*** Since this library must not contain undefined symbols,"
7985
	      echo "*** because either the platform does not support them or"
7986
	      echo "*** it was explicitly requested with -no-undefined,"
7987
	      echo "*** libtool will only create a static version of it."
7988
	      if test "$build_old_libs" = no; then
7989
		oldlibs="$output_objdir/$libname.$libext"
7990
		build_libtool_libs=module
7991
		build_old_libs=yes
7992
	      else
7993
		build_libtool_libs=no
7994
	      fi
7995
	    fi
7996
	  fi
7997
	fi
7998
	# Done checking deplibs!
7999
	deplibs=$newdeplibs
8000
      fi
8001
      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8002
      case $host in
8003
	*-*-darwin*)
8004
	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8005
	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8006
	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8007
	  ;;
8008
      esac
8009

    
8010
      # move library search paths that coincide with paths to not yet
8011
      # installed libraries to the beginning of the library search list
8012
      new_libs=
8013
      for path in $notinst_path; do
8014
	case " $new_libs " in
8015
	*" -L$path/$objdir "*) ;;
8016
	*)
8017
	  case " $deplibs " in
8018
	  *" -L$path/$objdir "*)
8019
	    func_append new_libs " -L$path/$objdir" ;;
8020
	  esac
8021
	  ;;
8022
	esac
8023
      done
8024
      for deplib in $deplibs; do
8025
	case $deplib in
8026
	-L*)
8027
	  case " $new_libs " in
8028
	  *" $deplib "*) ;;
8029
	  *) func_append new_libs " $deplib" ;;
8030
	  esac
8031
	  ;;
8032
	*) func_append new_libs " $deplib" ;;
8033
	esac
8034
      done
8035
      deplibs="$new_libs"
8036

    
8037
      # All the library-specific variables (install_libdir is set above).
8038
      library_names=
8039
      old_library=
8040
      dlname=
8041

    
8042
      # Test again, we may have decided not to build it any more
8043
      if test "$build_libtool_libs" = yes; then
8044
	# Remove ${wl} instances when linking with ld.
8045
	# FIXME: should test the right _cmds variable.
8046
	case $archive_cmds in
8047
	  *\$LD\ *) wl= ;;
8048
        esac
8049
	if test "$hardcode_into_libs" = yes; then
8050
	  # Hardcode the library paths
8051
	  hardcode_libdirs=
8052
	  dep_rpath=
8053
	  rpath="$finalize_rpath"
8054
	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8055
	  for libdir in $rpath; do
8056
	    if test -n "$hardcode_libdir_flag_spec"; then
8057
	      if test -n "$hardcode_libdir_separator"; then
8058
		func_replace_sysroot "$libdir"
8059
		libdir=$func_replace_sysroot_result
8060
		if test -z "$hardcode_libdirs"; then
8061
		  hardcode_libdirs="$libdir"
8062
		else
8063
		  # Just accumulate the unique libdirs.
8064
		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8065
		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8066
		    ;;
8067
		  *)
8068
		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8069
		    ;;
8070
		  esac
8071
		fi
8072
	      else
8073
		eval flag=\"$hardcode_libdir_flag_spec\"
8074
		func_append dep_rpath " $flag"
8075
	      fi
8076
	    elif test -n "$runpath_var"; then
8077
	      case "$perm_rpath " in
8078
	      *" $libdir "*) ;;
8079
	      *) func_append perm_rpath " $libdir" ;;
8080
	      esac
8081
	    fi
8082
	  done
8083
	  # Substitute the hardcoded libdirs into the rpath.
8084
	  if test -n "$hardcode_libdir_separator" &&
8085
	     test -n "$hardcode_libdirs"; then
8086
	    libdir="$hardcode_libdirs"
8087
	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8088
	  fi
8089
	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8090
	    # We should set the runpath_var.
8091
	    rpath=
8092
	    for dir in $perm_rpath; do
8093
	      func_append rpath "$dir:"
8094
	    done
8095
	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8096
	  fi
8097
	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8098
	fi
8099

    
8100
	shlibpath="$finalize_shlibpath"
8101
	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8102
	if test -n "$shlibpath"; then
8103
	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8104
	fi
8105

    
8106
	# Get the real and link names of the library.
8107
	eval shared_ext=\"$shrext_cmds\"
8108
	eval library_names=\"$library_names_spec\"
8109
	set dummy $library_names
8110
	shift
8111
	realname="$1"
8112
	shift
8113

    
8114
	if test -n "$soname_spec"; then
8115
	  eval soname=\"$soname_spec\"
8116
	else
8117
	  soname="$realname"
8118
	fi
8119
	if test -z "$dlname"; then
8120
	  dlname=$soname
8121
	fi
8122

    
8123
	lib="$output_objdir/$realname"
8124
	linknames=
8125
	for link
8126
	do
8127
	  func_append linknames " $link"
8128
	done
8129

    
8130
	# Use standard objects if they are pic
8131
	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8132
	test "X$libobjs" = "X " && libobjs=
8133

    
8134
	delfiles=
8135
	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8136
	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8137
	  export_symbols="$output_objdir/$libname.uexp"
8138
	  func_append delfiles " $export_symbols"
8139
	fi
8140

    
8141
	orig_export_symbols=
8142
	case $host_os in
8143
	cygwin* | mingw* | cegcc*)
8144
	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8145
	    # exporting using user supplied symfile
8146
	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8147
	      # and it's NOT already a .def file. Must figure out
8148
	      # which of the given symbols are data symbols and tag
8149
	      # them as such. So, trigger use of export_symbols_cmds.
8150
	      # export_symbols gets reassigned inside the "prepare
8151
	      # the list of exported symbols" if statement, so the
8152
	      # include_expsyms logic still works.
8153
	      orig_export_symbols="$export_symbols"
8154
	      export_symbols=
8155
	      always_export_symbols=yes
8156
	    fi
8157
	  fi
8158
	  ;;
8159
	esac
8160

    
8161
	# Prepare the list of exported symbols
8162
	if test -z "$export_symbols"; then
8163
	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8164
	    func_verbose "generating symbol list for \`$libname.la'"
8165
	    export_symbols="$output_objdir/$libname.exp"
8166
	    $opt_dry_run || $RM $export_symbols
8167
	    cmds=$export_symbols_cmds
8168
	    save_ifs="$IFS"; IFS='~'
8169
	    for cmd1 in $cmds; do
8170
	      IFS="$save_ifs"
8171
	      # Take the normal branch if the nm_file_list_spec branch
8172
	      # doesn't work or if tool conversion is not needed.
8173
	      case $nm_file_list_spec~$to_tool_file_cmd in
8174
		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8175
		  try_normal_branch=yes
8176
		  eval cmd=\"$cmd1\"
8177
		  func_len " $cmd"
8178
		  len=$func_len_result
8179
		  ;;
8180
		*)
8181
		  try_normal_branch=no
8182
		  ;;
8183
	      esac
8184
	      if test "$try_normal_branch" = yes \
8185
		 && { test "$len" -lt "$max_cmd_len" \
8186
		      || test "$max_cmd_len" -le -1; }
8187
	      then
8188
		func_show_eval "$cmd" 'exit $?'
8189
		skipped_export=false
8190
	      elif test -n "$nm_file_list_spec"; then
8191
		func_basename "$output"
8192
		output_la=$func_basename_result
8193
		save_libobjs=$libobjs
8194
		save_output=$output
8195
		output=${output_objdir}/${output_la}.nm
8196
		func_to_tool_file "$output"
8197
		libobjs=$nm_file_list_spec$func_to_tool_file_result
8198
		func_append delfiles " $output"
8199
		func_verbose "creating $NM input file list: $output"
8200
		for obj in $save_libobjs; do
8201
		  func_to_tool_file "$obj"
8202
		  $ECHO "$func_to_tool_file_result"
8203
		done > "$output"
8204
		eval cmd=\"$cmd1\"
8205
		func_show_eval "$cmd" 'exit $?'
8206
		output=$save_output
8207
		libobjs=$save_libobjs
8208
		skipped_export=false
8209
	      else
8210
		# The command line is too long to execute in one step.
8211
		func_verbose "using reloadable object file for export list..."
8212
		skipped_export=:
8213
		# Break out early, otherwise skipped_export may be
8214
		# set to false by a later but shorter cmd.
8215
		break
8216
	      fi
8217
	    done
8218
	    IFS="$save_ifs"
8219
	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8220
	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8221
	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8222
	    fi
8223
	  fi
8224
	fi
8225

    
8226
	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8227
	  tmp_export_symbols="$export_symbols"
8228
	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8229
	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8230
	fi
8231

    
8232
	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8233
	  # The given exports_symbols file has to be filtered, so filter it.
8234
	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8235
	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8236
	  # 's' commands which not all seds can handle. GNU sed should be fine
8237
	  # though. Also, the filter scales superlinearly with the number of
8238
	  # global variables. join(1) would be nice here, but unfortunately
8239
	  # isn't a blessed tool.
8240
	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8241
	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8242
	  export_symbols=$output_objdir/$libname.def
8243
	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8244
	fi
8245

    
8246
	tmp_deplibs=
8247
	for test_deplib in $deplibs; do
8248
	  case " $convenience " in
8249
	  *" $test_deplib "*) ;;
8250
	  *)
8251
	    func_append tmp_deplibs " $test_deplib"
8252
	    ;;
8253
	  esac
8254
	done
8255
	deplibs="$tmp_deplibs"
8256

    
8257
	if test -n "$convenience"; then
8258
	  if test -n "$whole_archive_flag_spec" &&
8259
	    test "$compiler_needs_object" = yes &&
8260
	    test -z "$libobjs"; then
8261
	    # extract the archives, so we have objects to list.
8262
	    # TODO: could optimize this to just extract one archive.
8263
	    whole_archive_flag_spec=
8264
	  fi
8265
	  if test -n "$whole_archive_flag_spec"; then
8266
	    save_libobjs=$libobjs
8267
	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8268
	    test "X$libobjs" = "X " && libobjs=
8269
	  else
8270
	    gentop="$output_objdir/${outputname}x"
8271
	    func_append generated " $gentop"
8272

    
8273
	    func_extract_archives $gentop $convenience
8274
	    func_append libobjs " $func_extract_archives_result"
8275
	    test "X$libobjs" = "X " && libobjs=
8276
	  fi
8277
	fi
8278

    
8279
	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8280
	  eval flag=\"$thread_safe_flag_spec\"
8281
	  func_append linker_flags " $flag"
8282
	fi
8283

    
8284
	# Make a backup of the uninstalled library when relinking
8285
	if test "$opt_mode" = relink; then
8286
	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8287
	fi
8288

    
8289
	# Do each of the archive commands.
8290
	if test "$module" = yes && test -n "$module_cmds" ; then
8291
	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8292
	    eval test_cmds=\"$module_expsym_cmds\"
8293
	    cmds=$module_expsym_cmds
8294
	  else
8295
	    eval test_cmds=\"$module_cmds\"
8296
	    cmds=$module_cmds
8297
	  fi
8298
	else
8299
	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8300
	    eval test_cmds=\"$archive_expsym_cmds\"
8301
	    cmds=$archive_expsym_cmds
8302
	  else
8303
	    eval test_cmds=\"$archive_cmds\"
8304
	    cmds=$archive_cmds
8305
	  fi
8306
	fi
8307

    
8308
	if test "X$skipped_export" != "X:" &&
8309
	   func_len " $test_cmds" &&
8310
	   len=$func_len_result &&
8311
	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8312
	  :
8313
	else
8314
	  # The command line is too long to link in one step, link piecewise
8315
	  # or, if using GNU ld and skipped_export is not :, use a linker
8316
	  # script.
8317

    
8318
	  # Save the value of $output and $libobjs because we want to
8319
	  # use them later.  If we have whole_archive_flag_spec, we
8320
	  # want to use save_libobjs as it was before
8321
	  # whole_archive_flag_spec was expanded, because we can't
8322
	  # assume the linker understands whole_archive_flag_spec.
8323
	  # This may have to be revisited, in case too many
8324
	  # convenience libraries get linked in and end up exceeding
8325
	  # the spec.
8326
	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8327
	    save_libobjs=$libobjs
8328
	  fi
8329
	  save_output=$output
8330
	  func_basename "$output"
8331
	  output_la=$func_basename_result
8332

    
8333
	  # Clear the reloadable object creation command queue and
8334
	  # initialize k to one.
8335
	  test_cmds=
8336
	  concat_cmds=
8337
	  objlist=
8338
	  last_robj=
8339
	  k=1
8340

    
8341
	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8342
	    output=${output_objdir}/${output_la}.lnkscript
8343
	    func_verbose "creating GNU ld script: $output"
8344
	    echo 'INPUT (' > $output
8345
	    for obj in $save_libobjs
8346
	    do
8347
	      func_to_tool_file "$obj"
8348
	      $ECHO "$func_to_tool_file_result" >> $output
8349
	    done
8350
	    echo ')' >> $output
8351
	    func_append delfiles " $output"
8352
	    func_to_tool_file "$output"
8353
	    output=$func_to_tool_file_result
8354
	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8355
	    output=${output_objdir}/${output_la}.lnk
8356
	    func_verbose "creating linker input file list: $output"
8357
	    : > $output
8358
	    set x $save_libobjs
8359
	    shift
8360
	    firstobj=
8361
	    if test "$compiler_needs_object" = yes; then
8362
	      firstobj="$1 "
8363
	      shift
8364
	    fi
8365
	    for obj
8366
	    do
8367
	      func_to_tool_file "$obj"
8368
	      $ECHO "$func_to_tool_file_result" >> $output
8369
	    done
8370
	    func_append delfiles " $output"
8371
	    func_to_tool_file "$output"
8372
	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8373
	  else
8374
	    if test -n "$save_libobjs"; then
8375
	      func_verbose "creating reloadable object files..."
8376
	      output=$output_objdir/$output_la-${k}.$objext
8377
	      eval test_cmds=\"$reload_cmds\"
8378
	      func_len " $test_cmds"
8379
	      len0=$func_len_result
8380
	      len=$len0
8381

    
8382
	      # Loop over the list of objects to be linked.
8383
	      for obj in $save_libobjs
8384
	      do
8385
		func_len " $obj"
8386
		func_arith $len + $func_len_result
8387
		len=$func_arith_result
8388
		if test "X$objlist" = X ||
8389
		   test "$len" -lt "$max_cmd_len"; then
8390
		  func_append objlist " $obj"
8391
		else
8392
		  # The command $test_cmds is almost too long, add a
8393
		  # command to the queue.
8394
		  if test "$k" -eq 1 ; then
8395
		    # The first file doesn't have a previous command to add.
8396
		    reload_objs=$objlist
8397
		    eval concat_cmds=\"$reload_cmds\"
8398
		  else
8399
		    # All subsequent reloadable object files will link in
8400
		    # the last one created.
8401
		    reload_objs="$objlist $last_robj"
8402
		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8403
		  fi
8404
		  last_robj=$output_objdir/$output_la-${k}.$objext
8405
		  func_arith $k + 1
8406
		  k=$func_arith_result
8407
		  output=$output_objdir/$output_la-${k}.$objext
8408
		  objlist=" $obj"
8409
		  func_len " $last_robj"
8410
		  func_arith $len0 + $func_len_result
8411
		  len=$func_arith_result
8412
		fi
8413
	      done
8414
	      # Handle the remaining objects by creating one last
8415
	      # reloadable object file.  All subsequent reloadable object
8416
	      # files will link in the last one created.
8417
	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8418
	      reload_objs="$objlist $last_robj"
8419
	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8420
	      if test -n "$last_robj"; then
8421
	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8422
	      fi
8423
	      func_append delfiles " $output"
8424

    
8425
	    else
8426
	      output=
8427
	    fi
8428

    
8429
	    if ${skipped_export-false}; then
8430
	      func_verbose "generating symbol list for \`$libname.la'"
8431
	      export_symbols="$output_objdir/$libname.exp"
8432
	      $opt_dry_run || $RM $export_symbols
8433
	      libobjs=$output
8434
	      # Append the command to create the export file.
8435
	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8436
	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8437
	      if test -n "$last_robj"; then
8438
		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8439
	      fi
8440
	    fi
8441

    
8442
	    test -n "$save_libobjs" &&
8443
	      func_verbose "creating a temporary reloadable object file: $output"
8444

    
8445
	    # Loop through the commands generated above and execute them.
8446
	    save_ifs="$IFS"; IFS='~'
8447
	    for cmd in $concat_cmds; do
8448
	      IFS="$save_ifs"
8449
	      $opt_silent || {
8450
		  func_quote_for_expand "$cmd"
8451
		  eval "func_echo $func_quote_for_expand_result"
8452
	      }
8453
	      $opt_dry_run || eval "$cmd" || {
8454
		lt_exit=$?
8455

    
8456
		# Restore the uninstalled library and exit
8457
		if test "$opt_mode" = relink; then
8458
		  ( cd "$output_objdir" && \
8459
		    $RM "${realname}T" && \
8460
		    $MV "${realname}U" "$realname" )
8461
		fi
8462

    
8463
		exit $lt_exit
8464
	      }
8465
	    done
8466
	    IFS="$save_ifs"
8467

    
8468
	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8469
	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8470
	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8471
	    fi
8472
	  fi
8473

    
8474
          if ${skipped_export-false}; then
8475
	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8476
	      tmp_export_symbols="$export_symbols"
8477
	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8478
	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8479
	    fi
8480

    
8481
	    if test -n "$orig_export_symbols"; then
8482
	      # The given exports_symbols file has to be filtered, so filter it.
8483
	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8484
	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8485
	      # 's' commands which not all seds can handle. GNU sed should be fine
8486
	      # though. Also, the filter scales superlinearly with the number of
8487
	      # global variables. join(1) would be nice here, but unfortunately
8488
	      # isn't a blessed tool.
8489
	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8490
	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8491
	      export_symbols=$output_objdir/$libname.def
8492
	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8493
	    fi
8494
	  fi
8495

    
8496
	  libobjs=$output
8497
	  # Restore the value of output.
8498
	  output=$save_output
8499

    
8500
	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8501
	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8502
	    test "X$libobjs" = "X " && libobjs=
8503
	  fi
8504
	  # Expand the library linking commands again to reset the
8505
	  # value of $libobjs for piecewise linking.
8506

    
8507
	  # Do each of the archive commands.
8508
	  if test "$module" = yes && test -n "$module_cmds" ; then
8509
	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8510
	      cmds=$module_expsym_cmds
8511
	    else
8512
	      cmds=$module_cmds
8513
	    fi
8514
	  else
8515
	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8516
	      cmds=$archive_expsym_cmds
8517
	    else
8518
	      cmds=$archive_cmds
8519
	    fi
8520
	  fi
8521
	fi
8522

    
8523
	if test -n "$delfiles"; then
8524
	  # Append the command to remove temporary files to $cmds.
8525
	  eval cmds=\"\$cmds~\$RM $delfiles\"
8526
	fi
8527

    
8528
	# Add any objects from preloaded convenience libraries
8529
	if test -n "$dlprefiles"; then
8530
	  gentop="$output_objdir/${outputname}x"
8531
	  func_append generated " $gentop"
8532

    
8533
	  func_extract_archives $gentop $dlprefiles
8534
	  func_append libobjs " $func_extract_archives_result"
8535
	  test "X$libobjs" = "X " && libobjs=
8536
	fi
8537

    
8538
	save_ifs="$IFS"; IFS='~'
8539
	for cmd in $cmds; do
8540
	  IFS="$save_ifs"
8541
	  eval cmd=\"$cmd\"
8542
	  $opt_silent || {
8543
	    func_quote_for_expand "$cmd"
8544
	    eval "func_echo $func_quote_for_expand_result"
8545
	  }
8546
	  $opt_dry_run || eval "$cmd" || {
8547
	    lt_exit=$?
8548

    
8549
	    # Restore the uninstalled library and exit
8550
	    if test "$opt_mode" = relink; then
8551
	      ( cd "$output_objdir" && \
8552
	        $RM "${realname}T" && \
8553
		$MV "${realname}U" "$realname" )
8554
	    fi
8555

    
8556
	    exit $lt_exit
8557
	  }
8558
	done
8559
	IFS="$save_ifs"
8560

    
8561
	# Restore the uninstalled library and exit
8562
	if test "$opt_mode" = relink; then
8563
	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8564

    
8565
	  if test -n "$convenience"; then
8566
	    if test -z "$whole_archive_flag_spec"; then
8567
	      func_show_eval '${RM}r "$gentop"'
8568
	    fi
8569
	  fi
8570

    
8571
	  exit $EXIT_SUCCESS
8572
	fi
8573

    
8574
	# Create links to the real library.
8575
	for linkname in $linknames; do
8576
	  if test "$realname" != "$linkname"; then
8577
	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8578
	  fi
8579
	done
8580

    
8581
	# If -module or -export-dynamic was specified, set the dlname.
8582
	if test "$module" = yes || test "$export_dynamic" = yes; then
8583
	  # On all known operating systems, these are identical.
8584
	  dlname="$soname"
8585
	fi
8586
      fi
8587
      ;;
8588

    
8589
    obj)
8590
      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8591
	func_warning "\`-dlopen' is ignored for objects"
8592
      fi
8593

    
8594
      case " $deplibs" in
8595
      *\ -l* | *\ -L*)
8596
	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8597
      esac
8598

    
8599
      test -n "$rpath" && \
8600
	func_warning "\`-rpath' is ignored for objects"
8601

    
8602
      test -n "$xrpath" && \
8603
	func_warning "\`-R' is ignored for objects"
8604

    
8605
      test -n "$vinfo" && \
8606
	func_warning "\`-version-info' is ignored for objects"
8607

    
8608
      test -n "$release" && \
8609
	func_warning "\`-release' is ignored for objects"
8610

    
8611
      case $output in
8612
      *.lo)
8613
	test -n "$objs$old_deplibs" && \
8614
	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8615

    
8616
	libobj=$output
8617
	func_lo2o "$libobj"
8618
	obj=$func_lo2o_result
8619
	;;
8620
      *)
8621
	libobj=
8622
	obj="$output"
8623
	;;
8624
      esac
8625

    
8626
      # Delete the old objects.
8627
      $opt_dry_run || $RM $obj $libobj
8628

    
8629
      # Objects from convenience libraries.  This assumes
8630
      # single-version convenience libraries.  Whenever we create
8631
      # different ones for PIC/non-PIC, this we'll have to duplicate
8632
      # the extraction.
8633
      reload_conv_objs=
8634
      gentop=
8635
      # reload_cmds runs $LD directly, so let us get rid of
8636
      # -Wl from whole_archive_flag_spec and hope we can get by with
8637
      # turning comma into space..
8638
      wl=
8639

    
8640
      if test -n "$convenience"; then
8641
	if test -n "$whole_archive_flag_spec"; then
8642
	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8643
	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8644
	else
8645
	  gentop="$output_objdir/${obj}x"
8646
	  func_append generated " $gentop"
8647

    
8648
	  func_extract_archives $gentop $convenience
8649
	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8650
	fi
8651
      fi
8652

    
8653
      # If we're not building shared, we need to use non_pic_objs
8654
      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8655

    
8656
      # Create the old-style object.
8657
      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8658

    
8659
      output="$obj"
8660
      func_execute_cmds "$reload_cmds" 'exit $?'
8661

    
8662
      # Exit if we aren't doing a library object file.
8663
      if test -z "$libobj"; then
8664
	if test -n "$gentop"; then
8665
	  func_show_eval '${RM}r "$gentop"'
8666
	fi
8667

    
8668
	exit $EXIT_SUCCESS
8669
      fi
8670

    
8671
      if test "$build_libtool_libs" != yes; then
8672
	if test -n "$gentop"; then
8673
	  func_show_eval '${RM}r "$gentop"'
8674
	fi
8675

    
8676
	# Create an invalid libtool object if no PIC, so that we don't
8677
	# accidentally link it into a program.
8678
	# $show "echo timestamp > $libobj"
8679
	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8680
	exit $EXIT_SUCCESS
8681
      fi
8682

    
8683
      if test -n "$pic_flag" || test "$pic_mode" != default; then
8684
	# Only do commands if we really have different PIC objects.
8685
	reload_objs="$libobjs $reload_conv_objs"
8686
	output="$libobj"
8687
	func_execute_cmds "$reload_cmds" 'exit $?'
8688
      fi
8689

    
8690
      if test -n "$gentop"; then
8691
	func_show_eval '${RM}r "$gentop"'
8692
      fi
8693

    
8694
      exit $EXIT_SUCCESS
8695
      ;;
8696

    
8697
    prog)
8698
      case $host in
8699
	*cygwin*) func_stripname '' '.exe' "$output"
8700
	          output=$func_stripname_result.exe;;
8701
      esac
8702
      test -n "$vinfo" && \
8703
	func_warning "\`-version-info' is ignored for programs"
8704

    
8705
      test -n "$release" && \
8706
	func_warning "\`-release' is ignored for programs"
8707

    
8708
      test "$preload" = yes \
8709
        && test "$dlopen_support" = unknown \
8710
	&& test "$dlopen_self" = unknown \
8711
	&& test "$dlopen_self_static" = unknown && \
8712
	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8713

    
8714
      case $host in
8715
      *-*-rhapsody* | *-*-darwin1.[012])
8716
	# On Rhapsody replace the C library is the System framework
8717
	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8718
	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8719
	;;
8720
      esac
8721

    
8722
      case $host in
8723
      *-*-darwin*)
8724
	# Don't allow lazy linking, it breaks C++ global constructors
8725
	# But is supposedly fixed on 10.4 or later (yay!).
8726
	if test "$tagname" = CXX ; then
8727
	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8728
	    10.[0123])
8729
	      func_append compile_command " ${wl}-bind_at_load"
8730
	      func_append finalize_command " ${wl}-bind_at_load"
8731
	    ;;
8732
	  esac
8733
	fi
8734
	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8735
	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8736
	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8737
	;;
8738
      esac
8739

    
8740

    
8741
      # move library search paths that coincide with paths to not yet
8742
      # installed libraries to the beginning of the library search list
8743
      new_libs=
8744
      for path in $notinst_path; do
8745
	case " $new_libs " in
8746
	*" -L$path/$objdir "*) ;;
8747
	*)
8748
	  case " $compile_deplibs " in
8749
	  *" -L$path/$objdir "*)
8750
	    func_append new_libs " -L$path/$objdir" ;;
8751
	  esac
8752
	  ;;
8753
	esac
8754
      done
8755
      for deplib in $compile_deplibs; do
8756
	case $deplib in
8757
	-L*)
8758
	  case " $new_libs " in
8759
	  *" $deplib "*) ;;
8760
	  *) func_append new_libs " $deplib" ;;
8761
	  esac
8762
	  ;;
8763
	*) func_append new_libs " $deplib" ;;
8764
	esac
8765
      done
8766
      compile_deplibs="$new_libs"
8767

    
8768

    
8769
      func_append compile_command " $compile_deplibs"
8770
      func_append finalize_command " $finalize_deplibs"
8771

    
8772
      if test -n "$rpath$xrpath"; then
8773
	# If the user specified any rpath flags, then add them.
8774
	for libdir in $rpath $xrpath; do
8775
	  # This is the magic to use -rpath.
8776
	  case "$finalize_rpath " in
8777
	  *" $libdir "*) ;;
8778
	  *) func_append finalize_rpath " $libdir" ;;
8779
	  esac
8780
	done
8781
      fi
8782

    
8783
      # Now hardcode the library paths
8784
      rpath=
8785
      hardcode_libdirs=
8786
      for libdir in $compile_rpath $finalize_rpath; do
8787
	if test -n "$hardcode_libdir_flag_spec"; then
8788
	  if test -n "$hardcode_libdir_separator"; then
8789
	    if test -z "$hardcode_libdirs"; then
8790
	      hardcode_libdirs="$libdir"
8791
	    else
8792
	      # Just accumulate the unique libdirs.
8793
	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8794
	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8795
		;;
8796
	      *)
8797
		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8798
		;;
8799
	      esac
8800
	    fi
8801
	  else
8802
	    eval flag=\"$hardcode_libdir_flag_spec\"
8803
	    func_append rpath " $flag"
8804
	  fi
8805
	elif test -n "$runpath_var"; then
8806
	  case "$perm_rpath " in
8807
	  *" $libdir "*) ;;
8808
	  *) func_append perm_rpath " $libdir" ;;
8809
	  esac
8810
	fi
8811
	case $host in
8812
	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8813
	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8814
	  case :$dllsearchpath: in
8815
	  *":$libdir:"*) ;;
8816
	  ::) dllsearchpath=$libdir;;
8817
	  *) func_append dllsearchpath ":$libdir";;
8818
	  esac
8819
	  case :$dllsearchpath: in
8820
	  *":$testbindir:"*) ;;
8821
	  ::) dllsearchpath=$testbindir;;
8822
	  *) func_append dllsearchpath ":$testbindir";;
8823
	  esac
8824
	  ;;
8825
	esac
8826
      done
8827
      # Substitute the hardcoded libdirs into the rpath.
8828
      if test -n "$hardcode_libdir_separator" &&
8829
	 test -n "$hardcode_libdirs"; then
8830
	libdir="$hardcode_libdirs"
8831
	eval rpath=\" $hardcode_libdir_flag_spec\"
8832
      fi
8833
      compile_rpath="$rpath"
8834

    
8835
      rpath=
8836
      hardcode_libdirs=
8837
      for libdir in $finalize_rpath; do
8838
	if test -n "$hardcode_libdir_flag_spec"; then
8839
	  if test -n "$hardcode_libdir_separator"; then
8840
	    if test -z "$hardcode_libdirs"; then
8841
	      hardcode_libdirs="$libdir"
8842
	    else
8843
	      # Just accumulate the unique libdirs.
8844
	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8845
	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8846
		;;
8847
	      *)
8848
		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8849
		;;
8850
	      esac
8851
	    fi
8852
	  else
8853
	    eval flag=\"$hardcode_libdir_flag_spec\"
8854
	    func_append rpath " $flag"
8855
	  fi
8856
	elif test -n "$runpath_var"; then
8857
	  case "$finalize_perm_rpath " in
8858
	  *" $libdir "*) ;;
8859
	  *) func_append finalize_perm_rpath " $libdir" ;;
8860
	  esac
8861
	fi
8862
      done
8863
      # Substitute the hardcoded libdirs into the rpath.
8864
      if test -n "$hardcode_libdir_separator" &&
8865
	 test -n "$hardcode_libdirs"; then
8866
	libdir="$hardcode_libdirs"
8867
	eval rpath=\" $hardcode_libdir_flag_spec\"
8868
      fi
8869
      finalize_rpath="$rpath"
8870

    
8871
      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8872
	# Transform all the library objects into standard objects.
8873
	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8874
	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8875
      fi
8876

    
8877
      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8878

    
8879
      # template prelinking step
8880
      if test -n "$prelink_cmds"; then
8881
	func_execute_cmds "$prelink_cmds" 'exit $?'
8882
      fi
8883

    
8884
      wrappers_required=yes
8885
      case $host in
8886
      *cegcc* | *mingw32ce*)
8887
        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8888
        wrappers_required=no
8889
        ;;
8890
      *cygwin* | *mingw* )
8891
        if test "$build_libtool_libs" != yes; then
8892
          wrappers_required=no
8893
        fi
8894
        ;;
8895
      *)
8896
        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8897
          wrappers_required=no
8898
        fi
8899
        ;;
8900
      esac
8901
      if test "$wrappers_required" = no; then
8902
	# Replace the output file specification.
8903
	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8904
	link_command="$compile_command$compile_rpath"
8905

    
8906
	# We have no uninstalled library dependencies, so finalize right now.
8907
	exit_status=0
8908
	func_show_eval "$link_command" 'exit_status=$?'
8909

    
8910
	if test -n "$postlink_cmds"; then
8911
	  func_to_tool_file "$output"
8912
	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8913
	  func_execute_cmds "$postlink_cmds" 'exit $?'
8914
	fi
8915

    
8916
	# Delete the generated files.
8917
	if test -f "$output_objdir/${outputname}S.${objext}"; then
8918
	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8919
	fi
8920

    
8921
	exit $exit_status
8922
      fi
8923

    
8924
      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8925
	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8926
      fi
8927
      if test -n "$finalize_shlibpath"; then
8928
	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8929
      fi
8930

    
8931
      compile_var=
8932
      finalize_var=
8933
      if test -n "$runpath_var"; then
8934
	if test -n "$perm_rpath"; then
8935
	  # We should set the runpath_var.
8936
	  rpath=
8937
	  for dir in $perm_rpath; do
8938
	    func_append rpath "$dir:"
8939
	  done
8940
	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8941
	fi
8942
	if test -n "$finalize_perm_rpath"; then
8943
	  # We should set the runpath_var.
8944
	  rpath=
8945
	  for dir in $finalize_perm_rpath; do
8946
	    func_append rpath "$dir:"
8947
	  done
8948
	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8949
	fi
8950
      fi
8951

    
8952
      if test "$no_install" = yes; then
8953
	# We don't need to create a wrapper script.
8954
	link_command="$compile_var$compile_command$compile_rpath"
8955
	# Replace the output file specification.
8956
	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8957
	# Delete the old output file.
8958
	$opt_dry_run || $RM $output
8959
	# Link the executable and exit
8960
	func_show_eval "$link_command" 'exit $?'
8961

    
8962
	if test -n "$postlink_cmds"; then
8963
	  func_to_tool_file "$output"
8964
	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8965
	  func_execute_cmds "$postlink_cmds" 'exit $?'
8966
	fi
8967

    
8968
	exit $EXIT_SUCCESS
8969
      fi
8970

    
8971
      if test "$hardcode_action" = relink; then
8972
	# Fast installation is not supported
8973
	link_command="$compile_var$compile_command$compile_rpath"
8974
	relink_command="$finalize_var$finalize_command$finalize_rpath"
8975

    
8976
	func_warning "this platform does not like uninstalled shared libraries"
8977
	func_warning "\`$output' will be relinked during installation"
8978
      else
8979
	if test "$fast_install" != no; then
8980
	  link_command="$finalize_var$compile_command$finalize_rpath"
8981
	  if test "$fast_install" = yes; then
8982
	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8983
	  else
8984
	    # fast_install is set to needless
8985
	    relink_command=
8986
	  fi
8987
	else
8988
	  link_command="$compile_var$compile_command$compile_rpath"
8989
	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8990
	fi
8991
      fi
8992

    
8993
      # Replace the output file specification.
8994
      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8995

    
8996
      # Delete the old output files.
8997
      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8998

    
8999
      func_show_eval "$link_command" 'exit $?'
9000

    
9001
      if test -n "$postlink_cmds"; then
9002
	func_to_tool_file "$output_objdir/$outputname"
9003
	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'`
9004
	func_execute_cmds "$postlink_cmds" 'exit $?'
9005
      fi
9006

    
9007
      # Now create the wrapper script.
9008
      func_verbose "creating $output"
9009

    
9010
      # Quote the relink command for shipping.
9011
      if test -n "$relink_command"; then
9012
	# Preserve any variables that may affect compiler behavior
9013
	for var in $variables_saved_for_relink; do
9014
	  if eval test -z \"\${$var+set}\"; then
9015
	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9016
	  elif eval var_value=\$$var; test -z "$var_value"; then
9017
	    relink_command="$var=; export $var; $relink_command"
9018
	  else
9019
	    func_quote_for_eval "$var_value"
9020
	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9021
	  fi
9022
	done
9023
	relink_command="(cd `pwd`; $relink_command)"
9024
	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9025
      fi
9026

    
9027
      # Only actually do things if not in dry run mode.
9028
      $opt_dry_run || {
9029
	# win32 will think the script is a binary if it has
9030
	# a .exe suffix, so we strip it off here.
9031
	case $output in
9032
	  *.exe) func_stripname '' '.exe' "$output"
9033
	         output=$func_stripname_result ;;
9034
	esac
9035
	# test for cygwin because mv fails w/o .exe extensions
9036
	case $host in
9037
	  *cygwin*)
9038
	    exeext=.exe
9039
	    func_stripname '' '.exe' "$outputname"
9040
	    outputname=$func_stripname_result ;;
9041
	  *) exeext= ;;
9042
	esac
9043
	case $host in
9044
	  *cygwin* | *mingw* )
9045
	    func_dirname_and_basename "$output" "" "."
9046
	    output_name=$func_basename_result
9047
	    output_path=$func_dirname_result
9048
	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9049
	    cwrapper="$output_path/$output_name.exe"
9050
	    $RM $cwrappersource $cwrapper
9051
	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9052

    
9053
	    func_emit_cwrapperexe_src > $cwrappersource
9054

    
9055
	    # The wrapper executable is built using the $host compiler,
9056
	    # because it contains $host paths and files. If cross-
9057
	    # compiling, it, like the target executable, must be
9058
	    # executed on the $host or under an emulation environment.
9059
	    $opt_dry_run || {
9060
	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9061
	      $STRIP $cwrapper
9062
	    }
9063

    
9064
	    # Now, create the wrapper script for func_source use:
9065
	    func_ltwrapper_scriptname $cwrapper
9066
	    $RM $func_ltwrapper_scriptname_result
9067
	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9068
	    $opt_dry_run || {
9069
	      # note: this script will not be executed, so do not chmod.
9070
	      if test "x$build" = "x$host" ; then
9071
		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9072
	      else
9073
		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9074
	      fi
9075
	    }
9076
	  ;;
9077
	  * )
9078
	    $RM $output
9079
	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9080

    
9081
	    func_emit_wrapper no > $output
9082
	    chmod +x $output
9083
	  ;;
9084
	esac
9085
      }
9086
      exit $EXIT_SUCCESS
9087
      ;;
9088
    esac
9089

    
9090
    # See if we need to build an old-fashioned archive.
9091
    for oldlib in $oldlibs; do
9092

    
9093
      if test "$build_libtool_libs" = convenience; then
9094
	oldobjs="$libobjs_save $symfileobj"
9095
	addlibs="$convenience"
9096
	build_libtool_libs=no
9097
      else
9098
	if test "$build_libtool_libs" = module; then
9099
	  oldobjs="$libobjs_save"
9100
	  build_libtool_libs=no
9101
	else
9102
	  oldobjs="$old_deplibs $non_pic_objects"
9103
	  if test "$preload" = yes && test -f "$symfileobj"; then
9104
	    func_append oldobjs " $symfileobj"
9105
	  fi
9106
	fi
9107
	addlibs="$old_convenience"
9108
      fi
9109

    
9110
      if test -n "$addlibs"; then
9111
	gentop="$output_objdir/${outputname}x"
9112
	func_append generated " $gentop"
9113

    
9114
	func_extract_archives $gentop $addlibs
9115
	func_append oldobjs " $func_extract_archives_result"
9116
      fi
9117

    
9118
      # Do each command in the archive commands.
9119
      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9120
	cmds=$old_archive_from_new_cmds
9121
      else
9122

    
9123
	# Add any objects from preloaded convenience libraries
9124
	if test -n "$dlprefiles"; then
9125
	  gentop="$output_objdir/${outputname}x"
9126
	  func_append generated " $gentop"
9127

    
9128
	  func_extract_archives $gentop $dlprefiles
9129
	  func_append oldobjs " $func_extract_archives_result"
9130
	fi
9131

    
9132
	# POSIX demands no paths to be encoded in archives.  We have
9133
	# to avoid creating archives with duplicate basenames if we
9134
	# might have to extract them afterwards, e.g., when creating a
9135
	# static archive out of a convenience library, or when linking
9136
	# the entirety of a libtool archive into another (currently
9137
	# not supported by libtool).
9138
	if (for obj in $oldobjs
9139
	    do
9140
	      func_basename "$obj"
9141
	      $ECHO "$func_basename_result"
9142
	    done | sort | sort -uc >/dev/null 2>&1); then
9143
	  :
9144
	else
9145
	  echo "copying selected object files to avoid basename conflicts..."
9146
	  gentop="$output_objdir/${outputname}x"
9147
	  func_append generated " $gentop"
9148
	  func_mkdir_p "$gentop"
9149
	  save_oldobjs=$oldobjs
9150
	  oldobjs=
9151
	  counter=1
9152
	  for obj in $save_oldobjs
9153
	  do
9154
	    func_basename "$obj"
9155
	    objbase="$func_basename_result"
9156
	    case " $oldobjs " in
9157
	    " ") oldobjs=$obj ;;
9158
	    *[\ /]"$objbase "*)
9159
	      while :; do
9160
		# Make sure we don't pick an alternate name that also
9161
		# overlaps.
9162
		newobj=lt$counter-$objbase
9163
		func_arith $counter + 1
9164
		counter=$func_arith_result
9165
		case " $oldobjs " in
9166
		*[\ /]"$newobj "*) ;;
9167
		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9168
		esac
9169
	      done
9170
	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9171
	      func_append oldobjs " $gentop/$newobj"
9172
	      ;;
9173
	    *) func_append oldobjs " $obj" ;;
9174
	    esac
9175
	  done
9176
	fi
9177
	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9178
	tool_oldlib=$func_to_tool_file_result
9179
	eval cmds=\"$old_archive_cmds\"
9180

    
9181
	func_len " $cmds"
9182
	len=$func_len_result
9183
	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9184
	  cmds=$old_archive_cmds
9185
	elif test -n "$archiver_list_spec"; then
9186
	  func_verbose "using command file archive linking..."
9187
	  for obj in $oldobjs
9188
	  do
9189
	    func_to_tool_file "$obj"
9190
	    $ECHO "$func_to_tool_file_result"
9191
	  done > $output_objdir/$libname.libcmd
9192
	  func_to_tool_file "$output_objdir/$libname.libcmd"
9193
	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9194
	  cmds=$old_archive_cmds
9195
	else
9196
	  # the command line is too long to link in one step, link in parts
9197
	  func_verbose "using piecewise archive linking..."
9198
	  save_RANLIB=$RANLIB
9199
	  RANLIB=:
9200
	  objlist=
9201
	  concat_cmds=
9202
	  save_oldobjs=$oldobjs
9203
	  oldobjs=
9204
	  # Is there a better way of finding the last object in the list?
9205
	  for obj in $save_oldobjs
9206
	  do
9207
	    last_oldobj=$obj
9208
	  done
9209
	  eval test_cmds=\"$old_archive_cmds\"
9210
	  func_len " $test_cmds"
9211
	  len0=$func_len_result
9212
	  len=$len0
9213
	  for obj in $save_oldobjs
9214
	  do
9215
	    func_len " $obj"
9216
	    func_arith $len + $func_len_result
9217
	    len=$func_arith_result
9218
	    func_append objlist " $obj"
9219
	    if test "$len" -lt "$max_cmd_len"; then
9220
	      :
9221
	    else
9222
	      # the above command should be used before it gets too long
9223
	      oldobjs=$objlist
9224
	      if test "$obj" = "$last_oldobj" ; then
9225
		RANLIB=$save_RANLIB
9226
	      fi
9227
	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9228
	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9229
	      objlist=
9230
	      len=$len0
9231
	    fi
9232
	  done
9233
	  RANLIB=$save_RANLIB
9234
	  oldobjs=$objlist
9235
	  if test "X$oldobjs" = "X" ; then
9236
	    eval cmds=\"\$concat_cmds\"
9237
	  else
9238
	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9239
	  fi
9240
	fi
9241
      fi
9242
      func_execute_cmds "$cmds" 'exit $?'
9243
    done
9244

    
9245
    test -n "$generated" && \
9246
      func_show_eval "${RM}r$generated"
9247

    
9248
    # Now create the libtool archive.
9249
    case $output in
9250
    *.la)
9251
      old_library=
9252
      test "$build_old_libs" = yes && old_library="$libname.$libext"
9253
      func_verbose "creating $output"
9254

    
9255
      # Preserve any variables that may affect compiler behavior
9256
      for var in $variables_saved_for_relink; do
9257
	if eval test -z \"\${$var+set}\"; then
9258
	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9259
	elif eval var_value=\$$var; test -z "$var_value"; then
9260
	  relink_command="$var=; export $var; $relink_command"
9261
	else
9262
	  func_quote_for_eval "$var_value"
9263
	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9264
	fi
9265
      done
9266
      # Quote the link command for shipping.
9267
      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9268
      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9269
      if test "$hardcode_automatic" = yes ; then
9270
	relink_command=
9271
      fi
9272

    
9273
      # Only create the output if not a dry run.
9274
      $opt_dry_run || {
9275
	for installed in no yes; do
9276
	  if test "$installed" = yes; then
9277
	    if test -z "$install_libdir"; then
9278
	      break
9279
	    fi
9280
	    output="$output_objdir/$outputname"i
9281
	    # Replace all uninstalled libtool libraries with the installed ones
9282
	    newdependency_libs=
9283
	    for deplib in $dependency_libs; do
9284
	      case $deplib in
9285
	      *.la)
9286
		func_basename "$deplib"
9287
		name="$func_basename_result"
9288
		func_resolve_sysroot "$deplib"
9289
		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9290
		test -z "$libdir" && \
9291
		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9292
		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9293
		;;
9294
	      -L*)
9295
		func_stripname -L '' "$deplib"
9296
		func_replace_sysroot "$func_stripname_result"
9297
		func_append newdependency_libs " -L$func_replace_sysroot_result"
9298
		;;
9299
	      -R*)
9300
		func_stripname -R '' "$deplib"
9301
		func_replace_sysroot "$func_stripname_result"
9302
		func_append newdependency_libs " -R$func_replace_sysroot_result"
9303
		;;
9304
	      *) func_append newdependency_libs " $deplib" ;;
9305
	      esac
9306
	    done
9307
	    dependency_libs="$newdependency_libs"
9308
	    newdlfiles=
9309

    
9310
	    for lib in $dlfiles; do
9311
	      case $lib in
9312
	      *.la)
9313
	        func_basename "$lib"
9314
		name="$func_basename_result"
9315
		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9316
		test -z "$libdir" && \
9317
		  func_fatal_error "\`$lib' is not a valid libtool archive"
9318
		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9319
		;;
9320
	      *) func_append newdlfiles " $lib" ;;
9321
	      esac
9322
	    done
9323
	    dlfiles="$newdlfiles"
9324
	    newdlprefiles=
9325
	    for lib in $dlprefiles; do
9326
	      case $lib in
9327
	      *.la)
9328
		# Only pass preopened files to the pseudo-archive (for
9329
		# eventual linking with the app. that links it) if we
9330
		# didn't already link the preopened objects directly into
9331
		# the library:
9332
		func_basename "$lib"
9333
		name="$func_basename_result"
9334
		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9335
		test -z "$libdir" && \
9336
		  func_fatal_error "\`$lib' is not a valid libtool archive"
9337
		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9338
		;;
9339
	      esac
9340
	    done
9341
	    dlprefiles="$newdlprefiles"
9342
	  else
9343
	    newdlfiles=
9344
	    for lib in $dlfiles; do
9345
	      case $lib in
9346
		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9347
		*) abs=`pwd`"/$lib" ;;
9348
	      esac
9349
	      func_append newdlfiles " $abs"
9350
	    done
9351
	    dlfiles="$newdlfiles"
9352
	    newdlprefiles=
9353
	    for lib in $dlprefiles; do
9354
	      case $lib in
9355
		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9356
		*) abs=`pwd`"/$lib" ;;
9357
	      esac
9358
	      func_append newdlprefiles " $abs"
9359
	    done
9360
	    dlprefiles="$newdlprefiles"
9361
	  fi
9362
	  $RM $output
9363
	  # place dlname in correct position for cygwin
9364
	  # In fact, it would be nice if we could use this code for all target
9365
	  # systems that can't hard-code library paths into their executables
9366
	  # and that have no shared library path variable independent of PATH,
9367
	  # but it turns out we can't easily determine that from inspecting
9368
	  # libtool variables, so we have to hard-code the OSs to which it
9369
	  # applies here; at the moment, that means platforms that use the PE
9370
	  # object format with DLL files.  See the long comment at the top of
9371
	  # tests/bindir.at for full details.
9372
	  tdlname=$dlname
9373
	  case $host,$output,$installed,$module,$dlname in
9374
	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9375
	      # If a -bindir argument was supplied, place the dll there.
9376
	      if test "x$bindir" != x ;
9377
	      then
9378
		func_relative_path "$install_libdir" "$bindir"
9379
		tdlname=$func_relative_path_result$dlname
9380
	      else
9381
		# Otherwise fall back on heuristic.
9382
		tdlname=../bin/$dlname
9383
	      fi
9384
	      ;;
9385
	  esac
9386
	  $ECHO > $output "\
9387
# $outputname - a libtool library file
9388
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9389
#
9390
# Please DO NOT delete this file!
9391
# It is necessary for linking the library.
9392

    
9393
# The name that we can dlopen(3).
9394
dlname='$tdlname'
9395

    
9396
# Names of this library.
9397
library_names='$library_names'
9398

    
9399
# The name of the static archive.
9400
old_library='$old_library'
9401

    
9402
# Linker flags that can not go in dependency_libs.
9403
inherited_linker_flags='$new_inherited_linker_flags'
9404

    
9405
# Libraries that this one depends upon.
9406
dependency_libs='$dependency_libs'
9407

    
9408
# Names of additional weak libraries provided by this library
9409
weak_library_names='$weak_libs'
9410

    
9411
# Version information for $libname.
9412
current=$current
9413
age=$age
9414
revision=$revision
9415

    
9416
# Is this an already installed library?
9417
installed=$installed
9418

    
9419
# Should we warn about portability when linking against -modules?
9420
shouldnotlink=$module
9421

    
9422
# Files to dlopen/dlpreopen
9423
dlopen='$dlfiles'
9424
dlpreopen='$dlprefiles'
9425

    
9426
# Directory that this library needs to be installed in:
9427
libdir='$install_libdir'"
9428
	  if test "$installed" = no && test "$need_relink" = yes; then
9429
	    $ECHO >> $output "\
9430
relink_command=\"$relink_command\""
9431
	  fi
9432
	done
9433
      }
9434

    
9435
      # Do a symbolic link so that the libtool archive can be found in
9436
      # LD_LIBRARY_PATH before the program is installed.
9437
      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9438
      ;;
9439
    esac
9440
    exit $EXIT_SUCCESS
9441
}
9442

    
9443
{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9444
    func_mode_link ${1+"$@"}
9445

    
9446

    
9447
# func_mode_uninstall arg...
9448
func_mode_uninstall ()
9449
{
9450
    $opt_debug
9451
    RM="$nonopt"
9452
    files=
9453
    rmforce=
9454
    exit_status=0
9455

    
9456
    # This variable tells wrapper scripts just to set variables rather
9457
    # than running their programs.
9458
    libtool_install_magic="$magic"
9459

    
9460
    for arg
9461
    do
9462
      case $arg in
9463
      -f) func_append RM " $arg"; rmforce=yes ;;
9464
      -*) func_append RM " $arg" ;;
9465
      *) func_append files " $arg" ;;
9466
      esac
9467
    done
9468

    
9469
    test -z "$RM" && \
9470
      func_fatal_help "you must specify an RM program"
9471

    
9472
    rmdirs=
9473

    
9474
    for file in $files; do
9475
      func_dirname "$file" "" "."
9476
      dir="$func_dirname_result"
9477
      if test "X$dir" = X.; then
9478
	odir="$objdir"
9479
      else
9480
	odir="$dir/$objdir"
9481
      fi
9482
      func_basename "$file"
9483
      name="$func_basename_result"
9484
      test "$opt_mode" = uninstall && odir="$dir"
9485

    
9486
      # Remember odir for removal later, being careful to avoid duplicates
9487
      if test "$opt_mode" = clean; then
9488
	case " $rmdirs " in
9489
	  *" $odir "*) ;;
9490
	  *) func_append rmdirs " $odir" ;;
9491
	esac
9492
      fi
9493

    
9494
      # Don't error if the file doesn't exist and rm -f was used.
9495
      if { test -L "$file"; } >/dev/null 2>&1 ||
9496
	 { test -h "$file"; } >/dev/null 2>&1 ||
9497
	 test -f "$file"; then
9498
	:
9499
      elif test -d "$file"; then
9500
	exit_status=1
9501
	continue
9502
      elif test "$rmforce" = yes; then
9503
	continue
9504
      fi
9505

    
9506
      rmfiles="$file"
9507

    
9508
      case $name in
9509
      *.la)
9510
	# Possibly a libtool archive, so verify it.
9511
	if func_lalib_p "$file"; then
9512
	  func_source $dir/$name
9513

    
9514
	  # Delete the libtool libraries and symlinks.
9515
	  for n in $library_names; do
9516
	    func_append rmfiles " $odir/$n"
9517
	  done
9518
	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9519

    
9520
	  case "$opt_mode" in
9521
	  clean)
9522
	    case " $library_names " in
9523
	    *" $dlname "*) ;;
9524
	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9525
	    esac
9526
	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9527
	    ;;
9528
	  uninstall)
9529
	    if test -n "$library_names"; then
9530
	      # Do each command in the postuninstall commands.
9531
	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9532
	    fi
9533

    
9534
	    if test -n "$old_library"; then
9535
	      # Do each command in the old_postuninstall commands.
9536
	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9537
	    fi
9538
	    # FIXME: should reinstall the best remaining shared library.
9539
	    ;;
9540
	  esac
9541
	fi
9542
	;;
9543

    
9544
      *.lo)
9545
	# Possibly a libtool object, so verify it.
9546
	if func_lalib_p "$file"; then
9547

    
9548
	  # Read the .lo file
9549
	  func_source $dir/$name
9550

    
9551
	  # Add PIC object to the list of files to remove.
9552
	  if test -n "$pic_object" &&
9553
	     test "$pic_object" != none; then
9554
	    func_append rmfiles " $dir/$pic_object"
9555
	  fi
9556

    
9557
	  # Add non-PIC object to the list of files to remove.
9558
	  if test -n "$non_pic_object" &&
9559
	     test "$non_pic_object" != none; then
9560
	    func_append rmfiles " $dir/$non_pic_object"
9561
	  fi
9562
	fi
9563
	;;
9564

    
9565
      *)
9566
	if test "$opt_mode" = clean ; then
9567
	  noexename=$name
9568
	  case $file in
9569
	  *.exe)
9570
	    func_stripname '' '.exe' "$file"
9571
	    file=$func_stripname_result
9572
	    func_stripname '' '.exe' "$name"
9573
	    noexename=$func_stripname_result
9574
	    # $file with .exe has already been added to rmfiles,
9575
	    # add $file without .exe
9576
	    func_append rmfiles " $file"
9577
	    ;;
9578
	  esac
9579
	  # Do a test to see if this is a libtool program.
9580
	  if func_ltwrapper_p "$file"; then
9581
	    if func_ltwrapper_executable_p "$file"; then
9582
	      func_ltwrapper_scriptname "$file"
9583
	      relink_command=
9584
	      func_source $func_ltwrapper_scriptname_result
9585
	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9586
	    else
9587
	      relink_command=
9588
	      func_source $dir/$noexename
9589
	    fi
9590

    
9591
	    # note $name still contains .exe if it was in $file originally
9592
	    # as does the version of $file that was added into $rmfiles
9593
	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9594
	    if test "$fast_install" = yes && test -n "$relink_command"; then
9595
	      func_append rmfiles " $odir/lt-$name"
9596
	    fi
9597
	    if test "X$noexename" != "X$name" ; then
9598
	      func_append rmfiles " $odir/lt-${noexename}.c"
9599
	    fi
9600
	  fi
9601
	fi
9602
	;;
9603
      esac
9604
      func_show_eval "$RM $rmfiles" 'exit_status=1'
9605
    done
9606

    
9607
    # Try to remove the ${objdir}s in the directories where we deleted files
9608
    for dir in $rmdirs; do
9609
      if test -d "$dir"; then
9610
	func_show_eval "rmdir $dir >/dev/null 2>&1"
9611
      fi
9612
    done
9613

    
9614
    exit $exit_status
9615
}
9616

    
9617
{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9618
    func_mode_uninstall ${1+"$@"}
9619

    
9620
test -z "$opt_mode" && {
9621
  help="$generic_help"
9622
  func_fatal_help "you must specify a MODE"
9623
}
9624

    
9625
test -z "$exec_cmd" && \
9626
  func_fatal_help "invalid operation mode \`$opt_mode'"
9627

    
9628
if test -n "$exec_cmd"; then
9629
  eval exec "$exec_cmd"
9630
  exit $EXIT_FAILURE
9631
fi
9632

    
9633
exit $exit_status
9634

    
9635

    
9636
# The TAGs below are defined such that we never get into a situation
9637
# in which we disable both kinds of libraries.  Given conflicting
9638
# choices, we go for a static library, that is the most portable,
9639
# since we can't tell whether shared libraries were disabled because
9640
# the user asked for that or because the platform doesn't support
9641
# them.  This is particularly important on AIX, because we don't
9642
# support having both static and shared libraries enabled at the same
9643
# time on that platform, so we default to a shared-only configuration.
9644
# If a disable-shared tag is given, we'll fallback to a static-only
9645
# configuration.  But we'll never go from static-only to shared-only.
9646

    
9647
# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9648
build_libtool_libs=no
9649
build_old_libs=yes
9650
# ### END LIBTOOL TAG CONFIG: disable-shared
9651

    
9652
# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9653
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9654
# ### END LIBTOOL TAG CONFIG: disable-static
9655

    
9656
# Local Variables:
9657
# mode:shell-script
9658
# sh-indentation:2
9659
# End:
9660
# vi:sw=2
9661