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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [ltmain.sh] - Blame information for rev 816

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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