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