OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [ltmain.sh] - Blame information for rev 766

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 766 jeremybenn
# Generated from ltmain.m4sh.
2
 
3
# ltmain.sh (GNU libtool) 2.2.6
4
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5
 
6
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 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
#     --tag=TAG            use configuration variables from tag TAG
43
# -v, --verbose            print informational messages (default)
44
#     --version            print version information
45
# -h, --help               print short or long help message
46
#
47
# MODE must be one of the following:
48
#
49
#       clean              remove files from the build directory
50
#       compile            compile a source file into a libtool object
51
#       execute            automatically set library path, then run a program
52
#       finish             complete the installation of libtool libraries
53
#       install            install libraries or executables
54
#       link               create a library or an executable
55
#       uninstall          remove libraries from an installed directory
56
#
57
# MODE-ARGS vary depending on the MODE.
58
# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
59
#
60
# When reporting a bug, please describe a test case to reproduce it and
61
# include the following information:
62
#
63
#       host-triplet:   $host
64
#       shell:          $SHELL
65
#       compiler:               $LTCC
66
#       compiler flags:         $LTCFLAGS
67
#       linker:         $LD (gnu? $with_gnu_ld)
68
#       $progname:              (GNU libtool) 2.2.6
69
#       automake:               $automake_version
70
#       autoconf:               $autoconf_version
71
#
72
# Report bugs to <bug-libtool@gnu.org>.
73
 
74
PROGRAM=ltmain.sh
75
PACKAGE=libtool
76
VERSION=2.2.6
77
TIMESTAMP=""
78
package_revision=1.3012
79
 
80
# Be Bourne compatible
81
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
82
  emulate sh
83
  NULLCMD=:
84
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
85
  # is contrary to our usage.  Disable this feature.
86
  alias -g '${1+"$@"}'='"$@"'
87
  setopt NO_GLOB_SUBST
88
else
89
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
90
fi
91
BIN_SH=xpg4; export BIN_SH # for Tru64
92
DUALCASE=1; export DUALCASE # for MKS sh
93
 
94
# NLS nuisances: We save the old values to restore during execute mode.
95
# Only set LANG and LC_ALL to C if already set.
96
# These must not be set unconditionally because not all systems understand
97
# e.g. LANG=C (notably SCO).
98
lt_user_locale=
99
lt_safe_locale=
100
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
101
do
102
  eval "if test \"\${$lt_var+set}\" = set; then
103
          save_$lt_var=\$$lt_var
104
          $lt_var=C
105
          export $lt_var
106
          lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
107
          lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
108
        fi"
109
done
110
 
111
$lt_unset CDPATH
112
 
113
 
114
 
115
 
116
 
117
: ${CP="cp -f"}
118
: ${ECHO="echo"}
119
: ${EGREP="/usr/bin/grep -E"}
120
: ${FGREP="/usr/bin/grep -F"}
121
: ${GREP="/usr/bin/grep"}
122
: ${LN_S="ln -s"}
123
: ${MAKE="make"}
124
: ${MKDIR="mkdir"}
125
: ${MV="mv -f"}
126
: ${RM="rm -f"}
127
: ${SED="/opt/local/bin/gsed"}
128
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
129
: ${Xsed="$SED -e 1s/^X//"}
130
 
131
# Global variables:
132
EXIT_SUCCESS=0
133
EXIT_FAILURE=1
134
EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
135
EXIT_SKIP=77      # $? = 77 is used to indicate a skipped test to automake.
136
 
137
exit_status=$EXIT_SUCCESS
138
 
139
# Make sure IFS has a sensible default
140
lt_nl='
141
'
142
IFS="   $lt_nl"
143
 
144
dirname="s,/[^/]*$,,"
145
basename="s,^.*/,,"
146
 
147
# func_dirname_and_basename file append nondir_replacement
148
# perform func_basename and func_dirname in a single function
149
# call:
150
#   dirname:  Compute the dirname of FILE.  If nonempty,
151
#             add APPEND to the result, otherwise set result
152
#             to NONDIR_REPLACEMENT.
153
#             value returned in "$func_dirname_result"
154
#   basename: Compute filename of FILE.
155
#             value retuned in "$func_basename_result"
156
# Implementation must be kept synchronized with func_dirname
157
# and func_basename. For efficiency, we do not delegate to
158
# those functions but instead duplicate the functionality here.
159
func_dirname_and_basename ()
160
{
161
  # Extract subdirectory from the argument.
162
  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
163
  if test "X$func_dirname_result" = "X${1}"; then
164
    func_dirname_result="${3}"
165
  else
166
    func_dirname_result="$func_dirname_result${2}"
167
  fi
168
  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
169
}
170
 
171
# Generated shell functions inserted here.
172
 
173
# These SED scripts presuppose an absolute path with a trailing slash.
174
pathcar="s,^/\([^/]*\).*$,\1,"
175
pathcdr="s,^/[^/]*,,"
176
removedotparts="s@/\(\./\)\{1,\}@/@g;s,/\.$,/,"
177
collapseslashes="s@/\{1,\}@/@g"
178
finalslash="s,/*$,/,"
179
 
180
# func_normal_abspath PATH
181
# Remove doubled-up and trailing slashes, "." path components,
182
# and cancel out any ".." path components in PATH after making
183
# it an absolute path.
184
#             value returned in "$func_normal_abspath_result"
185
func_normal_abspath ()
186
{
187
  # Start from root dir and reassemble the path.
188
  func_normal_abspath_result=
189
  func_normal_abspath_tpath=$1
190
  func_normal_abspath_altnamespace=
191
  case $func_normal_abspath_tpath in
192
    "")
193
      # Empty path, that just means $cwd.
194
      func_stripname '' '/' "`pwd`"
195
      func_normal_abspath_result=$func_stripname_result
196
      return
197
    ;;
198
    # The next three entries are used to spot a run of precisely
199
    # two leading slashes without using negated character classes;
200
    # we take advantage of case's first-match behaviour.
201
    ///*)
202
      # Unusual form of absolute path, do nothing.
203
    ;;
204
    //*)
205
      # Not necessarily an ordinary path; POSIX reserves leading '//'
206
      # and for example Cygwin uses it to access remote file shares
207
      # over CIFS/SMB, so we conserve a leading double slash if found.
208
      func_normal_abspath_altnamespace=/
209
    ;;
210
    /*)
211
      # Absolute path, do nothing.
212
    ;;
213
    *)
214
      # Relative path, prepend $cwd.
215
      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
216
    ;;
217
  esac
218
  # Cancel out all the simple stuff to save iterations.  We also want
219
  # the path to end with a slash for ease of parsing, so make sure
220
  # there is one (and only one) here.
221
  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
222
        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
223
  while :; do
224
    # Processed it all yet?
225
    if test "$func_normal_abspath_tpath" = / ; then
226
      # If we ascended to the root using ".." the result may be empty now.
227
      if test -z "$func_normal_abspath_result" ; then
228
        func_normal_abspath_result=/
229
      fi
230
      break
231
    fi
232
    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
233
        -e "$pathcar"`
234
    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
235
        -e "$pathcdr"`
236
    # Figure out what to do with it
237
    case $func_normal_abspath_tcomponent in
238
      "")
239
        # Trailing empty path component, ignore it.
240
      ;;
241
      ..)
242
        # Parent dir; strip last assembled component from result.
243
        func_dirname "$func_normal_abspath_result"
244
        func_normal_abspath_result=$func_dirname_result
245
      ;;
246
      *)
247
        # Actual path component, append it.
248
        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
249
      ;;
250
    esac
251
  done
252
  # Restore leading double-slash if one was found on entry.
253
  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
254
}
255
 
256
# func_relative_path SRCDIR DSTDIR
257
# generates a relative path from SRCDIR to DSTDIR, with a trailing
258
# slash if non-empty, suitable for immediately appending a filename
259
# without needing to append a separator.
260
#             value returned in "$func_relative_path_result"
261
func_relative_path ()
262
{
263
  func_relative_path_result=
264
  func_normal_abspath "$1"
265
  func_relative_path_tlibdir=$func_normal_abspath_result
266
  func_normal_abspath "$2"
267
  func_relative_path_tbindir=$func_normal_abspath_result
268
 
269
  # Ascend the tree starting from libdir
270
  while :; do
271
    # check if we have found a prefix of bindir
272
    case $func_relative_path_tbindir in
273
      $func_relative_path_tlibdir)
274
        # found an exact match
275
        func_relative_path_tcancelled=
276
        break
277
        ;;
278
      $func_relative_path_tlibdir*)
279
        # found a matching prefix
280
        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
281
        func_relative_path_tcancelled=$func_stripname_result
282
        if test -z "$func_relative_path_result"; then
283
          func_relative_path_result=.
284
        fi
285
        break
286
        ;;
287
      *)
288
        func_dirname $func_relative_path_tlibdir
289
        func_relative_path_tlibdir=${func_dirname_result}
290
        if test "x$func_relative_path_tlibdir" = x ; then
291
          # Have to descend all the way to the root!
292
          func_relative_path_result=../$func_relative_path_result
293
          func_relative_path_tcancelled=$func_relative_path_tbindir
294
          break
295
        fi
296
        func_relative_path_result=../$func_relative_path_result
297
        ;;
298
    esac
299
  done
300
 
301
  # Now calculate path; take care to avoid doubling-up slashes.
302
  func_stripname '' '/' "$func_relative_path_result"
303
  func_relative_path_result=$func_stripname_result
304
  func_stripname '/' '/' "$func_relative_path_tcancelled"
305
  if test "x$func_stripname_result" != x ; then
306
    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
307
  fi
308
 
309
  # Normalisation. If bindir is libdir, return empty string,
310
  # else relative path ending with a slash; either way, target
311
  # file name can be directly appended.
312
  if test ! -z "$func_relative_path_result"; then
313
    func_stripname './' '' "$func_relative_path_result/"
314
    func_relative_path_result=$func_stripname_result
315
  fi
316
}
317
 
318
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
319
# is ksh but when the shell is invoked as "sh" and the current value of
320
# the _XPG environment variable is not equal to 1 (one), the special
321
# positional parameter $0, within a function call, is the name of the
322
# function.
323
progpath="$0"
324
 
325
# The name of this program:
326
# In the unlikely event $progname began with a '-', it would play havoc with
327
# func_echo (imagine progname=-n), so we prepend ./ in that case:
328
func_dirname_and_basename "$progpath"
329
progname=$func_basename_result
330
case $progname in
331
  -*) progname=./$progname ;;
332
esac
333
 
334
# Make sure we have an absolute path for reexecution:
335
case $progpath in
336
  [\\/]*|[A-Za-z]:\\*) ;;
337
  *[\\/]*)
338
     progdir=$func_dirname_result
339
     progdir=`cd "$progdir" && pwd`
340
     progpath="$progdir/$progname"
341
     ;;
342
  *)
343
     save_IFS="$IFS"
344
     IFS=:
345
     for progdir in $PATH; do
346
       IFS="$save_IFS"
347
       test -x "$progdir/$progname" && break
348
     done
349
     IFS="$save_IFS"
350
     test -n "$progdir" || progdir=`pwd`
351
     progpath="$progdir/$progname"
352
     ;;
353
esac
354
 
355
# Sed substitution that helps us do robust quoting.  It backslashifies
356
# metacharacters that are still active within double-quoted strings.
357
Xsed="${SED}"' -e 1s/^X//'
358
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
359
 
360
# Same as above, but do not quote variable references.
361
double_quote_subst='s/\(["`\\]\)/\\\1/g'
362
 
363
# Re-`\' parameter expansions in output of double_quote_subst that were
364
# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
365
# in input to double_quote_subst, that '$' was protected from expansion.
366
# Since each input `\' is now two `\'s, look for any number of runs of
367
# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
368
bs='\\'
369
bs2='\\\\'
370
bs4='\\\\\\\\'
371
dollar='\$'
372
sed_double_backslash="\
373
  s/$bs4/&\\
374
/g
375
  s/^$bs2$dollar/$bs&/
376
  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
377
  s/\n//g"
378
 
379
# Standard options:
380
opt_dry_run=false
381
opt_help=false
382
opt_quiet=false
383
opt_verbose=false
384
opt_warning=:
385
 
386
# func_echo arg...
387
# Echo program name prefixed message, along with the current mode
388
# name if it has been set yet.
389
func_echo ()
390
{
391
    $ECHO "$progname${mode+: }$mode: $*"
392
}
393
 
394
# func_verbose arg...
395
# Echo program name prefixed message in verbose mode only.
396
func_verbose ()
397
{
398
    $opt_verbose && func_echo ${1+"$@"}
399
 
400
    # A bug in bash halts the script if the last line of a function
401
    # fails when set -e is in force, so we need another command to
402
    # work around that:
403
    :
404
}
405
 
406
# func_error arg...
407
# Echo program name prefixed message to standard error.
408
func_error ()
409
{
410
    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
411
}
412
 
413
# func_warning arg...
414
# Echo program name prefixed warning message to standard error.
415
func_warning ()
416
{
417
    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
418
 
419
    # bash bug again:
420
    :
421
}
422
 
423
# func_fatal_error arg...
424
# Echo program name prefixed message to standard error, and exit.
425
func_fatal_error ()
426
{
427
    func_error ${1+"$@"}
428
    exit $EXIT_FAILURE
429
}
430
 
431
# func_fatal_help arg...
432
# Echo program name prefixed message to standard error, followed by
433
# a help hint, and exit.
434
func_fatal_help ()
435
{
436
    func_error ${1+"$@"}
437
    func_fatal_error "$help"
438
}
439
help="Try \`$progname --help' for more information."  ## default
440
 
441
 
442
# func_grep expression filename
443
# Check whether EXPRESSION matches any line of FILENAME, without output.
444
func_grep ()
445
{
446
    $GREP "$1" "$2" >/dev/null 2>&1
447
}
448
 
449
 
450
# func_mkdir_p directory-path
451
# Make sure the entire path to DIRECTORY-PATH is available.
452
func_mkdir_p ()
453
{
454
    my_directory_path="$1"
455
    my_dir_list=
456
 
457
    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
458
 
459
      # Protect directory names starting with `-'
460
      case $my_directory_path in
461
        -*) my_directory_path="./$my_directory_path" ;;
462
      esac
463
 
464
      # While some portion of DIR does not yet exist...
465
      while test ! -d "$my_directory_path"; do
466
        # ...make a list in topmost first order.  Use a colon delimited
467
        # list incase some portion of path contains whitespace.
468
        my_dir_list="$my_directory_path:$my_dir_list"
469
 
470
        # If the last portion added has no slash in it, the list is done
471
        case $my_directory_path in */*) ;; *) break ;; esac
472
 
473
        # ...otherwise throw away the child directory and loop
474
        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
475
      done
476
      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
477
 
478
      save_mkdir_p_IFS="$IFS"; IFS=':'
479
      for my_dir in $my_dir_list; do
480
        IFS="$save_mkdir_p_IFS"
481
        # mkdir can fail with a `File exist' error if two processes
482
        # try to create one of the directories concurrently.  Don't
483
        # stop in that case!
484
        $MKDIR "$my_dir" 2>/dev/null || :
485
      done
486
      IFS="$save_mkdir_p_IFS"
487
 
488
      # Bail out if we (or some other process) failed to create a directory.
489
      test -d "$my_directory_path" || \
490
        func_fatal_error "Failed to create \`$1'"
491
    fi
492
}
493
 
494
 
495
# func_mktempdir [string]
496
# Make a temporary directory that won't clash with other running
497
# libtool processes, and avoids race conditions if possible.  If
498
# given, STRING is the basename for that directory.
499
func_mktempdir ()
500
{
501
    my_template="${TMPDIR-/tmp}/${1-$progname}"
502
 
503
    if test "$opt_dry_run" = ":"; then
504
      # Return a directory name, but don't create it in dry-run mode
505
      my_tmpdir="${my_template}-$$"
506
    else
507
 
508
      # If mktemp works, use that first and foremost
509
      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
510
 
511
      if test ! -d "$my_tmpdir"; then
512
        # Failing that, at least try and use $RANDOM to avoid a race
513
        my_tmpdir="${my_template}-${RANDOM-0}$$"
514
 
515
        save_mktempdir_umask=`umask`
516
        umask 0077
517
        $MKDIR "$my_tmpdir"
518
        umask $save_mktempdir_umask
519
      fi
520
 
521
      # If we're not in dry-run mode, bomb out on failure
522
      test -d "$my_tmpdir" || \
523
        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
524
    fi
525
 
526
    $ECHO "X$my_tmpdir" | $Xsed
527
}
528
 
529
 
530
# func_quote_for_eval arg
531
# Aesthetically quote ARG to be evaled later.
532
# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
533
# is double-quoted, suitable for a subsequent eval, whereas
534
# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
535
# which are still active within double quotes backslashified.
536
func_quote_for_eval ()
537
{
538
    case $1 in
539
      *[\\\`\"\$]*)
540
        func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
541
      *)
542
        func_quote_for_eval_unquoted_result="$1" ;;
543
    esac
544
 
545
    case $func_quote_for_eval_unquoted_result in
546
      # Double-quote args containing shell metacharacters to delay
547
      # word splitting, command substitution and and variable
548
      # expansion for a subsequent eval.
549
      # Many Bourne shells cannot handle close brackets correctly
550
      # in scan sets, so we specify it separately.
551
      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
552
        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
553
        ;;
554
      *)
555
        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
556
    esac
557
}
558
 
559
 
560
# func_quote_for_expand arg
561
# Aesthetically quote ARG to be evaled later; same as above,
562
# but do not quote variable references.
563
func_quote_for_expand ()
564
{
565
    case $1 in
566
      *[\\\`\"]*)
567
        my_arg=`$ECHO "X$1" | $Xsed \
568
            -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
569
      *)
570
        my_arg="$1" ;;
571
    esac
572
 
573
    case $my_arg in
574
      # Double-quote args containing shell metacharacters to delay
575
      # word splitting and command substitution for a subsequent eval.
576
      # Many Bourne shells cannot handle close brackets correctly
577
      # in scan sets, so we specify it separately.
578
      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
579
        my_arg="\"$my_arg\""
580
        ;;
581
    esac
582
 
583
    func_quote_for_expand_result="$my_arg"
584
}
585
 
586
 
587
# func_show_eval cmd [fail_exp]
588
# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
589
# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
590
# is given, then evaluate it.
591
func_show_eval ()
592
{
593
    my_cmd="$1"
594
    my_fail_exp="${2-:}"
595
 
596
    ${opt_silent-false} || {
597
      func_quote_for_expand "$my_cmd"
598
      eval "func_echo $func_quote_for_expand_result"
599
    }
600
 
601
    if ${opt_dry_run-false}; then :; else
602
      eval "$my_cmd"
603
      my_status=$?
604
      if test "$my_status" -eq 0; then :; else
605
        eval "(exit $my_status); $my_fail_exp"
606
      fi
607
    fi
608
}
609
 
610
 
611
# func_show_eval_locale cmd [fail_exp]
612
# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
613
# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
614
# is given, then evaluate it.  Use the saved locale for evaluation.
615
func_show_eval_locale ()
616
{
617
    my_cmd="$1"
618
    my_fail_exp="${2-:}"
619
 
620
    ${opt_silent-false} || {
621
      func_quote_for_expand "$my_cmd"
622
      eval "func_echo $func_quote_for_expand_result"
623
    }
624
 
625
    if ${opt_dry_run-false}; then :; else
626
      eval "$lt_user_locale
627
            $my_cmd"
628
      my_status=$?
629
      eval "$lt_safe_locale"
630
      if test "$my_status" -eq 0; then :; else
631
        eval "(exit $my_status); $my_fail_exp"
632
      fi
633
    fi
634
}
635
 
636
 
637
 
638
 
639
 
640
# func_version
641
# Echo version message to standard output and exit.
642
func_version ()
643
{
644
    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
645
        s/^# //
646
        s/^# *$//
647
        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
648
        p
649
     }' < "$progpath"
650
     exit $?
651
}
652
 
653
# func_usage
654
# Echo short help message to standard output and exit.
655
func_usage ()
656
{
657
    $SED -n '/^# Usage:/,/# -h/ {
658
        s/^# //
659
        s/^# *$//
660
        s/\$progname/'$progname'/
661
        p
662
    }' < "$progpath"
663
    $ECHO
664
    $ECHO "run \`$progname --help | more' for full usage"
665
    exit $?
666
}
667
 
668
# func_help
669
# Echo long help message to standard output and exit.
670
func_help ()
671
{
672
    $SED -n '/^# Usage:/,/# Report bugs to/ {
673
        s/^# //
674
        s/^# *$//
675
        s*\$progname*'$progname'*
676
        s*\$host*'"$host"'*
677
        s*\$SHELL*'"$SHELL"'*
678
        s*\$LTCC*'"$LTCC"'*
679
        s*\$LTCFLAGS*'"$LTCFLAGS"'*
680
        s*\$LD*'"$LD"'*
681
        s/\$with_gnu_ld/'"$with_gnu_ld"'/
682
        s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
683
        s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
684
        p
685
     }' < "$progpath"
686
    exit $?
687
}
688
 
689
# func_missing_arg argname
690
# Echo program name prefixed message to standard error and set global
691
# exit_cmd.
692
func_missing_arg ()
693
{
694
    func_error "missing argument for $1"
695
    exit_cmd=exit
696
}
697
 
698
exit_cmd=:
699
 
700
 
701
 
702
 
703
 
704
# Check that we have a working $ECHO.
705
if test "X$1" = X--no-reexec; then
706
  # Discard the --no-reexec flag, and continue.
707
  shift
708
elif test "X$1" = X--fallback-echo; then
709
  # Avoid inline document here, it may be left over
710
  :
711
elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
712
  # Yippee, $ECHO works!
713
  :
714
else
715
  # Restart under the correct shell, and then maybe $ECHO will work.
716
  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
717
fi
718
 
719
if test "X$1" = X--fallback-echo; then
720
  # used as fallback echo
721
  shift
722
  cat <<EOF
723
$*
724
EOF
725
  exit $EXIT_SUCCESS
726
fi
727
 
728
magic="%%%MAGIC variable%%%"
729
magic_exe="%%%MAGIC EXE variable%%%"
730
 
731
# Global variables.
732
# $mode is unset
733
nonopt=
734
execute_dlfiles=
735
preserve_args=
736
lo2o="s/\\.lo\$/.${objext}/"
737
o2lo="s/\\.${objext}\$/.lo/"
738
extracted_archives=
739
extracted_serial=0
740
 
741
opt_dry_run=false
742
opt_duplicate_deps=false
743
opt_silent=false
744
opt_debug=:
745
 
746
# If this variable is set in any of the actions, the command in it
747
# will be execed at the end.  This prevents here-documents from being
748
# left over by shells.
749
exec_cmd=
750
 
751
# func_fatal_configuration arg...
752
# Echo program name prefixed message to standard error, followed by
753
# a configuration failure hint, and exit.
754
func_fatal_configuration ()
755
{
756
    func_error ${1+"$@"}
757
    func_error "See the $PACKAGE documentation for more information."
758
    func_fatal_error "Fatal configuration error."
759
}
760
 
761
 
762
# func_config
763
# Display the configuration for all the tags in this script.
764
func_config ()
765
{
766
    re_begincf='^# ### BEGIN LIBTOOL'
767
    re_endcf='^# ### END LIBTOOL'
768
 
769
    # Default configuration.
770
    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
771
 
772
    # Now print the configurations for the tags.
773
    for tagname in $taglist; do
774
      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
775
    done
776
 
777
    exit $?
778
}
779
 
780
# func_features
781
# Display the features supported by this script.
782
func_features ()
783
{
784
    $ECHO "host: $host"
785
    if test "$build_libtool_libs" = yes; then
786
      $ECHO "enable shared libraries"
787
    else
788
      $ECHO "disable shared libraries"
789
    fi
790
    if test "$build_old_libs" = yes; then
791
      $ECHO "enable static libraries"
792
    else
793
      $ECHO "disable static libraries"
794
    fi
795
 
796
    exit $?
797
}
798
 
799
# func_enable_tag tagname
800
# Verify that TAGNAME is valid, and either flag an error and exit, or
801
# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
802
# variable here.
803
func_enable_tag ()
804
{
805
  # Global variable:
806
  tagname="$1"
807
 
808
  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
809
  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
810
  sed_extractcf="/$re_begincf/,/$re_endcf/p"
811
 
812
  # Validate tagname.
813
  case $tagname in
814
    *[!-_A-Za-z0-9,/]*)
815
      func_fatal_error "invalid tag name: $tagname"
816
      ;;
817
  esac
818
 
819
  # Don't test for the "default" C tag, as we know it's
820
  # there but not specially marked.
821
  case $tagname in
822
    CC) ;;
823
    *)
824
      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
825
        taglist="$taglist $tagname"
826
 
827
        # Evaluate the configuration.  Be careful to quote the path
828
        # and the sed script, to avoid splitting on whitespace, but
829
        # also don't use non-portable quotes within backquotes within
830
        # quotes we have to do it in 2 steps:
831
        extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
832
        eval "$extractedcf"
833
      else
834
        func_error "ignoring unknown tag $tagname"
835
      fi
836
      ;;
837
  esac
838
}
839
 
840
# Parse options once, thoroughly.  This comes as soon as possible in
841
# the script to make things like `libtool --version' happen quickly.
842
{
843
 
844
  # Shorthand for --mode=foo, only valid as the first argument
845
  case $1 in
846
  clean|clea|cle|cl)
847
    shift; set dummy --mode clean ${1+"$@"}; shift
848
    ;;
849
  compile|compil|compi|comp|com|co|c)
850
    shift; set dummy --mode compile ${1+"$@"}; shift
851
    ;;
852
  execute|execut|execu|exec|exe|ex|e)
853
    shift; set dummy --mode execute ${1+"$@"}; shift
854
    ;;
855
  finish|finis|fini|fin|fi|f)
856
    shift; set dummy --mode finish ${1+"$@"}; shift
857
    ;;
858
  install|instal|insta|inst|ins|in|i)
859
    shift; set dummy --mode install ${1+"$@"}; shift
860
    ;;
861
  link|lin|li|l)
862
    shift; set dummy --mode link ${1+"$@"}; shift
863
    ;;
864
  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
865
    shift; set dummy --mode uninstall ${1+"$@"}; shift
866
    ;;
867
  esac
868
 
869
  # Parse non-mode specific arguments:
870
  while test "$#" -gt 0; do
871
    opt="$1"
872
    shift
873
 
874
    case $opt in
875
      --config)         func_config                                     ;;
876
 
877
      --debug)          preserve_args="$preserve_args $opt"
878
                        func_echo "enabling shell trace mode"
879
                        opt_debug='set -x'
880
                        $opt_debug
881
                        ;;
882
 
883
      -dlopen)          test "$#" -eq 0 && func_missing_arg "$opt" && break
884
                        execute_dlfiles="$execute_dlfiles $1"
885
                        shift
886
                        ;;
887
 
888
      --dry-run | -n)   opt_dry_run=:                                   ;;
889
      --features)       func_features                                   ;;
890
      --finish)         mode="finish"                                   ;;
891
 
892
      --mode)           test "$#" -eq 0 && func_missing_arg "$opt" && break
893
                        case $1 in
894
                          # Valid mode arguments:
895
                          clean)        ;;
896
                          compile)      ;;
897
                          execute)      ;;
898
                          finish)       ;;
899
                          install)      ;;
900
                          link)         ;;
901
                          relink)       ;;
902
                          uninstall)    ;;
903
 
904
                          # Catch anything else as an error
905
                          *) func_error "invalid argument for $opt"
906
                             exit_cmd=exit
907
                             break
908
                             ;;
909
                        esac
910
 
911
                        mode="$1"
912
                        shift
913
                        ;;
914
 
915
      --preserve-dup-deps)
916
                        opt_duplicate_deps=:                            ;;
917
 
918
      --quiet|--silent) preserve_args="$preserve_args $opt"
919
                        opt_silent=:
920
                        ;;
921
 
922
      --verbose| -v)    preserve_args="$preserve_args $opt"
923
                        opt_silent=false
924
                        ;;
925
 
926
      --tag)            test "$#" -eq 0 && func_missing_arg "$opt" && break
927
                        preserve_args="$preserve_args $opt $1"
928
                        func_enable_tag "$1"    # tagname is set here
929
                        shift
930
                        ;;
931
 
932
      # Separate optargs to long options:
933
      -dlopen=*|--mode=*|--tag=*)
934
                        func_opt_split "$opt"
935
                        set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
936
                        shift
937
                        ;;
938
 
939
      -\?|-h)           func_usage                                      ;;
940
      --help)           opt_help=:                                      ;;
941
      --version)        func_version                                    ;;
942
 
943
      -*)               func_fatal_help "unrecognized option \`$opt'"   ;;
944
 
945
      *)                nonopt="$opt"
946
                        break
947
                        ;;
948
    esac
949
  done
950
 
951
 
952
  case $host in
953
    *cygwin* | *mingw* | *pw32* | *cegcc*)
954
      # don't eliminate duplications in $postdeps and $predeps
955
      opt_duplicate_compiler_generated_deps=:
956
      ;;
957
    *)
958
      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
959
      ;;
960
  esac
961
 
962
  # Having warned about all mis-specified options, bail out if
963
  # anything was wrong.
964
  $exit_cmd $EXIT_FAILURE
965
}
966
 
967
# func_check_version_match
968
# Ensure that we are using m4 macros, and libtool script from the same
969
# release of libtool.
970
func_check_version_match ()
971
{
972
  if test "$package_revision" != "$macro_revision"; then
973
    if test "$VERSION" != "$macro_version"; then
974
      if test -z "$macro_version"; then
975
        cat >&2 <<_LT_EOF
976
$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
977
$progname: definition of this LT_INIT comes from an older release.
978
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
979
$progname: and run autoconf again.
980
_LT_EOF
981
      else
982
        cat >&2 <<_LT_EOF
983
$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
984
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
985
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
986
$progname: and run autoconf again.
987
_LT_EOF
988
      fi
989
    else
990
      cat >&2 <<_LT_EOF
991
$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
992
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
993
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
994
$progname: of $PACKAGE $VERSION and run autoconf again.
995
_LT_EOF
996
    fi
997
 
998
    exit $EXIT_MISMATCH
999
  fi
1000
}
1001
 
1002
 
1003
## ----------- ##
1004
##    Main.    ##
1005
## ----------- ##
1006
 
1007
$opt_help || {
1008
  # Sanity checks first:
1009
  func_check_version_match
1010
 
1011
  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1012
    func_fatal_configuration "not configured to build any kind of library"
1013
  fi
1014
 
1015
  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1016
 
1017
 
1018
  # Darwin sucks
1019
  eval std_shrext=\"$shrext_cmds\"
1020
 
1021
 
1022
  # Only execute mode is allowed to have -dlopen flags.
1023
  if test -n "$execute_dlfiles" && test "$mode" != execute; then
1024
    func_error "unrecognized option \`-dlopen'"
1025
    $ECHO "$help" 1>&2
1026
    exit $EXIT_FAILURE
1027
  fi
1028
 
1029
  # Change the help message to a mode-specific one.
1030
  generic_help="$help"
1031
  help="Try \`$progname --help --mode=$mode' for more information."
1032
}
1033
 
1034
 
1035
# func_lalib_p file
1036
# True iff FILE is a libtool `.la' library or `.lo' object file.
1037
# This function is only a basic sanity check; it will hardly flush out
1038
# determined imposters.
1039
func_lalib_p ()
1040
{
1041
    test -f "$1" &&
1042
      $SED -e 4q "$1" 2>/dev/null \
1043
        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1044
}
1045
 
1046
# func_lalib_unsafe_p file
1047
# True iff FILE is a libtool `.la' library or `.lo' object file.
1048
# This function implements the same check as func_lalib_p without
1049
# resorting to external programs.  To this end, it redirects stdin and
1050
# closes it afterwards, without saving the original file descriptor.
1051
# As a safety measure, use it only where a negative result would be
1052
# fatal anyway.  Works if `file' does not exist.
1053
func_lalib_unsafe_p ()
1054
{
1055
    lalib_p=no
1056
    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1057
        for lalib_p_l in 1 2 3 4
1058
        do
1059
            read lalib_p_line
1060
            case "$lalib_p_line" in
1061
                \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1062
            esac
1063
        done
1064
        exec 0<&5 5<&-
1065
    fi
1066
    test "$lalib_p" = yes
1067
}
1068
 
1069
# func_ltwrapper_script_p file
1070
# True iff FILE is a libtool wrapper script
1071
# This function is only a basic sanity check; it will hardly flush out
1072
# determined imposters.
1073
func_ltwrapper_script_p ()
1074
{
1075
    func_lalib_p "$1"
1076
}
1077
 
1078
# func_ltwrapper_executable_p file
1079
# True iff FILE is a libtool wrapper executable
1080
# This function is only a basic sanity check; it will hardly flush out
1081
# determined imposters.
1082
func_ltwrapper_executable_p ()
1083
{
1084
    func_ltwrapper_exec_suffix=
1085
    case $1 in
1086
    *.exe) ;;
1087
    *) func_ltwrapper_exec_suffix=.exe ;;
1088
    esac
1089
    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1090
}
1091
 
1092
# func_ltwrapper_scriptname file
1093
# Assumes file is an ltwrapper_executable
1094
# uses $file to determine the appropriate filename for a
1095
# temporary ltwrapper_script.
1096
func_ltwrapper_scriptname ()
1097
{
1098
    func_ltwrapper_scriptname_result=""
1099
    if func_ltwrapper_executable_p "$1"; then
1100
        func_dirname_and_basename "$1" "" "."
1101
        func_stripname '' '.exe' "$func_basename_result"
1102
        func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1103
    fi
1104
}
1105
 
1106
# func_ltwrapper_p file
1107
# True iff FILE is a libtool wrapper script or wrapper executable
1108
# This function is only a basic sanity check; it will hardly flush out
1109
# determined imposters.
1110
func_ltwrapper_p ()
1111
{
1112
    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1113
}
1114
 
1115
 
1116
# func_execute_cmds commands fail_cmd
1117
# Execute tilde-delimited COMMANDS.
1118
# If FAIL_CMD is given, eval that upon failure.
1119
# FAIL_CMD may read-access the current command in variable CMD!
1120
func_execute_cmds ()
1121
{
1122
    $opt_debug
1123
    save_ifs=$IFS; IFS='~'
1124
    for cmd in $1; do
1125
      IFS=$save_ifs
1126
      eval cmd=\"$cmd\"
1127
      func_show_eval "$cmd" "${2-:}"
1128
    done
1129
    IFS=$save_ifs
1130
}
1131
 
1132
 
