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