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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [ltmain.sh] - Blame information for rev 842

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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