1133
# func_source file
1134
# Source FILE, adding directory component if necessary.
1135
# Note that it is not necessary on cygwin/mingw to append a dot to
1136
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1137
# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1138
# `FILE.' does not work on cygwin managed mounts.
1139
func_source ()
1140
{
1141
    $opt_debug
1142
    case $1 in
1143
    */* | *\\*) . "$1" ;;
1144
    *)          . "./$1" ;;
1145
    esac
1146
}
1147
 
1148
 
1149
# func_infer_tag arg
1150
# Infer tagged configuration to use if any are available and
1151
# if one wasn't chosen via the "--tag" command line option.
1152
# Only attempt this if the compiler in the base compile
1153
# command doesn't match the default compiler.
1154
# arg is usually of the form 'gcc ...'
1155
func_infer_tag ()
1156
{
1157
    $opt_debug
1158
    if test -n "$available_tags" && test -z "$tagname"; then
1159
      CC_quoted=
1160
      for arg in $CC; do
1161
        func_quote_for_eval "$arg"
1162
        CC_quoted="$CC_quoted $func_quote_for_eval_result"
1163
      done
1164
      case $@ in
1165
      # Blanks in the command may have been stripped by the calling shell,
1166
      # but not from the CC environment variable when configure was run.
1167
      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1168
      # Blanks at the start of $base_compile will cause this to fail
1169
      # if we don't check for them as well.
1170
      *)
1171
        for z in $available_tags; do
1172
          if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1173
            # Evaluate the configuration.
1174
            eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1175
            CC_quoted=
1176
            for arg in $CC; do
1177
              # Double-quote args containing other shell metacharacters.
1178
              func_quote_for_eval "$arg"
1179
              CC_quoted="$CC_quoted $func_quote_for_eval_result"
1180
            done
1181
            case "$@ " in
1182
              " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1183
              # The compiler in the base compile command matches
1184
              # the one in the tagged configuration.
1185
              # Assume this is the tagged configuration we want.
1186
              tagname=$z
1187
              break
1188
              ;;
1189
            esac
1190
          fi
1191
        done
1192
        # If $tagname still isn't set, then no tagged configuration
1193
        # was found and let the user know that the "--tag" command
1194
        # line option must be used.
1195
        if test -z "$tagname"; then
1196
          func_echo "unable to infer tagged configuration"
1197
          func_fatal_error "specify a tag with \`--tag'"
1198
#       else
1199
#         func_verbose "using $tagname tagged configuration"
1200
        fi
1201
        ;;
1202
      esac
1203
    fi
1204
}
1205
 
1206
 
1207
 
1208
# func_write_libtool_object output_name pic_name nonpic_name
1209
# Create a libtool object file (analogous to a ".la" file),
1210
# but don't create it if we're doing a dry run.
1211
func_write_libtool_object ()
1212
{
1213
    write_libobj=${1}
1214
    if test "$build_libtool_libs" = yes; then
1215
      write_lobj=\'${2}\'
1216
    else
1217
      write_lobj=none
1218
    fi
1219
 
1220
    if test "$build_old_libs" = yes; then
1221
      write_oldobj=\'${3}\'
1222
    else
1223
      write_oldobj=none
1224
    fi
1225
 
1226
    $opt_dry_run || {
1227
      cat >${write_libobj}T <<EOF
1228
# $write_libobj - a libtool object file
1229
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1230
#
1231
# Please DO NOT delete this file!
1232
# It is necessary for linking the library.
1233
 
1234
# Name of the PIC object.
1235
pic_object=$write_lobj
1236
 
1237
# Name of the non-PIC object
1238
non_pic_object=$write_oldobj
1239
 
1240
EOF
1241
      $MV "${write_libobj}T" "${write_libobj}"
1242
    }
1243
}
1244
 
1245
# func_mode_compile arg...
1246
func_mode_compile ()
1247
{
1248
    $opt_debug
1249
    # Get the compilation command and the source file.
1250
    base_compile=
1251
    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1252
    suppress_opt=yes
1253
    suppress_output=
1254
    arg_mode=normal
1255
    libobj=
1256
    later=
1257
    pie_flag=
1258
 
1259
    for arg
1260
    do
1261
      case $arg_mode in
1262
      arg  )
1263
        # do not "continue".  Instead, add this to base_compile
1264
        lastarg="$arg"
1265
        arg_mode=normal
1266
        ;;
1267
 
1268
      target )
1269
        libobj="$arg"
1270
        arg_mode=normal
1271
        continue
1272
        ;;
1273
 
1274
      normal )
1275
        # Accept any command-line options.
1276
        case $arg in
1277
        -o)
1278
          test -n "$libobj" && \
1279
            func_fatal_error "you cannot specify \`-o' more than once"
1280
          arg_mode=target
1281
          continue
1282
          ;;
1283
 
1284
        -pie | -fpie | -fPIE)
1285
          pie_flag="$pie_flag $arg"
1286
          continue
1287
          ;;
1288
 
1289
        -shared | -static | -prefer-pic | -prefer-non-pic)
1290
          later="$later $arg"
1291
          continue
1292
          ;;
1293
 
1294
        -no-suppress)
1295
          suppress_opt=no
1296
          continue
1297
          ;;
1298
 
1299
        -Xcompiler)
1300
          arg_mode=arg  #  the next one goes into the "base_compile" arg list
1301
          continue      #  The current "srcfile" will either be retained or
1302
          ;;            #  replaced later.  I would guess that would be a bug.
1303
 
1304
        -Wc,*)
1305
          func_stripname '-Wc,' '' "$arg"
1306
          args=$func_stripname_result
1307
          lastarg=
1308
          save_ifs="$IFS"; IFS=','
1309
          for arg in $args; do
1310
            IFS="$save_ifs"
1311
            func_quote_for_eval "$arg"
1312
            lastarg="$lastarg $func_quote_for_eval_result"
1313
          done
1314
          IFS="$save_ifs"
1315
          func_stripname ' ' '' "$lastarg"
1316
          lastarg=$func_stripname_result
1317
 
1318
          # Add the arguments to base_compile.
1319
          base_compile="$base_compile $lastarg"
1320
          continue
1321
          ;;
1322
 
1323
        *)
1324
          # Accept the current argument as the source file.
1325
          # The previous "srcfile" becomes the current argument.
1326
          #
1327
          lastarg="$srcfile"
1328
          srcfile="$arg"
1329
          ;;
1330
        esac  #  case $arg
1331
        ;;
1332
      esac    #  case $arg_mode
1333
 
1334
      # Aesthetically quote the previous argument.
1335
      func_quote_for_eval "$lastarg"
1336
      base_compile="$base_compile $func_quote_for_eval_result"
1337
    done # for arg
1338
 
1339
    case $arg_mode in
1340
    arg)
1341
      func_fatal_error "you must specify an argument for -Xcompile"
1342
      ;;
1343
    target)
1344
      func_fatal_error "you must specify a target with \`-o'"
1345
      ;;
1346
    *)
1347
      # Get the name of the library object.
1348
      test -z "$libobj" && {
1349
        func_basename "$srcfile"
1350
        libobj="$func_basename_result"
1351
      }
1352
      ;;
1353
    esac
1354
 
1355
    # Recognize several different file suffixes.
1356
    # If the user specifies -o file.o, it is replaced with file.lo
1357
    case $libobj in
1358
    *.[cCFSifmso] | \
1359
    *.ada | *.adb | *.ads | *.asm | \
1360
    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1361
    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
1362
      func_xform "$libobj"
1363
      libobj=$func_xform_result
1364
      ;;
1365
    esac
1366
 
1367
    case $libobj in
1368
    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1369
    *)
1370
      func_fatal_error "cannot determine name of library object from \`$libobj'"
1371
      ;;
1372
    esac
1373
 
1374
    func_infer_tag $base_compile
1375
 
1376
    for arg in $later; do
1377
      case $arg in
1378
      -shared)
1379
        test "$build_libtool_libs" != yes && \
1380
          func_fatal_configuration "can not build a shared library"
1381
        build_old_libs=no
1382
        continue
1383
        ;;
1384
 
1385
      -static)
1386
        build_libtool_libs=no
1387
        build_old_libs=yes
1388
        continue
1389
        ;;
1390
 
1391
      -prefer-pic)
1392
        pic_mode=yes
1393
        continue
1394
        ;;
1395
 
1396
      -prefer-non-pic)
1397
        pic_mode=no
1398
        continue
1399
        ;;
1400
      esac
1401
    done
1402
 
1403
    func_quote_for_eval "$libobj"
1404
    test "X$libobj" != "X$func_quote_for_eval_result" \
1405
      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'    &()|`$[]' \
1406
      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1407
    func_dirname_and_basename "$obj" "/" ""
1408
    objname="$func_basename_result"
1409
    xdir="$func_dirname_result"
1410
    lobj=${xdir}$objdir/$objname
1411
 
1412
    test -z "$base_compile" && \
1413
      func_fatal_help "you must specify a compilation command"
1414
 
1415
    # Delete any leftover library objects.
1416
    if test "$build_old_libs" = yes; then
1417
      removelist="$obj $lobj $libobj ${libobj}T"
1418
    else
1419
      removelist="$lobj $libobj ${libobj}T"
1420
    fi
1421
 
1422
    # On Cygwin there's no "real" PIC flag so we must build both object types
1423
    case $host_os in
1424
    cygwin* | mingw* | pw32* | os2* | cegcc*)
1425
      pic_mode=default
1426
      ;;
1427
    esac
1428
    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1429
      # non-PIC code in shared libraries is not supported
1430
      pic_mode=default
1431
    fi
1432
 
1433
    # Calculate the filename of the output object if compiler does
1434
    # not support -o with -c
1435
    if test "$compiler_c_o" = no; then
1436
      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1437
      lockfile="$output_obj.lock"
1438
    else
1439
      output_obj=
1440
      need_locks=no
1441
      lockfile=
1442
    fi
1443
 
1444
    # Lock this critical section if it is needed
1445
    # We use this script file to make the link, it avoids creating a new file
1446
    if test "$need_locks" = yes; then
1447
      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1448
        func_echo "Waiting for $lockfile to be removed"
1449
        sleep 2
1450
      done
1451
    elif test "$need_locks" = warn; then
1452
      if test -f "$lockfile"; then
1453
        $ECHO "\
1454
*** ERROR, $lockfile exists and contains:
1455
`cat $lockfile 2>/dev/null`
1456
 
1457
This indicates that another process is trying to use the same
1458
temporary object file, and libtool could not work around it because
1459
your compiler does not support \`-c' and \`-o' together.  If you
1460
repeat this compilation, it may succeed, by chance, but you had better
1461
avoid parallel builds (make -j) in this platform, or get a better
1462
compiler."
1463
 
1464
        $opt_dry_run || $RM $removelist
1465
        exit $EXIT_FAILURE
1466
      fi
1467
      removelist="$removelist $output_obj"
1468
      $ECHO "$srcfile" > "$lockfile"
1469
    fi
1470
 
1471
    $opt_dry_run || $RM $removelist
1472
    removelist="$removelist $lockfile"
1473
    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1474
 
1475
    if test -n "$fix_srcfile_path"; then
1476
      eval srcfile=\"$fix_srcfile_path\"
1477
    fi
1478
    func_quote_for_eval "$srcfile"
1479
    qsrcfile=$func_quote_for_eval_result
1480
 
1481
    # Only build a PIC object if we are building libtool libraries.
1482
    if test "$build_libtool_libs" = yes; then
1483
      # Without this assignment, base_compile gets emptied.
1484
      fbsd_hideous_sh_bug=$base_compile
1485
 
1486
      if test "$pic_mode" != no; then
1487
        command="$base_compile $qsrcfile $pic_flag"
1488
      else
1489
        # Don't build PIC code
1490
        command="$base_compile $qsrcfile"
1491
      fi
1492
 
1493
      func_mkdir_p "$xdir$objdir"
1494
 
1495
      if test -z "$output_obj"; then
1496
        # Place PIC objects in $objdir
1497
        command="$command -o $lobj"
1498
      fi
1499
 
1500
      func_show_eval_locale "$command"  \
1501
          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1502
 
1503
      if test "$need_locks" = warn &&
1504
         test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1505
        $ECHO "\
1506
*** ERROR, $lockfile contains:
1507
`cat $lockfile 2>/dev/null`
1508
 
1509
but it should contain:
1510
$srcfile
1511
 
1512
This indicates that another process is trying to use the same
1513
temporary object file, and libtool could not work around it because
1514
your compiler does not support \`-c' and \`-o' together.  If you
1515
repeat this compilation, it may succeed, by chance, but you had better
1516
avoid parallel builds (make -j) in this platform, or get a better
1517
compiler."
1518
 
1519
        $opt_dry_run || $RM $removelist
1520
        exit $EXIT_FAILURE
1521
      fi
1522
 
1523
      # Just move the object if needed, then go on to compile the next one
1524
      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1525
        func_show_eval '$MV "$output_obj" "$lobj"' \
1526
          'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1527
      fi
1528
 
1529
      # Allow error messages only from the first compilation.
1530
      if test "$suppress_opt" = yes; then
1531
        suppress_output=' >/dev/null 2>&1'
1532
      fi
1533
    fi
1534
 
1535
    # Only build a position-dependent object if we build old libraries.
1536
    if test "$build_old_libs" = yes; then
1537
      if test "$pic_mode" != yes; then
1538
        # Don't build PIC code
1539
        command="$base_compile $qsrcfile$pie_flag"
1540
      else
1541
        command="$base_compile $qsrcfile $pic_flag"
1542
      fi
1543
      if test "$compiler_c_o" = yes; then
1544
        command="$command -o $obj"
1545
      fi
1546
 
1547
      # Suppress compiler output if we already did a PIC compilation.
1548
      command="$command$suppress_output"
1549
      func_show_eval_locale "$command" \
1550
        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1551
 
1552
      if test "$need_locks" = warn &&
1553
         test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1554
        $ECHO "\
1555
*** ERROR, $lockfile contains:
1556
`cat $lockfile 2>/dev/null`
1557
 
1558
but it should contain:
1559
$srcfile
1560
 
1561
This indicates that another process is trying to use the same
1562
temporary object file, and libtool could not work around it because
1563
your compiler does not support \`-c' and \`-o' together.  If you
1564
repeat this compilation, it may succeed, by chance, but you had better
1565
avoid parallel builds (make -j) in this platform, or get a better
1566
compiler."
1567
 
1568
        $opt_dry_run || $RM $removelist
1569
        exit $EXIT_FAILURE
1570
      fi
1571
 
1572
      # Just move the object if needed
1573
      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1574
        func_show_eval '$MV "$output_obj" "$obj"' \
1575
          'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1576
      fi
1577
    fi
1578
 
1579
    $opt_dry_run || {
1580
      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1581
 
1582
      # Unlock the critical section if it was locked
1583
      if test "$need_locks" != no; then
1584
        removelist=$lockfile
1585
        $RM "$lockfile"
1586
      fi
1587
    }
1588
 
1589
    exit $EXIT_SUCCESS
1590
}
1591
 
1592
$opt_help || {
1593
test "$mode" = compile && func_mode_compile ${1+"$@"}
1594
}
1595
 
1596
func_mode_help ()
1597
{
1598
    # We need to display help for each of the modes.
1599
    case $mode in
1600
      "")
1601
        # Generic help is extracted from the usage comments
1602
        # at the start of this file.
1603
        func_help
1604
        ;;
1605
 
1606
      clean)
1607
        $ECHO \
1608
"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1609
 
1610
Remove files from the build directory.
1611
 
1612
RM is the name of the program to use to delete files associated with each FILE
1613
(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1614
to RM.
1615
 
1616
If FILE is a libtool library, object or program, all the files associated
1617
with it are deleted. Otherwise, only FILE itself is deleted using RM."
1618
        ;;
1619
 
1620
      compile)
1621
      $ECHO \
1622
"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1623
 
1624
Compile a source file into a libtool library object.
1625
 
1626
This mode accepts the following additional options:
1627
 
1628
  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1629
  -no-suppress      do not suppress compiler output for multiple passes
1630
  -prefer-pic       try to building PIC objects only
1631
  -prefer-non-pic   try to building non-PIC objects only
1632
  -shared           do not build a \`.o' file suitable for static linking
1633
  -static           only build a \`.o' file suitable for static linking
1634
 
1635
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
1636
from the given SOURCEFILE.
1637
 
1638
The output file name is determined by removing the directory component from
1639
SOURCEFILE, then substituting the C source code suffix \`.c' with the
1640
library object suffix, \`.lo'."
1641
        ;;
1642
 
1643
      execute)
1644
        $ECHO \
1645
"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1646
 
1647
Automatically set library path, then run a program.
1648
 
1649
This mode accepts the following additional options:
1650
 
1651
  -dlopen FILE      add the directory containing FILE to the library path
1652
 
1653
This mode sets the library path environment variable according to \`-dlopen'
1654
flags.
1655
 
1656
If any of the ARGS are libtool executable wrappers, then they are translated
1657
into their corresponding uninstalled binary, and any of their required library
1658
directories are added to the library path.
1659
 
1660
Then, COMMAND is executed, with ARGS as arguments."
1661
        ;;
1662
 
1663
      finish)
1664
        $ECHO \
1665
"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1666
 
1667
Complete the installation of libtool libraries.
1668
 
1669
Each LIBDIR is a directory that contains libtool libraries.
1670
 
1671
The commands that this mode executes may require superuser privileges.  Use
1672
the \`--dry-run' option if you just want to see what would be executed."
1673
        ;;
1674
 
1675
      install)
1676
        $ECHO \
1677
"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1678
 
1679
Install executables or libraries.
1680
 
1681
INSTALL-COMMAND is the installation command.  The first component should be
1682
either the \`install' or \`cp' program.
1683
 
1684
The following components of INSTALL-COMMAND are treated specially:
1685
 
1686
  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1687
 
1688
The rest of the components are interpreted as arguments to that command (only
1689
BSD-compatible install options are recognized)."
1690
        ;;
1691
 
1692
      link)
1693
        $ECHO \
1694
"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1695
 
1696
Link object files or libraries together to form another library, or to
1697
create an executable program.
1698
 
1699
LINK-COMMAND is a command using the C compiler that you would use to create
1700
a program from several object files.
1701
 
1702
The following components of LINK-COMMAND are treated specially:
1703
 
1704
  -all-static       do not do any dynamic linking at all
1705
  -avoid-version    do not add a version suffix if possible
1706
  -bindir BINDIR    specify path to binaries directory (for systems where
1707
                    libraries must be found in the PATH setting at runtime)
1708
  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1709
  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1710
  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1711
  -export-symbols SYMFILE
1712
                    try to export only the symbols listed in SYMFILE
1713
  -export-symbols-regex REGEX
1714
                    try to export only the symbols matching REGEX
1715
  -LLIBDIR          search LIBDIR for required installed libraries
1716
  -lNAME            OUTPUT-FILE requires the installed library libNAME
1717
  -module           build a library that can dlopened
1718
  -no-fast-install  disable the fast-install mode
1719
  -no-install       link a not-installable executable
1720
  -no-undefined     declare that a library does not refer to external symbols
1721
  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1722
  -objectlist FILE  Use a list of object files found in FILE to specify objects
1723
  -precious-files-regex REGEX
1724
                    don't remove output files matching REGEX
1725
  -release RELEASE  specify package release information
1726
  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1727
  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1728
  -shared           only do dynamic linking of libtool libraries
1729
  -shrext SUFFIX    override the standard shared library file extension
1730
  -static           do not do any dynamic linking of uninstalled libtool libraries
1731
  -static-libtool-libs
1732
                    do not do any dynamic linking of libtool libraries
1733
  -version-info CURRENT[:REVISION[:AGE]]
1734
                    specify library version info [each variable defaults to 0]
1735
  -weak LIBNAME     declare that the target provides the LIBNAME interface
1736
 
1737
All other options (arguments beginning with \`-') are ignored.
1738
 
1739
Every other argument is treated as a filename.  Files ending in \`.la' are
1740
treated as uninstalled libtool libraries, other files are standard or library
1741
object files.
1742
 
1743
If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1744
only library objects (\`.lo' files) may be specified, and \`-rpath' is
1745
required, except when creating a convenience library.
1746
 
1747
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1748
using \`ar' and \`ranlib', or on Windows using \`lib'.
1749
 
1750
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1751
is created, otherwise an executable program is created."
1752
        ;;
1753
 
1754
      uninstall)
1755
        $ECHO \
1756
"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1757
 
1758
Remove libraries from an installation directory.
1759
 
1760
RM is the name of the program to use to delete files associated with each FILE
1761
(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1762
to RM.
1763
 
1764
If FILE is a libtool library, all the files associated with it are deleted.
1765
Otherwise, only FILE itself is deleted using RM."
1766
        ;;
1767
 
1768
      *)
1769
        func_fatal_help "invalid operation mode \`$mode'"
1770
        ;;
1771
    esac
1772
 
1773
    $ECHO
1774
    $ECHO "Try \`$progname --help' for more information about other modes."
1775
 
1776
    exit $?
1777
}
1778
 
1779
  # Now that we've collected a possible --mode arg, show help if necessary
1780
  $opt_help && func_mode_help
1781
 
1782
 
1783
# func_mode_execute arg...
1784
func_mode_execute ()
1785
{
1786
    $opt_debug
1787
    # The first argument is the command name.
1788
    cmd="$nonopt"
1789
    test -z "$cmd" && \
1790
      func_fatal_help "you must specify a COMMAND"
1791
 
1792
    # Handle -dlopen flags immediately.
1793
    for file in $execute_dlfiles; do
1794
      test -f "$file" \
1795
        || func_fatal_help "\`$file' is not a file"
1796
 
1797
      dir=
1798
      case $file in
1799
      *.la)
1800
        # Check to see that this really is a libtool archive.
1801
        func_lalib_unsafe_p "$file" \
1802
          || func_fatal_help "\`$lib' is not a valid libtool archive"
1803
 
1804
        # Read the libtool library.
1805
        dlname=
1806
        library_names=
1807
        func_source "$file"
1808
 
1809
        # Skip this library if it cannot be dlopened.
1810
        if test -z "$dlname"; then
1811
          # Warn if it was a shared library.
1812
          test -n "$library_names" && \
1813
            func_warning "\`$file' was not linked with \`-export-dynamic'"
1814
          continue
1815
        fi
1816
 
1817
        func_dirname "$file" "" "."
1818
        dir="$func_dirname_result"
1819
 
1820
        if test -f "$dir/$objdir/$dlname"; then
1821
          dir="$dir/$objdir"
1822
        else
1823
          if test ! -f "$dir/$dlname"; then
1824
            func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1825
          fi
1826
        fi
1827
        ;;
1828
 
1829
      *.lo)
1830
        # Just add the directory containing the .lo file.
1831
        func_dirname "$file" "" "."
1832
        dir="$func_dirname_result"
1833
        ;;
1834
 
1835
      *)
1836
        func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1837
        continue
1838
        ;;
1839
      esac
1840
 
1841
      # Get the absolute pathname.
1842
      absdir=`cd "$dir" && pwd`
1843
      test -n "$absdir" && dir="$absdir"
1844
 
1845
      # Now add the directory to shlibpath_var.
1846
      if eval "test -z \"\$$shlibpath_var\""; then
1847
        eval "$shlibpath_var=\"\$dir\""
1848
      else
1849
        eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1850
      fi
1851
    done
1852
 
1853
    # This variable tells wrapper scripts just to set shlibpath_var
1854
    # rather than running their programs.
1855
    libtool_execute_magic="$magic"
1856
 
1857
    # Check if any of the arguments is a wrapper script.
1858
    args=
1859
    for file
1860
    do
1861
      case $file in
1862
      -*) ;;
1863
      *)
1864
        # Do a test to see if this is really a libtool program.
1865
        if func_ltwrapper_script_p "$file"; then
1866
          func_source "$file"
1867
          # Transform arg to wrapped name.
1868
          file="$progdir/$program"
1869
        elif func_ltwrapper_executable_p "$file"; then
1870
          func_ltwrapper_scriptname "$file"
1871
          func_source "$func_ltwrapper_scriptname_result"
1872
          # Transform arg to wrapped name.
1873
          file="$progdir/$program"
1874
        fi
1875
        ;;
1876
      esac
1877
      # Quote arguments (to preserve shell metacharacters).
1878
      func_quote_for_eval "$file"
1879
      args="$args $func_quote_for_eval_result"
1880
    done
1881
 
1882
    if test "X$opt_dry_run" = Xfalse; then
1883
      if test -n "$shlibpath_var"; then
1884
        # Export the shlibpath_var.
1885
        eval "export $shlibpath_var"
1886
      fi
1887
 
1888
      # Restore saved environment variables
1889
      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1890
      do
1891
        eval "if test \"\${save_$lt_var+set}\" = set; then
1892
                $lt_var=\$save_$lt_var; export $lt_var
1893
              else
1894
                $lt_unset $lt_var
1895
              fi"
1896
      done
1897
 
1898
      # Now prepare to actually exec the command.
1899
      exec_cmd="\$cmd$args"
1900
    else
1901
      # Display what would be done.
1902
      if test -n "$shlibpath_var"; then
1903
        eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1904
        $ECHO "export $shlibpath_var"
1905
      fi
1906
      $ECHO "$cmd$args"
1907
      exit $EXIT_SUCCESS
1908
    fi
1909
}
1910
 
1911
test "$mode" = execute && func_mode_execute ${1+"$@"}
1912
 
1913
 
1914
# func_mode_finish arg...
1915
func_mode_finish ()
1916
{
1917
    $opt_debug
1918
    libdirs="$nonopt"
1919
    admincmds=
1920
 
1921
    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1922
      for dir
1923
      do
1924
        libdirs="$libdirs $dir"
1925
      done
1926
 
1927
      for libdir in $libdirs; do
1928
        if test -n "$finish_cmds"; then
1929
          # Do each command in the finish commands.
1930
          func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1931
'"$cmd"'"'
1932
        fi
1933
        if test -n "$finish_eval"; then
1934
          # Do the single finish_eval.
1935
          eval cmds=\"$finish_eval\"
1936
          $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1937
       $cmds"
1938
        fi
1939
      done
1940
    fi
1941
 
1942
    # Exit here if they wanted silent mode.
1943
    $opt_silent && exit $EXIT_SUCCESS
1944
 
1945
    $ECHO "X----------------------------------------------------------------------" | $Xsed
1946
    $ECHO "Libraries have been installed in:"
1947
    for libdir in $libdirs; do
1948
      $ECHO "   $libdir"
1949
    done
1950
    $ECHO
1951
    $ECHO "If you ever happen to want to link against installed libraries"
1952
    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
1953
    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
1954
    $ECHO "flag during linking and do at least one of the following:"
1955
    if test -n "$shlibpath_var"; then
1956
      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
1957
      $ECHO "     during execution"
1958
    fi
1959
    if test -n "$runpath_var"; then
1960
      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
1961
      $ECHO "     during linking"
1962
    fi
1963
    if test -n "$hardcode_libdir_flag_spec"; then
1964
      libdir=LIBDIR
1965
      eval flag=\"$hardcode_libdir_flag_spec\"
1966
 
1967
      $ECHO "   - use the \`$flag' linker flag"
1968
    fi
1969
    if test -n "$admincmds"; then
1970
      $ECHO "   - have your system administrator run these commands:$admincmds"
1971
    fi
1972
    if test -f /etc/ld.so.conf; then
1973
      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1974
    fi
1975
    $ECHO
1976
 
1977
    $ECHO "See any operating system documentation about shared libraries for"
1978
    case $host in
1979
      solaris2.[6789]|solaris2.1[0-9])
1980
        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1981
        $ECHO "pages."
1982
        ;;
1983
      *)
1984
        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1985
        ;;
1986
    esac
1987
    $ECHO "X----------------------------------------------------------------------" | $Xsed
1988
    exit $EXIT_SUCCESS
1989
}
1990
 
1991
test "$mode" = finish && func_mode_finish ${1+"$@"}
1992
 
1993
 
1994
# func_mode_install arg...
1995
func_mode_install ()
1996
{
1997
    $opt_debug
1998
    # There may be an optional sh(1) argument at the beginning of
1999
    # install_prog (especially on Windows NT).
2000
    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2001
       # Allow the use of GNU shtool's install command.
2002
       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
2003
      # Aesthetically quote it.
2004
      func_quote_for_eval "$nonopt"
2005
      install_prog="$func_quote_for_eval_result "
2006
      arg=$1
2007
      shift
2008
    else
2009
      install_prog=
2010
      arg=$nonopt
2011
    fi
2012
 
2013
    # The real first argument should be the name of the installation program.
2014
    # Aesthetically quote it.
2015
    func_quote_for_eval "$arg"
2016
    install_prog="$install_prog$func_quote_for_eval_result"
2017
 
2018
    # We need to accept at least all the BSD install flags.
2019
    dest=
2020
    files=
2021
    opts=
2022
    prev=
2023
    install_type=
2024
    isdir=no
2025
    stripme=
2026
    for arg
2027
    do
2028
      if test -n "$dest"; then
2029
        files="$files $dest"
2030
        dest=$arg
2031
        continue
2032
      fi
2033
 
2034
      case $arg in
2035
      -d) isdir=yes ;;
2036
      -f)
2037
        case " $install_prog " in
2038
        *[\\\ /]cp\ *) ;;
2039
        *) prev=$arg ;;
2040
        esac
2041
        ;;
2042
      -g | -m | -o)
2043
        prev=$arg
2044
        ;;
2045
      -s)
2046
        stripme=" -s"
2047
        continue
2048
        ;;
2049
      -*)
2050
        ;;
2051
      *)
2052
        # If the previous option needed an argument, then skip it.
2053
        if test -n "$prev"; then
2054
          prev=
2055
        else
2056
          dest=$arg
2057
          continue
2058
        fi
2059
        ;;
2060
      esac
2061
 
2062
      # Aesthetically quote the argument.
2063
      func_quote_for_eval "$arg"
2064
      install_prog="$install_prog $func_quote_for_eval_result"
2065
    done
2066
 
2067
    test -z "$install_prog" && \
2068
      func_fatal_help "you must specify an install program"
2069
 
2070
    test -n "$prev" && \
2071
      func_fatal_help "the \`$prev' option requires an argument"
2072
 
2073
    if test -z "$files"; then
2074
      if test -z "$dest"; then
2075
        func_fatal_help "no file or destination specified"
2076
      else
2077
        func_fatal_help "you must specify a destination"
2078
      fi
2079
    fi
2080
 
2081
    # Strip any trailing slash from the destination.
2082
    func_stripname '' '/' "$dest"
2083
    dest=$func_stripname_result
2084
 
2085
    # Check to see that the destination is a directory.
2086
    test -d "$dest" && isdir=yes
2087
    if test "$isdir" = yes; then
2088
      destdir="$dest"
2089
      destname=
2090
    else
2091
      func_dirname_and_basename "$dest" "" "."
2092
      destdir="$func_dirname_result"
2093
      destname="$func_basename_result"
2094
 
2095
      # Not a directory, so check to see that there is only one file specified.
2096
      set dummy $files; shift
2097
      test "$#" -gt 1 && \
2098
        func_fatal_help "\`$dest' is not a directory"
2099
    fi
2100
    case $destdir in
2101
    [\\/]* | [A-Za-z]:[\\/]*) ;;
2102
    *)
2103
      for file in $files; do
2104
        case $file in
2105
        *.lo) ;;
2106
        *)
2107
          func_fatal_help "\`$destdir' must be an absolute directory name"
2108
          ;;
2109
        esac
2110
      done
2111
      ;;
2112
    esac
2113
 
2114
    # This variable tells wrapper scripts just to set variables rather
2115
    # than running their programs.
2116
    libtool_install_magic="$magic"
2117
 
2118
    staticlibs=
2119
    future_libdirs=
2120
    current_libdirs=
2121
    for file in $files; do
2122
 
2123
      # Do each installation.
2124
      case $file in
2125
      *.$libext)
2126
        # Do the static libraries later.
2127
        staticlibs="$staticlibs $file"
2128
        ;;
2129
 
2130
      *.la)
2131
        # Check to see that this really is a libtool archive.
2132
        func_lalib_unsafe_p "$file" \
2133
          || func_fatal_help "\`$file' is not a valid libtool archive"
2134
 
2135
        library_names=
2136
        old_library=
2137
        relink_command=
2138
        func_source "$file"
2139
 
2140
        # Add the libdir to current_libdirs if it is the destination.
2141
        if test "X$destdir" = "X$libdir"; then
2142
          case "$current_libdirs " in
2143
          *" $libdir "*) ;;
2144
          *) current_libdirs="$current_libdirs $libdir" ;;
2145
          esac
2146
        else
2147
          # Note the libdir as a future libdir.
2148
          case "$future_libdirs " in
2149
          *" $libdir "*) ;;
2150
          *) future_libdirs="$future_libdirs $libdir" ;;
2151
          esac
2152
        fi
2153
 
2154
        func_dirname "$file" "/" ""
2155
        dir="$func_dirname_result"
2156
        dir="$dir$objdir"
2157
 
2158
        if test -n "$relink_command"; then
2159
          # Determine the prefix the user has applied to our future dir.
2160
          inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2161
 
2162
          # Don't allow the user to place us outside of our expected
2163
          # location b/c this prevents finding dependent libraries that
2164
          # are installed to the same prefix.
2165
          # At present, this check doesn't affect windows .dll's that
2166
          # are installed into $libdir/../bin (currently, that works fine)
2167
          # but it's something to keep an eye on.
2168
          test "$inst_prefix_dir" = "$destdir" && \
2169
            func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2170
 
2171
          if test -n "$inst_prefix_dir"; then
2172
            # Stick the inst_prefix_dir data into the link command.
2173
            relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2174
          else
2175
            relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2176
          fi
2177
 
2178
          func_warning "relinking \`$file'"
2179
          func_show_eval "$relink_command" \
2180
            'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2181
        fi
2182
 
2183
        # See the names of the shared library.
2184
        set dummy $library_names; shift
2185
        if test -n "$1"; then
2186
          realname="$1"
2187
          shift
2188
 
2189
          srcname="$realname"
2190
          test -n "$relink_command" && srcname="$realname"T
2191
 
2192
          # Install the shared library and build the symlinks.
2193
          func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2194
              'exit $?'
2195
          tstripme="$stripme"
2196
          case $host_os in
2197
          cygwin* | mingw* | pw32* | cegcc*)
2198
            case $realname in
2199
            *.dll.a)
2200
              tstripme=""
2201
              ;;
2202
            esac
2203
            ;;
2204
          esac
2205
          if test -n "$tstripme" && test -n "$striplib"; then
2206
            func_show_eval "$striplib $destdir/$realname" 'exit $?'
2207
          fi
2208
 
2209
          if test "$#" -gt 0; then
2210
            # Delete the old symlinks, and create new ones.
2211
            # Try `ln -sf' first, because the `ln' binary might depend on
2212
            # the symlink we replace!  Solaris /bin/ln does not understand -f,
2213
            # so we also need to try rm && ln -s.
2214
            for linkname
2215
            do
2216
              test "$linkname" != "$realname" \
2217
                && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2218
            done
2219
          fi
2220
 
2221
          # Do each command in the postinstall commands.
2222
          lib="$destdir/$realname"
2223
          func_execute_cmds "$postinstall_cmds" 'exit $?'
2224
        fi
2225
 
2226
        # Install the pseudo-library for information purposes.
2227
        func_basename "$file"
2228
        name="$func_basename_result"
2229
        instname="$dir/$name"i
2230
        func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2231
 
2232
        # Maybe install the static library, too.
2233
        test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2234
        ;;
2235
 
2236
      *.lo)
2237
        # Install (i.e. copy) a libtool object.
2238
 
2239
        # Figure out destination file name, if it wasn't already specified.
2240
        if test -n "$destname"; then
2241
          destfile="$destdir/$destname"
2242
        else
2243
          func_basename "$file"
2244
          destfile="$func_basename_result"
2245
          destfile="$destdir/$destfile"
2246
        fi
2247
 
2248
        # Deduce the name of the destination old-style object file.
2249
        case $destfile in
2250
        *.lo)
2251
          func_lo2o "$destfile"
2252
          staticdest=$func_lo2o_result
2253
          ;;
2254
        *.$objext)
2255
          staticdest="$destfile"
2256
          destfile=
2257
          ;;
2258
        *)
2259
          func_fatal_help "cannot copy a libtool object to \`$destfile'"
2260
          ;;
2261
        esac
2262
 
2263
        # Install the libtool object if requested.
2264
        test -n "$destfile" && \
2265
          func_show_eval "$install_prog $file $destfile" 'exit $?'
2266
 
2267
        # Install the old object if enabled.
2268
        if test "$build_old_libs" = yes; then
2269
          # Deduce the name of the old-style object file.
2270
          func_lo2o "$file"
2271
          staticobj=$func_lo2o_result
2272
          func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2273
        fi
2274
        exit $EXIT_SUCCESS
2275
        ;;
2276
 
2277
      *)
2278
        # Figure out destination file name, if it wasn't already specified.
2279
        if test -n "$destname"; then
2280
          destfile="$destdir/$destname"
2281
        else
2282
          func_basename "$file"
2283
          destfile="$func_basename_result"
2284
          destfile="$destdir/$destfile"
2285
        fi
2286
 
2287
        # If the file is missing, and there is a .exe on the end, strip it
2288
        # because it is most likely a libtool script we actually want to
2289
        # install
2290
        stripped_ext=""
2291
        case $file in
2292
          *.exe)
2293
            if test ! -f "$file"; then
2294
              func_stripname '' '.exe' "$file"
2295
              file=$func_stripname_result
2296
              stripped_ext=".exe"
2297
            fi
2298
            ;;
2299
        esac
2300
 
2301
        # Do a test to see if this is really a libtool program.
2302
        case $host in
2303
        *cygwin* | *mingw*)
2304
            if func_ltwrapper_executable_p "$file"; then
2305
              func_ltwrapper_scriptname "$file"
2306
              wrapper=$func_ltwrapper_scriptname_result
2307
            else
2308
              func_stripname '' '.exe' "$file"
2309
              wrapper=$func_stripname_result
2310
            fi
2311
            ;;
2312
        *)
2313
            wrapper=$file
2314
            ;;
2315
        esac
2316
        if func_ltwrapper_script_p "$wrapper"; then
2317
          notinst_deplibs=
2318
          relink_command=
2319
 
2320
          func_source "$wrapper"
2321
 
2322
          # Check the variables that should have been set.
2323
          test -z "$generated_by_libtool_version" && \
2324
            func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2325
 
2326
          finalize=yes
2327
          for lib in $notinst_deplibs; do
2328
            # Check to see that each library is installed.
2329
            libdir=
2330
            if test -f "$lib"; then
2331
              func_source "$lib"
2332
            fi
2333
            libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
2334
            if test -n "$libdir" && test ! -f "$libfile"; then
2335
              func_warning "\`$lib' has not been installed in \`$libdir'"
2336
              finalize=no
2337
            fi
2338
          done
2339
 
2340
          relink_command=
2341
          func_source "$wrapper"
2342
 
2343
          outputname=
2344
          if test "$fast_install" = no && test -n "$relink_command"; then
2345
            $opt_dry_run || {
2346
              if test "$finalize" = yes; then
2347
                tmpdir=`func_mktempdir`
2348
                func_basename "$file$stripped_ext"
2349
                file="$func_basename_result"
2350
                outputname="$tmpdir/$file"
2351
                # Replace the output file specification.
2352
                relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
2353
 
2354
                $opt_silent || {
2355
                  func_quote_for_expand "$relink_command"
2356
                  eval "func_echo $func_quote_for_expand_result"
2357
                }
2358
                if eval "$relink_command"; then :
2359
                  else
2360
                  func_error "error: relink \`$file' with the above command before installing it"
2361
                  $opt_dry_run || ${RM}r "$tmpdir"
2362
                  continue
2363
                fi
2364
                file="$outputname"
2365
              else
2366
                func_warning "cannot relink \`$file'"
2367
              fi
2368
            }
2369
          else
2370
            # Install the binary that we compiled earlier.
2371
            file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2372
          fi
2373
        fi
2374
 
2375
        # remove .exe since cygwin /usr/bin/install will append another
2376
        # one anyway
2377
        case $install_prog,$host in
2378
        */usr/bin/install*,*cygwin*)
2379
          case $file:$destfile in
2380
          *.exe:*.exe)
2381
            # this is ok
2382
            ;;
2383
          *.exe:*)
2384
            destfile=$destfile.exe
2385
            ;;
2386
          *:*.exe)
2387
            func_stripname '' '.exe' "$destfile"
2388
            destfile=$func_stripname_result
2389
            ;;
2390
          esac
2391
          ;;
2392
        esac
2393
        func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2394
        $opt_dry_run || if test -n "$outputname"; then
2395
          ${RM}r "$tmpdir"
2396
        fi
2397
        ;;
2398
      esac
2399
    done
2400
 
2401
    for file in $staticlibs; do
2402
      func_basename "$file"
2403
      name="$func_basename_result"
2404
 
2405
      # Set up the ranlib parameters.
2406
      oldlib="$destdir/$name"
2407
 
2408
      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2409
 
2410
      if test -n "$stripme" && test -n "$old_striplib"; then
2411
        func_show_eval "$old_striplib $oldlib" 'exit $?'
2412
      fi
2413
 
2414
      # Do each command in the postinstall commands.
2415
      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2416
    done
2417
 
2418
    test -n "$future_libdirs" && \
2419
      func_warning "remember to run \`$progname --finish$future_libdirs'"
2420
 
2421
    if test -n "$current_libdirs"; then
2422
      # Maybe just do a dry run.
2423
      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2424
      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2425
    else
2426
      exit $EXIT_SUCCESS
2427
    fi
2428
}
2429
 
2430
test "$mode" = install && func_mode_install ${1+"$@"}
2431
 
2432
 
2433
# func_generate_dlsyms outputname originator pic_p
2434
# Extract symbols from dlprefiles and create ${outputname}S.o with
2435
# a dlpreopen symbol table.
2436
func_generate_dlsyms ()
2437
{
2438
    $opt_debug
2439
    my_outputname="$1"
2440
    my_originator="$2"
2441
    my_pic_p="${3-no}"
2442
    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2443
    my_dlsyms=
2444
 
2445
    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2446
      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2447
        my_dlsyms="${my_outputname}S.c"
2448
      else
2449
        func_error "not configured to extract global symbols from dlpreopened files"
2450
      fi
2451
    fi
2452
 
2453
    if test -n "$my_dlsyms"; then
2454
      case $my_dlsyms in
2455
      "") ;;
2456
      *.c)
2457
        # Discover the nlist of each of the dlfiles.
2458
        nlist="$output_objdir/${my_outputname}.nm"
2459
 
2460
        func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2461
 
2462
        # Parse the name list into a source file.
2463
        func_verbose "creating $output_objdir/$my_dlsyms"
2464
 
2465
        $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2466
/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2467
/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2468
 
2469
#ifdef __cplusplus
2470
extern \"C\" {
2471
#endif
2472
 
2473
/* External symbol declarations for the compiler. */\
2474
"
2475
 
2476
        if test "$dlself" = yes; then
2477
          func_verbose "generating symbol list for \`$output'"
2478
 
2479
          $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2480
 
2481
          # Add our own program objects to the symbol list.
2482
          progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2483
          for progfile in $progfiles; do
2484
            func_verbose "extracting global C symbols from \`$progfile'"
2485
            $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2486
          done
2487
 
2488
          if test -n "$exclude_expsyms"; then
2489
            $opt_dry_run || {
2490
              eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2491
              eval '$MV "$nlist"T "$nlist"'
2492
            }
2493
          fi
2494
 
2495
          if test -n "$export_symbols_regex"; then
2496
            $opt_dry_run || {
2497
              eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2498
              eval '$MV "$nlist"T "$nlist"'
2499
            }
2500
          fi
2501
 
2502
          # Prepare the list of exported symbols
2503
          if test -z "$export_symbols"; then
2504
            export_symbols="$output_objdir/$outputname.exp"
2505
            $opt_dry_run || {
2506
              $RM $export_symbols
2507
              eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2508
              case $host in
2509
              *cygwin* | *mingw* | *cegcc* )
2510
                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2511
                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2512
                ;;
2513
              esac
2514
            }
2515
          else
2516
            $opt_dry_run || {
2517
              eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2518
              eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2519
              eval '$MV "$nlist"T "$nlist"'
2520
              case $host in
2521
                *cygwin | *mingw* | *cegcc* )
2522
                  eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2523
                  eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2524
                  ;;
2525
              esac
2526
            }
2527
          fi
2528
        fi
2529
 
2530
        for dlprefile in $dlprefiles; do
2531
          func_verbose "extracting global C symbols from \`$dlprefile'"
2532
          func_basename "$dlprefile"
2533
          name="$func_basename_result"
2534
          $opt_dry_run || {
2535
            eval '$ECHO ": $name " >> "$nlist"'
2536
            eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2537
          }
2538
        done
2539
 
2540
        $opt_dry_run || {
2541
          # Make sure we have at least an empty file.
2542
          test -f "$nlist" || : > "$nlist"
2543
 
2544
          if test -n "$exclude_expsyms"; then
2545
            $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2546
            $MV "$nlist"T "$nlist"
2547
          fi
2548
 
2549
          # Try sorting and uniquifying the output.
2550
          if $GREP -v "^: " < "$nlist" |
2551
              if sort -k 3 </dev/null >/dev/null 2>&1; then
2552
                sort -k 3
2553
              else
2554
                sort +2
2555
              fi |
2556
              uniq > "$nlist"S; then
2557
            :
2558
          else
2559
            $GREP -v "^: " < "$nlist" > "$nlist"S
2560
          fi
2561
 
2562
          if test -f "$nlist"S; then
2563
            eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2564
          else
2565
            $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
2566
          fi
2567
 
2568
          $ECHO >> "$output_objdir/$my_dlsyms" "\
2569
 
2570
/* The mapping between symbol names and symbols.  */
2571
typedef struct {
2572
  const char *name;
2573
  void *address;
2574
} lt_dlsymlist;
2575
"
2576
          case $host in
2577
          *cygwin* | *mingw* | *cegcc* )
2578
            $ECHO >> "$output_objdir/$my_dlsyms" "\
2579
/* DATA imports from DLLs on WIN32 con't be const, because
2580
   runtime relocations are performed -- see ld's documentation
2581
   on pseudo-relocs.  */"
2582
            lt_dlsym_const= ;;
2583
          *osf5*)
2584
            echo >> "$output_objdir/$my_dlsyms" "\
2585
/* This system does not cope well with relocations in const data */"
2586
            lt_dlsym_const= ;;
2587
          *)
2588
            lt_dlsym_const=const ;;
2589
          esac
2590
 
2591
          $ECHO >> "$output_objdir/$my_dlsyms" "\
2592
extern $lt_dlsym_const lt_dlsymlist
2593
lt_${my_prefix}_LTX_preloaded_symbols[];
2594
$lt_dlsym_const lt_dlsymlist
2595
lt_${my_prefix}_LTX_preloaded_symbols[] =
2596
{\
2597
  { \"$my_originator\", (void *) 0 },"
2598
 
2599
          case $need_lib_prefix in
2600
          no)
2601
            eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2602
            ;;
2603
          *)
2604
            eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2605
            ;;
2606
          esac
2607
          $ECHO >> "$output_objdir/$my_dlsyms" "\
2608
  {0, (void *) 0}
2609
};
2610
 
2611
/* This works around a problem in FreeBSD linker */
2612
#ifdef FREEBSD_WORKAROUND
2613
static const void *lt_preloaded_setup() {
2614
  return lt_${my_prefix}_LTX_preloaded_symbols;
2615
}
2616
#endif
2617
 
2618
#ifdef __cplusplus
2619
}
2620
#endif\
2621
"
2622
        } # !$opt_dry_run
2623
 
2624
        pic_flag_for_symtable=
2625
        case "$compile_command " in
2626
        *" -static "*) ;;
2627
        *)
2628
          case $host in
2629
          # compiling the symbol table file with pic_flag works around
2630
          # a FreeBSD bug that causes programs to crash when -lm is
2631
          # linked before any other PIC object.  But we must not use
2632
          # pic_flag when linking with -static.  The problem exists in
2633
          # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2634
          *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2635
            pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2636
          *-*-hpux*)
2637
            pic_flag_for_symtable=" $pic_flag"  ;;
2638
          *)
2639
            if test "X$my_pic_p" != Xno; then
2640
              pic_flag_for_symtable=" $pic_flag"
2641
            fi
2642
            ;;
2643
          esac
2644
          ;;
2645
        esac
2646
        symtab_cflags=
2647
        for arg in $LTCFLAGS; do
2648
          case $arg in
2649
          -pie | -fpie | -fPIE) ;;
2650
          *) symtab_cflags="$symtab_cflags $arg" ;;
2651
          esac
2652
        done
2653
 
2654
        # Now compile the dynamic symbol file.
2655
        func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2656
 
2657
        # Clean up the generated files.
2658
        func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2659
 
2660
        # Transform the symbol file into the correct name.
2661
        symfileobj="$output_objdir/${my_outputname}S.$objext"
2662
        case $host in
2663
        *cygwin* | *mingw* | *cegcc* )
2664
          if test -f "$output_objdir/$my_outputname.def"; then
2665
            compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2666
            finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2667
          else
2668
            compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2669
            finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2670
          fi
2671
          ;;
2672
        *)
2673
          compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2674
          finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2675
          ;;
2676
        esac
2677
        ;;
2678
      *)
2679
        func_fatal_error "unknown suffix for \`$my_dlsyms'"
2680
        ;;
2681
      esac
2682
    else
2683
      # We keep going just in case the user didn't refer to
2684
      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2685
      # really was required.
2686
 
2687
      # Nullify the symbol file.
2688
      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2689
      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2690
    fi
2691
}
2692
 
2693
# func_win32_libid arg
2694
# return the library type of file 'arg'
2695
#
2696
# Need a lot of goo to handle *both* DLLs and import libs
2697
# Has to be a shell function in order to 'eat' the argument
2698
# that is supplied when $file_magic_command is called.
2699
func_win32_libid ()
2700
{
2701
  $opt_debug
2702
  win32_libid_type="unknown"
2703
  win32_fileres=`file -L $1 2>/dev/null`
2704
  case $win32_fileres in
2705
  *ar\ archive\ import\ library*) # definitely import
2706
    win32_libid_type="x86 archive import"
2707
    ;;
2708
  *ar\ archive*) # could be an import, or static
2709
    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2710
       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
2711
      win32_nmres=`eval $NM -f posix -A $1 |
2712
        $SED -n -e '
2713
            1,100{
2714
                / I /{
2715
                    s,.*,import,
2716
                    p
2717
                    q
2718
                }
2719
            }'`
2720
      case $win32_nmres in
2721
      import*)  win32_libid_type="x86 archive import";;
2722
      *)        win32_libid_type="x86 archive static";;
2723
      esac
2724
    fi
2725
    ;;
2726
  *DLL*)
2727
    win32_libid_type="x86 DLL"
2728
    ;;
2729
  *executable*) # but shell scripts are "executable" too...
2730
    case $win32_fileres in
2731
    *MS\ Windows\ PE\ Intel*)
2732
      win32_libid_type="x86 DLL"
2733
      ;;
2734
    esac
2735
    ;;
2736
  esac
2737
  $ECHO "$win32_libid_type"
2738
}
2739
 
2740
 
2741
 
2742
# func_extract_an_archive dir oldlib
2743
func_extract_an_archive ()
2744
{
2745
    $opt_debug
2746
    f_ex_an_ar_dir="$1"; shift
2747
    f_ex_an_ar_oldlib="$1"
2748
    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
2749
    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2750
     :
2751
    else
2752
      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2753
    fi
2754
}
2755
 
2756
 
2757
# func_extract_archives gentop oldlib ...
2758
func_extract_archives ()
2759
{
2760
    $opt_debug
2761
    my_gentop="$1"; shift
2762
    my_oldlibs=${1+"$@"}
2763
    my_oldobjs=""
2764
    my_xlib=""
2765
    my_xabs=""
2766
    my_xdir=""
2767
 
2768
    for my_xlib in $my_oldlibs; do
2769
      # Extract the objects.
2770
      case $my_xlib in
2771
        [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2772
        *) my_xabs=`pwd`"/$my_xlib" ;;
2773
      esac
2774
      func_basename "$my_xlib"
2775
      my_xlib="$func_basename_result"
2776
      my_xlib_u=$my_xlib
2777
      while :; do
2778
        case " $extracted_archives " in
2779
        *" $my_xlib_u "*)
2780
          func_arith $extracted_serial + 1
2781
          extracted_serial=$func_arith_result
2782
          my_xlib_u=lt$extracted_serial-$my_xlib ;;
2783
        *) break ;;
2784
        esac
2785
      done
2786
      extracted_archives="$extracted_archives $my_xlib_u"
2787
      my_xdir="$my_gentop/$my_xlib_u"
2788
 
2789
      func_mkdir_p "$my_xdir"
2790
 
2791
      case $host in
2792
      *-darwin*)
2793
        func_verbose "Extracting $my_xabs"
2794
        # Do not bother doing anything if just a dry run
2795
        $opt_dry_run || {
2796
          darwin_orig_dir=`pwd`
2797
          cd $my_xdir || exit $?
2798
          darwin_archive=$my_xabs
2799
          darwin_curdir=`pwd`
2800
          darwin_base_archive=`basename "$darwin_archive"`
2801
          darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2802
          if test -n "$darwin_arches"; then
2803
            darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2804
            darwin_arch=
2805
            func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2806
            for darwin_arch in  $darwin_arches ; do
2807
              func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2808
              $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2809
              cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2810
              func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2811
              cd "$darwin_curdir"
2812
              $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2813
            done # $darwin_arches
2814
            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2815
            darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2816
            darwin_file=
2817
            darwin_files=
2818
            for darwin_file in $darwin_filelist; do
2819
              darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
2820
              $LIPO -create -output "$darwin_file" $darwin_files
2821
            done # $darwin_filelist
2822
            $RM -rf unfat-$$
2823
            cd "$darwin_orig_dir"
2824
          else
2825
            cd $darwin_orig_dir
2826
            func_extract_an_archive "$my_xdir" "$my_xabs"
2827
          fi # $darwin_arches
2828
        } # !$opt_dry_run
2829
        ;;
2830
      *)
2831
        func_extract_an_archive "$my_xdir" "$my_xabs"
2832
        ;;
2833
      esac
2834
      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2835
    done
2836
 
2837
    func_extract_archives_result="$my_oldobjs"
2838
}
2839
 
2840
 
2841
 
2842
# func_emit_wrapper_part1 [arg=no]
2843
#
2844
# Emit the first part of a libtool wrapper script on stdout.
2845
# For more information, see the description associated with
2846
# func_emit_wrapper(), below.
2847
func_emit_wrapper_part1 ()
2848
{
2849
        func_emit_wrapper_part1_arg1=no
2850
        if test -n "$1" ; then
2851
          func_emit_wrapper_part1_arg1=$1
2852
        fi
2853
 
2854
        $ECHO "\
2855
#! $SHELL
2856
 
2857
# $output - temporary wrapper script for $objdir/$outputname
2858
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2859
#
2860
# The $output program cannot be directly executed until all the libtool
2861
# libraries that it depends on are installed.
2862
#
2863
# This wrapper script should never be moved out of the build directory.
2864
# If it is, it will not operate correctly.
2865
 
2866
# Sed substitution that helps us do robust quoting.  It backslashifies
2867
# metacharacters that are still active within double-quoted strings.
2868
Xsed='${SED} -e 1s/^X//'
2869
sed_quote_subst='$sed_quote_subst'
2870
 
2871
# Be Bourne compatible
2872
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2873
  emulate sh
2874
  NULLCMD=:
2875
  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2876
  # is contrary to our usage.  Disable this feature.
2877
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2878
  setopt NO_GLOB_SUBST
2879
else
2880
  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2881
fi
2882
BIN_SH=xpg4; export BIN_SH # for Tru64
2883
DUALCASE=1; export DUALCASE # for MKS sh
2884
 
2885
# The HP-UX ksh and POSIX shell print the target directory to stdout
2886
# if CDPATH is set.
2887
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2888
 
2889
relink_command=\"$relink_command\"
2890
 
2891
# This environment variable determines our operation mode.
2892
if test \"\$libtool_install_magic\" = \"$magic\"; then
2893
  # install mode needs the following variables:
2894
  generated_by_libtool_version='$macro_version'
2895
  notinst_deplibs='$notinst_deplibs'
2896
else
2897
  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2898
  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2899
    ECHO=\"$qecho\"
2900
    file=\"\$0\"
2901
    # Make sure echo works.
2902
    if test \"X\$1\" = X--no-reexec; then
2903
      # Discard the --no-reexec flag, and continue.
2904
      shift
2905
    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
2906
      # Yippee, \$ECHO works!
2907
      :
2908
    else
2909
      # Restart under the correct shell, and then maybe \$ECHO will work.
2910
      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2911
    fi
2912
  fi\
2913
"
2914
        $ECHO "\
2915
 
2916
  # Find the directory that this script lives in.
2917
  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2918
  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2919
 
2920
  # Follow symbolic links until we get to the real thisdir.
2921
  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
2922
  while test -n \"\$file\"; do
2923
    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2924
 
2925
    # If there was a directory component, then change thisdir.
2926
    if test \"x\$destdir\" != \"x\$file\"; then
2927
      case \"\$destdir\" in
2928
      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
2929
      *) thisdir=\"\$thisdir/\$destdir\" ;;
2930
      esac
2931
    fi
2932
 
2933
    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2934
    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
2935
  done
2936
"
2937
}
2938
# end: func_emit_wrapper_part1
2939
 
2940
# func_emit_wrapper_part2 [arg=no]
2941
#
2942
# Emit the second part of a libtool wrapper script on stdout.
2943
# For more information, see the description associated with
2944
# func_emit_wrapper(), below.
2945
func_emit_wrapper_part2 ()
2946
{
2947
        func_emit_wrapper_part2_arg1=no
2948
        if test -n "$1" ; then
2949
          func_emit_wrapper_part2_arg1=$1
2950
        fi
2951
 
2952
        $ECHO "\
2953
 
2954
  # Usually 'no', except on cygwin/mingw when embedded into
2955
  # the cwrapper.
2956
  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
2957
  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
2958
    # special case for '.'
2959
    if test \"\$thisdir\" = \".\"; then
2960
      thisdir=\`pwd\`
2961
    fi
2962
    # remove .libs from thisdir
2963
    case \"\$thisdir\" in
2964
    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
2965
    $objdir )   thisdir=. ;;
2966
    esac
2967
  fi
2968
 
2969
  # Try to get the absolute directory name.
2970
  absdir=\`cd \"\$thisdir\" && pwd\`
2971
  test -n \"\$absdir\" && thisdir=\"\$absdir\"
2972
"
2973
 
2974
        if test "$fast_install" = yes; then
2975
          $ECHO "\
2976
  program=lt-'$outputname'$exeext
2977
  progdir=\"\$thisdir/$objdir\"
2978
 
2979
  if test ! -f \"\$progdir/\$program\" ||
2980
     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
2981
       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2982
 
2983
    file=\"\$\$-\$program\"
2984
 
2985
    if test ! -d \"\$progdir\"; then
2986
      $MKDIR \"\$progdir\"
2987
    else
2988
      $RM \"\$progdir/\$file\"
2989
    fi"
2990
 
2991
          $ECHO "\
2992
 
2993
    # relink executable if necessary
2994
    if test -n \"\$relink_command\"; then
2995
      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
2996
      else
2997
        $ECHO \"\$relink_command_output\" >&2
2998
        $RM \"\$progdir/\$file\"
2999
        exit 1
3000
      fi
3001
    fi
3002
 
3003
    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3004
    { $RM \"\$progdir/\$program\";
3005
      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3006
    $RM \"\$progdir/\$file\"
3007
  fi"
3008
        else
3009
          $ECHO "\
3010
  program='$outputname'
3011
  progdir=\"\$thisdir/$objdir\"
3012
"
3013
        fi
3014
 
3015
        $ECHO "\
3016
 
3017
  if test -f \"\$progdir/\$program\"; then"
3018
 
3019
        # Export our shlibpath_var if we have one.
3020
        if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3021
          $ECHO "\
3022
    # Add our own library path to $shlibpath_var
3023
    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3024
 
3025
    # Some systems cannot cope with colon-terminated $shlibpath_var
3026
    # The second colon is a workaround for a bug in BeOS R4 sed
3027
    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3028
 
3029
    export $shlibpath_var
3030
"
3031
        fi
3032
 
3033
        # fixup the dll searchpath if we need to.
3034
        if test -n "$dllsearchpath"; then
3035
          $ECHO "\
3036
    # Add the dll search path components to the executable PATH
3037
    PATH=$dllsearchpath:\$PATH
3038
"
3039
        fi
3040
 
3041
        $ECHO "\
3042
    if test \"\$libtool_execute_magic\" != \"$magic\"; then
3043
      # Run the actual program with our arguments.
3044
"
3045
        case $host in
3046
        # Backslashes separate directories on plain windows
3047
        *-*-mingw | *-*-os2* | *-cegcc*)
3048
          $ECHO "\
3049
      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3050
"
3051
          ;;
3052
 
3053
        *)
3054
          $ECHO "\
3055
      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3056
"
3057
          ;;
3058
        esac
3059
        $ECHO "\
3060
      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3061
      exit 1
3062
    fi
3063
  else
3064
    # The program doesn't exist.
3065
    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
3066
    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
3067
    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3068
    exit 1
3069
  fi
3070
fi\
3071
"
3072
}
3073
# end: func_emit_wrapper_part2
3074
 
3075
 
3076
# func_emit_wrapper [arg=no]
3077
#
3078
# Emit a libtool wrapper script on stdout.
3079
# Don't directly open a file because we may want to
3080
# incorporate the script contents within a cygwin/mingw
3081
# wrapper executable.  Must ONLY be called from within
3082
# func_mode_link because it depends on a number of variables
3083
# set therein.
3084
#
3085
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3086
# variable will take.  If 'yes', then the emitted script
3087
# will assume that the directory in which it is stored is
3088
# the $objdir directory.  This is a cygwin/mingw-specific
3089
# behavior.
3090
func_emit_wrapper ()
3091
{
3092
        func_emit_wrapper_arg1=no
3093
        if test -n "$1" ; then
3094
          func_emit_wrapper_arg1=$1
3095
        fi
3096
 
3097
        # split this up so that func_emit_cwrapperexe_src
3098
        # can call each part independently.
3099
        func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
3100
        func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
3101
}
3102
 
3103
 
3104
# func_to_host_path arg
3105
#
3106
# Convert paths to host format when used with build tools.
3107
# Intended for use with "native" mingw (where libtool itself
3108
# is running under the msys shell), or in the following cross-
3109
# build environments:
3110
#    $build          $host
3111
#    mingw (msys)    mingw  [e.g. native]
3112
#    cygwin          mingw
3113
#    *nix + wine     mingw
3114
# where wine is equipped with the `winepath' executable.
3115
# In the native mingw case, the (msys) shell automatically
3116
# converts paths for any non-msys applications it launches,
3117
# but that facility isn't available from inside the cwrapper.
3118
# Similar accommodations are necessary for $host mingw and
3119
# $build cygwin.  Calling this function does no harm for other
3120
# $host/$build combinations not listed above.
3121
#
3122
# ARG is the path (on $build) that should be converted to
3123
# the proper representation for $host. The result is stored
3124
# in $func_to_host_path_result.
3125
func_to_host_path ()
3126
{
3127
  func_to_host_path_result="$1"
3128
  if test -n "$1" ; then
3129
    case $host in
3130
      *mingw* )
3131
        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3132
        case $build in
3133
          *mingw* ) # actually, msys
3134
            # awkward: cmd appends spaces to result
3135
            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3136
            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
3137
              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3138
            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3139
              $SED -e "$lt_sed_naive_backslashify"`
3140
            ;;
3141
          *cygwin* )
3142
            func_to_host_path_tmp1=`cygpath -w "$1"`
3143
            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3144
              $SED -e "$lt_sed_naive_backslashify"`
3145
            ;;
3146
          * )
3147
            # Unfortunately, winepath does not exit with a non-zero
3148
            # error code, so we are forced to check the contents of
3149
            # stdout. On the other hand, if the command is not
3150
            # found, the shell will set an exit code of 127 and print
3151
            # *an error message* to stdout. So we must check for both
3152
            # error code of zero AND non-empty stdout, which explains
3153
            # the odd construction:
3154
            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3155
            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3156
              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3157
                $SED -e "$lt_sed_naive_backslashify"`
3158
            else
3159
              # Allow warning below.
3160
              func_to_host_path_result=""
3161
            fi
3162
            ;;
3163
        esac
3164
        if test -z "$func_to_host_path_result" ; then
3165
          func_error "Could not determine host path corresponding to"
3166
          func_error "  '$1'"
3167
          func_error "Continuing, but uninstalled executables may not work."
3168
          # Fallback:
3169
          func_to_host_path_result="$1"
3170
        fi
3171
        ;;
3172
    esac
3173
  fi
3174
}
3175
# end: func_to_host_path
3176
 
3177
# func_to_host_pathlist arg
3178
#
3179
# Convert pathlists to host format when used with build tools.
3180
# See func_to_host_path(), above. This function supports the
3181
# following $build/$host combinations (but does no harm for
3182
# combinations not listed here):
3183
#    $build          $host
3184
#    mingw (msys)    mingw  [e.g. native]
3185
#    cygwin          mingw
3186
#    *nix + wine     mingw
3187
#
3188
# Path separators are also converted from $build format to
3189
# $host format. If ARG begins or ends with a path separator
3190
# character, it is preserved (but converted to $host format)
3191
# on output.
3192
#
3193
# ARG is a pathlist (on $build) that should be converted to
3194
# the proper representation on $host. The result is stored
3195
# in $func_to_host_pathlist_result.
3196
func_to_host_pathlist ()
3197
{
3198
  func_to_host_pathlist_result="$1"
3199
  if test -n "$1" ; then
3200
    case $host in
3201
      *mingw* )
3202
        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3203
        # Remove leading and trailing path separator characters from
3204
        # ARG. msys behavior is inconsistent here, cygpath turns them
3205
        # into '.;' and ';.', and winepath ignores them completely.
3206
        func_to_host_pathlist_tmp2="$1"
3207
        # Once set for this call, this variable should not be
3208
        # reassigned. It is used in tha fallback case.
3209
        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3210
          $SED -e 's|^:*||' -e 's|:*$||'`
3211
        case $build in
3212
          *mingw* ) # Actually, msys.
3213
            # Awkward: cmd appends spaces to result.
3214
            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3215
            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3216
              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3217
            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3218
              $SED -e "$lt_sed_naive_backslashify"`
3219
            ;;
3220
          *cygwin* )
3221
            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3222
            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3223
              $SED -e "$lt_sed_naive_backslashify"`
3224
            ;;
3225
          * )
3226
            # unfortunately, winepath doesn't convert pathlists
3227
            func_to_host_pathlist_result=""
3228
            func_to_host_pathlist_oldIFS=$IFS
3229
            IFS=:
3230
            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3231
              IFS=$func_to_host_pathlist_oldIFS
3232
              if test -n "$func_to_host_pathlist_f" ; then
3233
                func_to_host_path "$func_to_host_pathlist_f"
3234
                if test -n "$func_to_host_path_result" ; then
3235
                  if test -z "$func_to_host_pathlist_result" ; then
3236
                    func_to_host_pathlist_result="$func_to_host_path_result"
3237
                  else
3238
                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3239
                  fi
3240
                fi
3241
              fi
3242
              IFS=:
3243
            done
3244
            IFS=$func_to_host_pathlist_oldIFS
3245
            ;;
3246
        esac
3247
        if test -z "$func_to_host_pathlist_result" ; then
3248
          func_error "Could not determine the host path(s) corresponding to"
3249
          func_error "  '$1'"
3250
          func_error "Continuing, but uninstalled executables may not work."
3251
          # Fallback. This may break if $1 contains DOS-style drive
3252
          # specifications. The fix is not to complicate the expression
3253
          # below, but for the user to provide a working wine installation
3254
          # with winepath so that path translation in the cross-to-mingw
3255
          # case works properly.
3256
          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3257
          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3258
            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3259
        fi
3260
        # Now, add the leading and trailing path separators back
3261
        case "$1" in
3262
          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3263
            ;;
3264
        esac
3265
        case "$1" in
3266
          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3267
            ;;
3268
        esac
3269
        ;;
3270
    esac
3271
  fi
3272
}
3273
# end: func_to_host_pathlist
3274
 
3275
# func_emit_cwrapperexe_src
3276
# emit the source code for a wrapper executable on stdout
3277
# Must ONLY be called from within func_mode_link because
3278
# it depends on a number of variable set therein.
3279
func_emit_cwrapperexe_src ()
3280
{
3281
        cat <<EOF
3282
 
3283
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3284
   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3285
 
3286
   The $output program cannot be directly executed until all the libtool
3287
   libraries that it depends on are installed.
3288
 
3289
   This wrapper executable should never be moved out of the build directory.
3290
   If it is, it will not operate correctly.
3291
 
3292
   Currently, it simply execs the wrapper *script* "$SHELL $output",
3293
   but could eventually absorb all of the scripts functionality and
3294
   exec $objdir/$outputname directly.
3295
*/
3296
EOF
3297
            cat <<"EOF"
3298
#include <stdio.h>
3299
#include <stdlib.h>
3300
#ifdef _MSC_VER
3301
# include <direct.h>
3302
# include <process.h>
3303
# include <io.h>
3304
# define setmode _setmode
3305
#else
3306
# include <unistd.h>
3307
# include <stdint.h>
3308
# ifdef __CYGWIN__
3309
#  include <io.h>
3310
#  define HAVE_SETENV
3311
#  ifdef __STRICT_ANSI__
3312
char *realpath (const char *, char *);
3313
int putenv (char *);
3314
int setenv (const char *, const char *, int);
3315
#  endif
3316
# endif
3317
#endif
3318
#include <malloc.h>
3319
#include <stdarg.h>
3320
#include <assert.h>
3321
#include <string.h>
3322
#include <ctype.h>
3323
#include <errno.h>
3324
#include <fcntl.h>
3325
#include <sys/stat.h>
3326
 
3327
#if defined(PATH_MAX)
3328
# define LT_PATHMAX PATH_MAX
3329
#elif defined(MAXPATHLEN)
3330
# define LT_PATHMAX MAXPATHLEN
3331
#else
3332
# define LT_PATHMAX 1024
3333
#endif
3334
 
3335
#ifndef S_IXOTH
3336
# define S_IXOTH 0
3337
#endif
3338
#ifndef S_IXGRP
3339
# define S_IXGRP 0
3340
#endif
3341
 
3342
#ifdef _MSC_VER
3343
# define S_IXUSR _S_IEXEC
3344
# define stat _stat
3345
# ifndef _INTPTR_T_DEFINED
3346
#  define intptr_t int
3347
# endif
3348
#endif
3349
 
3350
#ifndef DIR_SEPARATOR
3351
# define DIR_SEPARATOR '/'
3352
# define PATH_SEPARATOR ':'
3353
#endif
3354
 
3355
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3356
  defined (__OS2__)
3357
# define HAVE_DOS_BASED_FILE_SYSTEM
3358
# define FOPEN_WB "wb"
3359
# ifndef DIR_SEPARATOR_2
3360
#  define DIR_SEPARATOR_2 '\\'
3361
# endif
3362
# ifndef PATH_SEPARATOR_2
3363
#  define PATH_SEPARATOR_2 ';'
3364
# endif
3365
#endif
3366
 
3367
#ifndef DIR_SEPARATOR_2
3368
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3369
#else /* DIR_SEPARATOR_2 */
3370
# define IS_DIR_SEPARATOR(ch) \
3371
        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3372
#endif /* DIR_SEPARATOR_2 */
3373
 
3374
#ifndef PATH_SEPARATOR_2
3375
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3376
#else /* PATH_SEPARATOR_2 */
3377
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3378
#endif /* PATH_SEPARATOR_2 */
3379
 
3380
#ifdef __CYGWIN__
3381
# define FOPEN_WB "wb"
3382
#endif
3383
 
3384
#ifndef FOPEN_WB
3385
# define FOPEN_WB "w"
3386
#endif
3387
#ifndef _O_BINARY
3388
# define _O_BINARY 0
3389
#endif
3390
 
3391
#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3392
#define XFREE(stale) do { \
3393
  if (stale) { free ((void *) stale); stale = 0; } \
3394
} while (0)
3395
 
3396
#undef LTWRAPPER_DEBUGPRINTF
3397
#if defined DEBUGWRAPPER
3398
# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3399
static void
3400
ltwrapper_debugprintf (const char *fmt, ...)
3401
{
3402
    va_list args;
3403
    va_start (args, fmt);
3404
    (void) vfprintf (stderr, fmt, args);
3405
    va_end (args);
3406
}
3407
#else
3408
# define LTWRAPPER_DEBUGPRINTF(args)
3409
#endif
3410
 
3411
const char *program_name = NULL;
3412
 
3413
void *xmalloc (size_t num);
3414
char *xstrdup (const char *string);
3415
const char *base_name (const char *name);
3416
char *find_executable (const char *wrapper);
3417
char *chase_symlinks (const char *pathspec);
3418
int make_executable (const char *path);
3419
int check_executable (const char *path);
3420
char *strendzap (char *str, const char *pat);
3421
void lt_fatal (const char *message, ...);
3422
void lt_setenv (const char *name, const char *value);
3423
char *lt_extend_str (const char *orig_value, const char *add, int to_end);
3424
void lt_opt_process_env_set (const char *arg);
3425
void lt_opt_process_env_prepend (const char *arg);
3426
void lt_opt_process_env_append (const char *arg);
3427
int lt_split_name_value (const char *arg, char** name, char** value);
3428
void lt_update_exe_path (const char *name, const char *value);
3429
void lt_update_lib_path (const char *name, const char *value);
3430
 
3431
static const char *script_text_part1 =
3432
EOF
3433
 
3434
            func_emit_wrapper_part1 yes |
3435
                $SED -e 's/\([\\"]\)/\\\1/g' \
3436
                     -e 's/^/  "/' -e 's/$/\\n"/'
3437
            echo ";"
3438
            cat <<EOF
3439
 
3440
static const char *script_text_part2 =
3441
EOF
3442
            func_emit_wrapper_part2 yes |
3443
                $SED -e 's/\([\\"]\)/\\\1/g' \
3444
                     -e 's/^/  "/' -e 's/$/\\n"/'
3445
            echo ";"
3446
 
3447
            cat <<EOF
3448
const char * MAGIC_EXE = "$magic_exe";
3449
const char * LIB_PATH_VARNAME = "$shlibpath_var";
3450
EOF
3451
 
3452
            if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3453
              func_to_host_pathlist "$temp_rpath"
3454
              cat <<EOF
3455
const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3456
EOF
3457
            else
3458
              cat <<"EOF"
3459
const char * LIB_PATH_VALUE   = "";
3460
EOF
3461
            fi
3462
 
3463
            if test -n "$dllsearchpath"; then
3464
              func_to_host_pathlist "$dllsearchpath:"
3465
              cat <<EOF
3466
const char * EXE_PATH_VARNAME = "PATH";
3467
const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3468
EOF
3469
            else
3470
              cat <<"EOF"
3471
const char * EXE_PATH_VARNAME = "";
3472
const char * EXE_PATH_VALUE   = "";
3473
EOF
3474
            fi
3475
 
3476
            if test "$fast_install" = yes; then
3477
              cat <<EOF
3478
const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3479
EOF
3480
            else
3481
              cat <<EOF
3482
const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3483
EOF
3484
            fi
3485
 
3486
 
3487
            cat <<"EOF"
3488
 
3489
#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3490
#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
3491
 
3492
static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
3493
static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3494
 
3495
static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3496
 
3497
static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3498
static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
3499
  /* argument is putenv-style "foo=bar", value of foo is set to bar */
3500
 
3501
static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3502
static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
3503
  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
3504
 
3505
static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3506
static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
3507
  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
3508
 
3509
int
3510
main (int argc, char *argv[])
3511
{
3512
  char **newargz;
3513
  int  newargc;
3514
  char *tmp_pathspec;
3515
  char *actual_cwrapper_path;
3516
  char *actual_cwrapper_name;
3517
  char *target_name;
3518
  char *lt_argv_zero;
3519
  intptr_t rval = 127;
3520
 
3521
  int i;
3522
 
3523
  program_name = (char *) xstrdup (base_name (argv[0]));
3524
  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
3525
  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
3526
 
3527
  /* very simple arg parsing; don't want to rely on getopt */
3528
  for (i = 1; i < argc; i++)
3529
    {
3530
      if (strcmp (argv[i], dumpscript_opt) == 0)
3531
        {
3532
EOF
3533
            case "$host" in
3534
              *mingw* | *cygwin* )
3535
                # make stdout use "unix" line endings
3536
                echo "          setmode(1,_O_BINARY);"
3537
                ;;
3538
              esac
3539
 
3540
            cat <<"EOF"
3541
          printf ("%s", script_text_part1);
3542
          printf ("%s", script_text_part2);
3543
          return 0;
3544
        }
3545
    }
3546
 
3547
  newargz = XMALLOC (char *, argc + 1);
3548
  tmp_pathspec = find_executable (argv[0]);
3549
  if (tmp_pathspec == NULL)
3550
    lt_fatal ("Couldn't find %s", argv[0]);
3551
  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
3552
                          tmp_pathspec));
3553
 
3554
  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3555
  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
3556
                          actual_cwrapper_path));
3557
  XFREE (tmp_pathspec);
3558
 
3559
  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
3560
  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3561
 
3562
  /* wrapper name transforms */
3563
  strendzap (actual_cwrapper_name, ".exe");
3564
  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3565
  XFREE (actual_cwrapper_name);
3566
  actual_cwrapper_name = tmp_pathspec;
3567
  tmp_pathspec = 0;
3568
 
3569
  /* target_name transforms -- use actual target program name; might have lt- prefix */
3570
  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3571
  strendzap (target_name, ".exe");
3572
  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3573
  XFREE (target_name);
3574
  target_name = tmp_pathspec;
3575
  tmp_pathspec = 0;
3576
 
3577
  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
3578
                          target_name));
3579
EOF
3580
 
3581
            cat <<EOF
3582
  newargz[0] =
3583
    XMALLOC (char, (strlen (actual_cwrapper_path) +
3584
                    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3585
  strcpy (newargz[0], actual_cwrapper_path);
3586
  strcat (newargz[0], "$objdir");
3587
  strcat (newargz[0], "/");
3588
EOF
3589
 
3590
            cat <<"EOF"
3591
  /* stop here, and copy so we don't have to do this twice */
3592
  tmp_pathspec = xstrdup (newargz[0]);
3593
 
3594
  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3595
  strcat (newargz[0], actual_cwrapper_name);
3596
 
3597
  /* DO want the lt- prefix here if it exists, so use target_name */
3598
  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3599
  XFREE (tmp_pathspec);
3600
  tmp_pathspec = NULL;
3601
EOF
3602
 
3603
            case $host_os in
3604
              mingw*)
3605
            cat <<"EOF"
3606
  {
3607
    char* p;
3608
    while ((p = strchr (newargz[0], '\\')) != NULL)
3609
      {
3610
        *p = '/';
3611
      }
3612
    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3613
      {
3614
        *p = '/';
3615
      }
3616
  }
3617
EOF
3618
            ;;
3619
            esac
3620
 
3621
            cat <<"EOF"
3622
  XFREE (target_name);
3623
  XFREE (actual_cwrapper_path);
3624
  XFREE (actual_cwrapper_name);
3625
 
3626
  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3627
  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3628
  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3629
  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3630
 
3631
  newargc=0;
3632
  for (i = 1; i < argc; i++)
3633
    {
3634
      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3635
        {
3636
          if (argv[i][env_set_opt_len] == '=')
3637
            {
3638
              const char *p = argv[i] + env_set_opt_len + 1;
3639
              lt_opt_process_env_set (p);
3640
            }
3641
          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3642
            {
3643
              lt_opt_process_env_set (argv[++i]); /* don't copy */
3644
            }
3645
          else
3646
            lt_fatal ("%s missing required argument", env_set_opt);
3647
          continue;
3648
        }
3649
      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
3650
        {
3651
          if (argv[i][env_prepend_opt_len] == '=')
3652
            {
3653
              const char *p = argv[i] + env_prepend_opt_len + 1;
3654
              lt_opt_process_env_prepend (p);
3655
            }
3656
          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
3657
            {
3658
              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
3659
            }
3660
          else
3661
            lt_fatal ("%s missing required argument", env_prepend_opt);
3662
          continue;
3663
        }
3664
      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
3665
        {
3666
          if (argv[i][env_append_opt_len] == '=')
3667
            {
3668
              const char *p = argv[i] + env_append_opt_len + 1;
3669
              lt_opt_process_env_append (p);
3670
            }
3671
          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
3672
            {
3673
              lt_opt_process_env_append (argv[++i]); /* don't copy */
3674
            }
3675
          else
3676
            lt_fatal ("%s missing required argument", env_append_opt);
3677
          continue;
3678
        }
3679
      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
3680
        {
3681
          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3682
             namespace, but it is not one of the ones we know about and
3683
             have already dealt with, above (inluding dump-script), then
3684
             report an error. Otherwise, targets might begin to believe
3685
             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3686
             namespace. The first time any user complains about this, we'll
3687
             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3688
             or a configure.ac-settable value.
3689
           */
3690
          lt_fatal ("Unrecognized option in %s namespace: '%s'",
3691
                    ltwrapper_option_prefix, argv[i]);
3692
        }
3693
      /* otherwise ... */
3694
      newargz[++newargc] = xstrdup (argv[i]);
3695
    }
3696
  newargz[++newargc] = NULL;
3697
 
3698
  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
3699
  for (i = 0; i < newargc; i++)
3700
    {
3701
      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
3702
    }
3703
 
3704
EOF
3705
 
3706
            case $host_os in
3707
              mingw*)
3708
                cat <<"EOF"
3709
  /* execv doesn't actually work on mingw as expected on unix */
3710
  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3711
  if (rval == -1)
3712
    {
3713
      /* failed to start process */
3714
      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
3715
      return 127;
3716
    }
3717
  return rval;
3718
EOF
3719
                ;;
3720
              *)
3721
                cat <<"EOF"
3722
  execv (lt_argv_zero, newargz);
3723
  return rval; /* =127, but avoids unused variable warning */
3724
EOF
3725
                ;;
3726
            esac
3727
 
3728
            cat <<"EOF"
3729
}
3730
 
3731
void *
3732
xmalloc (size_t num)
3733
{
3734
  void *p = (void *) malloc (num);
3735
  if (!p)
3736
    lt_fatal ("Memory exhausted");
3737
 
3738
  return p;
3739
}
3740
 
3741
char *
3742
xstrdup (const char *string)
3743
{
3744
  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3745
                          string) : NULL;
3746
}
3747
 
3748
const char *
3749
base_name (const char *name)
3750
{
3751
  const char *base;
3752
 
3753
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3754
  /* Skip over the disk name in MSDOS pathnames. */
3755
  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3756
    name += 2;
3757
#endif
3758
 
3759
  for (base = name; *name; name++)
3760
    if (IS_DIR_SEPARATOR (*name))
3761
      base = name + 1;
3762
  return base;
3763
}
3764
 
3765
int
3766
check_executable (const char *path)
3767
{
3768
  struct stat st;
3769
 
3770
  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
3771
                          path ? (*path ? path : "EMPTY!") : "NULL!"));
3772
  if ((!path) || (!*path))
3773
    return 0;
3774
 
3775
  if ((stat (path, &st) >= 0)
3776
      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3777
    return 1;
3778
  else
3779
    return 0;
3780
}
3781
 
3782
int
3783
make_executable (const char *path)
3784
{
3785
  int rval = 0;
3786
  struct stat st;
3787
 
3788
  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
3789
                          path ? (*path ? path : "EMPTY!") : "NULL!"));
3790
  if ((!path) || (!*path))
3791
    return 0;
3792
 
3793
  if (stat (path, &st) >= 0)
3794
    {
3795
      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3796
    }
3797
  return rval;
3798
}
3799
 
3800
/* Searches for the full path of the wrapper.  Returns
3801
   newly allocated full path name if found, NULL otherwise
3802
   Does not chase symlinks, even on platforms that support them.
3803
*/
3804
char *
3805
find_executable (const char *wrapper)
3806
{
3807
  int has_slash = 0;
3808
  const char *p;
3809
  const char *p_next;
3810
  /* static buffer for getcwd */
3811
  char tmp[LT_PATHMAX + 1];
3812
  int tmp_len;
3813
  char *concat_name;
3814
 
3815
  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
3816
                          wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
3817
 
3818
  if ((wrapper == NULL) || (*wrapper == '\0'))
3819
    return NULL;
3820
 
3821
  /* Absolute path? */
3822
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3823
  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3824
    {
3825
      concat_name = xstrdup (wrapper);
3826
      if (check_executable (concat_name))
3827
        return concat_name;
3828
      XFREE (concat_name);
3829
    }
3830
  else
3831
    {
3832
#endif
3833
      if (IS_DIR_SEPARATOR (wrapper[0]))
3834
        {
3835
          concat_name = xstrdup (wrapper);
3836
          if (check_executable (concat_name))
3837
            return concat_name;
3838
          XFREE (concat_name);
3839
        }
3840
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3841
    }
3842
#endif
3843
 
3844
  for (p = wrapper; *p; p++)
3845
    if (*p == '/')
3846
      {
3847
        has_slash = 1;
3848
        break;
3849
      }
3850
  if (!has_slash)
3851
    {
3852
      /* no slashes; search PATH */
3853
      const char *path = getenv ("PATH");
3854
      if (path != NULL)
3855
        {
3856
          for (p = path; *p; p = p_next)
3857
            {
3858
              const char *q;
3859
              size_t p_len;
3860
              for (q = p; *q; q++)
3861
                if (IS_PATH_SEPARATOR (*q))
3862
                  break;
3863
              p_len = q - p;
3864
              p_next = (*q == '\0' ? q : q + 1);
3865
              if (p_len == 0)
3866
                {
3867
                  /* empty path: current directory */
3868
                  if (getcwd (tmp, LT_PATHMAX) == NULL)
3869
                    lt_fatal ("getcwd failed");
3870
                  tmp_len = strlen (tmp);
3871
                  concat_name =
3872
                    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3873
                  memcpy (concat_name, tmp, tmp_len);
3874
                  concat_name[tmp_len] = '/';
3875
                  strcpy (concat_name + tmp_len + 1, wrapper);
3876
                }
3877
              else
3878
                {
3879
                  concat_name =
3880
                    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3881
                  memcpy (concat_name, p, p_len);
3882
                  concat_name[p_len] = '/';
3883
                  strcpy (concat_name + p_len + 1, wrapper);
3884
                }
3885
              if (check_executable (concat_name))
3886
                return concat_name;
3887
              XFREE (concat_name);
3888
            }
3889
        }
3890
      /* not found in PATH; assume curdir */
3891
    }
3892
  /* Relative path | not found in path: prepend cwd */
3893
  if (getcwd (tmp, LT_PATHMAX) == NULL)
3894
    lt_fatal ("getcwd failed");
3895
  tmp_len = strlen (tmp);
3896
  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3897
  memcpy (concat_name, tmp, tmp_len);
3898
  concat_name[tmp_len] = '/';
3899
  strcpy (concat_name + tmp_len + 1, wrapper);
3900
 
3901
  if (check_executable (concat_name))
3902
    return concat_name;
3903
  XFREE (concat_name);
3904
  return NULL;
3905
}
3906
 
3907
char *
3908
chase_symlinks (const char *pathspec)
3909
{
3910
#ifndef S_ISLNK
3911
  return xstrdup (pathspec);
3912
#else
3913
  char buf[LT_PATHMAX];
3914
  struct stat s;
3915
  char *tmp_pathspec = xstrdup (pathspec);
3916
  char *p;
3917
  int has_symlinks = 0;
3918
  while (strlen (tmp_pathspec) && !has_symlinks)
3919
    {
3920
      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
3921
                              tmp_pathspec));
3922
      if (lstat (tmp_pathspec, &s) == 0)
3923
        {
3924
          if (S_ISLNK (s.st_mode) != 0)
3925
            {
3926
              has_symlinks = 1;
3927
              break;
3928
            }
3929
 
3930
          /* search backwards for last DIR_SEPARATOR */
3931
          p = tmp_pathspec + strlen (tmp_pathspec) - 1;
3932
          while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3933
            p--;
3934
          if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
3935
            {
3936
              /* no more DIR_SEPARATORS left */
3937
              break;
3938
            }
3939
          *p = '\0';
3940
        }
3941
      else
3942
        {
3943
          char *errstr = strerror (errno);
3944
          lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
3945
        }
3946
    }
3947
  XFREE (tmp_pathspec);
3948
 
3949
  if (!has_symlinks)
3950
    {
3951
      return xstrdup (pathspec);
3952
    }
3953
 
3954
  tmp_pathspec = realpath (pathspec, buf);
3955
  if (tmp_pathspec == 0)
3956
    {
3957
      lt_fatal ("Could not follow symlinks for %s", pathspec);
3958
    }
3959
  return xstrdup (tmp_pathspec);
3960
#endif
3961
}
3962
 
3963
char *
3964
strendzap (char *str, const char *pat)
3965
{
3966
  size_t len, patlen;
3967
 
3968
  assert (str != NULL);
3969
  assert (pat != NULL);
3970
 
3971
  len = strlen (str);
3972
  patlen = strlen (pat);
3973
 
3974
  if (patlen <= len)
3975
    {
3976
      str += len - patlen;
3977
      if (strcmp (str, pat) == 0)
3978
        *str = '\0';
3979
    }
3980
  return str;
3981
}
3982
 
3983
static void
3984
lt_error_core (int exit_status, const char *mode,
3985
               const char *message, va_list ap)
3986
{
3987
  fprintf (stderr, "%s: %s: ", program_name, mode);
3988
  vfprintf (stderr, message, ap);
3989
  fprintf (stderr, ".\n");
3990
 
3991
  if (exit_status >= 0)
3992
    exit (exit_status);
3993
}
3994
 
3995
void
3996
lt_fatal (const char *message, ...)
3997
{
3998
  va_list ap;
3999
  va_start (ap, message);
4000
  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4001
  va_end (ap);
4002
}
4003
 
4004
void
4005
lt_setenv (const char *name, const char *value)
4006
{
4007
  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
4008
                          (name ? name : "<NULL>"),
4009
                          (value ? value : "<NULL>")));
4010
  {
4011
#ifdef HAVE_SETENV
4012
    /* always make a copy, for consistency with !HAVE_SETENV */
4013
    char *str = xstrdup (value);
4014
    setenv (name, str, 1);
4015
#else
4016
    int len = strlen (name) + 1 + strlen (value) + 1;
4017
    char *str = XMALLOC (char, len);
4018
    sprintf (str, "%s=%s", name, value);
4019
    if (putenv (str) != EXIT_SUCCESS)
4020
      {
4021
        XFREE (str);
4022
      }
4023
#endif
4024
  }
4025
}
4026
 
4027
char *
4028
lt_extend_str (const char *orig_value, const char *add, int to_end)
4029
{
4030
  char *new_value;
4031
  if (orig_value && *orig_value)
4032
    {
4033
      int orig_value_len = strlen (orig_value);
4034
      int add_len = strlen (add);
4035
      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4036
      if (to_end)
4037
        {
4038
          strcpy (new_value, orig_value);
4039
          strcpy (new_value + orig_value_len, add);
4040
        }
4041
      else
4042
        {
4043
          strcpy (new_value, add);
4044
          strcpy (new_value + add_len, orig_value);
4045
        }
4046
    }
4047
  else
4048
    {
4049
      new_value = xstrdup (add);
4050
    }
4051
  return new_value;
4052
}
4053
 
4054
int
4055
lt_split_name_value (const char *arg, char** name, char** value)
4056
{
4057
  const char *p;
4058
  int len;
4059
  if (!arg || !*arg)
4060
    return 1;
4061
 
4062
  p = strchr (arg, (int)'=');
4063
 
4064
  if (!p)
4065
    return 1;
4066
 
4067
  *value = xstrdup (++p);
4068
 
4069
  len = strlen (arg) - strlen (*value);
4070
  *name = XMALLOC (char, len);
4071
  strncpy (*name, arg, len-1);
4072
  (*name)[len - 1] = '\0';
4073
 
4074
  return 0;
4075
}
4076
 
4077
void
4078
lt_opt_process_env_set (const char *arg)
4079
{
4080
  char *name = NULL;
4081
  char *value = NULL;
4082
 
4083
  if (lt_split_name_value (arg, &name, &value) != 0)
4084
    {
4085
      XFREE (name);
4086
      XFREE (value);
4087
      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
4088
    }
4089
 
4090
  lt_setenv (name, value);
4091
  XFREE (name);
4092
  XFREE (value);
4093
}
4094
 
4095
void
4096
lt_opt_process_env_prepend (const char *arg)
4097
{
4098
  char *name = NULL;
4099
  char *value = NULL;
4100
  char *new_value = NULL;
4101
 
4102
  if (lt_split_name_value (arg, &name, &value) != 0)
4103
    {
4104
      XFREE (name);
4105
      XFREE (value);
4106
      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
4107
    }
4108
 
4109
  new_value = lt_extend_str (getenv (name), value, 0);
4110
  lt_setenv (name, new_value);
4111
  XFREE (new_value);
4112
  XFREE (name);
4113
  XFREE (value);
4114
}
4115
 
4116
void
4117
lt_opt_process_env_append (const char *arg)
4118
{
4119
  char *name = NULL;
4120
  char *value = NULL;
4121
  char *new_value = NULL;
4122
 
4123
  if (lt_split_name_value (arg, &name, &value) != 0)
4124
    {
4125
      XFREE (name);
4126
      XFREE (value);
4127
      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
4128
    }
4129
 
4130
  new_value = lt_extend_str (getenv (name), value, 1);
4131
  lt_setenv (name, new_value);
4132
  XFREE (new_value);
4133
  XFREE (name);
4134
  XFREE (value);
4135
}
4136
 
4137
void
4138
lt_update_exe_path (const char *name, const char *value)
4139
{
4140
  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4141
                          (name ? name : "<NULL>"),
4142
                          (value ? value : "<NULL>")));
4143
 
4144
  if (name && *name && value && *value)
4145
    {
4146
      char *new_value = lt_extend_str (getenv (name), value, 0);
4147
      /* some systems can't cope with a ':'-terminated path #' */
4148
      int len = strlen (new_value);
4149
      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4150
        {
4151
          new_value[len-1] = '\0';
4152
        }
4153
      lt_setenv (name, new_value);
4154
      XFREE (new_value);
4155
    }
4156
}
4157
 
4158
void
4159
lt_update_lib_path (const char *name, const char *value)
4160
{
4161
  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4162
                          (name ? name : "<NULL>"),
4163
                          (value ? value : "<NULL>")));
4164
 
4165
  if (name && *name && value && *value)
4166
    {
4167
      char *new_value = lt_extend_str (getenv (name), value, 0);
4168
      lt_setenv (name, new_value);
4169
      XFREE (new_value);
4170
    }
4171
}
4172
 
4173
 
4174
EOF
4175
}
4176
# end: func_emit_cwrapperexe_src
4177
 
4178
# func_mode_link arg...
4179
func_mode_link ()
4180
{
4181
    $opt_debug
4182
    case $host in
4183
    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4184
      # It is impossible to link a dll without this setting, and
4185
      # we shouldn't force the makefile maintainer to figure out
4186
      # which system we are compiling for in order to pass an extra
4187
      # flag for every libtool invocation.
4188
      # allow_undefined=no
4189
 
4190
      # FIXME: Unfortunately, there are problems with the above when trying
4191
      # to make a dll which has undefined symbols, in which case not
4192
      # even a static library is built.  For now, we need to specify
4193
      # -no-undefined on the libtool link line when we can be certain
4194
      # that all symbols are satisfied, otherwise we get a static library.
4195
      allow_undefined=yes
4196
      ;;
4197
    *)
4198
      allow_undefined=yes
4199
      ;;
4200
    esac
4201
    libtool_args=$nonopt
4202
    base_compile="$nonopt $@"
4203
    compile_command=$nonopt
4204
    finalize_command=$nonopt
4205
 
4206
    compile_rpath=
4207
    finalize_rpath=
4208
    compile_shlibpath=
4209
    finalize_shlibpath=
4210
    convenience=
4211
    old_convenience=
4212
    deplibs=
4213
    old_deplibs=
4214
    compiler_flags=
4215
    linker_flags=
4216
    dllsearchpath=
4217
    lib_search_path=`pwd`
4218
    inst_prefix_dir=
4219
    new_inherited_linker_flags=
4220
 
4221
    avoid_version=no
4222
    bindir=
4223
    dlfiles=
4224
    dlprefiles=
4225
    dlself=no
4226
    export_dynamic=no
4227
    export_symbols=
4228
    export_symbols_regex=
4229
    generated=
4230
    libobjs=
4231
    ltlibs=
4232
    module=no
4233
    no_install=no
4234
    objs=
4235
    non_pic_objects=
4236
    precious_files_regex=
4237
    prefer_static_libs=no
4238
    preload=no
4239
    prev=
4240
    prevarg=
4241
    release=
4242
    rpath=
4243
    xrpath=
4244
    perm_rpath=
4245
    temp_rpath=
4246
    thread_safe=no
4247
    vinfo=
4248
    vinfo_number=no
4249
    weak_libs=
4250
    single_module="${wl}-single_module"
4251
    func_infer_tag $base_compile
4252
 
4253
    # We need to know -static, to get the right output filenames.
4254
    for arg
4255
    do
4256
      case $arg in
4257
      -shared)
4258
        test "$build_libtool_libs" != yes && \
4259
          func_fatal_configuration "can not build a shared library"
4260
        build_old_libs=no
4261
        break
4262
        ;;
4263
      -all-static | -static | -static-libtool-libs)
4264
        case $arg in
4265
        -all-static)
4266
          if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4267
            func_warning "complete static linking is impossible in this configuration"
4268
          fi
4269
          if test -n "$link_static_flag"; then
4270
            dlopen_self=$dlopen_self_static
4271
          fi
4272
          prefer_static_libs=yes
4273
          ;;
4274
        -static)
4275
          if test -z "$pic_flag" && test -n "$link_static_flag"; then
4276
            dlopen_self=$dlopen_self_static
4277
          fi
4278
          prefer_static_libs=built
4279
          ;;
4280
        -static-libtool-libs)
4281
          if test -z "$pic_flag" && test -n "$link_static_flag"; then
4282
            dlopen_self=$dlopen_self_static
4283
          fi
4284
          prefer_static_libs=yes
4285
          ;;
4286
        esac
4287
        build_libtool_libs=no
4288
        build_old_libs=yes
4289
        break
4290
        ;;
4291
      esac
4292
    done
4293
 
4294
    # See if our shared archives depend on static archives.
4295
    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4296
 
4297
    # Go through the arguments, transforming them on the way.
4298
    while test "$#" -gt 0; do
4299
      arg="$1"
4300
      shift
4301
      func_quote_for_eval "$arg"
4302
      qarg=$func_quote_for_eval_unquoted_result
4303
      func_append libtool_args " $func_quote_for_eval_result"
4304
 
4305
      # If the previous option needs an argument, assign it.
4306
      if test -n "$prev"; then
4307
        case $prev in
4308
        output)
4309
          func_append compile_command " @OUTPUT@"
4310
          func_append finalize_command " @OUTPUT@"
4311
          ;;
4312
        esac
4313
 
4314
        case $prev in
4315
        bindir)
4316
          bindir="$arg"
4317
          prev=
4318
          continue
4319
          ;;
4320
        dlfiles|dlprefiles)
4321
          if test "$preload" = no; then
4322
            # Add the symbol object into the linking commands.
4323
            func_append compile_command " @SYMFILE@"
4324
            func_append finalize_command " @SYMFILE@"
4325
            preload=yes
4326
          fi
4327
          case $arg in
4328
          *.la | *.lo) ;;  # We handle these cases below.
4329
          force)
4330
            if test "$dlself" = no; then
4331
              dlself=needless
4332
              export_dynamic=yes
4333
            fi
4334
            prev=
4335
            continue
4336
            ;;
4337
          self)
4338
            if test "$prev" = dlprefiles; then
4339
              dlself=yes
4340
            elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4341
              dlself=yes
4342
            else
4343
              dlself=needless
4344
              export_dynamic=yes
4345
            fi
4346
            prev=
4347
            continue
4348
            ;;
4349
          *)
4350
            if test "$prev" = dlfiles; then
4351
              dlfiles="$dlfiles $arg"
4352
            else
4353
              dlprefiles="$dlprefiles $arg"
4354
            fi
4355
            prev=
4356
            continue
4357
            ;;
4358
          esac
4359
          ;;
4360
        expsyms)
4361
          export_symbols="$arg"
4362
          test -f "$arg" \
4363
            || func_fatal_error "symbol file \`$arg' does not exist"
4364
          prev=
4365
          continue
4366
          ;;
4367
        expsyms_regex)
4368
          export_symbols_regex="$arg"
4369
          prev=
4370
          continue
4371
          ;;
4372
        framework)
4373
          case $host in
4374
            *-*-darwin*)
4375
              case "$deplibs " in
4376
                *" $qarg.ltframework "*) ;;
4377
                *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4378
                   ;;
4379
              esac
4380
              ;;
4381
          esac
4382
          prev=
4383
          continue
4384
          ;;
4385
        inst_prefix)
4386
          inst_prefix_dir="$arg"
4387
          prev=
4388
          continue
4389
          ;;
4390
        objectlist)
4391
          if test -f "$arg"; then
4392
            save_arg=$arg
4393
            moreargs=
4394
            for fil in `cat "$save_arg"`
4395
            do
4396
#             moreargs="$moreargs $fil"
4397
              arg=$fil
4398
              # A libtool-controlled object.
4399
 
4400
              # Check to see that this really is a libtool object.
4401
              if func_lalib_unsafe_p "$arg"; then
4402
                pic_object=
4403
                non_pic_object=
4404
 
4405
                # Read the .lo file
4406
                func_source "$arg"
4407
 
4408
                if test -z "$pic_object" ||
4409
                   test -z "$non_pic_object" ||
4410
                   test "$pic_object" = none &&
4411
                   test "$non_pic_object" = none; then
4412
                  func_fatal_error "cannot find name of object for \`$arg'"
4413
                fi
4414
 
4415
                # Extract subdirectory from the argument.
4416
                func_dirname "$arg" "/" ""
4417
                xdir="$func_dirname_result"
4418
 
4419
                if test "$pic_object" != none; then
4420
                  # Prepend the subdirectory the object is found in.
4421
                  pic_object="$xdir$pic_object"
4422
 
4423
                  if test "$prev" = dlfiles; then
4424
                    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4425
                      dlfiles="$dlfiles $pic_object"
4426
                      prev=
4427
                      continue
4428
                    else
4429
                      # If libtool objects are unsupported, then we need to preload.
4430
                      prev=dlprefiles
4431
                    fi
4432
                  fi
4433
 
4434
                  # CHECK ME:  I think I busted this.  -Ossama
4435
                  if test "$prev" = dlprefiles; then
4436
                    # Preload the old-style object.
4437
                    dlprefiles="$dlprefiles $pic_object"
4438
                    prev=
4439
                  fi
4440
 
4441
                  # A PIC object.
4442
                  func_append libobjs " $pic_object"
4443
                  arg="$pic_object"
4444
                fi
4445
 
4446
                # Non-PIC object.
4447
                if test "$non_pic_object" != none; then
4448
                  # Prepend the subdirectory the object is found in.
4449
                  non_pic_object="$xdir$non_pic_object"
4450
 
4451
                  # A standard non-PIC object
4452
                  func_append non_pic_objects " $non_pic_object"
4453
                  if test -z "$pic_object" || test "$pic_object" = none ; then
4454
                    arg="$non_pic_object"
4455
                  fi
4456
                else
4457
                  # If the PIC object exists, use it instead.
4458
                  # $xdir was prepended to $pic_object above.
4459
                  non_pic_object="$pic_object"
4460
                  func_append non_pic_objects " $non_pic_object"
4461
                fi
4462
              else
4463
                # Only an error if not doing a dry-run.
4464
                if $opt_dry_run; then
4465
                  # Extract subdirectory from the argument.
4466
                  func_dirname "$arg" "/" ""
4467
                  xdir="$func_dirname_result"
4468
 
4469
                  func_lo2o "$arg"
4470
                  pic_object=$xdir$objdir/$func_lo2o_result
4471
                  non_pic_object=$xdir$func_lo2o_result
4472
                  func_append libobjs " $pic_object"
4473
                  func_append non_pic_objects " $non_pic_object"
4474
                else
4475
                  func_fatal_error "\`$arg' is not a valid libtool object"
4476
                fi
4477
              fi
4478
            done
4479
          else
4480
            func_fatal_error "link input file \`$arg' does not exist"
4481
          fi
4482
          arg=$save_arg
4483
          prev=
4484
          continue
4485
          ;;
4486
        precious_regex)
4487
          precious_files_regex="$arg"
4488
          prev=
4489
          continue
4490
          ;;
4491
        release)
4492
          release="-$arg"
4493
          prev=
4494
          continue
4495
          ;;
4496
        rpath | xrpath)
4497
          # We need an absolute path.
4498
          case $arg in
4499
          [\\/]* | [A-Za-z]:[\\/]*) ;;
4500
          *)
4501
            func_fatal_error "only absolute run-paths are allowed"
4502
            ;;
4503
          esac
4504
          if test "$prev" = rpath; then
4505
            case "$rpath " in
4506
            *" $arg "*) ;;
4507
            *) rpath="$rpath $arg" ;;
4508
            esac
4509
          else
4510
            case "$xrpath " in
4511
            *" $arg "*) ;;
4512
            *) xrpath="$xrpath $arg" ;;
4513
            esac
4514
          fi
4515
          prev=
4516
          continue
4517
          ;;
4518
        shrext)
4519
          shrext_cmds="$arg"
4520
          prev=
4521
          continue
4522
          ;;
4523
        weak)
4524
          weak_libs="$weak_libs $arg"
4525
          prev=
4526
          continue
4527
          ;;
4528
        xcclinker)
4529
          linker_flags="$linker_flags $qarg"
4530
          compiler_flags="$compiler_flags $qarg"
4531
          prev=
4532
          func_append compile_command " $qarg"
4533
          func_append finalize_command " $qarg"
4534
          continue
4535
          ;;
4536
        xcompiler)
4537
          compiler_flags="$compiler_flags $qarg"
4538
          prev=
4539
          func_append compile_command " $qarg"
4540
          func_append finalize_command " $qarg"
4541
          continue
4542
          ;;
4543
        xlinker)
4544
          linker_flags="$linker_flags $qarg"
4545
          compiler_flags="$compiler_flags $wl$qarg"
4546
          prev=
4547
          func_append compile_command " $wl$qarg"
4548
          func_append finalize_command " $wl$qarg"
4549
          continue
4550
          ;;
4551
        *)
4552
          eval "$prev=\"\$arg\""
4553
          prev=
4554
          continue
4555
          ;;
4556
        esac
4557
      fi # test -n "$prev"
4558
 
4559
      prevarg="$arg"
4560
 
4561
      case $arg in
4562
      -all-static)
4563
        if test -n "$link_static_flag"; then
4564
          # See comment for -static flag below, for more details.
4565
          func_append compile_command " $link_static_flag"
4566
          func_append finalize_command " $link_static_flag"
4567
        fi
4568
        continue
4569
        ;;
4570
 
4571
      -allow-undefined)
4572
        # FIXME: remove this flag sometime in the future.
4573
        func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4574
        ;;
4575
 
4576
      -avoid-version)
4577
        avoid_version=yes
4578
        continue
4579
        ;;
4580
 
4581
      -bindir)
4582
        prev=bindir
4583
        continue
4584
        ;;
4585
 
4586
      -dlopen)
4587
        prev=dlfiles
4588
        continue
4589
        ;;
4590
 
4591
      -dlpreopen)
4592
        prev=dlprefiles
4593
        continue
4594
        ;;
4595
 
4596
      -export-dynamic)
4597
        export_dynamic=yes
4598
        continue
4599
        ;;
4600
 
4601
      -export-symbols | -export-symbols-regex)
4602
        if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4603
          func_fatal_error "more than one -exported-symbols argument is not allowed"
4604
        fi
4605
        if test "X$arg" = "X-export-symbols"; then
4606
          prev=expsyms
4607
        else
4608
          prev=expsyms_regex
4609
        fi
4610
        continue
4611
        ;;
4612
 
4613
      -framework)
4614
        prev=framework
4615
        continue
4616
        ;;
4617
 
4618
      -inst-prefix-dir)
4619
        prev=inst_prefix
4620
        continue
4621
        ;;
4622
 
4623
      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4624
      # so, if we see these flags be careful not to treat them like -L
4625
      -L[A-Z][A-Z]*:*)
4626
        case $with_gcc/$host in
4627
        no/*-*-irix* | /*-*-irix*)
4628
          func_append compile_command " $arg"
4629
          func_append finalize_command " $arg"
4630
          ;;
4631
        esac
4632
        continue
4633
        ;;
4634
 
4635
      -L*)
4636
        func_stripname '-L' '' "$arg"
4637
        dir=$func_stripname_result
4638
        if test -z "$dir"; then
4639
          if test "$#" -gt 0; then
4640
            func_fatal_error "require no space between \`-L' and \`$1'"
4641
          else
4642
            func_fatal_error "need path for \`-L' option"
4643
          fi
4644
        fi
4645
        # We need an absolute path.
4646
        case $dir in
4647
        [\\/]* | [A-Za-z]:[\\/]*) ;;
4648
        *)
4649
          absdir=`cd "$dir" && pwd`
4650
          test -z "$absdir" && \
4651
            func_fatal_error "cannot determine absolute directory name of \`$dir'"
4652
          dir="$absdir"
4653
          ;;
4654
        esac
4655
        case "$deplibs " in
4656
        *" -L$dir "*) ;;
4657
        *)
4658
          deplibs="$deplibs -L$dir"
4659
          lib_search_path="$lib_search_path $dir"
4660
          ;;
4661
        esac
4662
        case $host in
4663
        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4664
          testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
4665
          case :$dllsearchpath: in
4666
          *":$dir:"*) ;;
4667
          ::) dllsearchpath=$dir;;
4668
          *) dllsearchpath="$dllsearchpath:$dir";;
4669
          esac
4670
          case :$dllsearchpath: in
4671
          *":$testbindir:"*) ;;
4672
          ::) dllsearchpath=$testbindir;;
4673
          *) dllsearchpath="$dllsearchpath:$testbindir";;
4674
          esac
4675
          ;;
4676
        esac
4677
        continue
4678
        ;;
4679
 
4680
      -l*)
4681
        if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4682
          case $host in
4683
          *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
4684
            # These systems don't actually have a C or math library (as such)
4685
            continue
4686
            ;;
4687
          *-*-os2*)
4688
            # These systems don't actually have a C library (as such)
4689
            test "X$arg" = "X-lc" && continue
4690
            ;;
4691
          *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4692
            # Do not include libc due to us having libc/libc_r.
4693
            test "X$arg" = "X-lc" && continue
4694
            ;;
4695
          *-*-rhapsody* | *-*-darwin1.[012])
4696
            # Rhapsody C and math libraries are in the System framework
4697
            deplibs="$deplibs System.ltframework"
4698
            continue
4699
            ;;
4700
          *-*-sco3.2v5* | *-*-sco5v6*)
4701
            # Causes problems with __ctype
4702
            test "X$arg" = "X-lc" && continue
4703
            ;;
4704
          *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4705
            # Compiler inserts libc in the correct place for threads to work
4706
            test "X$arg" = "X-lc" && continue
4707
            ;;
4708
          esac
4709
        elif test "X$arg" = "X-lc_r"; then
4710
         case $host in
4711
         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4712
           # Do not include libc_r directly, use -pthread flag.
4713
           continue
4714
           ;;
4715
         esac
4716
        fi
4717
        deplibs="$deplibs $arg"
4718
        continue
4719
        ;;
4720
 
4721
      -module)
4722
        module=yes
4723
        continue
4724
        ;;
4725
 
4726
      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4727
      # classes, name mangling, and exception handling.
4728
      # Darwin uses the -arch flag to determine output architecture.
4729
      -model|-arch|-isysroot)
4730
        compiler_flags="$compiler_flags $arg"
4731
        func_append compile_command " $arg"
4732
        func_append finalize_command " $arg"
4733
        prev=xcompiler
4734
        continue
4735
        ;;
4736
 
4737
      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4738
        compiler_flags="$compiler_flags $arg"
4739
        func_append compile_command " $arg"
4740
        func_append finalize_command " $arg"
4741
        case "$new_inherited_linker_flags " in
4742
            *" $arg "*) ;;
4743
            * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4744
        esac
4745
        continue
4746
        ;;
4747
 
4748
      -multi_module)
4749
        single_module="${wl}-multi_module"
4750
        continue
4751
        ;;
4752
 
4753
      -no-fast-install)
4754
        fast_install=no
4755
        continue
4756
        ;;
4757
 
4758
      -no-install)
4759
        case $host in
4760
        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4761
          # The PATH hackery in wrapper scripts is required on Windows
4762
          # and Darwin in order for the loader to find any dlls it needs.
4763
          func_warning "\`-no-install' is ignored for $host"
4764
          func_warning "assuming \`-no-fast-install' instead"
4765
          fast_install=no
4766
          ;;
4767
        *) no_install=yes ;;
4768
        esac
4769
        continue
4770
        ;;
4771
 
4772
      -no-undefined)
4773
        allow_undefined=no
4774
        continue
4775
        ;;
4776
 
4777
      -objectlist)
4778
        prev=objectlist
4779
        continue
4780
        ;;
4781
 
4782
      -o) prev=output ;;
4783
 
4784
      -precious-files-regex)
4785
        prev=precious_regex
4786
        continue
4787
        ;;
4788
 
4789
      -release)
4790
        prev=release
4791
        continue
4792
        ;;
4793
 
4794
      -rpath)
4795
        prev=rpath
4796
        continue
4797
        ;;
4798
 
4799
      -R)
4800
        prev=xrpath
4801
        continue
4802
        ;;
4803
 
4804
      -R*)
4805
        func_stripname '-R' '' "$arg"
4806
        dir=$func_stripname_result
4807
        # We need an absolute path.
4808
        case $dir in
4809
        [\\/]* | [A-Za-z]:[\\/]*) ;;
4810
        *)
4811
          func_fatal_error "only absolute run-paths are allowed"
4812
          ;;
4813
        esac
4814
        case "$xrpath " in
4815
        *" $dir "*) ;;
4816
        *) xrpath="$xrpath $dir" ;;
4817
        esac
4818
        continue
4819
        ;;
4820
 
4821
      -shared)
4822
        # The effects of -shared are defined in a previous loop.
4823
        continue
4824
        ;;
4825
 
4826
      -shrext)
4827
        prev=shrext
4828
        continue
4829
        ;;
4830
 
4831
      -static | -static-libtool-libs)
4832
        # The effects of -static are defined in a previous loop.
4833
        # We used to do the same as -all-static on platforms that
4834
        # didn't have a PIC flag, but the assumption that the effects
4835
        # would be equivalent was wrong.  It would break on at least
4836
        # Digital Unix and AIX.
4837
        continue
4838
        ;;
4839
 
4840
      -thread-safe)
4841
        thread_safe=yes
4842
        continue
4843
        ;;
4844
 
4845
      -version-info)
4846
        prev=vinfo
4847
        continue
4848
        ;;
4849
 
4850
      -version-number)
4851
        prev=vinfo
4852
        vinfo_number=yes
4853
        continue
4854
        ;;
4855
 
4856
      -weak)
4857
        prev=weak
4858
        continue
4859
        ;;
4860
 
4861
      -Wc,*)
4862
        func_stripname '-Wc,' '' "$arg"
4863
        args=$func_stripname_result
4864
        arg=
4865
        save_ifs="$IFS"; IFS=','
4866
        for flag in $args; do
4867
          IFS="$save_ifs"
4868
          func_quote_for_eval "$flag"
4869
          arg="$arg $wl$func_quote_for_eval_result"
4870
          compiler_flags="$compiler_flags $func_quote_for_eval_result"
4871
        done
4872
        IFS="$save_ifs"
4873
        func_stripname ' ' '' "$arg"
4874
        arg=$func_stripname_result
4875
        ;;
4876
 
4877
      -Wl,*)
4878
        func_stripname '-Wl,' '' "$arg"
4879
        args=$func_stripname_result
4880
        arg=
4881
        save_ifs="$IFS"; IFS=','
4882
        for flag in $args; do
4883
          IFS="$save_ifs"
4884
          func_quote_for_eval "$flag"
4885
          arg="$arg $wl$func_quote_for_eval_result"
4886
          compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
4887
          linker_flags="$linker_flags $func_quote_for_eval_result"
4888
        done
4889
        IFS="$save_ifs"
4890
        func_stripname ' ' '' "$arg"
4891
        arg=$func_stripname_result
4892
        ;;
4893
 
4894
      -Xcompiler)
4895
        prev=xcompiler
4896
        continue
4897
        ;;
4898
 
4899
      -Xlinker)
4900
        prev=xlinker
4901
        continue
4902
        ;;
4903
 
4904
      -XCClinker)
4905
        prev=xcclinker
4906
        continue
4907
        ;;
4908
 
4909
      # -msg_* for osf cc
4910
      -msg_*)
4911
        func_quote_for_eval "$arg"
4912
        arg="$func_quote_for_eval_result"
4913
        ;;
4914
 
4915
      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
4916
      # -r[0-9][0-9]* specifies the processor on the SGI compiler
4917
      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
4918
      # +DA*, +DD* enable 64-bit mode on the HP compiler
4919
      # -q* pass through compiler args for the IBM compiler
4920
      # -m*, -t[45]*, -txscale* pass through architecture-specific
4921
      # compiler args for GCC
4922
      # -F/path gives path to uninstalled frameworks, gcc on darwin
4923
      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
4924
      # @file GCC response files
4925
      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
4926
      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
4927
        func_quote_for_eval "$arg"
4928
        arg="$func_quote_for_eval_result"
4929
        func_append compile_command " $arg"
4930
        func_append finalize_command " $arg"
4931
        compiler_flags="$compiler_flags $arg"
4932
        continue
4933
        ;;
4934
 
4935
      # Some other compiler flag.
4936
      -* | +*)
4937
        func_quote_for_eval "$arg"
4938
        arg="$func_quote_for_eval_result"
4939
        ;;
4940
 
4941
      *.$objext)
4942
        # A standard object.
4943
        objs="$objs $arg"
4944
        ;;
4945
 
4946
      *.lo)
4947
        # A libtool-controlled object.
4948
 
4949
        # Check to see that this really is a libtool object.
4950
        if func_lalib_unsafe_p "$arg"; then
4951
          pic_object=
4952
          non_pic_object=
4953
 
4954
          # Read the .lo file
4955
          func_source "$arg"
4956
 
4957
          if test -z "$pic_object" ||
4958
             test -z "$non_pic_object" ||
4959
             test "$pic_object" = none &&
4960
             test "$non_pic_object" = none; then
4961
            func_fatal_error "cannot find name of object for \`$arg'"
4962
          fi
4963
 
4964
          # Extract subdirectory from the argument.
4965
          func_dirname "$arg" "/" ""
4966
          xdir="$func_dirname_result"
4967
 
4968
          if test "$pic_object" != none; then
4969
            # Prepend the subdirectory the object is found in.
4970
            pic_object="$xdir$pic_object"
4971
 
4972
            if test "$prev" = dlfiles; then
4973
              if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4974
                dlfiles="$dlfiles $pic_object"
4975
                prev=
4976
                continue
4977
              else
4978
                # If libtool objects are unsupported, then we need to preload.
4979
                prev=dlprefiles
4980
              fi
4981
            fi
4982
 
4983
            # CHECK ME:  I think I busted this.  -Ossama
4984
            if test "$prev" = dlprefiles; then
4985
              # Preload the old-style object.
4986
              dlprefiles="$dlprefiles $pic_object"
4987
              prev=
4988
            fi
4989
 
4990
            # A PIC object.
4991
            func_append libobjs " $pic_object"
4992
            arg="$pic_object"
4993
          fi
4994
 
4995
          # Non-PIC object.
4996
          if test "$non_pic_object" != none; then
4997
            # Prepend the subdirectory the object is found in.
4998
            non_pic_object="$xdir$non_pic_object"
4999
 
5000
            # A standard non-PIC object
5001
            func_append non_pic_objects " $non_pic_object"
5002
            if test -z "$pic_object" || test "$pic_object" = none ; then
5003
              arg="$non_pic_object"
5004
            fi
5005
          else
5006
            # If the PIC object exists, use it instead.
5007
            # $xdir was prepended to $pic_object above.
5008
            non_pic_object="$pic_object"
5009
            func_append non_pic_objects " $non_pic_object"
5010
          fi
5011
        else
5012
          # Only an error if not doing a dry-run.
5013
          if $opt_dry_run; then
5014
            # Extract subdirectory from the argument.
5015
            func_dirname "$arg" "/" ""
5016
            xdir="$func_dirname_result"
5017
 
5018
            func_lo2o "$arg"
5019
            pic_object=$xdir$objdir/$func_lo2o_result
5020
            non_pic_object=$xdir$func_lo2o_result
5021
            func_append libobjs " $pic_object"
5022
            func_append non_pic_objects " $non_pic_object"
5023
          else
5024
            func_fatal_error "\`$arg' is not a valid libtool object"
5025
          fi
5026
        fi
5027
        ;;
5028
 
5029
      *.$libext)
5030
        # An archive.
5031
        deplibs="$deplibs $arg"
5032
        old_deplibs="$old_deplibs $arg"
5033
        continue
5034
        ;;
5035
 
5036
      *.la)
5037
        # A libtool-controlled library.
5038
 
5039
        if test "$prev" = dlfiles; then
5040
          # This library was specified with -dlopen.
5041
          dlfiles="$dlfiles $arg"
5042
          prev=
5043
        elif test "$prev" = dlprefiles; then
5044
          # The library was specified with -dlpreopen.
5045
          dlprefiles="$dlprefiles $arg"
5046
          prev=
5047
        else
5048
          deplibs="$deplibs $arg"
5049
        fi
5050
        continue
5051
        ;;
5052
 
5053
      # Some other compiler argument.
5054
      *)
5055
        # Unknown arguments in both finalize_command and compile_command need
5056
        # to be aesthetically quoted because they are evaled later.
5057
        func_quote_for_eval "$arg"
5058
        arg="$func_quote_for_eval_result"
5059
        ;;
5060
      esac # arg
5061
 
5062
      # Now actually substitute the argument into the commands.
5063
      if test -n "$arg"; then
5064
        func_append compile_command " $arg"
5065
        func_append finalize_command " $arg"
5066
      fi
5067
    done # argument parsing loop
5068
 
5069
    test -n "$prev" && \
5070
      func_fatal_help "the \`$prevarg' option requires an argument"
5071
 
5072
    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5073
      eval arg=\"$export_dynamic_flag_spec\"
5074
      func_append compile_command " $arg"
5075
      func_append finalize_command " $arg"
5076
    fi
5077
 
5078
    oldlibs=
5079
    # calculate the name of the file, without its directory
5080
    func_basename "$output"
5081
    outputname="$func_basename_result"
5082
    libobjs_save="$libobjs"
5083
 
5084
    if test -n "$shlibpath_var"; then
5085
      # get the directories listed in $shlibpath_var
5086
      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
5087
    else
5088
      shlib_search_path=
5089
    fi
5090
    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
5091
    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
5092
 
5093
    func_dirname "$output" "/" ""
5094
    output_objdir="$func_dirname_result$objdir"
5095
    # Create the object directory.
5096
    func_mkdir_p "$output_objdir"
5097
 
5098
    # Determine the type of output
5099
    case $output in
5100
    "")
5101
      func_fatal_help "you must specify an output file"
5102
      ;;
5103
    *.$libext) linkmode=oldlib ;;
5104
    *.lo | *.$objext) linkmode=obj ;;
5105
    *.la) linkmode=lib ;;
5106
    *) linkmode=prog ;; # Anything else should be a program.
5107
    esac
5108
 
5109
    specialdeplibs=
5110
 
5111
    libs=
5112
    # Find all interdependent deplibs by searching for libraries
5113
    # that are linked more than once (e.g. -la -lb -la)
5114
    for deplib in $deplibs; do
5115
      if $opt_duplicate_deps ; then
5116
        case "$libs " in
5117
        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5118
        esac
5119
      fi
5120
      libs="$libs $deplib"
5121
    done
5122
 
5123
    if test "$linkmode" = lib; then
5124
      libs="$predeps $libs $compiler_lib_search_path $postdeps"
5125
 
5126
      # Compute libraries that are listed more than once in $predeps
5127
      # $postdeps and mark them as special (i.e., whose duplicates are
5128
      # not to be eliminated).
5129
      pre_post_deps=
5130
      if $opt_duplicate_compiler_generated_deps; then
5131
        for pre_post_dep in $predeps $postdeps; do
5132
          case "$pre_post_deps " in
5133
          *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
5134
          esac
5135
          pre_post_deps="$pre_post_deps $pre_post_dep"
5136
        done
5137
      fi
5138
      pre_post_deps=
5139
    fi
5140
 
5141
    deplibs=
5142
    newdependency_libs=
5143
    newlib_search_path=
5144
    need_relink=no # whether we're linking any uninstalled libtool libraries
5145
    notinst_deplibs= # not-installed libtool libraries
5146
    notinst_path= # paths that contain not-installed libtool libraries
5147
 
5148
    case $linkmode in
5149
    lib)
5150
        passes="conv dlpreopen link"
5151
        for file in $dlfiles $dlprefiles; do
5152
          case $file in
5153
          *.la) ;;
5154
          *)
5155
            func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5156
            ;;
5157
          esac
5158
        done
5159
        ;;
5160
    prog)
5161
        compile_deplibs=
5162
        finalize_deplibs=
5163
        alldeplibs=no
5164
        newdlfiles=
5165
        newdlprefiles=
5166
        passes="conv scan dlopen dlpreopen link"
5167
        ;;
5168
    *)  passes="conv"
5169
        ;;
5170
    esac
5171
 
5172
    for pass in $passes; do
5173
      # The preopen pass in lib mode reverses $deplibs; put it back here
5174
      # so that -L comes before libs that need it for instance...
5175
      if test "$linkmode,$pass" = "lib,link"; then
5176
        ## FIXME: Find the place where the list is rebuilt in the wrong
5177
        ##        order, and fix it there properly
5178
        tmp_deplibs=
5179
        for deplib in $deplibs; do
5180
          tmp_deplibs="$deplib $tmp_deplibs"
5181
        done
5182
        deplibs="$tmp_deplibs"
5183
      fi
5184
 
5185
      if test "$linkmode,$pass" = "lib,link" ||
5186
         test "$linkmode,$pass" = "prog,scan"; then
5187
        libs="$deplibs"
5188
        deplibs=
5189
      fi
5190
      if test "$linkmode" = prog; then
5191
        case $pass in
5192
        dlopen) libs="$dlfiles" ;;
5193
        dlpreopen) libs="$dlprefiles" ;;
5194
        link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5195
        esac
5196
      fi
5197
      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5198
        # Collect and forward deplibs of preopened libtool libs
5199
        for lib in $dlprefiles; do
5200
          # Ignore non-libtool-libs
5201
          dependency_libs=
5202
          case $lib in
5203
          *.la) func_source "$lib" ;;
5204
          esac
5205
 
5206
          # Collect preopened libtool deplibs, except any this library
5207
          # has declared as weak libs
5208
          for deplib in $dependency_libs; do
5209
            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
5210
            case " $weak_libs " in
5211
            *" $deplib_base "*) ;;
5212
            *) deplibs="$deplibs $deplib" ;;
5213
            esac
5214
          done
5215
        done
5216
        libs="$dlprefiles"
5217
      fi
5218
      if test "$pass" = dlopen; then
5219
        # Collect dlpreopened libraries
5220
        save_deplibs="$deplibs"
5221
        deplibs=
5222
      fi
5223
 
5224
      for deplib in $libs; do
5225
        lib=
5226
        found=no
5227
        case $deplib in
5228
        -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5229
          if test "$linkmode,$pass" = "prog,link"; then
5230
            compile_deplibs="$deplib $compile_deplibs"
5231
            finalize_deplibs="$deplib $finalize_deplibs"
5232
          else
5233
            compiler_flags="$compiler_flags $deplib"
5234
            if test "$linkmode" = lib ; then
5235
                case "$new_inherited_linker_flags " in
5236
                    *" $deplib "*) ;;
5237
                    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5238
                esac
5239
            fi
5240
          fi
5241
          continue
5242
          ;;
5243
        -l*)
5244
          if test "$linkmode" != lib && test "$linkmode" != prog; then
5245
            func_warning "\`-l' is ignored for archives/objects"
5246
            continue
5247
          fi
5248
          func_stripname '-l' '' "$deplib"
5249
          name=$func_stripname_result
5250
          if test "$linkmode" = lib; then
5251
            searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5252
          else
5253
            searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5254
          fi
5255
          for searchdir in $searchdirs; do
5256
            for search_ext in .la $std_shrext .so .a; do
5257
              # Search the libtool library
5258
              lib="$searchdir/lib${name}${search_ext}"
5259
              if test -f "$lib"; then
5260
                if test "$search_ext" = ".la"; then
5261
                  found=yes
5262
                else
5263
                  found=no
5264
                fi
5265
                break 2
5266
              fi
5267
            done
5268
          done
5269
          if test "$found" != yes; then
5270
            # deplib doesn't seem to be a libtool library
5271
            if test "$linkmode,$pass" = "prog,link"; then
5272
              compile_deplibs="$deplib $compile_deplibs"
5273
              finalize_deplibs="$deplib $finalize_deplibs"
5274
            else
5275
              deplibs="$deplib $deplibs"
5276
              test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5277
            fi
5278
            continue
5279
          else # deplib is a libtool library
5280
            # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5281
            # We need to do some special things here, and not later.
5282
            if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5283
              case " $predeps $postdeps " in
5284
              *" $deplib "*)
5285
                if func_lalib_p "$lib"; then
5286
                  library_names=
5287
                  old_library=
5288
                  func_source "$lib"
5289
                  for l in $old_library $library_names; do
5290
                    ll="$l"
5291
                  done
5292
                  if test "X$ll" = "X$old_library" ; then # only static version available
5293
                    found=no
5294
                    func_dirname "$lib" "" "."
5295
                    ladir="$func_dirname_result"
5296
                    lib=$ladir/$old_library
5297
                    if test "$linkmode,$pass" = "prog,link"; then
5298
                      compile_deplibs="$deplib $compile_deplibs"
5299
                      finalize_deplibs="$deplib $finalize_deplibs"
5300
                    else
5301
                      deplibs="$deplib $deplibs"
5302
                      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5303
                    fi
5304
                    continue
5305
                  fi
5306
                fi
5307
                ;;
5308
              *) ;;
5309
              esac
5310
            fi
5311
          fi
5312
          ;; # -l
5313
        *.ltframework)
5314
          if test "$linkmode,$pass" = "prog,link"; then
5315
            compile_deplibs="$deplib $compile_deplibs"
5316
            finalize_deplibs="$deplib $finalize_deplibs"
5317
          else
5318
            deplibs="$deplib $deplibs"
5319
            if test "$linkmode" = lib ; then
5320
                case "$new_inherited_linker_flags " in
5321
                    *" $deplib "*) ;;
5322
                    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5323
                esac
5324
            fi
5325
          fi
5326
          continue
5327
          ;;
5328
        -L*)
5329
          case $linkmode in
5330
          lib)
5331
            deplibs="$deplib $deplibs"
5332
            test "$pass" = conv && continue
5333
            newdependency_libs="$deplib $newdependency_libs"
5334
            func_stripname '-L' '' "$deplib"
5335
            newlib_search_path="$newlib_search_path $func_stripname_result"
5336
            ;;
5337
          prog)
5338
            if test "$pass" = conv; then
5339
              deplibs="$deplib $deplibs"
5340
              continue
5341
            fi
5342
            if test "$pass" = scan; then
5343
              deplibs="$deplib $deplibs"
5344
            else
5345
              compile_deplibs="$deplib $compile_deplibs"
5346
              finalize_deplibs="$deplib $finalize_deplibs"
5347
            fi
5348
            func_stripname '-L' '' "$deplib"
5349
            newlib_search_path="$newlib_search_path $func_stripname_result"
5350
            ;;
5351
          *)
5352
            func_warning "\`-L' is ignored for archives/objects"
5353
            ;;
5354
          esac # linkmode
5355
          continue
5356
          ;; # -L
5357
        -R*)
5358
          if test "$pass" = link; then
5359
            func_stripname '-R' '' "$deplib"
5360
            dir=$func_stripname_result
5361
            # Make sure the xrpath contains only unique directories.
5362
            case "$xrpath " in
5363
            *" $dir "*) ;;
5364
            *) xrpath="$xrpath $dir" ;;
5365
            esac
5366
          fi
5367
          deplibs="$deplib $deplibs"
5368
          continue
5369
          ;;
5370
        *.la) lib="$deplib" ;;
5371
        *.$libext)
5372
          if test "$pass" = conv; then
5373
            deplibs="$deplib $deplibs"
5374
            continue
5375
          fi
5376
          case $linkmode in
5377
          lib)
5378
            # Linking convenience modules into shared libraries is allowed,
5379
            # but linking other static libraries is non-portable.
5380
            case " $dlpreconveniencelibs " in
5381
            *" $deplib "*) ;;
5382
            *)
5383
              valid_a_lib=no
5384
              case $deplibs_check_method in
5385
                match_pattern*)
5386
                  set dummy $deplibs_check_method; shift
5387
                  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5388
                  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
5389
                    | $EGREP "$match_pattern_regex" > /dev/null; then
5390
                    valid_a_lib=yes
5391
                  fi
5392
                ;;
5393
                pass_all)
5394
                  valid_a_lib=yes
5395
                ;;
5396
              esac
5397
              if test "$valid_a_lib" != yes; then
5398
                $ECHO
5399
                $ECHO "*** Warning: Trying to link with static lib archive $deplib."
5400
                $ECHO "*** I have the capability to make that library automatically link in when"
5401
                $ECHO "*** you link to this library.  But I can only do this if you have a"
5402
                $ECHO "*** shared version of the library, which you do not appear to have"
5403
                $ECHO "*** because the file extensions .$libext of this argument makes me believe"
5404
                $ECHO "*** that it is just a static archive that I should not use here."
5405
              else
5406
                $ECHO
5407
                $ECHO "*** Warning: Linking the shared library $output against the"
5408
                $ECHO "*** static library $deplib is not portable!"
5409
                deplibs="$deplib $deplibs"
5410
              fi
5411
              ;;
5412
            esac
5413
            continue
5414
            ;;
5415
          prog)
5416
            if test "$pass" != link; then
5417
              deplibs="$deplib $deplibs"
5418
            else
5419
              compile_deplibs="$deplib $compile_deplibs"
5420
              finalize_deplibs="$deplib $finalize_deplibs"
5421
            fi
5422
            continue
5423
            ;;
5424
          esac # linkmode
5425
          ;; # *.$libext
5426
        *.lo | *.$objext)
5427
          if test "$pass" = conv; then
5428
            deplibs="$deplib $deplibs"
5429
          elif test "$linkmode" = prog; then
5430
            if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5431
              # If there is no dlopen support or we're linking statically,
5432
              # we need to preload.
5433
              newdlprefiles="$newdlprefiles $deplib"
5434
              compile_deplibs="$deplib $compile_deplibs"
5435
              finalize_deplibs="$deplib $finalize_deplibs"
5436
            else
5437
              newdlfiles="$newdlfiles $deplib"
5438
            fi
5439
          fi
5440
          continue
5441
          ;;
5442
        %DEPLIBS%)
5443
          alldeplibs=yes
5444
          continue
5445
          ;;
5446
        esac # case $deplib
5447
 
5448
        if test "$found" = yes || test -f "$lib"; then :
5449
        else
5450
          func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5451
        fi
5452
 
5453
        # Check to see that this really is a libtool archive.
5454
        func_lalib_unsafe_p "$lib" \
5455
          || func_fatal_error "\`$lib' is not a valid libtool archive"
5456
 
5457
        func_dirname "$lib" "" "."
5458
        ladir="$func_dirname_result"
5459
 
5460
        dlname=
5461
        dlopen=
5462
        dlpreopen=
5463
        libdir=
5464
        library_names=
5465
        old_library=
5466
        inherited_linker_flags=
5467
        # If the library was installed with an old release of libtool,
5468
        # it will not redefine variables installed, or shouldnotlink
5469
        installed=yes
5470
        shouldnotlink=no
5471
        avoidtemprpath=
5472
 
5473
 
5474
        # Read the .la file
5475
        func_source "$lib"
5476
 
5477
        # Convert "-framework foo" to "foo.ltframework"
5478
        if test -n "$inherited_linker_flags"; then
5479
          tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
5480
          for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5481
            case " $new_inherited_linker_flags " in
5482
              *" $tmp_inherited_linker_flag "*) ;;
5483
              *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5484
            esac
5485
          done
5486
        fi
5487
        dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5488
        if test "$linkmode,$pass" = "lib,link" ||
5489
           test "$linkmode,$pass" = "prog,scan" ||
5490
           { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5491
          test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5492
          test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5493
        fi
5494
 
5495
        if test "$pass" = conv; then
5496
          # Only check for convenience libraries
5497
          deplibs="$lib $deplibs"
5498
          if test -z "$libdir"; then
5499
            if test -z "$old_library"; then
5500
              func_fatal_error "cannot find name of link library for \`$lib'"
5501
            fi
5502
            # It is a libtool convenience library, so add in its objects.
5503
            convenience="$convenience $ladir/$objdir/$old_library"
5504
            old_convenience="$old_convenience $ladir/$objdir/$old_library"
5505
          elif test "$linkmode" != prog && test "$linkmode" != lib; then
5506
            func_fatal_error "\`$lib' is not a convenience library"
5507
          fi
5508
          tmp_libs=
5509
          for deplib in $dependency_libs; do
5510
            deplibs="$deplib $deplibs"
5511
            if $opt_duplicate_deps ; then
5512
              case "$tmp_libs " in
5513
              *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5514
              esac
5515
            fi
5516
            tmp_libs="$tmp_libs $deplib"
5517
          done
5518
          continue
5519
        fi # $pass = conv
5520
 
5521
 
5522
        # Get the name of the library we link against.
5523
        linklib=
5524
        for l in $old_library $library_names; do
5525
          linklib="$l"
5526
        done
5527
        if test -z "$linklib"; then
5528
          func_fatal_error "cannot find name of link library for \`$lib'"
5529
        fi
5530
 
5531
        # This library was specified with -dlopen.
5532
        if test "$pass" = dlopen; then
5533
          if test -z "$libdir"; then
5534
            func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5535
          fi
5536
          if test -z "$dlname" ||
5537
             test "$dlopen_support" != yes ||
5538
             test "$build_libtool_libs" = no; then
5539
            # If there is no dlname, no dlopen support or we're linking
5540
            # statically, we need to preload.  We also need to preload any
5541
            # dependent libraries so libltdl's deplib preloader doesn't
5542
            # bomb out in the load deplibs phase.
5543
            dlprefiles="$dlprefiles $lib $dependency_libs"
5544
          else
5545
            newdlfiles="$newdlfiles $lib"
5546
          fi
5547
          continue
5548
        fi # $pass = dlopen
5549
 
5550
        # We need an absolute path.
5551
        case $ladir in
5552
        [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5553
        *)
5554
          abs_ladir=`cd "$ladir" && pwd`
5555
          if test -z "$abs_ladir"; then
5556
            func_warning "cannot determine absolute directory name of \`$ladir'"
5557
            func_warning "passing it literally to the linker, although it might fail"
5558
            abs_ladir="$ladir"
5559
          fi
5560
          ;;
5561
        esac
5562
        func_basename "$lib"
5563
        laname="$func_basename_result"
5564
 
5565
        # Find the relevant object directory and library name.
5566
        if test "X$installed" = Xyes; then
5567
          if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5568
            func_warning "library \`$lib' was moved."
5569
            dir="$ladir"
5570
            absdir="$abs_ladir"
5571
            libdir="$abs_ladir"
5572
          else
5573
            dir="$libdir"
5574
            absdir="$libdir"
5575
          fi
5576
          test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5577
        else
5578
          if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5579
            dir="$ladir"
5580
            absdir="$abs_ladir"
5581
            # Remove this search path later
5582
            notinst_path="$notinst_path $abs_ladir"
5583
          else
5584
            dir="$ladir/$objdir"
5585
            absdir="$abs_ladir/$objdir"
5586
            # Remove this search path later
5587
            notinst_path="$notinst_path $abs_ladir"
5588
          fi
5589
        fi # $installed = yes
5590
        func_stripname 'lib' '.la' "$laname"
5591
        name=$func_stripname_result
5592
 
5593
        # This library was specified with -dlpreopen.
5594
        if test "$pass" = dlpreopen; then
5595
          if test -z "$libdir" && test "$linkmode" = prog; then
5596
            func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5597
          fi
5598
          # Prefer using a static library (so that no silly _DYNAMIC symbols
5599
          # are required to link).
5600
          if test -n "$old_library"; then
5601
            newdlprefiles="$newdlprefiles $dir/$old_library"
5602
            # Keep a list of preopened convenience libraries to check
5603
            # that they are being used correctly in the link pass.
5604
            test -z "$libdir" && \
5605
                dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5606
          # Otherwise, use the dlname, so that lt_dlopen finds it.
5607
          elif test -n "$dlname"; then
5608
            newdlprefiles="$newdlprefiles $dir/$dlname"
5609
          else
5610
            newdlprefiles="$newdlprefiles $dir/$linklib"
5611
          fi
5612
        fi # $pass = dlpreopen
5613
 
5614
        if test -z "$libdir"; then
5615
          # Link the convenience library
5616
          if test "$linkmode" = lib; then
5617
            deplibs="$dir/$old_library $deplibs"
5618
          elif test "$linkmode,$pass" = "prog,link"; then
5619
            compile_deplibs="$dir/$old_library $compile_deplibs"
5620
            finalize_deplibs="$dir/$old_library $finalize_deplibs"
5621
          else
5622
            deplibs="$lib $deplibs" # used for prog,scan pass
5623
          fi
5624
          continue
5625
        fi
5626
 
5627
 
5628
        if test "$linkmode" = prog && test "$pass" != link; then
5629
          newlib_search_path="$newlib_search_path $ladir"
5630
          deplibs="$lib $deplibs"
5631
 
5632
          linkalldeplibs=no
5633
          if test "$link_all_deplibs" != no || test -z "$library_names" ||
5634
             test "$build_libtool_libs" = no; then
5635
            linkalldeplibs=yes
5636
          fi
5637
 
5638
          tmp_libs=
5639
          for deplib in $dependency_libs; do
5640
            case $deplib in
5641
            -L*) func_stripname '-L' '' "$deplib"
5642
                 newlib_search_path="$newlib_search_path $func_stripname_result"
5643
                 ;;
5644
            esac
5645
            # Need to link against all dependency_libs?
5646
            if test "$linkalldeplibs" = yes; then
5647
              deplibs="$deplib $deplibs"
5648
            else
5649
              # Need to hardcode shared library paths
5650
              # or/and link against static libraries
5651
              newdependency_libs="$deplib $newdependency_libs"
5652
            fi
5653
            if $opt_duplicate_deps ; then
5654
              case "$tmp_libs " in
5655
              *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5656
              esac
5657
            fi
5658
            tmp_libs="$tmp_libs $deplib"
5659
          done # for deplib
5660
          continue
5661
        fi # $linkmode = prog...
5662
 
5663
        if test "$linkmode,$pass" = "prog,link"; then
5664
          if test -n "$library_names" &&
5665
             { { test "$prefer_static_libs" = no ||
5666
                 test "$prefer_static_libs,$installed" = "built,yes"; } ||
5667
               test -z "$old_library"; }; then
5668
            # We need to hardcode the library path
5669
            if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5670
              # Make sure the rpath contains only unique directories.
5671
              case "$temp_rpath:" in
5672
              *"$absdir:"*) ;;
5673
              *) temp_rpath="$temp_rpath$absdir:" ;;
5674
              esac
5675
            fi
5676
 
5677
            # Hardcode the library path.
5678
            # Skip directories that are in the system default run-time
5679
            # search path.
5680
            case " $sys_lib_dlsearch_path " in
5681
            *" $absdir "*) ;;
5682
            *)
5683
              case "$compile_rpath " in
5684
              *" $absdir "*) ;;
5685
              *) compile_rpath="$compile_rpath $absdir"
5686
              esac
5687
              ;;
5688
            esac
5689
            case " $sys_lib_dlsearch_path " in
5690
            *" $libdir "*) ;;
5691
            *)
5692
              case "$finalize_rpath " in
5693
              *" $libdir "*) ;;
5694
              *) finalize_rpath="$finalize_rpath $libdir"
5695
              esac
5696
              ;;
5697
            esac
5698
          fi # $linkmode,$pass = prog,link...
5699
 
5700
          if test "$alldeplibs" = yes &&
5701
             { test "$deplibs_check_method" = pass_all ||
5702
               { test "$build_libtool_libs" = yes &&
5703
                 test -n "$library_names"; }; }; then
5704
            # We only need to search for static libraries
5705
            continue
5706
          fi
5707
        fi
5708
 
5709
        link_static=no # Whether the deplib will be linked statically
5710
        use_static_libs=$prefer_static_libs
5711
        if test "$use_static_libs" = built && test "$installed" = yes; then
5712
          use_static_libs=no
5713
        fi
5714
        if test -n "$library_names" &&
5715
           { test "$use_static_libs" = no || test -z "$old_library"; }; then
5716
          case $host in
5717
          *cygwin* | *mingw* | *cegcc*)
5718
              # No point in relinking DLLs because paths are not encoded
5719
              notinst_deplibs="$notinst_deplibs $lib"
5720
              need_relink=no
5721
            ;;
5722
          *)
5723
            if test "$installed" = no; then
5724
              notinst_deplibs="$notinst_deplibs $lib"
5725
              need_relink=yes
5726
            fi
5727
            ;;
5728
          esac
5729
          # This is a shared library
5730
 
5731
          # Warn about portability, can't link against -module's on some
5732
          # systems (darwin).  Don't bleat about dlopened modules though!
5733
          dlopenmodule=""
5734
          for dlpremoduletest in $dlprefiles; do
5735
            if test "X$dlpremoduletest" = "X$lib"; then
5736
              dlopenmodule="$dlpremoduletest"
5737
              break
5738
            fi
5739
          done
5740
          if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
5741
            $ECHO
5742
            if test "$linkmode" = prog; then
5743
              $ECHO "*** Warning: Linking the executable $output against the loadable module"
5744
            else
5745
              $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5746
            fi
5747
            $ECHO "*** $linklib is not portable!"
5748
          fi
5749
          if test "$linkmode" = lib &&
5750
             test "$hardcode_into_libs" = yes; then
5751
            # Hardcode the library path.
5752
            # Skip directories that are in the system default run-time
5753
            # search path.
5754
            case " $sys_lib_dlsearch_path " in
5755
            *" $absdir "*) ;;
5756
            *)
5757
              case "$compile_rpath " in
5758
              *" $absdir "*) ;;
5759
              *) compile_rpath="$compile_rpath $absdir"
5760
              esac
5761
              ;;
5762
            esac
5763
            case " $sys_lib_dlsearch_path " in
5764
            *" $libdir "*) ;;
5765
            *)
5766
              case "$finalize_rpath " in
5767
              *" $libdir "*) ;;
5768
              *) finalize_rpath="$finalize_rpath $libdir"
5769
              esac
5770
              ;;
5771
            esac
5772
          fi
5773
 
5774
          if test -n "$old_archive_from_expsyms_cmds"; then
5775
            # figure out the soname
5776
            set dummy $library_names
5777
            shift
5778
            realname="$1"
5779
            shift
5780
            libname=`eval "\\$ECHO \"$libname_spec\""`
5781
            # use dlname if we got it. it's perfectly good, no?
5782
            if test -n "$dlname"; then
5783
              soname="$dlname"
5784
            elif test -n "$soname_spec"; then
5785
              # bleh windows
5786
              case $host in
5787
              *cygwin* | mingw* | *cegcc*)
5788
                func_arith $current - $age
5789
                major=$func_arith_result
5790
                versuffix="-$major"
5791
                ;;
5792
              esac
5793
              eval soname=\"$soname_spec\"
5794
            else
5795
              soname="$realname"
5796
            fi
5797
 
5798
            # Make a new name for the extract_expsyms_cmds to use
5799
            soroot="$soname"
5800
            func_basename "$soroot"
5801
            soname="$func_basename_result"
5802
            func_stripname 'lib' '.dll' "$soname"
5803
            newlib=libimp-$func_stripname_result.a
5804
 
5805
            # If the library has no export list, then create one now
5806
            if test -f "$output_objdir/$soname-def"; then :
5807
            else
5808
              func_verbose "extracting exported symbol list from \`$soname'"
5809
              func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5810
            fi
5811
 
5812
            # Create $newlib
5813
            if test -f "$output_objdir/$newlib"; then :; else
5814
              func_verbose "generating import library for \`$soname'"
5815
              func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5816
            fi
5817
            # make sure the library variables are pointing to the new library
5818
            dir=$output_objdir
5819
            linklib=$newlib
5820
          fi # test -n "$old_archive_from_expsyms_cmds"
5821
 
5822
          if test "$linkmode" = prog || test "$mode" != relink; then
5823
            add_shlibpath=
5824
            add_dir=
5825
            add=
5826
            lib_linked=yes
5827
            case $hardcode_action in
5828
            immediate | unsupported)
5829
              if test "$hardcode_direct" = no; then
5830
                add="$dir/$linklib"
5831
                case $host in
5832
                  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
5833
                  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
5834
                  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
5835
                    *-*-unixware7*) add_dir="-L$dir" ;;
5836
                  *-*-darwin* )
5837
                    # if the lib is a (non-dlopened) module then we can not
5838
                    # link against it, someone is ignoring the earlier warnings
5839
                    if /usr/bin/file -L $add 2> /dev/null |
5840
                         $GREP ": [^:]* bundle" >/dev/null ; then
5841
                      if test "X$dlopenmodule" != "X$lib"; then
5842
                        $ECHO "*** Warning: lib $linklib is a module, not a shared library"
5843
                        if test -z "$old_library" ; then
5844
                          $ECHO
5845
                          $ECHO "*** And there doesn't seem to be a static archive available"
5846
                          $ECHO "*** The link will probably fail, sorry"
5847
                        else
5848
                          add="$dir/$old_library"
5849
                        fi
5850
                      elif test -n "$old_library"; then
5851
                        add="$dir/$old_library"
5852
                      fi
5853
                    fi
5854
                esac
5855
              elif test "$hardcode_minus_L" = no; then
5856
                case $host in
5857
                *-*-sunos*) add_shlibpath="$dir" ;;
5858
                esac
5859
                add_dir="-L$dir"
5860
                add="-l$name"
5861
              elif test "$hardcode_shlibpath_var" = no; then
5862
                add_shlibpath="$dir"
5863
                add="-l$name"
5864
              else
5865
                lib_linked=no
5866
              fi
5867
              ;;
5868
            relink)
5869
              if test "$hardcode_direct" = yes &&
5870
                 test "$hardcode_direct_absolute" = no; then
5871
                add="$dir/$linklib"
5872
              elif test "$hardcode_minus_L" = yes; then
5873
                add_dir="-L$dir"
5874
                # Try looking first in the location we're being installed to.
5875
                if test -n "$inst_prefix_dir"; then
5876
                  case $libdir in
5877
                    [\\/]*)
5878
                      add_dir="$add_dir -L$inst_prefix_dir$libdir"
5879
                      ;;
5880
                  esac
5881
                fi
5882
                add="-l$name"
5883
              elif test "$hardcode_shlibpath_var" = yes; then
5884
                add_shlibpath="$dir"
5885
                add="-l$name"
5886
              else
5887
                lib_linked=no
5888
              fi
5889
              ;;
5890
            *) lib_linked=no ;;
5891
            esac
5892
 
5893
            if test "$lib_linked" != yes; then
5894
              func_fatal_configuration "unsupported hardcode properties"
5895
            fi
5896
 
5897
            if test -n "$add_shlibpath"; then
5898
              case :$compile_shlibpath: in
5899
              *":$add_shlibpath:"*) ;;
5900
              *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
5901
              esac
5902
            fi
5903
            if test "$linkmode" = prog; then
5904
              test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
5905
              test -n "$add" && compile_deplibs="$add $compile_deplibs"
5906
            else
5907
              test -n "$add_dir" && deplibs="$add_dir $deplibs"
5908
              test -n "$add" && deplibs="$add $deplibs"
5909
              if test "$hardcode_direct" != yes &&
5910
                 test "$hardcode_minus_L" != yes &&
5911
                 test "$hardcode_shlibpath_var" = yes; then
5912
                case :$finalize_shlibpath: in
5913
                *":$libdir:"*) ;;
5914
                *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5915
                esac
5916
              fi
5917
            fi
5918
          fi
5919
 
5920
          if test "$linkmode" = prog || test "$mode" = relink; then
5921
            add_shlibpath=
5922
            add_dir=
5923
            add=
5924
            # Finalize command for both is simple: just hardcode it.
5925
            if test "$hardcode_direct" = yes &&
5926
               test "$hardcode_direct_absolute" = no; then
5927
              add="$libdir/$linklib"
5928
            elif test "$hardcode_minus_L" = yes; then
5929
              add_dir="-L$libdir"
5930
              add="-l$name"
5931
            elif test "$hardcode_shlibpath_var" = yes; then
5932
              case :$finalize_shlibpath: in
5933
              *":$libdir:"*) ;;
5934
              *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
5935
              esac
5936
              add="-l$name"
5937
            elif test "$hardcode_automatic" = yes; then
5938
              if test -n "$inst_prefix_dir" &&
5939
                 test -f "$inst_prefix_dir$libdir/$linklib" ; then
5940
                add="$inst_prefix_dir$libdir/$linklib"
5941
              else
5942
                add="$libdir/$linklib"
5943
              fi
5944
            else
5945
              # We cannot seem to hardcode it, guess we'll fake it.
5946
              add_dir="-L$libdir"
5947
              # Try looking first in the location we're being installed to.
5948
              if test -n "$inst_prefix_dir"; then
5949
                case $libdir in
5950
                  [\\/]*)
5951
                    add_dir="$add_dir -L$inst_prefix_dir$libdir"
5952
                    ;;
5953
                esac
5954
              fi
5955
              add="-l$name"
5956
            fi
5957
 
5958
            if test "$linkmode" = prog; then
5959
              test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
5960
              test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
5961
            else
5962
              test -n "$add_dir" && deplibs="$add_dir $deplibs"
5963
              test -n "$add" && deplibs="$add $deplibs"
5964
            fi
5965
          fi
5966
        elif test "$linkmode" = prog; then
5967
          # Here we assume that one of hardcode_direct or hardcode_minus_L
5968
          # is not unsupported.  This is valid on all known static and
5969
          # shared platforms.
5970
          if test "$hardcode_direct" != unsupported; then
5971
            test -n "$old_library" && linklib="$old_library"
5972
            compile_deplibs="$dir/$linklib $compile_deplibs"
5973
            finalize_deplibs="$dir/$linklib $finalize_deplibs"
5974
          else
5975
            compile_deplibs="-l$name -L$dir $compile_deplibs"
5976
            finalize_deplibs="-l$name -L$dir $finalize_deplibs"
5977
          fi
5978
        elif test "$build_libtool_libs" = yes; then
5979
          # Not a shared library
5980
          if test "$deplibs_check_method" != pass_all; then
5981
            # We're trying link a shared library against a static one
5982
            # but the system doesn't support it.
5983
 
5984
            # Just print a warning and add the library to dependency_libs so
5985
            # that the program can be linked against the static library.
5986
            $ECHO
5987
            $ECHO "*** Warning: This system can not link to static lib archive $lib."
5988
            $ECHO "*** I have the capability to make that library automatically link in when"
5989
            $ECHO "*** you link to this library.  But I can only do this if you have a"
5990
            $ECHO "*** shared version of the library, which you do not appear to have."
5991
            if test "$module" = yes; then
5992
              $ECHO "*** But as you try to build a module library, libtool will still create "
5993
              $ECHO "*** a static module, that should work as long as the dlopening application"
5994
              $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
5995
              if test -z "$global_symbol_pipe"; then
5996
                $ECHO
5997
                $ECHO "*** However, this would only work if libtool was able to extract symbol"
5998
                $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
5999
                $ECHO "*** not find such a program.  So, this module is probably useless."
6000
                $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6001
              fi
6002
              if test "$build_old_libs" = no; then
6003
                build_libtool_libs=module
6004
                build_old_libs=yes
6005
              else
6006
                build_libtool_libs=no
6007
              fi
6008
            fi
6009
          else
6010
            deplibs="$dir/$old_library $deplibs"
6011
            link_static=yes
6012
          fi
6013
        fi # link shared/static library?
6014
 
6015
        if test "$linkmode" = lib; then
6016
          if test -n "$dependency_libs" &&
6017
             { test "$hardcode_into_libs" != yes ||
6018
               test "$build_old_libs" = yes ||
6019
               test "$link_static" = yes; }; then
6020
            # Extract -R from dependency_libs
6021
            temp_deplibs=
6022
            for libdir in $dependency_libs; do
6023
              case $libdir in
6024
              -R*) func_stripname '-R' '' "$libdir"
6025
                   temp_xrpath=$func_stripname_result
6026
                   case " $xrpath " in
6027
                   *" $temp_xrpath "*) ;;
6028
                   *) xrpath="$xrpath $temp_xrpath";;
6029
                   esac;;
6030
              *) temp_deplibs="$temp_deplibs $libdir";;
6031
              esac
6032
            done
6033
            dependency_libs="$temp_deplibs"
6034
          fi
6035
 
6036
          newlib_search_path="$newlib_search_path $absdir"
6037
          # Link against this library
6038
          test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
6039
          # ... and its dependency_libs
6040
          tmp_libs=
6041
          for deplib in $dependency_libs; do
6042
            newdependency_libs="$deplib $newdependency_libs"
6043
            if $opt_duplicate_deps ; then
6044
              case "$tmp_libs " in
6045
              *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6046
              esac
6047
            fi
6048
            tmp_libs="$tmp_libs $deplib"
6049
          done
6050
 
6051
          if test "$link_all_deplibs" != no; then
6052
            # Add the search paths of all dependency libraries
6053
            for deplib in $dependency_libs; do
6054
              case $deplib in
6055
              -L*) path="$deplib" ;;
6056
              *.la)
6057
                func_dirname "$deplib" "" "."
6058
                dir="$func_dirname_result"
6059
                # We need an absolute path.
6060
                case $dir in
6061
                [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
6062
                *)
6063
                  absdir=`cd "$dir" && pwd`
6064
                  if test -z "$absdir"; then
6065
                    func_warning "cannot determine absolute directory name of \`$dir'"
6066
                    absdir="$dir"
6067
                  fi
6068
                  ;;
6069
                esac
6070
                if $GREP "^installed=no" $deplib > /dev/null; then
6071
                case $host in
6072
                *-*-darwin*)
6073
                  depdepl=
6074
                  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
6075
                  if test -n "$deplibrary_names" ; then
6076
                    for tmp in $deplibrary_names ; do
6077
                      depdepl=$tmp
6078
                    done
6079
                    if test -f "$absdir/$objdir/$depdepl" ; then
6080
                      depdepl="$absdir/$objdir/$depdepl"
6081
                      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6082
                      if test -z "$darwin_install_name"; then
6083
                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
6084
                      fi
6085
                      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6086
                      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
6087
                      path=
6088
                    fi
6089
                  fi
6090
                  ;;
6091
                *)
6092
                  path="-L$absdir/$objdir"
6093
                  ;;
6094
                esac
6095
                else
6096
                  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
6097
                  test -z "$libdir" && \
6098
                    func_fatal_error "\`$deplib' is not a valid libtool archive"
6099
                  test "$absdir" != "$libdir" && \
6100
                    func_warning "\`$deplib' seems to be moved"
6101
 
6102
                  path="-L$absdir"
6103
                fi
6104
                ;;
6105
              esac
6106
              case " $deplibs " in
6107
              *" $path "*) ;;
6108
              *) deplibs="$path $deplibs" ;;
6109
              esac
6110
            done
6111
          fi # link_all_deplibs != no
6112
        fi # linkmode = lib
6113
      done # for deplib in $libs
6114
      if test "$pass" = link; then
6115
        if test "$linkmode" = "prog"; then
6116
          compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
6117
          finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
6118
        else
6119
          compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6120
        fi
6121
      fi
6122
      dependency_libs="$newdependency_libs"
6123
      if test "$pass" = dlpreopen; then
6124
        # Link the dlpreopened libraries before other libraries
6125
        for deplib in $save_deplibs; do
6126
          deplibs="$deplib $deplibs"
6127
        done
6128
      fi
6129
      if test "$pass" != dlopen; then
6130
        if test "$pass" != conv; then
6131
          # Make sure lib_search_path contains only unique directories.
6132
          lib_search_path=
6133
          for dir in $newlib_search_path; do
6134
            case "$lib_search_path " in
6135
            *" $dir "*) ;;
6136
            *) lib_search_path="$lib_search_path $dir" ;;
6137
            esac
6138
          done
6139
          newlib_search_path=
6140
        fi
6141
 
6142
        if test "$linkmode,$pass" != "prog,link"; then
6143
          vars="deplibs"
6144
        else
6145
          vars="compile_deplibs finalize_deplibs"
6146
        fi
6147
        for var in $vars dependency_libs; do
6148
          # Add libraries to $var in reverse order
6149
          eval tmp_libs=\"\$$var\"
6150
          new_libs=
6151
          for deplib in $tmp_libs; do
6152
            # FIXME: Pedantically, this is the right thing to do, so
6153
            #        that some nasty dependency loop isn't accidentally
6154
            #        broken:
6155
            #new_libs="$deplib $new_libs"
6156
            # Pragmatically, this seems to cause very few problems in
6157
            # practice:
6158
            case $deplib in
6159
            -L*) new_libs="$deplib $new_libs" ;;
6160
            -R*) ;;
6161
            *)
6162
              # And here is the reason: when a library appears more
6163
              # than once as an explicit dependence of a library, or
6164
              # is implicitly linked in more than once by the
6165
              # compiler, it is considered special, and multiple
6166
              # occurrences thereof are not removed.  Compare this
6167
              # with having the same library being listed as a
6168
              # dependency of multiple other libraries: in this case,
6169
              # we know (pedantically, we assume) the library does not
6170
              # need to be listed more than once, so we keep only the
6171
              # last copy.  This is not always right, but it is rare
6172
              # enough that we require users that really mean to play
6173
              # such unportable linking tricks to link the library
6174
              # using -Wl,-lname, so that libtool does not consider it
6175
              # for duplicate removal.
6176
              case " $specialdeplibs " in
6177
              *" $deplib "*) new_libs="$deplib $new_libs" ;;
6178
              *)
6179
                case " $new_libs " in
6180
                *" $deplib "*) ;;
6181
                *) new_libs="$deplib $new_libs" ;;
6182
                esac
6183
                ;;
6184
              esac
6185
              ;;
6186
            esac
6187
          done
6188
          tmp_libs=
6189
          for deplib in $new_libs; do
6190
            case $deplib in
6191
            -L*)
6192
              case " $tmp_libs " in
6193
              *" $deplib "*) ;;
6194
              *) tmp_libs="$tmp_libs $deplib" ;;
6195
              esac
6196
              ;;
6197
            *) tmp_libs="$tmp_libs $deplib" ;;
6198
            esac
6199
          done
6200
          eval $var=\"$tmp_libs\"
6201
        done # for var
6202
      fi
6203
      # Last step: remove runtime libs from dependency_libs
6204
      # (they stay in deplibs)
6205
      tmp_libs=
6206
      for i in $dependency_libs ; do
6207
        case " $predeps $postdeps $compiler_lib_search_path " in
6208
        *" $i "*)
6209
          i=""
6210
          ;;
6211
        esac
6212
        if test -n "$i" ; then
6213
          tmp_libs="$tmp_libs $i"
6214
        fi
6215
      done
6216
      dependency_libs=$tmp_libs
6217
    done # for pass
6218
    if test "$linkmode" = prog; then
6219
      dlfiles="$newdlfiles"
6220
    fi
6221
    if test "$linkmode" = prog || test "$linkmode" = lib; then
6222
      dlprefiles="$newdlprefiles"
6223
    fi
6224
 
6225
    case $linkmode in
6226
    oldlib)
6227
      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6228
        func_warning "\`-dlopen' is ignored for archives"
6229
      fi
6230
 
6231
      case " $deplibs" in
6232
      *\ -l* | *\ -L*)
6233
        func_warning "\`-l' and \`-L' are ignored for archives" ;;
6234
      esac
6235
 
6236
      test -n "$rpath" && \
6237
        func_warning "\`-rpath' is ignored for archives"
6238
 
6239
      test -n "$xrpath" && \
6240
        func_warning "\`-R' is ignored for archives"
6241
 
6242
      test -n "$vinfo" && \
6243
        func_warning "\`-version-info/-version-number' is ignored for archives"
6244
 
6245
      test -n "$release" && \
6246
        func_warning "\`-release' is ignored for archives"
6247
 
6248
      test -n "$export_symbols$export_symbols_regex" && \
6249
        func_warning "\`-export-symbols' is ignored for archives"
6250
 
6251
      # Now set the variables for building old libraries.
6252
      build_libtool_libs=no
6253
      oldlibs="$output"
6254
      objs="$objs$old_deplibs"
6255
      ;;
6256
 
6257
    lib)
6258
      # Make sure we only generate libraries of the form `libNAME.la'.
6259
      case $outputname in
6260
      lib*)
6261
        func_stripname 'lib' '.la' "$outputname"
6262
        name=$func_stripname_result
6263
        eval shared_ext=\"$shrext_cmds\"
6264
        eval libname=\"$libname_spec\"
6265
        ;;
6266
      *)
6267
        test "$module" = no && \
6268
          func_fatal_help "libtool library \`$output' must begin with \`lib'"
6269
 
6270
        if test "$need_lib_prefix" != no; then
6271
          # Add the "lib" prefix for modules if required
6272
          func_stripname '' '.la' "$outputname"
6273
          name=$func_stripname_result
6274
          eval shared_ext=\"$shrext_cmds\"
6275
          eval libname=\"$libname_spec\"
6276
        else
6277
          func_stripname '' '.la' "$outputname"
6278
          libname=$func_stripname_result
6279
        fi
6280
        ;;
6281
      esac
6282
 
6283
      if test -n "$objs"; then
6284
        if test "$deplibs_check_method" != pass_all; then
6285
          func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6286
        else
6287
          $ECHO
6288
          $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6289
          $ECHO "*** objects $objs is not portable!"
6290
          libobjs="$libobjs $objs"
6291
        fi
6292
      fi
6293
 
6294
      test "$dlself" != no && \
6295
        func_warning "\`-dlopen self' is ignored for libtool libraries"
6296
 
6297
      set dummy $rpath
6298
      shift
6299
      test "$#" -gt 1 && \
6300
        func_warning "ignoring multiple \`-rpath's for a libtool library"
6301
 
6302
      install_libdir="$1"
6303
 
6304
      oldlibs=
6305
      if test -z "$rpath"; then
6306
        if test "$build_libtool_libs" = yes; then
6307
          # Building a libtool convenience library.
6308
          # Some compilers have problems with a `.al' extension so
6309
          # convenience libraries should have the same extension an
6310
          # archive normally would.
6311
          oldlibs="$output_objdir/$libname.$libext $oldlibs"
6312
          build_libtool_libs=convenience
6313
          build_old_libs=yes
6314
        fi
6315
 
6316
        test -n "$vinfo" && \
6317
          func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6318
 
6319
        test -n "$release" && \
6320
          func_warning "\`-release' is ignored for convenience libraries"
6321
      else
6322
 
6323
        # Parse the version information argument.
6324
        save_ifs="$IFS"; IFS=':'
6325
        set dummy $vinfo 0 0 0
6326
        shift
6327
        IFS="$save_ifs"
6328
 
6329
        test -n "$7" && \
6330
          func_fatal_help "too many parameters to \`-version-info'"
6331
 
6332
        # convert absolute version numbers to libtool ages
6333
        # this retains compatibility with .la files and attempts
6334
        # to make the code below a bit more comprehensible
6335
 
6336
        case $vinfo_number in
6337
        yes)
6338
          number_major="$1"
6339
          number_minor="$2"
6340
          number_revision="$3"
6341
          #
6342
          # There are really only two kinds -- those that
6343
          # use the current revision as the major version
6344
          # and those that subtract age and use age as
6345
          # a minor version.  But, then there is irix
6346
          # which has an extra 1 added just for fun
6347
          #
6348
          case $version_type in
6349
          darwin|linux|osf|windows|none)
6350
            func_arith $number_major + $number_minor
6351
            current=$func_arith_result
6352
            age="$number_minor"
6353
            revision="$number_revision"
6354
            ;;
6355
          freebsd-aout|freebsd-elf|sunos)
6356
            current="$number_major"
6357
            revision="$number_minor"
6358
            age="0"
6359
            ;;
6360
          irix|nonstopux)
6361
            func_arith $number_major + $number_minor
6362
            current=$func_arith_result
6363
            age="$number_minor"
6364
            revision="$number_minor"
6365
            lt_irix_increment=no
6366
            ;;
6367
          esac
6368
          ;;
6369
        no)
6370
          current="$1"
6371
          revision="$2"
6372
          age="$3"
6373
          ;;
6374
        esac
6375
 
6376
        # Check that each of the things are valid numbers.
6377
        case $current in
6378
        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]) ;;
6379
        *)
6380
          func_error "CURRENT \`$current' must be a nonnegative integer"
6381
          func_fatal_error "\`$vinfo' is not valid version information"
6382
          ;;
6383
        esac
6384
 
6385
        case $revision in
6386
        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]) ;;
6387
        *)
6388
          func_error "REVISION \`$revision' must be a nonnegative integer"
6389
          func_fatal_error "\`$vinfo' is not valid version information"
6390
          ;;
6391
        esac
6392
 
6393
        case $age in
6394
        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]) ;;
6395
        *)
6396
          func_error "AGE \`$age' must be a nonnegative integer"
6397
          func_fatal_error "\`$vinfo' is not valid version information"
6398
          ;;
6399
        esac
6400
 
6401
        if test "$age" -gt "$current"; then
6402
          func_error "AGE \`$age' is greater than the current interface number \`$current'"
6403
          func_fatal_error "\`$vinfo' is not valid version information"
6404
        fi
6405
 
6406
        # Calculate the version variables.
6407
        major=
6408
        versuffix=
6409
        verstring=
6410
        case $version_type in
6411
        none) ;;
6412
 
6413
        darwin)
6414
          # Like Linux, but with the current version available in
6415
          # verstring for coding it into the library header
6416
          func_arith $current - $age
6417
          major=.$func_arith_result
6418
          versuffix="$major.$age.$revision"
6419
          # Darwin ld doesn't like 0 for these options...
6420
          func_arith $current + 1
6421
          minor_current=$func_arith_result
6422
          xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6423
          verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6424
          ;;
6425
 
6426
        freebsd-aout)
6427
          major=".$current"
6428
          versuffix=".$current.$revision";
6429
          ;;
6430
 
6431
        freebsd-elf)
6432
          major=".$current"
6433
          versuffix=".$current"
6434
          ;;
6435
 
6436
        irix | nonstopux)
6437
          if test "X$lt_irix_increment" = "Xno"; then
6438
            func_arith $current - $age
6439
          else
6440
            func_arith $current - $age + 1
6441
          fi
6442
          major=$func_arith_result
6443
 
6444
          case $version_type in
6445
            nonstopux) verstring_prefix=nonstopux ;;
6446
            *)         verstring_prefix=sgi ;;
6447
          esac
6448
          verstring="$verstring_prefix$major.$revision"
6449
 
6450
          # Add in all the interfaces that we are compatible with.
6451
          loop=$revision
6452
          while test "$loop" -ne 0; do
6453
            func_arith $revision - $loop
6454
            iface=$func_arith_result
6455
            func_arith $loop - 1
6456
            loop=$func_arith_result
6457
            verstring="$verstring_prefix$major.$iface:$verstring"
6458
          done
6459
 
6460
          # Before this point, $major must not contain `.'.
6461
          major=.$major
6462
          versuffix="$major.$revision"
6463
          ;;
6464
 
6465
        linux)
6466
          func_arith $current - $age
6467
          major=.$func_arith_result
6468
          versuffix="$major.$age.$revision"
6469
          ;;
6470
 
6471
        osf)
6472
          func_arith $current - $age
6473
          major=.$func_arith_result
6474
          versuffix=".$current.$age.$revision"
6475
          verstring="$current.$age.$revision"
6476
 
6477
          # Add in all the interfaces that we are compatible with.
6478
          loop=$age
6479
          while test "$loop" -ne 0; do
6480
            func_arith $current - $loop
6481
            iface=$func_arith_result
6482
            func_arith $loop - 1
6483
            loop=$func_arith_result
6484
            verstring="$verstring:${iface}.0"
6485
          done
6486
 
6487
          # Make executables depend on our current version.
6488
          verstring="$verstring:${current}.0"
6489
          ;;
6490
 
6491
        qnx)
6492
          major=".$current"
6493
          versuffix=".$current"
6494
          ;;
6495
 
6496
        sunos)
6497
          major=".$current"
6498
          versuffix=".$current.$revision"
6499
          ;;
6500
 
6501
        windows)
6502
          # Use '-' rather than '.', since we only want one
6503
          # extension on DOS 8.3 filesystems.
6504
          func_arith $current - $age
6505
          major=$func_arith_result
6506
          versuffix="-$major"
6507
          ;;
6508
 
6509
        *)
6510
          func_fatal_configuration "unknown library version type \`$version_type'"
6511
          ;;
6512
        esac
6513
 
6514
        # Clear the version info if we defaulted, and they specified a release.
6515
        if test -z "$vinfo" && test -n "$release"; then
6516
          major=
6517
          case $version_type in
6518
          darwin)
6519
            # we can't check for "0.0" in archive_cmds due to quoting
6520
            # problems, so we reset it completely
6521
            verstring=
6522
            ;;
6523
          *)
6524
            verstring="0.0"
6525
            ;;
6526
          esac
6527
          if test "$need_version" = no; then
6528
            versuffix=
6529
          else
6530
            versuffix=".0.0"
6531
          fi
6532
        fi
6533
 
6534
        # Remove version info from name if versioning should be avoided
6535
        if test "$avoid_version" = yes && test "$need_version" = no; then
6536
          major=
6537
          versuffix=
6538
          verstring=""
6539
        fi
6540
 
6541
        # Check to see if the archive will have undefined symbols.
6542
        if test "$allow_undefined" = yes; then
6543
          if test "$allow_undefined_flag" = unsupported; then
6544
            func_warning "undefined symbols not allowed in $host shared libraries"
6545
            build_libtool_libs=no
6546
            build_old_libs=yes
6547
          fi
6548
        else
6549
          # Don't allow undefined symbols.
6550
          allow_undefined_flag="$no_undefined_flag"
6551
        fi
6552
 
6553
      fi
6554
 
6555
      func_generate_dlsyms "$libname" "$libname" "yes"
6556
      libobjs="$libobjs $symfileobj"
6557
      test "X$libobjs" = "X " && libobjs=
6558
 
6559
      if test "$mode" != relink; then
6560
        # Remove our outputs, but don't remove object files since they
6561
        # may have been created when compiling PIC objects.
6562
        removelist=
6563
        tempremovelist=`$ECHO "$output_objdir/*"`
6564
        for p in $tempremovelist; do
6565
          case $p in
6566
            *.$objext | *.gcno)
6567
               ;;
6568
            $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6569
               if test "X$precious_files_regex" != "X"; then
6570
                 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6571
                 then
6572
                   continue
6573
                 fi
6574
               fi
6575
               removelist="$removelist $p"
6576
               ;;
6577
            *) ;;
6578
          esac
6579
        done
6580
        test -n "$removelist" && \
6581
          func_show_eval "${RM}r \$removelist"
6582
      fi
6583
 
6584
      # Now set the variables for building old libraries.
6585
      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6586
        oldlibs="$oldlibs $output_objdir/$libname.$libext"
6587
 
6588
        # Transform .lo files to .o files.
6589
        oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6590
      fi
6591
 
6592
      # Eliminate all temporary directories.
6593
      #for path in $notinst_path; do
6594
      # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
6595
      # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
6596
      # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
6597
      #done
6598
 
6599
      if test -n "$xrpath"; then
6600
        # If the user specified any rpath flags, then add them.
6601
        temp_xrpath=
6602
        for libdir in $xrpath; do
6603
          temp_xrpath="$temp_xrpath -R$libdir"
6604
          case "$finalize_rpath " in
6605
          *" $libdir "*) ;;
6606
          *) finalize_rpath="$finalize_rpath $libdir" ;;
6607
          esac
6608
        done
6609
        if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6610
          dependency_libs="$temp_xrpath $dependency_libs"
6611
        fi
6612
      fi
6613
 
6614
      # Make sure dlfiles contains only unique files that won't be dlpreopened
6615
      old_dlfiles="$dlfiles"
6616
      dlfiles=
6617
      for lib in $old_dlfiles; do
6618
        case " $dlprefiles $dlfiles " in
6619
        *" $lib "*) ;;
6620
        *) dlfiles="$dlfiles $lib" ;;
6621
        esac
6622
      done
6623
 
6624
      # Make sure dlprefiles contains only unique files
6625
      old_dlprefiles="$dlprefiles"
6626
      dlprefiles=
6627
      for lib in $old_dlprefiles; do
6628
        case "$dlprefiles " in
6629
        *" $lib "*) ;;
6630
        *) dlprefiles="$dlprefiles $lib" ;;
6631
        esac
6632
      done
6633
 
6634
      if test "$build_libtool_libs" = yes; then
6635
        if test -n "$rpath"; then
6636
          case $host in
6637
          *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
6638
            # these systems don't actually have a c library (as such)!
6639
            ;;
6640
          *-*-rhapsody* | *-*-darwin1.[012])
6641
            # Rhapsody C library is in the System framework
6642
            deplibs="$deplibs System.ltframework"
6643
            ;;
6644
          *-*-netbsd*)
6645
            # Don't link with libc until the a.out ld.so is fixed.
6646
            ;;
6647
          *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6648
            # Do not include libc due to us having libc/libc_r.
6649
            ;;
6650
          *-*-sco3.2v5* | *-*-sco5v6*)
6651
            # Causes problems with __ctype
6652
            ;;
6653
          *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6654
            # Compiler inserts libc in the correct place for threads to work
6655
            ;;
6656
          *)
6657
            # Add libc to deplibs on all other systems if necessary.
6658
            if test "$build_libtool_need_lc" = "yes"; then
6659
              deplibs="$deplibs -lc"
6660
            fi
6661
            ;;
6662
          esac
6663
        fi
6664
 
6665
        # Transform deplibs into only deplibs that can be linked in shared.
6666
        name_save=$name
6667
        libname_save=$libname
6668
        release_save=$release
6669
        versuffix_save=$versuffix
6670
        major_save=$major
6671
        # I'm not sure if I'm treating the release correctly.  I think
6672
        # release should show up in the -l (ie -lgmp5) so we don't want to
6673
        # add it in twice.  Is that correct?
6674
        release=""
6675
        versuffix=""
6676
        major=""
6677
        newdeplibs=
6678
        droppeddeps=no
6679
        case $deplibs_check_method in
6680
        pass_all)
6681
          # Don't check for shared/static.  Everything works.
6682
          # This might be a little naive.  We might want to check
6683
          # whether the library exists or not.  But this is on
6684
          # osf3 & osf4 and I'm not really sure... Just
6685
          # implementing what was already the behavior.
6686
          newdeplibs=$deplibs
6687
          ;;
6688
        test_compile)
6689
          # This code stresses the "libraries are programs" paradigm to its
6690
          # limits. Maybe even breaks it.  We compile a program, linking it
6691
          # against the deplibs as a proxy for the library.  Then we can check
6692
          # whether they linked in statically or dynamically with ldd.
6693
          $opt_dry_run || $RM conftest.c
6694
          cat > conftest.c <<EOF
6695
          int main() { return 0; }
6696
EOF
6697
          $opt_dry_run || $RM conftest
6698
          if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6699
            ldd_output=`ldd conftest`
6700
            for i in $deplibs; do
6701
              case $i in
6702
              -l*)
6703
                func_stripname -l '' "$i"
6704
                name=$func_stripname_result
6705
                if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6706
                  case " $predeps $postdeps " in
6707
                  *" $i "*)
6708
                    newdeplibs="$newdeplibs $i"
6709
                    i=""
6710
                    ;;
6711
                  esac
6712
                fi
6713
                if test -n "$i" ; then
6714
                  libname=`eval "\\$ECHO \"$libname_spec\""`
6715
                  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6716
                  set dummy $deplib_matches; shift
6717
                  deplib_match=$1
6718
                  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6719
                    newdeplibs="$newdeplibs $i"
6720
                  else
6721
                    droppeddeps=yes
6722
                    $ECHO
6723
                    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6724
                    $ECHO "*** I have the capability to make that library automatically link in when"
6725
                    $ECHO "*** you link to this library.  But I can only do this if you have a"
6726
                    $ECHO "*** shared version of the library, which I believe you do not have"
6727
                    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
6728
                    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
6729
                  fi
6730
                fi
6731
                ;;
6732
              *)
6733
                newdeplibs="$newdeplibs $i"
6734
                ;;
6735
              esac
6736
            done
6737
          else
6738
            # Error occurred in the first compile.  Let's try to salvage
6739
            # the situation: Compile a separate program for each library.
6740
            for i in $deplibs; do
6741
              case $i in
6742
              -l*)
6743
                func_stripname -l '' "$i"
6744
                name=$func_stripname_result
6745
                $opt_dry_run || $RM conftest
6746
                if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6747
                  ldd_output=`ldd conftest`
6748
                  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6749
                    case " $predeps $postdeps " in
6750
                    *" $i "*)
6751
                      newdeplibs="$newdeplibs $i"
6752
                      i=""
6753
                      ;;
6754
                    esac
6755
                  fi
6756
                  if test -n "$i" ; then
6757
                    libname=`eval "\\$ECHO \"$libname_spec\""`
6758
                    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6759
                    set dummy $deplib_matches; shift
6760
                    deplib_match=$1
6761
                    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6762
                      newdeplibs="$newdeplibs $i"
6763
                    else
6764
                      droppeddeps=yes
6765
                      $ECHO
6766
                      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6767
                      $ECHO "*** I have the capability to make that library automatically link in when"
6768
                      $ECHO "*** you link to this library.  But I can only do this if you have a"
6769
                      $ECHO "*** shared version of the library, which you do not appear to have"
6770
                      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
6771
                      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
6772
                    fi
6773
                  fi
6774
                else
6775
                  droppeddeps=yes
6776
                  $ECHO
6777
                  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
6778
                  $ECHO "*** make it link in!  You will probably need to install it or some"
6779
                  $ECHO "*** library that it depends on before this library will be fully"
6780
                  $ECHO "*** functional.  Installing it before continuing would be even better."
6781
                fi
6782
                ;;
6783
              *)
6784
                newdeplibs="$newdeplibs $i"
6785
                ;;
6786
              esac
6787
            done
6788
          fi
6789
          ;;
6790
        file_magic*)
6791
          set dummy $deplibs_check_method; shift
6792
          file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6793
          for a_deplib in $deplibs; do
6794
            case $a_deplib in
6795
            -l*)
6796
              func_stripname -l '' "$a_deplib"
6797
              name=$func_stripname_result
6798
              if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6799
                case " $predeps $postdeps " in
6800
                *" $a_deplib "*)
6801
                  newdeplibs="$newdeplibs $a_deplib"
6802
                  a_deplib=""
6803
                  ;;
6804
                esac
6805
              fi
6806
              if test -n "$a_deplib" ; then
6807
                libname=`eval "\\$ECHO \"$libname_spec\""`
6808
                for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6809
                  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6810
                  for potent_lib in $potential_libs; do
6811
                      # Follow soft links.
6812
                      if ls -lLd "$potent_lib" 2>/dev/null |
6813
                         $GREP " -> " >/dev/null; then
6814
                        continue
6815
                      fi
6816
                      # The statement above tries to avoid entering an
6817
                      # endless loop below, in case of cyclic links.
6818
                      # We might still enter an endless loop, since a link
6819
                      # loop can be closed while we follow links,
6820
                      # but so what?
6821
                      potlib="$potent_lib"
6822
                      while test -h "$potlib" 2>/dev/null; do
6823
                        potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6824
                        case $potliblink in
6825
                        [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
6826
                        *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
6827
                        esac
6828
                      done
6829
                      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
6830
                         $SED -e 10q |
6831
                         $EGREP "$file_magic_regex" > /dev/null; then
6832
                        newdeplibs="$newdeplibs $a_deplib"
6833
                        a_deplib=""
6834
                        break 2
6835
                      fi
6836
                  done
6837
                done
6838
              fi
6839
              if test -n "$a_deplib" ; then
6840
                droppeddeps=yes
6841
                $ECHO
6842
                $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6843
                $ECHO "*** I have the capability to make that library automatically link in when"
6844
                $ECHO "*** you link to this library.  But I can only do this if you have a"
6845
                $ECHO "*** shared version of the library, which you do not appear to have"
6846
                $ECHO "*** because I did check the linker path looking for a file starting"
6847
                if test -z "$potlib" ; then
6848
                  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
6849
                else
6850
                  $ECHO "*** with $libname and none of the candidates passed a file format test"
6851
                  $ECHO "*** using a file magic. Last file checked: $potlib"
6852
                fi
6853
              fi
6854
              ;;
6855
            *)
6856
              # Add a -L argument.
6857
              newdeplibs="$newdeplibs $a_deplib"
6858
              ;;
6859
            esac
6860
          done # Gone through all deplibs.
6861
          ;;
6862
        match_pattern*)
6863
          set dummy $deplibs_check_method; shift
6864
          match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6865
          for a_deplib in $deplibs; do
6866
            case $a_deplib in
6867
            -l*)
6868
              func_stripname -l '' "$a_deplib"
6869
              name=$func_stripname_result
6870
              if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6871
                case " $predeps $postdeps " in
6872
                *" $a_deplib "*)
6873
                  newdeplibs="$newdeplibs $a_deplib"
6874
                  a_deplib=""
6875
                  ;;
6876
                esac
6877
              fi
6878
              if test -n "$a_deplib" ; then
6879
                libname=`eval "\\$ECHO \"$libname_spec\""`
6880
                for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6881
                  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6882
                  for potent_lib in $potential_libs; do
6883
                    potlib="$potent_lib" # see symlink-check above in file_magic test
6884
                    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
6885
                       $EGREP "$match_pattern_regex" > /dev/null; then
6886
                      newdeplibs="$newdeplibs $a_deplib"
6887
                      a_deplib=""
6888
                      break 2
6889
                    fi
6890
                  done
6891
                done
6892
              fi
6893
              if test -n "$a_deplib" ; then
6894
                droppeddeps=yes
6895
                $ECHO
6896
                $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
6897
                $ECHO "*** I have the capability to make that library automatically link in when"
6898
                $ECHO "*** you link to this library.  But I can only do this if you have a"
6899
                $ECHO "*** shared version of the library, which you do not appear to have"
6900
                $ECHO "*** because I did check the linker path looking for a file starting"
6901
                if test -z "$potlib" ; then
6902
                  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
6903
                else
6904
                  $ECHO "*** with $libname and none of the candidates passed a file format test"
6905
                  $ECHO "*** using a regex pattern. Last file checked: $potlib"
6906
                fi
6907
              fi
6908
              ;;
6909
            *)
6910
              # Add a -L argument.
6911
              newdeplibs="$newdeplibs $a_deplib"
6912
              ;;
6913
            esac
6914
          done # Gone through all deplibs.
6915
          ;;
6916
        none | unknown | *)
6917
          newdeplibs=""
6918
          tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
6919
              -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
6920
          if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6921
            for i in $predeps $postdeps ; do
6922
              # can't use Xsed below, because $i might contain '/'
6923
              tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
6924
            done
6925
          fi
6926
          if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[      ]//g' |
6927
             $GREP . >/dev/null; then
6928
            $ECHO
6929
            if test "X$deplibs_check_method" = "Xnone"; then
6930
              $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
6931
            else
6932
              $ECHO "*** Warning: inter-library dependencies are not known to be supported."
6933
            fi
6934
            $ECHO "*** All declared inter-library dependencies are being dropped."
6935
            droppeddeps=yes
6936
          fi
6937
          ;;
6938
        esac
6939
        versuffix=$versuffix_save
6940
        major=$major_save
6941
        release=$release_save
6942
        libname=$libname_save
6943
        name=$name_save
6944
 
6945
        case $host in
6946
        *-*-rhapsody* | *-*-darwin1.[012])
6947
          # On Rhapsody replace the C library with the System framework
6948
          newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
6949
          ;;
6950
        esac
6951
 
6952
        if test "$droppeddeps" = yes; then
6953
          if test "$module" = yes; then
6954
            $ECHO
6955
            $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
6956
            $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
6957
            $ECHO "*** a static module, that should work as long as the dlopening"
6958
            $ECHO "*** application is linked with the -dlopen flag."
6959
            if test -z "$global_symbol_pipe"; then
6960
              $ECHO
6961
              $ECHO "*** However, this would only work if libtool was able to extract symbol"
6962
              $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
6963
              $ECHO "*** not find such a program.  So, this module is probably useless."
6964
              $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6965
            fi
6966
            if test "$build_old_libs" = no; then
6967
              oldlibs="$output_objdir/$libname.$libext"
6968
              build_libtool_libs=module
6969
              build_old_libs=yes
6970
            else
6971
              build_libtool_libs=no
6972
            fi
6973
          else
6974
            $ECHO "*** The inter-library dependencies that have been dropped here will be"
6975
            $ECHO "*** automatically added whenever a program is linked with this library"
6976
            $ECHO "*** or is declared to -dlopen it."
6977
 
6978
            if test "$allow_undefined" = no; then
6979
              $ECHO
6980
              $ECHO "*** Since this library must not contain undefined symbols,"
6981
              $ECHO "*** because either the platform does not support them or"
6982
              $ECHO "*** it was explicitly requested with -no-undefined,"
6983
              $ECHO "*** libtool will only create a static version of it."
6984
              if test "$build_old_libs" = no; then
6985
                oldlibs="$output_objdir/$libname.$libext"
6986
                build_libtool_libs=module
6987
                build_old_libs=yes
6988
              else
6989
                build_libtool_libs=no
6990
              fi
6991
            fi
6992
          fi
6993
        fi
6994
        # Done checking deplibs!
6995
        deplibs=$newdeplibs
6996
      fi
6997
      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
6998
      case $host in
6999
        *-*-darwin*)
7000
          newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7001
          new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7002
          deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7003
          ;;
7004
      esac
7005
 
7006
      # move library search paths that coincide with paths to not yet
7007
      # installed libraries to the beginning of the library search list
7008
      new_libs=
7009
      for path in $notinst_path; do
7010
        case " $new_libs " in
7011
        *" -L$path/$objdir "*) ;;
7012
        *)
7013
          case " $deplibs " in
7014
          *" -L$path/$objdir "*)
7015
            new_libs="$new_libs -L$path/$objdir" ;;
7016
          esac
7017
          ;;
7018
        esac
7019
      done
7020
      for deplib in $deplibs; do
7021
        case $deplib in
7022
        -L*)
7023
          case " $new_libs " in
7024
          *" $deplib "*) ;;
7025
          *) new_libs="$new_libs $deplib" ;;
7026
          esac
7027
          ;;
7028
        *) new_libs="$new_libs $deplib" ;;
7029
        esac
7030
      done
7031
      deplibs="$new_libs"
7032
 
7033
      # All the library-specific variables (install_libdir is set above).
7034
      library_names=
7035
      old_library=
7036
      dlname=
7037
 
7038
      # Test again, we may have decided not to build it any more
7039
      if test "$build_libtool_libs" = yes; then
7040
        if test "$hardcode_into_libs" = yes; then
7041
          # Hardcode the library paths
7042
          hardcode_libdirs=
7043
          dep_rpath=
7044
          rpath="$finalize_rpath"
7045
          test "$mode" != relink && rpath="$compile_rpath$rpath"
7046
          for libdir in $rpath; do
7047
            if test -n "$hardcode_libdir_flag_spec"; then
7048
              if test -n "$hardcode_libdir_separator"; then
7049
                if test -z "$hardcode_libdirs"; then
7050
                  hardcode_libdirs="$libdir"
7051
                else
7052
                  # Just accumulate the unique libdirs.
7053
                  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7054
                  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7055
                    ;;
7056
                  *)
7057
                    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7058
                    ;;
7059
                  esac
7060
                fi
7061
              else
7062
                eval flag=\"$hardcode_libdir_flag_spec\"
7063
                dep_rpath="$dep_rpath $flag"
7064
              fi
7065
            elif test -n "$runpath_var"; then
7066
              case "$perm_rpath " in
7067
              *" $libdir "*) ;;
7068
              *) perm_rpath="$perm_rpath $libdir" ;;
7069
              esac
7070
            fi
7071
          done
7072
          # Substitute the hardcoded libdirs into the rpath.
7073
          if test -n "$hardcode_libdir_separator" &&
7074
             test -n "$hardcode_libdirs"; then
7075
            libdir="$hardcode_libdirs"
7076
            if test -n "$hardcode_libdir_flag_spec_ld"; then
7077
              eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7078
            else
7079
              eval dep_rpath=\"$hardcode_libdir_flag_spec\"
7080
            fi
7081
          fi
7082
          if test -n "$runpath_var" && test -n "$perm_rpath"; then
7083
            # We should set the runpath_var.
7084
            rpath=
7085
            for dir in $perm_rpath; do
7086
              rpath="$rpath$dir:"
7087
            done
7088
            eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
7089
          fi
7090
          test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
7091
        fi
7092
 
7093
        shlibpath="$finalize_shlibpath"
7094
        test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
7095
        if test -n "$shlibpath"; then
7096
          eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
7097
        fi
7098
 
7099
        # Get the real and link names of the library.
7100
        eval shared_ext=\"$shrext_cmds\"
7101
        eval library_names=\"$library_names_spec\"
7102
        set dummy $library_names
7103
        shift
7104
        realname="$1"
7105
        shift
7106
 
7107
        if test -n "$soname_spec"; then
7108
          eval soname=\"$soname_spec\"
7109
        else
7110
          soname="$realname"
7111
        fi
7112
        if test -z "$dlname"; then
7113
          dlname=$soname
7114
        fi
7115
 
7116
        lib="$output_objdir/$realname"
7117
        linknames=
7118
        for link
7119
        do
7120
          linknames="$linknames $link"
7121
        done
7122
 
7123
        # Use standard objects if they are pic
7124
        test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7125
        test "X$libobjs" = "X " && libobjs=
7126
 
7127
        delfiles=
7128
        if test -n "$export_symbols" && test -n "$include_expsyms"; then
7129
          $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
7130
          export_symbols="$output_objdir/$libname.uexp"
7131
          delfiles="$delfiles $export_symbols"
7132
        fi
7133
 
7134
        orig_export_symbols=
7135
        case $host_os in
7136
        cygwin* | mingw* | cegcc*)
7137
          if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
7138
            # exporting using user supplied symfile
7139
            if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
7140
              # and it's NOT already a .def file. Must figure out
7141
              # which of the given symbols are data symbols and tag
7142
              # them as such. So, trigger use of export_symbols_cmds.
7143
              # export_symbols gets reassigned inside the "prepare
7144
              # the list of exported symbols" if statement, so the
7145
              # include_expsyms logic still works.
7146
              orig_export_symbols="$export_symbols"
7147
              export_symbols=
7148
              always_export_symbols=yes
7149
            fi
7150
          fi
7151
          ;;
7152
        esac
7153
 
7154
        # Prepare the list of exported symbols
7155
        if test -z "$export_symbols"; then
7156
          if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
7157
            func_verbose "generating symbol list for \`$libname.la'"
7158
            export_symbols="$output_objdir/$libname.exp"
7159
            $opt_dry_run || $RM $export_symbols
7160
            cmds=$export_symbols_cmds
7161
            save_ifs="$IFS"; IFS='~'
7162
            for cmd in $cmds; do
7163
              IFS="$save_ifs"
7164
              eval cmd=\"$cmd\"
7165
              func_len " $cmd"
7166
              len=$func_len_result
7167
              if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7168
                func_show_eval "$cmd" 'exit $?'
7169
                skipped_export=false
7170
              else
7171
                # The command line is too long to execute in one step.
7172
                func_verbose "using reloadable object file for export list..."
7173
                skipped_export=:
7174
                # Break out early, otherwise skipped_export may be
7175
                # set to false by a later but shorter cmd.
7176
                break
7177
              fi
7178
            done
7179
            IFS="$save_ifs"
7180
            if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7181
              func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7182
              func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7183
            fi
7184
          fi
7185
        fi
7186
 
7187
        if test -n "$export_symbols" && test -n "$include_expsyms"; then
7188
          tmp_export_symbols="$export_symbols"
7189
          test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7190
          $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7191
        fi
7192
 
7193
        if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7194
          # The given exports_symbols file has to be filtered, so filter it.
7195
          func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7196
          # FIXME: $output_objdir/$libname.filter potentially contains lots of
7197
          # 's' commands which not all seds can handle. GNU sed should be fine
7198
          # though. Also, the filter scales superlinearly with the number of
7199
          # global variables. join(1) would be nice here, but unfortunately
7200
          # isn't a blessed tool.
7201
          $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7202
          delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7203
          export_symbols=$output_objdir/$libname.def
7204
          $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7205
        fi
7206
 
7207
        tmp_deplibs=
7208
        for test_deplib in $deplibs; do
7209
          case " $convenience " in
7210
          *" $test_deplib "*) ;;
7211
          *)
7212
            tmp_deplibs="$tmp_deplibs $test_deplib"
7213
            ;;
7214
          esac
7215
        done
7216
        deplibs="$tmp_deplibs"
7217
 
7218
        if test -n "$convenience"; then
7219
          if test -n "$whole_archive_flag_spec" &&
7220
            test "$compiler_needs_object" = yes &&
7221
            test -z "$libobjs"; then
7222
            # extract the archives, so we have objects to list.
7223
            # TODO: could optimize this to just extract one archive.
7224
            whole_archive_flag_spec=
7225
          fi
7226
          if test -n "$whole_archive_flag_spec"; then
7227
            save_libobjs=$libobjs
7228
            eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7229
            test "X$libobjs" = "X " && libobjs=
7230
          else
7231
            gentop="$output_objdir/${outputname}x"
7232
            generated="$generated $gentop"
7233
 
7234
            func_extract_archives $gentop $convenience
7235
            libobjs="$libobjs $func_extract_archives_result"
7236
            test "X$libobjs" = "X " && libobjs=
7237
          fi
7238
        fi
7239
 
7240
        if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7241
          eval flag=\"$thread_safe_flag_spec\"
7242
          linker_flags="$linker_flags $flag"
7243
        fi
7244
 
7245
        # Make a backup of the uninstalled library when relinking
7246
        if test "$mode" = relink; then
7247
          $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7248
        fi
7249
 
7250
        # Do each of the archive commands.
7251
        if test "$module" = yes && test -n "$module_cmds" ; then
7252
          if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7253
            eval test_cmds=\"$module_expsym_cmds\"
7254
            cmds=$module_expsym_cmds
7255
          else
7256
            eval test_cmds=\"$module_cmds\"
7257
            cmds=$module_cmds
7258
          fi
7259
        else
7260
          if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7261
            eval test_cmds=\"$archive_expsym_cmds\"
7262
            cmds=$archive_expsym_cmds
7263
          else
7264
            eval test_cmds=\"$archive_cmds\"
7265
            cmds=$archive_cmds
7266
          fi
7267
        fi
7268
 
7269
        if test "X$skipped_export" != "X:" &&
7270
           func_len " $test_cmds" &&
7271
           len=$func_len_result &&
7272
           test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7273
          :
7274
        else
7275
          # The command line is too long to link in one step, link piecewise
7276
          # or, if using GNU ld and skipped_export is not :, use a linker
7277
          # script.
7278
 
7279
          # Save the value of $output and $libobjs because we want to
7280
          # use them later.  If we have whole_archive_flag_spec, we
7281
          # want to use save_libobjs as it was before
7282
          # whole_archive_flag_spec was expanded, because we can't
7283
          # assume the linker understands whole_archive_flag_spec.
7284
          # This may have to be revisited, in case too many
7285
          # convenience libraries get linked in and end up exceeding
7286
          # the spec.
7287
          if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7288
            save_libobjs=$libobjs
7289
          fi
7290
          save_output=$output
7291
          output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
7292
 
7293
          # Clear the reloadable object creation command queue and
7294
          # initialize k to one.
7295
          test_cmds=
7296
          concat_cmds=
7297
          objlist=
7298
          last_robj=
7299
          k=1
7300
 
7301
          if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7302
            output=${output_objdir}/${output_la}.lnkscript
7303
            func_verbose "creating GNU ld script: $output"
7304
            $ECHO 'INPUT (' > $output
7305
            for obj in $save_libobjs
7306
            do
7307
              $ECHO "$obj" >> $output
7308
            done
7309
            $ECHO ')' >> $output
7310
            delfiles="$delfiles $output"
7311
          elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7312
            output=${output_objdir}/${output_la}.lnk
7313
            func_verbose "creating linker input file list: $output"
7314
            : > $output
7315
            set x $save_libobjs
7316
            shift
7317
            firstobj=
7318
            if test "$compiler_needs_object" = yes; then
7319
              firstobj="$1 "
7320
              shift
7321
            fi
7322
            for obj
7323
            do
7324
              $ECHO "$obj" >> $output
7325
            done
7326
            delfiles="$delfiles $output"
7327
            output=$firstobj\"$file_list_spec$output\"
7328
          else
7329
            if test -n "$save_libobjs"; then
7330
              func_verbose "creating reloadable object files..."
7331
              output=$output_objdir/$output_la-${k}.$objext
7332
              eval test_cmds=\"$reload_cmds\"
7333
              func_len " $test_cmds"
7334
              len0=$func_len_result
7335
              len=$len0
7336
 
7337
              # Loop over the list of objects to be linked.
7338
              for obj in $save_libobjs
7339
              do
7340
                func_len " $obj"
7341
                func_arith $len + $func_len_result
7342
                len=$func_arith_result
7343
                if test "X$objlist" = X ||
7344
                   test "$len" -lt "$max_cmd_len"; then
7345
                  func_append objlist " $obj"
7346
                else
7347
                  # The command $test_cmds is almost too long, add a
7348
                  # command to the queue.
7349
                  if test "$k" -eq 1 ; then
7350
                    # The first file doesn't have a previous command to add.
7351
                    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
7352
                  else
7353
                    # All subsequent reloadable object files will link in
7354
                    # the last one created.
7355
                    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
7356
                  fi
7357
                  last_robj=$output_objdir/$output_la-${k}.$objext
7358
                  func_arith $k + 1
7359
                  k=$func_arith_result
7360
                  output=$output_objdir/$output_la-${k}.$objext
7361
                  objlist=$obj
7362
                  func_len " $last_robj"
7363
                  func_arith $len0 + $func_len_result
7364
                  len=$func_arith_result
7365
                fi
7366
              done
7367
              # Handle the remaining objects by creating one last
7368
              # reloadable object file.  All subsequent reloadable object
7369
              # files will link in the last one created.
7370
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7371
              eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
7372
              if test -n "$last_robj"; then
7373
                eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7374
              fi
7375
              delfiles="$delfiles $output"
7376
 
7377
            else
7378
              output=
7379
            fi
7380
 
7381
            if ${skipped_export-false}; then
7382
              func_verbose "generating symbol list for \`$libname.la'"
7383
              export_symbols="$output_objdir/$libname.exp"
7384
              $opt_dry_run || $RM $export_symbols
7385
              libobjs=$output
7386
              # Append the command to create the export file.
7387
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7388
              eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7389
              if test -n "$last_robj"; then
7390
                eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7391
              fi
7392
            fi
7393
 
7394
            test -n "$save_libobjs" &&
7395
              func_verbose "creating a temporary reloadable object file: $output"
7396
 
7397
            # Loop through the commands generated above and execute them.
7398
            save_ifs="$IFS"; IFS='~'
7399
            for cmd in $concat_cmds; do
7400
              IFS="$save_ifs"
7401
              $opt_silent || {
7402
                  func_quote_for_expand "$cmd"
7403
                  eval "func_echo $func_quote_for_expand_result"
7404
              }
7405
              $opt_dry_run || eval "$cmd" || {
7406
                lt_exit=$?
7407
 
7408
                # Restore the uninstalled library and exit
7409
                if test "$mode" = relink; then
7410
                  ( cd "$output_objdir" && \
7411
                    $RM "${realname}T" && \
7412
                    $MV "${realname}U" "$realname" )
7413
                fi
7414
 
7415
                exit $lt_exit
7416
              }
7417
            done
7418
            IFS="$save_ifs"
7419
 
7420
            if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7421
              func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7422
              func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7423
            fi
7424
          fi
7425
 
7426
          if ${skipped_export-false}; then
7427
            if test -n "$export_symbols" && test -n "$include_expsyms"; then
7428
              tmp_export_symbols="$export_symbols"
7429
              test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7430
              $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7431
            fi
7432
 
7433
            if test -n "$orig_export_symbols"; then
7434
              # The given exports_symbols file has to be filtered, so filter it.
7435
              func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7436
              # FIXME: $output_objdir/$libname.filter potentially contains lots of
7437
              # 's' commands which not all seds can handle. GNU sed should be fine
7438
              # though. Also, the filter scales superlinearly with the number of
7439
              # global variables. join(1) would be nice here, but unfortunately
7440
              # isn't a blessed tool.
7441
              $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7442
              delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7443
              export_symbols=$output_objdir/$libname.def
7444
              $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7445
            fi
7446
          fi
7447
 
7448
          libobjs=$output
7449
          # Restore the value of output.
7450
          output=$save_output
7451
 
7452
          if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7453
            eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7454
            test "X$libobjs" = "X " && libobjs=
7455
          fi
7456
          # Expand the library linking commands again to reset the
7457
          # value of $libobjs for piecewise linking.
7458
 
7459
          # Do each of the archive commands.
7460
          if test "$module" = yes && test -n "$module_cmds" ; then
7461
            if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7462
              cmds=$module_expsym_cmds
7463
            else
7464
              cmds=$module_cmds
7465
            fi
7466
          else
7467
            if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7468
              cmds=$archive_expsym_cmds
7469
            else
7470
              cmds=$archive_cmds
7471
            fi
7472
          fi
7473
        fi
7474
 
7475
        if test -n "$delfiles"; then
7476
          # Append the command to remove temporary files to $cmds.
7477
          eval cmds=\"\$cmds~\$RM $delfiles\"
7478
        fi
7479
 
7480
        # Add any objects from preloaded convenience libraries
7481
        if test -n "$dlprefiles"; then
7482
          gentop="$output_objdir/${outputname}x"
7483
          generated="$generated $gentop"
7484
 
7485
          func_extract_archives $gentop $dlprefiles
7486
          libobjs="$libobjs $func_extract_archives_result"
7487
          test "X$libobjs" = "X " && libobjs=
7488
        fi
7489
 
7490
        save_ifs="$IFS"; IFS='~'
7491
        for cmd in $cmds; do
7492
          IFS="$save_ifs"
7493
          eval cmd=\"$cmd\"
7494
          $opt_silent || {
7495
            func_quote_for_expand "$cmd"
7496
            eval "func_echo $func_quote_for_expand_result"
7497
          }
7498
          $opt_dry_run || eval "$cmd" || {
7499
            lt_exit=$?
7500
 
7501
            # Restore the uninstalled library and exit
7502
            if test "$mode" = relink; then
7503
              ( cd "$output_objdir" && \
7504
                $RM "${realname}T" && \
7505
                $MV "${realname}U" "$realname" )
7506
            fi
7507
 
7508
            exit $lt_exit
7509
          }
7510
        done
7511
        IFS="$save_ifs"
7512
 
7513
        # Restore the uninstalled library and exit
7514
        if test "$mode" = relink; then
7515
          $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7516
 
7517
          if test -n "$convenience"; then
7518
            if test -z "$whole_archive_flag_spec"; then
7519
              func_show_eval '${RM}r "$gentop"'
7520
            fi
7521
          fi
7522
 
7523
          exit $EXIT_SUCCESS
7524
        fi
7525
 
7526
        # Create links to the real library.
7527
        for linkname in $linknames; do
7528
          if test "$realname" != "$linkname"; then
7529
            func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7530
          fi
7531
        done
7532
 
7533
        # If -module or -export-dynamic was specified, set the dlname.
7534
        if test "$module" = yes || test "$export_dynamic" = yes; then
7535
          # On all known operating systems, these are identical.
7536
          dlname="$soname"
7537
        fi
7538
      fi
7539
      ;;
7540
 
7541
    obj)
7542
      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7543
        func_warning "\`-dlopen' is ignored for objects"
7544
      fi
7545
 
7546
      case " $deplibs" in
7547
      *\ -l* | *\ -L*)
7548
        func_warning "\`-l' and \`-L' are ignored for objects" ;;
7549
      esac
7550
 
7551
      test -n "$rpath" && \
7552
        func_warning "\`-rpath' is ignored for objects"
7553
 
7554
      test -n "$xrpath" && \
7555
        func_warning "\`-R' is ignored for objects"
7556
 
7557
      test -n "$vinfo" && \
7558
        func_warning "\`-version-info' is ignored for objects"
7559
 
7560
      test -n "$release" && \
7561
        func_warning "\`-release' is ignored for objects"
7562
 
7563
      case $output in
7564
      *.lo)
7565
        test -n "$objs$old_deplibs" && \
7566
          func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7567
 
7568
        libobj=$output
7569
        func_lo2o "$libobj"
7570
        obj=$func_lo2o_result
7571
        ;;
7572
      *)
7573
        libobj=
7574
        obj="$output"
7575
        ;;
7576
      esac
7577
 
7578
      # Delete the old objects.
7579
      $opt_dry_run || $RM $obj $libobj
7580
 
7581
      # Objects from convenience libraries.  This assumes
7582
      # single-version convenience libraries.  Whenever we create
7583
      # different ones for PIC/non-PIC, this we'll have to duplicate
7584
      # the extraction.
7585
      reload_conv_objs=
7586
      gentop=
7587
      # reload_cmds runs $LD directly, so let us get rid of
7588
      # -Wl from whole_archive_flag_spec and hope we can get by with
7589
      # turning comma into space..
7590
      wl=
7591
 
7592
      if test -n "$convenience"; then
7593
        if test -n "$whole_archive_flag_spec"; then
7594
          eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7595
          reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
7596
        else
7597
          gentop="$output_objdir/${obj}x"
7598
          generated="$generated $gentop"
7599
 
7600
          func_extract_archives $gentop $convenience
7601
          reload_conv_objs="$reload_objs $func_extract_archives_result"
7602
        fi
7603
      fi
7604
 
7605
      # Create the old-style object.
7606
      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7607
 
7608
      output="$obj"
7609
      func_execute_cmds "$reload_cmds" 'exit $?'
7610
 
7611
      # Exit if we aren't doing a library object file.
7612
      if test -z "$libobj"; then
7613
        if test -n "$gentop"; then
7614
          func_show_eval '${RM}r "$gentop"'
7615
        fi
7616
 
7617
        exit $EXIT_SUCCESS
7618
      fi
7619
 
7620
      if test "$build_libtool_libs" != yes; then
7621
        if test -n "$gentop"; then
7622
          func_show_eval '${RM}r "$gentop"'
7623
        fi
7624
 
7625
        # Create an invalid libtool object if no PIC, so that we don't
7626
        # accidentally link it into a program.
7627
        # $show "echo timestamp > $libobj"
7628
        # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7629
        exit $EXIT_SUCCESS
7630
      fi
7631
 
7632
      if test -n "$pic_flag" || test "$pic_mode" != default; then
7633
        # Only do commands if we really have different PIC objects.
7634
        reload_objs="$libobjs $reload_conv_objs"
7635
        output="$libobj"
7636
        func_execute_cmds "$reload_cmds" 'exit $?'
7637
      fi
7638
 
7639
      if test -n "$gentop"; then
7640
        func_show_eval '${RM}r "$gentop"'
7641
      fi
7642
 
7643
      exit $EXIT_SUCCESS
7644
      ;;
7645
 
7646
    prog)
7647
      case $host in
7648
        *cygwin*) func_stripname '' '.exe' "$output"
7649
                  output=$func_stripname_result.exe;;
7650
      esac
7651
      test -n "$vinfo" && \
7652
        func_warning "\`-version-info' is ignored for programs"
7653
 
7654
      test -n "$release" && \
7655
        func_warning "\`-release' is ignored for programs"
7656
 
7657
      test "$preload" = yes \
7658
        && test "$dlopen_support" = unknown \
7659
        && test "$dlopen_self" = unknown \
7660
        && test "$dlopen_self_static" = unknown && \
7661
          func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7662
 
7663
      case $host in
7664
      *-*-rhapsody* | *-*-darwin1.[012])
7665
        # On Rhapsody replace the C library is the System framework
7666
        compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7667
        finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7668
        ;;
7669
      esac
7670
 
7671
      case $host in
7672
      *-*-darwin*)
7673
        # Don't allow lazy linking, it breaks C++ global constructors
7674
        # But is supposedly fixed on 10.4 or later (yay!).
7675
        if test "$tagname" = CXX ; then
7676
          case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7677
            10.[0123])
7678
              compile_command="$compile_command ${wl}-bind_at_load"
7679
              finalize_command="$finalize_command ${wl}-bind_at_load"
7680
            ;;
7681
          esac
7682
        fi
7683
        # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7684
        compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7685
        finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7686
        ;;
7687
      esac
7688
 
7689
 
7690
      # move library search paths that coincide with paths to not yet
7691
      # installed libraries to the beginning of the library search list
7692
      new_libs=
7693
      for path in $notinst_path; do
7694
        case " $new_libs " in
7695
        *" -L$path/$objdir "*) ;;
7696
        *)
7697
          case " $compile_deplibs " in
7698
          *" -L$path/$objdir "*)
7699
            new_libs="$new_libs -L$path/$objdir" ;;
7700
          esac
7701
          ;;
7702
        esac
7703
      done
7704
      for deplib in $compile_deplibs; do
7705
        case $deplib in
7706
        -L*)
7707
          case " $new_libs " in
7708
          *" $deplib "*) ;;
7709
          *) new_libs="$new_libs $deplib" ;;
7710
          esac
7711
          ;;
7712
        *) new_libs="$new_libs $deplib" ;;
7713
        esac
7714
      done
7715
      compile_deplibs="$new_libs"
7716
 
7717
 
7718
      compile_command="$compile_command $compile_deplibs"
7719
      finalize_command="$finalize_command $finalize_deplibs"
7720
 
7721
      if test -n "$rpath$xrpath"; then
7722
        # If the user specified any rpath flags, then add them.
7723
        for libdir in $rpath $xrpath; do
7724
          # This is the magic to use -rpath.
7725
          case "$finalize_rpath " in
7726
          *" $libdir "*) ;;
7727
          *) finalize_rpath="$finalize_rpath $libdir" ;;
7728
          esac
7729
        done
7730
      fi
7731
 
7732
      # Now hardcode the library paths
7733
      rpath=
7734
      hardcode_libdirs=
7735
      for libdir in $compile_rpath $finalize_rpath; do
7736
        if test -n "$hardcode_libdir_flag_spec"; then
7737
          if test -n "$hardcode_libdir_separator"; then
7738
            if test -z "$hardcode_libdirs"; then
7739
              hardcode_libdirs="$libdir"
7740
            else
7741
              # Just accumulate the unique libdirs.
7742
              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7743
              *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7744
                ;;
7745
              *)
7746
                hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7747
                ;;
7748
              esac
7749
            fi
7750
          else
7751
            eval flag=\"$hardcode_libdir_flag_spec\"
7752
            rpath="$rpath $flag"
7753
          fi
7754
        elif test -n "$runpath_var"; then
7755
          case "$perm_rpath " in
7756
          *" $libdir "*) ;;
7757
          *) perm_rpath="$perm_rpath $libdir" ;;
7758
          esac
7759
        fi
7760
        case $host in
7761
        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7762
          testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7763
          case :$dllsearchpath: in
7764
          *":$libdir:"*) ;;
7765
          ::) dllsearchpath=$libdir;;
7766
          *) dllsearchpath="$dllsearchpath:$libdir";;
7767
          esac
7768
          case :$dllsearchpath: in
7769
          *":$testbindir:"*) ;;
7770
          ::) dllsearchpath=$testbindir;;
7771
          *) dllsearchpath="$dllsearchpath:$testbindir";;
7772
          esac
7773
          ;;
7774
        esac
7775
      done
7776
      # Substitute the hardcoded libdirs into the rpath.
7777
      if test -n "$hardcode_libdir_separator" &&
7778
         test -n "$hardcode_libdirs"; then
7779
        libdir="$hardcode_libdirs"
7780
        eval rpath=\" $hardcode_libdir_flag_spec\"
7781
      fi
7782
      compile_rpath="$rpath"
7783
 
7784
      rpath=
7785
      hardcode_libdirs=
7786
      for libdir in $finalize_rpath; do
7787
        if test -n "$hardcode_libdir_flag_spec"; then
7788
          if test -n "$hardcode_libdir_separator"; then
7789
            if test -z "$hardcode_libdirs"; then
7790
              hardcode_libdirs="$libdir"
7791
            else
7792
              # Just accumulate the unique libdirs.
7793
              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7794
              *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7795
                ;;
7796
              *)
7797
                hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7798
                ;;
7799
              esac
7800
            fi
7801
          else
7802
            eval flag=\"$hardcode_libdir_flag_spec\"
7803
            rpath="$rpath $flag"
7804
          fi
7805
        elif test -n "$runpath_var"; then
7806
          case "$finalize_perm_rpath " in
7807
          *" $libdir "*) ;;
7808
          *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7809
          esac
7810
        fi
7811
      done
7812
      # Substitute the hardcoded libdirs into the rpath.
7813
      if test -n "$hardcode_libdir_separator" &&
7814
         test -n "$hardcode_libdirs"; then
7815
        libdir="$hardcode_libdirs"
7816
        eval rpath=\" $hardcode_libdir_flag_spec\"
7817
      fi
7818
      finalize_rpath="$rpath"
7819
 
7820
      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7821
        # Transform all the library objects into standard objects.
7822
        compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7823
        finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7824
      fi
7825
 
7826
      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
7827
 
7828
      # template prelinking step
7829
      if test -n "$prelink_cmds"; then
7830
        func_execute_cmds "$prelink_cmds" 'exit $?'
7831
      fi
7832
 
7833
      wrappers_required=yes
7834
      case $host in
7835
      *cygwin* | *mingw* )
7836
        if test "$build_libtool_libs" != yes; then
7837
          wrappers_required=no
7838
        fi
7839
        ;;
7840
      *cegcc)
7841
        # Disable wrappers for cegcc, we are cross compiling anyway.
7842
        wrappers_required=no
7843
        ;;
7844
      *)
7845
        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
7846
          wrappers_required=no
7847
        fi
7848
        ;;
7849
      esac
7850
      if test "$wrappers_required" = no; then
7851
        # Replace the output file specification.
7852
        compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7853
        link_command="$compile_command$compile_rpath"
7854
 
7855
        # We have no uninstalled library dependencies, so finalize right now.
7856
        exit_status=0
7857
        func_show_eval "$link_command" 'exit_status=$?'
7858
 
7859
        # Delete the generated files.
7860
        if test -f "$output_objdir/${outputname}S.${objext}"; then
7861
          func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
7862
        fi
7863
 
7864
        exit $exit_status
7865
      fi
7866
 
7867
      if test -n "$compile_shlibpath$finalize_shlibpath"; then
7868
        compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
7869
      fi
7870
      if test -n "$finalize_shlibpath"; then
7871
        finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
7872
      fi
7873
 
7874
      compile_var=
7875
      finalize_var=
7876
      if test -n "$runpath_var"; then
7877
        if test -n "$perm_rpath"; then
7878
          # We should set the runpath_var.
7879
          rpath=
7880
          for dir in $perm_rpath; do
7881
            rpath="$rpath$dir:"
7882
          done
7883
          compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
7884
        fi
7885
        if test -n "$finalize_perm_rpath"; then
7886
          # We should set the runpath_var.
7887
          rpath=
7888
          for dir in $finalize_perm_rpath; do
7889
            rpath="$rpath$dir:"
7890
          done
7891
          finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
7892
        fi
7893
      fi
7894
 
7895
      if test "$no_install" = yes; then
7896
        # We don't need to create a wrapper script.
7897
        link_command="$compile_var$compile_command$compile_rpath"
7898
        # Replace the output file specification.
7899
        link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
7900
        # Delete the old output file.
7901
        $opt_dry_run || $RM $output
7902
        # Link the executable and exit
7903
        func_show_eval "$link_command" 'exit $?'
7904
        exit $EXIT_SUCCESS
7905
      fi
7906
 
7907
      if test "$hardcode_action" = relink; then
7908
        # Fast installation is not supported
7909
        link_command="$compile_var$compile_command$compile_rpath"
7910
        relink_command="$finalize_var$finalize_command$finalize_rpath"
7911
 
7912
        func_warning "this platform does not like uninstalled shared libraries"
7913
        func_warning "\`$output' will be relinked during installation"
7914
      else
7915
        if test "$fast_install" != no; then
7916
          link_command="$finalize_var$compile_command$finalize_rpath"
7917
          if test "$fast_install" = yes; then
7918
            relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
7919
          else
7920
            # fast_install is set to needless
7921
            relink_command=
7922
          fi
7923
        else
7924
          link_command="$compile_var$compile_command$compile_rpath"
7925
          relink_command="$finalize_var$finalize_command$finalize_rpath"
7926
        fi
7927
      fi
7928
 
7929
      # Replace the output file specification.
7930
      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
7931
 
7932
      # Delete the old output files.
7933
      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
7934
 
7935
      func_show_eval "$link_command" 'exit $?'
7936
 
7937
      # Now create the wrapper script.
7938
      func_verbose "creating $output"
7939
 
7940
      # Quote the relink command for shipping.
7941
      if test -n "$relink_command"; then
7942
        # Preserve any variables that may affect compiler behavior
7943
        for var in $variables_saved_for_relink; do
7944
          if eval test -z \"\${$var+set}\"; then
7945
            relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
7946
          elif eval var_value=\$$var; test -z "$var_value"; then
7947
            relink_command="$var=; export $var; $relink_command"
7948
          else
7949
            func_quote_for_eval "$var_value"
7950
            relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
7951
          fi
7952
        done
7953
        relink_command="(cd `pwd`; $relink_command)"
7954
        relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
7955
      fi
7956
 
7957
      # Quote $ECHO for shipping.
7958
      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
7959
        case $progpath in
7960
        [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
7961
        *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
7962
        esac
7963
        qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
7964
      else
7965
        qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
7966
      fi
7967
 
7968
      # Only actually do things if not in dry run mode.
7969
      $opt_dry_run || {
7970
        # win32 will think the script is a binary if it has
7971
        # a .exe suffix, so we strip it off here.
7972
        case $output in
7973
          *.exe) func_stripname '' '.exe' "$output"
7974
                 output=$func_stripname_result ;;
7975
        esac
7976
        # test for cygwin because mv fails w/o .exe extensions
7977
        case $host in
7978
          *cygwin*)
7979
            exeext=.exe
7980
            func_stripname '' '.exe' "$outputname"
7981
            outputname=$func_stripname_result ;;
7982
          *) exeext= ;;
7983
        esac
7984
        case $host in
7985
          *cygwin* | *mingw* )
7986
            func_dirname_and_basename "$output" "" "."
7987
            output_name=$func_basename_result
7988
            output_path=$func_dirname_result
7989
            cwrappersource="$output_path/$objdir/lt-$output_name.c"
7990
            cwrapper="$output_path/$output_name.exe"
7991
            $RM $cwrappersource $cwrapper
7992
            trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
7993
 
7994
            func_emit_cwrapperexe_src > $cwrappersource
7995
 
7996
            # The wrapper executable is built using the $host compiler,
7997
            # because it contains $host paths and files. If cross-
7998
            # compiling, it, like the target executable, must be
7999
            # executed on the $host or under an emulation environment.
8000
            $opt_dry_run || {
8001
              $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
8002
              $STRIP $cwrapper
8003
            }
8004
 
8005
            # Now, create the wrapper script for func_source use:
8006
            func_ltwrapper_scriptname $cwrapper
8007
            $RM $func_ltwrapper_scriptname_result
8008
            trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
8009
            $opt_dry_run || {
8010
              # note: this script will not be executed, so do not chmod.
8011
              if test "x$build" = "x$host" ; then
8012
                $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
8013
              else
8014
                func_emit_wrapper no > $func_ltwrapper_scriptname_result
8015
              fi
8016
            }
8017
          ;;
8018
          * )
8019
            $RM $output
8020
            trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
8021
 
8022
            func_emit_wrapper no > $output
8023
            chmod +x $output
8024
          ;;
8025
        esac
8026
      }
8027
      exit $EXIT_SUCCESS
8028
      ;;
8029
    esac
8030
 
8031
    # See if we need to build an old-fashioned archive.
8032
    for oldlib in $oldlibs; do
8033
 
8034
      if test "$build_libtool_libs" = convenience; then
8035
        oldobjs="$libobjs_save $symfileobj"
8036
        addlibs="$convenience"
8037
        build_libtool_libs=no
8038
      else
8039
        if test "$build_libtool_libs" = module; then
8040
          oldobjs="$libobjs_save"
8041
          build_libtool_libs=no
8042
        else
8043
          oldobjs="$old_deplibs $non_pic_objects"
8044
          if test "$preload" = yes && test -f "$symfileobj"; then
8045
            oldobjs="$oldobjs $symfileobj"
8046
          fi
8047
        fi
8048
        addlibs="$old_convenience"
8049
      fi
8050
 
8051
      if test -n "$addlibs"; then
8052
        gentop="$output_objdir/${outputname}x"
8053
        generated="$generated $gentop"
8054
 
8055
        func_extract_archives $gentop $addlibs
8056
        oldobjs="$oldobjs $func_extract_archives_result"
8057
      fi
8058
 
8059
      # Do each command in the archive commands.
8060
      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
8061
        cmds=$old_archive_from_new_cmds
8062
      else
8063
 
8064
        # Add any objects from preloaded convenience libraries
8065
        if test -n "$dlprefiles"; then
8066
          gentop="$output_objdir/${outputname}x"
8067
          generated="$generated $gentop"
8068
 
8069
          func_extract_archives $gentop $dlprefiles
8070
          oldobjs="$oldobjs $func_extract_archives_result"
8071
        fi
8072
 
8073
        # POSIX demands no paths to be encoded in archives.  We have
8074
        # to avoid creating archives with duplicate basenames if we
8075
        # might have to extract them afterwards, e.g., when creating a
8076
        # static archive out of a convenience library, or when linking
8077
        # the entirety of a libtool archive into another (currently
8078
        # not supported by libtool).
8079
        if (for obj in $oldobjs
8080
            do
8081
              func_basename "$obj"
8082
              $ECHO "$func_basename_result"
8083
            done | sort | sort -uc >/dev/null 2>&1); then
8084
          :
8085
        else
8086
          $ECHO "copying selected object files to avoid basename conflicts..."
8087
          gentop="$output_objdir/${outputname}x"
8088
          generated="$generated $gentop"
8089
          func_mkdir_p "$gentop"
8090
          save_oldobjs=$oldobjs
8091
          oldobjs=
8092
          counter=1
8093
          for obj in $save_oldobjs
8094
          do
8095
            func_basename "$obj"
8096
            objbase="$func_basename_result"
8097
            case " $oldobjs " in
8098
            " ") oldobjs=$obj ;;
8099
            *[\ /]"$objbase "*)
8100
              while :; do
8101
                # Make sure we don't pick an alternate name that also
8102
                # overlaps.
8103
                newobj=lt$counter-$objbase
8104
                func_arith $counter + 1
8105
                counter=$func_arith_result
8106
                case " $oldobjs " in
8107
                *[\ /]"$newobj "*) ;;
8108
                *) if test ! -f "$gentop/$newobj"; then break; fi ;;
8109
                esac
8110
              done
8111
              func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8112
              oldobjs="$oldobjs $gentop/$newobj"
8113
              ;;
8114
            *) oldobjs="$oldobjs $obj" ;;
8115
            esac
8116
          done
8117
        fi
8118
        eval cmds=\"$old_archive_cmds\"
8119
 
8120
        func_len " $cmds"
8121
        len=$func_len_result
8122
        if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8123
          cmds=$old_archive_cmds
8124
        else
8125
          # the command line is too long to link in one step, link in parts
8126
          func_verbose "using piecewise archive linking..."
8127
          save_RANLIB=$RANLIB
8128
          RANLIB=:
8129
          objlist=
8130
          concat_cmds=
8131
          save_oldobjs=$oldobjs
8132
          oldobjs=
8133
          # Is there a better way of finding the last object in the list?
8134
          for obj in $save_oldobjs
8135
          do
8136
            last_oldobj=$obj
8137
          done
8138
          eval test_cmds=\"$old_archive_cmds\"
8139
          func_len " $test_cmds"
8140
          len0=$func_len_result
8141
          len=$len0
8142
          for obj in $save_oldobjs
8143
          do
8144
            func_len " $obj"
8145
            func_arith $len + $func_len_result
8146
            len=$func_arith_result
8147
            func_append objlist " $obj"
8148
            if test "$len" -lt "$max_cmd_len"; then
8149
              :
8150
            else
8151
              # the above command should be used before it gets too long
8152
              oldobjs=$objlist
8153
              if test "$obj" = "$last_oldobj" ; then
8154
                RANLIB=$save_RANLIB
8155
              fi
8156
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8157
              eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8158
              objlist=
8159
              len=$len0
8160
            fi
8161
          done
8162
          RANLIB=$save_RANLIB
8163
          oldobjs=$objlist
8164
          if test "X$oldobjs" = "X" ; then
8165
            eval cmds=\"\$concat_cmds\"
8166
          else
8167
            eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8168
          fi
8169
        fi
8170
      fi
8171
      func_execute_cmds "$cmds" 'exit $?'
8172
    done
8173
 
8174
    test -n "$generated" && \
8175
      func_show_eval "${RM}r$generated"
8176
 
8177
    # Now create the libtool archive.
8178
    case $output in
8179
    *.la)
8180
      old_library=
8181
      test "$build_old_libs" = yes && old_library="$libname.$libext"
8182
      func_verbose "creating $output"
8183
 
8184
      # Preserve any variables that may affect compiler behavior
8185
      for var in $variables_saved_for_relink; do
8186
        if eval test -z \"\${$var+set}\"; then
8187
          relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8188
        elif eval var_value=\$$var; test -z "$var_value"; then
8189
          relink_command="$var=; export $var; $relink_command"
8190
        else
8191
          func_quote_for_eval "$var_value"
8192
          relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8193
        fi
8194
      done
8195
      # Quote the link command for shipping.
8196
      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8197
      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8198
      if test "$hardcode_automatic" = yes ; then
8199
        relink_command=
8200
      fi
8201
 
8202
      # Only create the output if not a dry run.
8203
      $opt_dry_run || {
8204
        for installed in no yes; do
8205
          if test "$installed" = yes; then
8206
            if test -z "$install_libdir"; then
8207
              break
8208
            fi
8209
            output="$output_objdir/$outputname"i
8210
            # Replace all uninstalled libtool libraries with the installed ones
8211
            newdependency_libs=
8212
            for deplib in $dependency_libs; do
8213
              case $deplib in
8214
              *.la)
8215
                func_basename "$deplib"
8216
                name="$func_basename_result"
8217
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8218
                test -z "$libdir" && \
8219
                  func_fatal_error "\`$deplib' is not a valid libtool archive"
8220
                newdependency_libs="$newdependency_libs $libdir/$name"
8221
                ;;
8222
              *) newdependency_libs="$newdependency_libs $deplib" ;;
8223
              esac
8224
            done
8225
            dependency_libs="$newdependency_libs"
8226
            newdlfiles=
8227
 
8228
            for lib in $dlfiles; do
8229
              case $lib in
8230
              *.la)
8231
                func_basename "$lib"
8232
                name="$func_basename_result"
8233
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8234
                test -z "$libdir" && \
8235
                  func_fatal_error "\`$lib' is not a valid libtool archive"
8236
                newdlfiles="$newdlfiles $libdir/$name"
8237
                ;;
8238
              *) newdlfiles="$newdlfiles $lib" ;;
8239
              esac
8240
            done
8241
            dlfiles="$newdlfiles"
8242
            newdlprefiles=
8243
            for lib in $dlprefiles; do
8244
              case $lib in
8245
              *.la)
8246
                # Only pass preopened files to the pseudo-archive (for
8247
                # eventual linking with the app. that links it) if we
8248
                # didn't already link the preopened objects directly into
8249
                # the library:
8250
                func_basename "$lib"
8251
                name="$func_basename_result"
8252
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8253
                test -z "$libdir" && \
8254
                  func_fatal_error "\`$lib' is not a valid libtool archive"
8255
                newdlprefiles="$newdlprefiles $libdir/$name"
8256
                ;;
8257
              esac
8258
            done
8259
            dlprefiles="$newdlprefiles"
8260
          else
8261
            newdlfiles=
8262
            for lib in $dlfiles; do
8263
              case $lib in
8264
                [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8265
                *) abs=`pwd`"/$lib" ;;
8266
              esac
8267
              newdlfiles="$newdlfiles $abs"
8268
            done
8269
            dlfiles="$newdlfiles"
8270
            newdlprefiles=
8271
            for lib in $dlprefiles; do
8272
              case $lib in
8273
                [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8274
                *) abs=`pwd`"/$lib" ;;
8275
              esac
8276
              newdlprefiles="$newdlprefiles $abs"
8277
            done
8278
            dlprefiles="$newdlprefiles"
8279
          fi
8280
          $RM $output
8281
          # place dlname in correct position for cygwin
8282
          # In fact, it would be nice if we could use this code for all target
8283
          # systems that can't hard-code library paths into their executables
8284
          # and that have no shared library path variable independent of PATH,
8285
          # but it turns out we can't easily determine that from inspecting
8286
          # libtool variables, so we have to hard-code the OSs to which it
8287
          # applies here; at the moment, that means platforms that use the PE
8288
          # object format with DLL files.  See the long comment at the top of
8289
          # tests/bindir.at for full details.
8290
          tdlname=$dlname
8291
          case $host,$output,$installed,$module,$dlname in
8292
            *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
8293
              # If a -bindir argument was supplied, place the dll there.
8294
              if test "x$bindir" != x ;
8295
              then
8296
                func_relative_path "$install_libdir" "$bindir"
8297
                tdlname=$func_relative_path_result$dlname
8298
              else
8299
                # Otherwise fall back on heuristic.
8300
                tdlname=../bin/$dlname
8301
              fi
8302
              ;;
8303
          esac
8304
          $ECHO > $output "\
8305
# $outputname - a libtool library file
8306
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8307
#
8308
# Please DO NOT delete this file!
8309
# It is necessary for linking the library.
8310
 
8311
# The name that we can dlopen(3).
8312
dlname='$tdlname'
8313
 
8314
# Names of this library.
8315
library_names='$library_names'
8316
 
8317
# The name of the static archive.
8318
old_library='$old_library'
8319
 
8320
# Linker flags that can not go in dependency_libs.
8321
inherited_linker_flags='$new_inherited_linker_flags'
8322
 
8323
# Libraries that this one depends upon.
8324
dependency_libs='$dependency_libs'
8325
 
8326
# Names of additional weak libraries provided by this library
8327
weak_library_names='$weak_libs'
8328
 
8329
# Version information for $libname.
8330
current=$current
8331
age=$age
8332
revision=$revision
8333
 
8334
# Is this an already installed library?
8335
installed=$installed
8336
 
8337
# Should we warn about portability when linking against -modules?
8338
shouldnotlink=$module
8339
 
8340
# Files to dlopen/dlpreopen
8341
dlopen='$dlfiles'
8342
dlpreopen='$dlprefiles'
8343
 
8344
# Directory that this library needs to be installed in:
8345
libdir='$install_libdir'"
8346
          if test "$installed" = no && test "$need_relink" = yes; then
8347
            $ECHO >> $output "\
8348
relink_command=\"$relink_command\""
8349
          fi
8350
        done
8351
      }
8352
 
8353
      # Do a symbolic link so that the libtool archive can be found in
8354
      # LD_LIBRARY_PATH before the program is installed.
8355
      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8356
      ;;
8357
    esac
8358
    exit $EXIT_SUCCESS
8359
}
8360
 
8361
{ test "$mode" = link || test "$mode" = relink; } &&
8362
    func_mode_link ${1+"$@"}
8363
 
8364
 
8365
# func_mode_uninstall arg...
8366
func_mode_uninstall ()
8367
{
8368
    $opt_debug
8369
    RM="$nonopt"
8370
    files=
8371
    rmforce=
8372
    exit_status=0
8373
 
8374
    # This variable tells wrapper scripts just to set variables rather
8375
    # than running their programs.
8376
    libtool_install_magic="$magic"
8377
 
8378
    for arg
8379
    do
8380
      case $arg in
8381
      -f) RM="$RM $arg"; rmforce=yes ;;
8382
      -*) RM="$RM $arg" ;;
8383
      *) files="$files $arg" ;;
8384
      esac
8385
    done
8386
 
8387
    test -z "$RM" && \
8388
      func_fatal_help "you must specify an RM program"
8389
 
8390
    rmdirs=
8391
 
8392
    origobjdir="$objdir"
8393
    for file in $files; do
8394
      func_dirname "$file" "" "."
8395
      dir="$func_dirname_result"
8396
      if test "X$dir" = X.; then
8397
        objdir="$origobjdir"
8398
      else
8399
        objdir="$dir/$origobjdir"
8400
      fi
8401
      func_basename "$file"
8402
      name="$func_basename_result"
8403
      test "$mode" = uninstall && objdir="$dir"
8404
 
8405
      # Remember objdir for removal later, being careful to avoid duplicates
8406
      if test "$mode" = clean; then
8407
        case " $rmdirs " in
8408
          *" $objdir "*) ;;
8409
          *) rmdirs="$rmdirs $objdir" ;;
8410
        esac
8411
      fi
8412
 
8413
      # Don't error if the file doesn't exist and rm -f was used.
8414
      if { test -L "$file"; } >/dev/null 2>&1 ||
8415
         { test -h "$file"; } >/dev/null 2>&1 ||
8416
         test -f "$file"; then
8417
        :
8418
      elif test -d "$file"; then
8419
        exit_status=1
8420
        continue
8421
      elif test "$rmforce" = yes; then
8422
        continue
8423
      fi
8424
 
8425
      rmfiles="$file"
8426
 
8427
      case $name in
8428
      *.la)
8429
        # Possibly a libtool archive, so verify it.
8430
        if func_lalib_p "$file"; then
8431
          func_source $dir/$name
8432
 
8433
          # Delete the libtool libraries and symlinks.
8434
          for n in $library_names; do
8435
            rmfiles="$rmfiles $objdir/$n"
8436
          done
8437
          test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8438
 
8439
          case "$mode" in
8440
          clean)
8441
            case "  $library_names " in
8442
            # "  " in the beginning catches empty $dlname
8443
            *" $dlname "*) ;;
8444
            *) rmfiles="$rmfiles $objdir/$dlname" ;;
8445
            esac
8446
            test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8447
            ;;
8448
          uninstall)
8449
            if test -n "$library_names"; then
8450
              # Do each command in the postuninstall commands.
8451
              func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8452
            fi
8453
 
8454
            if test -n "$old_library"; then
8455
              # Do each command in the old_postuninstall commands.
8456
              func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8457
            fi
8458
            # FIXME: should reinstall the best remaining shared library.
8459
            ;;
8460
          esac
8461
        fi
8462
        ;;
8463
 
8464
      *.lo)
8465
        # Possibly a libtool object, so verify it.
8466
        if func_lalib_p "$file"; then
8467
 
8468
          # Read the .lo file
8469
          func_source $dir/$name
8470
 
8471
          # Add PIC object to the list of files to remove.
8472
          if test -n "$pic_object" &&
8473
             test "$pic_object" != none; then
8474
            rmfiles="$rmfiles $dir/$pic_object"
8475
          fi
8476
 
8477
          # Add non-PIC object to the list of files to remove.
8478
          if test -n "$non_pic_object" &&
8479
             test "$non_pic_object" != none; then
8480
            rmfiles="$rmfiles $dir/$non_pic_object"
8481
          fi
8482
        fi
8483
        ;;
8484
 
8485
      *)
8486
        if test "$mode" = clean ; then
8487
          noexename=$name
8488
          case $file in
8489
          *.exe)
8490
            func_stripname '' '.exe' "$file"
8491
            file=$func_stripname_result
8492
            func_stripname '' '.exe' "$name"
8493
            noexename=$func_stripname_result
8494
            # $file with .exe has already been added to rmfiles,
8495
            # add $file without .exe
8496
            rmfiles="$rmfiles $file"
8497
            ;;
8498
          esac
8499
          # Do a test to see if this is a libtool program.
8500
          if func_ltwrapper_p "$file"; then
8501
            if func_ltwrapper_executable_p "$file"; then
8502
              func_ltwrapper_scriptname "$file"
8503
              relink_command=
8504
              func_source $func_ltwrapper_scriptname_result
8505
              rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8506
            else
8507
              relink_command=
8508
              func_source $dir/$noexename
8509
            fi
8510
 
8511
            # note $name still contains .exe if it was in $file originally
8512
            # as does the version of $file that was added into $rmfiles
8513
            rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8514
            if test "$fast_install" = yes && test -n "$relink_command"; then
8515
              rmfiles="$rmfiles $objdir/lt-$name"
8516
            fi
8517
            if test "X$noexename" != "X$name" ; then
8518
              rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8519
            fi
8520
          fi
8521
        fi
8522
        ;;
8523
      esac
8524
      func_show_eval "$RM $rmfiles" 'exit_status=1'
8525
    done
8526
    objdir="$origobjdir"
8527
 
8528
    # Try to remove the ${objdir}s in the directories where we deleted files
8529
    for dir in $rmdirs; do
8530
      if test -d "$dir"; then
8531
        func_show_eval "rmdir $dir >/dev/null 2>&1"
8532
      fi
8533
    done
8534
 
8535
    exit $exit_status
8536
}
8537
 
8538
{ test "$mode" = uninstall || test "$mode" = clean; } &&
8539
    func_mode_uninstall ${1+"$@"}
8540
 
8541
test -z "$mode" && {
8542
  help="$generic_help"
8543
  func_fatal_help "you must specify a MODE"
8544
}
8545
 
8546
test -z "$exec_cmd" && \
8547
  func_fatal_help "invalid operation mode \`$mode'"
8548
 
8549
if test -n "$exec_cmd"; then
8550
  eval exec "$exec_cmd"
8551
  exit $EXIT_FAILURE
8552
fi
8553
 
8554
exit $exit_status
8555
 
8556
 
8557
# The TAGs below are defined such that we never get into a situation
8558
# in which we disable both kinds of libraries.  Given conflicting
8559
# choices, we go for a static library, that is the most portable,
8560
# since we can't tell whether shared libraries were disabled because
8561
# the user asked for that or because the platform doesn't support
8562
# them.  This is particularly important on AIX, because we don't
8563
# support having both static and shared libraries enabled at the same
8564
# time on that platform, so we default to a shared-only configuration.
8565
# If a disable-shared tag is given, we'll fallback to a static-only
8566
# configuration.  But we'll never go from static-only to shared-only.
8567
 
8568
# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8569
build_libtool_libs=no
8570
build_old_libs=yes
8571
# ### END LIBTOOL TAG CONFIG: disable-shared
8572
 
8573
# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8574
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8575
# ### END LIBTOOL TAG CONFIG: disable-static
8576
 
8577
# Local Variables:
8578
# mode:shell-script
8579
# sh-indentation:2
8580
# End:
8581
# vi:sw=2

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.