Tizen 2.0 Release
[external/lcms.git] / libtool
1 #! /bin/sh
2
3 # libtool - Provide generalized library-building support services.
4 # Generated automatically by config.status (lcms2) 2.3
5 # Libtool was configured on host gpeegpee-ubuntu:
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 # Whether or not to build shared libraries.
43 build_libtool_libs=yes
44
45 # Whether or not to build static libraries.
46 build_old_libs=no
47
48 # Assembler program.
49 AS="as"
50
51 # DLL creation program.
52 DLLTOOL="dlltool"
53
54 # Object dumper program.
55 OBJDUMP="objdump"
56
57 # Which release of libtool.m4 was used?
58 macro_version=2.4
59 macro_revision=1.3294
60
61 # What type of objects to build.
62 pic_mode=default
63
64 # Whether or not to optimize for fast installation.
65 fast_install=yes
66
67 # Shell to use when invoking shell scripts.
68 SHELL="/bin/sh"
69
70 # An echo program that protects backslashes.
71 ECHO="printf %s\\n"
72
73 # The host system.
74 host_alias=
75 host=arm-unknown-linux-gnueabi
76 host_os=linux-gnueabi
77
78 # The build system.
79 build_alias=
80 build=arm-unknown-linux-gnueabi
81 build_os=linux-gnueabi
82
83 # A sed program that does not truncate output.
84 SED="/bin/sed"
85
86 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
87 Xsed="$SED -e 1s/^X//"
88
89 # A grep program that handles long lines.
90 GREP="/bin/grep"
91
92 # An ERE matcher.
93 EGREP="/bin/grep -E"
94
95 # A literal string matcher.
96 FGREP="/bin/grep -F"
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"
165
166 # LTCC compiler flags.
167 LTCFLAGS="-Wall"
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/arm-linux-gnueabi/4.5.3 /usr/arm-linux-gnueabi/lib "
276
277 # Run-time system search path for libraries.
278 sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/local/lib "
279
280 # Whether dlopen is supported.
281 dlopen_support=unknown
282
283 # Whether dlopen of programs is supported.
284 dlopen_self=unknown
285
286 # Whether dlopen of statically linked programs is supported.
287 dlopen_self_static=unknown
288
289 # Commands to strip libraries.
290 old_striplib="strip --strip-debug"
291 striplib="strip --strip-unneeded"
292
293
294 # The linker used to build libraries.
295 LD="/usr/arm-linux-gnueabi/bin/ld"
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"
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="-static"
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.3294
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="/usr/bin/grep -E"}
587 : ${FGREP="/usr/bin/grep -F"}
588 : ${GREP="/usr/bin/grep"}
589 : ${LN_S="ln -s"}
590 : ${MAKE="make"}
591 : ${MKDIR="mkdir"}
592 : ${MV="mv -f"}
593 : ${RM="rm -f"}
594 : ${SED="/usr/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_emit_exe_manifest
5510 # emit a Win32 UAC manifest for executable on stdout
5511 # Must ONLY be called from within func_mode_link because
5512 # it depends on a number of variable set therein.
5513 func_emit_exe_manifest ()
5514 {
5515     cat <<EOF
5516 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
5517 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
5518   <assemblyIdentity version="1.0.0.0"
5519 EOF
5520
5521     case $host in
5522     i?86-*-* )   echo '     processorArchitecture="x86"' ;;
5523     ia64-*-* )   echo '     processorArchitecture="ia64"' ;;
5524     x86_64-*-* ) echo '     processorArchitecture="amd64"' ;;
5525     *)           echo '     processorArchitecture="*"' ;;
5526     esac
5527
5528     cat <<EOF
5529      name="$host_os.$PROGRAM.$outputname"
5530      type="win32"/>
5531
5532   <!-- Identify the application security requirements. -->
5533   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
5534     <security>
5535       <requestedPrivileges>
5536         <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
5537       </requestedPrivileges>
5538     </security>
5539   </trustInfo>
5540 </assembly>
5541 EOF
5542 }
5543
5544 # func_win32_import_lib_p ARG
5545 # True if ARG is an import lib, as indicated by $file_magic_cmd
5546 func_win32_import_lib_p ()
5547 {
5548     $opt_debug
5549     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5550     *import*) : ;;
5551     *) false ;;
5552     esac
5553 }
5554
5555 # func_mode_link arg...
5556 func_mode_link ()
5557 {
5558     $opt_debug
5559     case $host in
5560     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5561       # It is impossible to link a dll without this setting, and
5562       # we shouldn't force the makefile maintainer to figure out
5563       # which system we are compiling for in order to pass an extra
5564       # flag for every libtool invocation.
5565       # allow_undefined=no
5566
5567       # FIXME: Unfortunately, there are problems with the above when trying
5568       # to make a dll which has undefined symbols, in which case not
5569       # even a static library is built.  For now, we need to specify
5570       # -no-undefined on the libtool link line when we can be certain
5571       # that all symbols are satisfied, otherwise we get a static library.
5572       allow_undefined=yes
5573       ;;
5574     *)
5575       allow_undefined=yes
5576       ;;
5577     esac
5578     libtool_args=$nonopt
5579     base_compile="$nonopt $@"
5580     compile_command=$nonopt
5581     finalize_command=$nonopt
5582
5583     compile_rpath=
5584     finalize_rpath=
5585     compile_shlibpath=
5586     finalize_shlibpath=
5587     convenience=
5588     old_convenience=
5589     deplibs=
5590     old_deplibs=
5591     compiler_flags=
5592     linker_flags=
5593     dllsearchpath=
5594     lib_search_path=`pwd`
5595     inst_prefix_dir=
5596     new_inherited_linker_flags=
5597
5598     avoid_version=no
5599     bindir=
5600     dlfiles=
5601     dlprefiles=
5602     dlself=no
5603     export_dynamic=no
5604     export_symbols=
5605     export_symbols_regex=
5606     generated=
5607     libobjs=
5608     ltlibs=
5609     module=no
5610     no_install=no
5611     objs=
5612     non_pic_objects=
5613     precious_files_regex=
5614     prefer_static_libs=no
5615     preload=no
5616     prev=
5617     prevarg=
5618     release=
5619     rpath=
5620     xrpath=
5621     perm_rpath=
5622     temp_rpath=
5623     thread_safe=no
5624     vinfo=
5625     vinfo_number=no
5626     weak_libs=
5627     single_module="${wl}-single_module"
5628     func_infer_tag $base_compile
5629
5630     # We need to know -static, to get the right output filenames.
5631     for arg
5632     do
5633       case $arg in
5634       -shared)
5635         test "$build_libtool_libs" != yes && \
5636           func_fatal_configuration "can not build a shared library"
5637         build_old_libs=no
5638         break
5639         ;;
5640       -all-static | -static | -static-libtool-libs)
5641         case $arg in
5642         -all-static)
5643           if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5644             func_warning "complete static linking is impossible in this configuration"
5645           fi
5646           if test -n "$link_static_flag"; then
5647             dlopen_self=$dlopen_self_static
5648           fi
5649           prefer_static_libs=yes
5650           ;;
5651         -static)
5652           if test -z "$pic_flag" && test -n "$link_static_flag"; then
5653             dlopen_self=$dlopen_self_static
5654           fi
5655           prefer_static_libs=built
5656           ;;
5657         -static-libtool-libs)
5658           if test -z "$pic_flag" && test -n "$link_static_flag"; then
5659             dlopen_self=$dlopen_self_static
5660           fi
5661           prefer_static_libs=yes
5662           ;;
5663         esac
5664         build_libtool_libs=no
5665         build_old_libs=yes
5666         break
5667         ;;
5668       esac
5669     done
5670
5671     # See if our shared archives depend on static archives.
5672     test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5673
5674     # Go through the arguments, transforming them on the way.
5675     while test "$#" -gt 0; do
5676       arg="$1"
5677       shift
5678       func_quote_for_eval "$arg"
5679       qarg=$func_quote_for_eval_unquoted_result
5680       libtool_args+=" $func_quote_for_eval_result"
5681
5682       # If the previous option needs an argument, assign it.
5683       if test -n "$prev"; then
5684         case $prev in
5685         output)
5686           compile_command+=" @OUTPUT@"
5687           finalize_command+=" @OUTPUT@"
5688           ;;
5689         esac
5690
5691         case $prev in
5692         bindir)
5693           bindir="$arg"
5694           prev=
5695           continue
5696           ;;
5697         dlfiles|dlprefiles)
5698           if test "$preload" = no; then
5699             # Add the symbol object into the linking commands.
5700             compile_command+=" @SYMFILE@"
5701             finalize_command+=" @SYMFILE@"
5702             preload=yes
5703           fi
5704           case $arg in
5705           *.la | *.lo) ;;  # We handle these cases below.
5706           force)
5707             if test "$dlself" = no; then
5708               dlself=needless
5709               export_dynamic=yes
5710             fi
5711             prev=
5712             continue
5713             ;;
5714           self)
5715             if test "$prev" = dlprefiles; then
5716               dlself=yes
5717             elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5718               dlself=yes
5719             else
5720               dlself=needless
5721               export_dynamic=yes
5722             fi
5723             prev=
5724             continue
5725             ;;
5726           *)
5727             if test "$prev" = dlfiles; then
5728               dlfiles+=" $arg"
5729             else
5730               dlprefiles+=" $arg"
5731             fi
5732             prev=
5733             continue
5734             ;;
5735           esac
5736           ;;
5737         expsyms)
5738           export_symbols="$arg"
5739           test -f "$arg" \
5740             || func_fatal_error "symbol file \`$arg' does not exist"
5741           prev=
5742           continue
5743           ;;
5744         expsyms_regex)
5745           export_symbols_regex="$arg"
5746           prev=
5747           continue
5748           ;;
5749         framework)
5750           case $host in
5751             *-*-darwin*)
5752               case "$deplibs " in
5753                 *" $qarg.ltframework "*) ;;
5754                 *) deplibs+=" $qarg.ltframework" # this is fixed later
5755                    ;;
5756               esac
5757               ;;
5758           esac
5759           prev=
5760           continue
5761           ;;
5762         inst_prefix)
5763           inst_prefix_dir="$arg"
5764           prev=
5765           continue
5766           ;;
5767         objectlist)
5768           if test -f "$arg"; then
5769             save_arg=$arg
5770             moreargs=
5771             for fil in `cat "$save_arg"`
5772             do
5773 #             moreargs+=" $fil"
5774               arg=$fil
5775               # A libtool-controlled object.
5776
5777               # Check to see that this really is a libtool object.
5778               if func_lalib_unsafe_p "$arg"; then
5779                 pic_object=
5780                 non_pic_object=
5781
5782                 # Read the .lo file
5783                 func_source "$arg"
5784
5785                 if test -z "$pic_object" ||
5786                    test -z "$non_pic_object" ||
5787                    test "$pic_object" = none &&
5788                    test "$non_pic_object" = none; then
5789                   func_fatal_error "cannot find name of object for \`$arg'"
5790                 fi
5791
5792                 # Extract subdirectory from the argument.
5793                 func_dirname "$arg" "/" ""
5794                 xdir="$func_dirname_result"
5795
5796                 if test "$pic_object" != none; then
5797                   # Prepend the subdirectory the object is found in.
5798                   pic_object="$xdir$pic_object"
5799
5800                   if test "$prev" = dlfiles; then
5801                     if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5802                       dlfiles+=" $pic_object"
5803                       prev=
5804                       continue
5805                     else
5806                       # If libtool objects are unsupported, then we need to preload.
5807                       prev=dlprefiles
5808                     fi
5809                   fi
5810
5811                   # CHECK ME:  I think I busted this.  -Ossama
5812                   if test "$prev" = dlprefiles; then
5813                     # Preload the old-style object.
5814                     dlprefiles+=" $pic_object"
5815                     prev=
5816                   fi
5817
5818                   # A PIC object.
5819                   libobjs+=" $pic_object"
5820                   arg="$pic_object"
5821                 fi
5822
5823                 # Non-PIC object.
5824                 if test "$non_pic_object" != none; then
5825                   # Prepend the subdirectory the object is found in.
5826                   non_pic_object="$xdir$non_pic_object"
5827
5828                   # A standard non-PIC object
5829                   non_pic_objects+=" $non_pic_object"
5830                   if test -z "$pic_object" || test "$pic_object" = none ; then
5831                     arg="$non_pic_object"
5832                   fi
5833                 else
5834                   # If the PIC object exists, use it instead.
5835                   # $xdir was prepended to $pic_object above.
5836                   non_pic_object="$pic_object"
5837                   non_pic_objects+=" $non_pic_object"
5838                 fi
5839               else
5840                 # Only an error if not doing a dry-run.
5841                 if $opt_dry_run; then
5842                   # Extract subdirectory from the argument.
5843                   func_dirname "$arg" "/" ""
5844                   xdir="$func_dirname_result"
5845
5846                   func_lo2o "$arg"
5847                   pic_object=$xdir$objdir/$func_lo2o_result
5848                   non_pic_object=$xdir$func_lo2o_result
5849                   libobjs+=" $pic_object"
5850                   non_pic_objects+=" $non_pic_object"
5851                 else
5852                   func_fatal_error "\`$arg' is not a valid libtool object"
5853                 fi
5854               fi
5855             done
5856           else
5857             func_fatal_error "link input file \`$arg' does not exist"
5858           fi
5859           arg=$save_arg
5860           prev=
5861           continue
5862           ;;
5863         precious_regex)
5864           precious_files_regex="$arg"
5865           prev=
5866           continue
5867           ;;
5868         release)
5869           release="-$arg"
5870           prev=
5871           continue
5872           ;;
5873         rpath | xrpath)
5874           # We need an absolute path.
5875           case $arg in
5876           [\\/]* | [A-Za-z]:[\\/]*) ;;
5877           *)
5878             func_fatal_error "only absolute run-paths are allowed"
5879             ;;
5880           esac
5881           if test "$prev" = rpath; then
5882             case "$rpath " in
5883             *" $arg "*) ;;
5884             *) rpath+=" $arg" ;;
5885             esac
5886           else
5887             case "$xrpath " in
5888             *" $arg "*) ;;
5889             *) xrpath+=" $arg" ;;
5890             esac
5891           fi
5892           prev=
5893           continue
5894           ;;
5895         shrext)
5896           shrext_cmds="$arg"
5897           prev=
5898           continue
5899           ;;
5900         weak)
5901           weak_libs+=" $arg"
5902           prev=
5903           continue
5904           ;;
5905         xcclinker)
5906           linker_flags+=" $qarg"
5907           compiler_flags+=" $qarg"
5908           prev=
5909           compile_command+=" $qarg"
5910           finalize_command+=" $qarg"
5911           continue
5912           ;;
5913         xcompiler)
5914           compiler_flags+=" $qarg"
5915           prev=
5916           compile_command+=" $qarg"
5917           finalize_command+=" $qarg"
5918           continue
5919           ;;
5920         xlinker)
5921           linker_flags+=" $qarg"
5922           compiler_flags+=" $wl$qarg"
5923           prev=
5924           compile_command+=" $wl$qarg"
5925           finalize_command+=" $wl$qarg"
5926           continue
5927           ;;
5928         *)
5929           eval "$prev=\"\$arg\""
5930           prev=
5931           continue
5932           ;;
5933         esac
5934       fi # test -n "$prev"
5935
5936       prevarg="$arg"
5937
5938       case $arg in
5939       -all-static)
5940         if test -n "$link_static_flag"; then
5941           # See comment for -static flag below, for more details.
5942           compile_command+=" $link_static_flag"
5943           finalize_command+=" $link_static_flag"
5944         fi
5945         continue
5946         ;;
5947
5948       -allow-undefined)
5949         # FIXME: remove this flag sometime in the future.
5950         func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5951         ;;
5952
5953       -avoid-version)
5954         avoid_version=yes
5955         continue
5956         ;;
5957
5958       -bindir)
5959         prev=bindir
5960         continue
5961         ;;
5962
5963       -dlopen)
5964         prev=dlfiles
5965         continue
5966         ;;
5967
5968       -dlpreopen)
5969         prev=dlprefiles
5970         continue
5971         ;;
5972
5973       -export-dynamic)
5974         export_dynamic=yes
5975         continue
5976         ;;
5977
5978       -export-symbols | -export-symbols-regex)
5979         if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5980           func_fatal_error "more than one -exported-symbols argument is not allowed"
5981         fi
5982         if test "X$arg" = "X-export-symbols"; then
5983           prev=expsyms
5984         else
5985           prev=expsyms_regex
5986         fi
5987         continue
5988         ;;
5989
5990       -framework)
5991         prev=framework
5992         continue
5993         ;;
5994
5995       -inst-prefix-dir)
5996         prev=inst_prefix
5997         continue
5998         ;;
5999
6000       # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
6001       # so, if we see these flags be careful not to treat them like -L
6002       -L[A-Z][A-Z]*:*)
6003         case $with_gcc/$host in
6004         no/*-*-irix* | /*-*-irix*)
6005           compile_command+=" $arg"
6006           finalize_command+=" $arg"
6007           ;;
6008         esac
6009         continue
6010         ;;
6011
6012       -L*)
6013         func_stripname "-L" '' "$arg"
6014         if test -z "$func_stripname_result"; then
6015           if test "$#" -gt 0; then
6016             func_fatal_error "require no space between \`-L' and \`$1'"
6017           else
6018             func_fatal_error "need path for \`-L' option"
6019           fi
6020         fi
6021         func_resolve_sysroot "$func_stripname_result"
6022         dir=$func_resolve_sysroot_result
6023         # We need an absolute path.
6024         case $dir in
6025         [\\/]* | [A-Za-z]:[\\/]*) ;;
6026         *)
6027           absdir=`cd "$dir" && pwd`
6028           test -z "$absdir" && \
6029             func_fatal_error "cannot determine absolute directory name of \`$dir'"
6030           dir="$absdir"
6031           ;;
6032         esac
6033         case "$deplibs " in
6034         *" -L$dir "* | *" $arg "*)
6035           # Will only happen for absolute or sysroot arguments
6036           ;;
6037         *)
6038           # Preserve sysroot, but never include relative directories
6039           case $dir in
6040             [\\/]* | [A-Za-z]:[\\/]* | =*) deplibs+=" $arg" ;;
6041             *) deplibs+=" -L$dir" ;;
6042           esac
6043           lib_search_path+=" $dir"
6044           ;;
6045         esac
6046         case $host in
6047         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
6048           testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
6049           case :$dllsearchpath: in
6050           *":$dir:"*) ;;
6051           ::) dllsearchpath=$dir;;
6052           *) dllsearchpath+=":$dir";;
6053           esac
6054           case :$dllsearchpath: in
6055           *":$testbindir:"*) ;;
6056           ::) dllsearchpath=$testbindir;;
6057           *) dllsearchpath+=":$testbindir";;
6058           esac
6059           ;;
6060         esac
6061         continue
6062         ;;
6063
6064       -l*)
6065         if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
6066           case $host in
6067           *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
6068             # These systems don't actually have a C or math library (as such)
6069             continue
6070             ;;
6071           *-*-os2*)
6072             # These systems don't actually have a C library (as such)
6073             test "X$arg" = "X-lc" && continue
6074             ;;
6075           *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6076             # Do not include libc due to us having libc/libc_r.
6077             test "X$arg" = "X-lc" && continue
6078             ;;
6079           *-*-rhapsody* | *-*-darwin1.[012])
6080             # Rhapsody C and math libraries are in the System framework
6081             deplibs+=" System.ltframework"
6082             continue
6083             ;;
6084           *-*-sco3.2v5* | *-*-sco5v6*)
6085             # Causes problems with __ctype
6086             test "X$arg" = "X-lc" && continue
6087             ;;
6088           *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6089             # Compiler inserts libc in the correct place for threads to work
6090             test "X$arg" = "X-lc" && continue
6091             ;;
6092           esac
6093         elif test "X$arg" = "X-lc_r"; then
6094          case $host in
6095          *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6096            # Do not include libc_r directly, use -pthread flag.
6097            continue
6098            ;;
6099          esac
6100         fi
6101         deplibs+=" $arg"
6102         continue
6103         ;;
6104
6105       -module)
6106         module=yes
6107         continue
6108         ;;
6109
6110       # Tru64 UNIX uses -model [arg] to determine the layout of C++
6111       # classes, name mangling, and exception handling.
6112       # Darwin uses the -arch flag to determine output architecture.
6113       -model|-arch|-isysroot|--sysroot)
6114         compiler_flags+=" $arg"
6115         compile_command+=" $arg"
6116         finalize_command+=" $arg"
6117         prev=xcompiler
6118         continue
6119         ;;
6120
6121       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
6122         compiler_flags+=" $arg"
6123         compile_command+=" $arg"
6124         finalize_command+=" $arg"
6125         case "$new_inherited_linker_flags " in
6126             *" $arg "*) ;;
6127             * ) new_inherited_linker_flags+=" $arg" ;;
6128         esac
6129         continue
6130         ;;
6131
6132       -multi_module)
6133         single_module="${wl}-multi_module"
6134         continue
6135         ;;
6136
6137       -no-fast-install)
6138         fast_install=no
6139         continue
6140         ;;
6141
6142       -no-install)
6143         case $host in
6144         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
6145           # The PATH hackery in wrapper scripts is required on Windows
6146           # and Darwin in order for the loader to find any dlls it needs.
6147           func_warning "\`-no-install' is ignored for $host"
6148           func_warning "assuming \`-no-fast-install' instead"
6149           fast_install=no
6150           ;;
6151         *) no_install=yes ;;
6152         esac
6153         continue
6154         ;;
6155
6156       -no-undefined)
6157         allow_undefined=no
6158         continue
6159         ;;
6160
6161       -objectlist)
6162         prev=objectlist
6163         continue
6164         ;;
6165
6166       -o) prev=output ;;
6167
6168       -precious-files-regex)
6169         prev=precious_regex
6170         continue
6171         ;;
6172
6173       -release)
6174         prev=release
6175         continue
6176         ;;
6177
6178       -rpath)
6179         prev=rpath
6180         continue
6181         ;;
6182
6183       -R)
6184         prev=xrpath
6185         continue
6186         ;;
6187
6188       -R*)
6189         func_stripname '-R' '' "$arg"
6190         dir=$func_stripname_result
6191         # We need an absolute path.
6192         case $dir in
6193         [\\/]* | [A-Za-z]:[\\/]*) ;;
6194         =*)
6195           func_stripname '=' '' "$dir"
6196           dir=$lt_sysroot$func_stripname_result
6197           ;;
6198         *)
6199           func_fatal_error "only absolute run-paths are allowed"
6200           ;;
6201         esac
6202         case "$xrpath " in
6203         *" $dir "*) ;;
6204         *) xrpath+=" $dir" ;;
6205         esac
6206         continue
6207         ;;
6208
6209       -shared)
6210         # The effects of -shared are defined in a previous loop.
6211         continue
6212         ;;
6213
6214       -shrext)
6215         prev=shrext
6216         continue
6217         ;;
6218
6219       -static | -static-libtool-libs)
6220         # The effects of -static are defined in a previous loop.
6221         # We used to do the same as -all-static on platforms that
6222         # didn't have a PIC flag, but the assumption that the effects
6223         # would be equivalent was wrong.  It would break on at least
6224         # Digital Unix and AIX.
6225         continue
6226         ;;
6227
6228       -thread-safe)
6229         thread_safe=yes
6230         continue
6231         ;;
6232
6233       -version-info)
6234         prev=vinfo
6235         continue
6236         ;;
6237
6238       -version-number)
6239         prev=vinfo
6240         vinfo_number=yes
6241         continue
6242         ;;
6243
6244       -weak)
6245         prev=weak
6246         continue
6247         ;;
6248
6249       -Wc,*)
6250         func_stripname '-Wc,' '' "$arg"
6251         args=$func_stripname_result
6252         arg=
6253         save_ifs="$IFS"; IFS=','
6254         for flag in $args; do
6255           IFS="$save_ifs"
6256           func_quote_for_eval "$flag"
6257           arg+=" $func_quote_for_eval_result"
6258           compiler_flags+=" $func_quote_for_eval_result"
6259         done
6260         IFS="$save_ifs"
6261         func_stripname ' ' '' "$arg"
6262         arg=$func_stripname_result
6263         ;;
6264
6265       -Wl,*)
6266         func_stripname '-Wl,' '' "$arg"
6267         args=$func_stripname_result
6268         arg=
6269         save_ifs="$IFS"; IFS=','
6270         for flag in $args; do
6271           IFS="$save_ifs"
6272           func_quote_for_eval "$flag"
6273           arg+=" $wl$func_quote_for_eval_result"
6274           compiler_flags+=" $wl$func_quote_for_eval_result"
6275           linker_flags+=" $func_quote_for_eval_result"
6276         done
6277         IFS="$save_ifs"
6278         func_stripname ' ' '' "$arg"
6279         arg=$func_stripname_result
6280         ;;
6281
6282       -Xcompiler)
6283         prev=xcompiler
6284         continue
6285         ;;
6286
6287       -Xlinker)
6288         prev=xlinker
6289         continue
6290         ;;
6291
6292       -XCClinker)
6293         prev=xcclinker
6294         continue
6295         ;;
6296
6297       # -msg_* for osf cc
6298       -msg_*)
6299         func_quote_for_eval "$arg"
6300         arg="$func_quote_for_eval_result"
6301         ;;
6302
6303       # Flags to be passed through unchanged, with rationale:
6304       # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
6305       # -r[0-9][0-9]*        specify processor for the SGI compiler
6306       # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
6307       # +DA*, +DD*           enable 64-bit mode for the HP compiler
6308       # -q*                  compiler args for the IBM compiler
6309       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
6310       # -F/path              path to uninstalled frameworks, gcc on darwin
6311       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
6312       # @file                GCC response files
6313       # -tp=*                Portland pgcc target processor selection
6314       # --sysroot=*          for sysroot support
6315       # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
6316       # -{shared,static}-libgcc, -static-{libgfortran|libstdc++}
6317       #                      link against specified runtime library
6318       # -fstack-protector*   stack protector flags for GCC
6319       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
6320       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
6321       -O*|-flto*|-fwhopr*|-fuse-linker-plugin| \
6322       -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++| \
6323       -fstack-protector*)
6324         func_quote_for_eval "$arg"
6325         arg="$func_quote_for_eval_result"
6326         compile_command+=" $arg"
6327         finalize_command+=" $arg"
6328         compiler_flags+=" $arg"
6329         continue
6330         ;;
6331
6332       # Some other compiler flag.
6333       -* | +*)
6334         func_quote_for_eval "$arg"
6335         arg="$func_quote_for_eval_result"
6336         ;;
6337
6338       *.$objext)
6339         # A standard object.
6340         objs+=" $arg"
6341         ;;
6342
6343       *.lo)
6344         # A libtool-controlled object.
6345
6346         # Check to see that this really is a libtool object.
6347         if func_lalib_unsafe_p "$arg"; then
6348           pic_object=
6349           non_pic_object=
6350
6351           # Read the .lo file
6352           func_source "$arg"
6353
6354           if test -z "$pic_object" ||
6355              test -z "$non_pic_object" ||
6356              test "$pic_object" = none &&
6357              test "$non_pic_object" = none; then
6358             func_fatal_error "cannot find name of object for \`$arg'"
6359           fi
6360
6361           # Extract subdirectory from the argument.
6362           func_dirname "$arg" "/" ""
6363           xdir="$func_dirname_result"
6364
6365           if test "$pic_object" != none; then
6366             # Prepend the subdirectory the object is found in.
6367             pic_object="$xdir$pic_object"
6368
6369             if test "$prev" = dlfiles; then
6370               if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
6371                 dlfiles+=" $pic_object"
6372                 prev=
6373                 continue
6374               else
6375                 # If libtool objects are unsupported, then we need to preload.
6376                 prev=dlprefiles
6377               fi
6378             fi
6379
6380             # CHECK ME:  I think I busted this.  -Ossama
6381             if test "$prev" = dlprefiles; then
6382               # Preload the old-style object.
6383               dlprefiles+=" $pic_object"
6384               prev=
6385             fi
6386
6387             # A PIC object.
6388             libobjs+=" $pic_object"
6389             arg="$pic_object"
6390           fi
6391
6392           # Non-PIC object.
6393           if test "$non_pic_object" != none; then
6394             # Prepend the subdirectory the object is found in.
6395             non_pic_object="$xdir$non_pic_object"
6396
6397             # A standard non-PIC object
6398             non_pic_objects+=" $non_pic_object"
6399             if test -z "$pic_object" || test "$pic_object" = none ; then
6400               arg="$non_pic_object"
6401             fi
6402           else
6403             # If the PIC object exists, use it instead.
6404             # $xdir was prepended to $pic_object above.
6405             non_pic_object="$pic_object"
6406             non_pic_objects+=" $non_pic_object"
6407           fi
6408         else
6409           # Only an error if not doing a dry-run.
6410           if $opt_dry_run; then
6411             # Extract subdirectory from the argument.
6412             func_dirname "$arg" "/" ""
6413             xdir="$func_dirname_result"
6414
6415             func_lo2o "$arg"
6416             pic_object=$xdir$objdir/$func_lo2o_result
6417             non_pic_object=$xdir$func_lo2o_result
6418             libobjs+=" $pic_object"
6419             non_pic_objects+=" $non_pic_object"
6420           else
6421             func_fatal_error "\`$arg' is not a valid libtool object"
6422           fi
6423         fi
6424         ;;
6425
6426       *.$libext)
6427         # An archive.
6428         deplibs+=" $arg"
6429         old_deplibs+=" $arg"
6430         continue
6431         ;;
6432
6433       *.la)
6434         # A libtool-controlled library.
6435
6436         func_resolve_sysroot "$arg"
6437         if test "$prev" = dlfiles; then
6438           # This library was specified with -dlopen.
6439           dlfiles+=" $func_resolve_sysroot_result"
6440           prev=
6441         elif test "$prev" = dlprefiles; then
6442           # The library was specified with -dlpreopen.
6443           dlprefiles+=" $func_resolve_sysroot_result"
6444           prev=
6445         else
6446           deplibs+=" $func_resolve_sysroot_result"
6447         fi
6448         continue
6449         ;;
6450
6451       # Some other compiler argument.
6452       *)
6453         # Unknown arguments in both finalize_command and compile_command need
6454         # to be aesthetically quoted because they are evaled later.
6455         func_quote_for_eval "$arg"
6456         arg="$func_quote_for_eval_result"
6457         ;;
6458       esac # arg
6459
6460       # Now actually substitute the argument into the commands.
6461       if test -n "$arg"; then
6462         compile_command+=" $arg"
6463         finalize_command+=" $arg"
6464       fi
6465     done # argument parsing loop
6466
6467     test -n "$prev" && \
6468       func_fatal_help "the \`$prevarg' option requires an argument"
6469
6470     if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6471       eval arg=\"$export_dynamic_flag_spec\"
6472       compile_command+=" $arg"
6473       finalize_command+=" $arg"
6474     fi
6475
6476     oldlibs=
6477     # calculate the name of the file, without its directory
6478     func_basename "$output"
6479     outputname="$func_basename_result"
6480     libobjs_save="$libobjs"
6481
6482     if test -n "$shlibpath_var"; then
6483       # get the directories listed in $shlibpath_var
6484       eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6485     else
6486       shlib_search_path=
6487     fi
6488     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6489     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6490
6491     func_dirname "$output" "/" ""
6492     output_objdir="$func_dirname_result$objdir"
6493     func_to_tool_file "$output_objdir/"
6494     tool_output_objdir=$func_to_tool_file_result
6495     # Create the object directory.
6496     func_mkdir_p "$output_objdir"
6497
6498     # Determine the type of output
6499     case $output in
6500     "")
6501       func_fatal_help "you must specify an output file"
6502       ;;
6503     *.$libext) linkmode=oldlib ;;
6504     *.lo | *.$objext) linkmode=obj ;;
6505     *.la) linkmode=lib ;;
6506     *) linkmode=prog ;; # Anything else should be a program.
6507     esac
6508
6509     specialdeplibs=
6510
6511     libs=
6512     # Find all interdependent deplibs by searching for libraries
6513     # that are linked more than once (e.g. -la -lb -la)
6514     for deplib in $deplibs; do
6515       if $opt_preserve_dup_deps ; then
6516         case "$libs " in
6517         *" $deplib "*) specialdeplibs+=" $deplib" ;;
6518         esac
6519       fi
6520       libs+=" $deplib"
6521     done
6522
6523     if test "$linkmode" = lib; then
6524       libs="$predeps $libs $compiler_lib_search_path $postdeps"
6525
6526       # Compute libraries that are listed more than once in $predeps
6527       # $postdeps and mark them as special (i.e., whose duplicates are
6528       # not to be eliminated).
6529       pre_post_deps=
6530       if $opt_duplicate_compiler_generated_deps; then
6531         for pre_post_dep in $predeps $postdeps; do
6532           case "$pre_post_deps " in
6533           *" $pre_post_dep "*) specialdeplibs+=" $pre_post_deps" ;;
6534           esac
6535           pre_post_deps+=" $pre_post_dep"
6536         done
6537       fi
6538       pre_post_deps=
6539     fi
6540
6541     deplibs=
6542     newdependency_libs=
6543     newlib_search_path=
6544     need_relink=no # whether we're linking any uninstalled libtool libraries
6545     notinst_deplibs= # not-installed libtool libraries
6546     notinst_path= # paths that contain not-installed libtool libraries
6547
6548     case $linkmode in
6549     lib)
6550         passes="conv dlpreopen link"
6551         for file in $dlfiles $dlprefiles; do
6552           case $file in
6553           *.la) ;;
6554           *)
6555             func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6556             ;;
6557           esac
6558         done
6559         ;;
6560     prog)
6561         compile_deplibs=
6562         finalize_deplibs=
6563         alldeplibs=no
6564         newdlfiles=
6565         newdlprefiles=
6566         passes="conv scan dlopen dlpreopen link"
6567         ;;
6568     *)  passes="conv"
6569         ;;
6570     esac
6571
6572     for pass in $passes; do
6573       # The preopen pass in lib mode reverses $deplibs; put it back here
6574       # so that -L comes before libs that need it for instance...
6575       if test "$linkmode,$pass" = "lib,link"; then
6576         ## FIXME: Find the place where the list is rebuilt in the wrong
6577         ##        order, and fix it there properly
6578         tmp_deplibs=
6579         for deplib in $deplibs; do
6580           tmp_deplibs="$deplib $tmp_deplibs"
6581         done
6582         deplibs="$tmp_deplibs"
6583       fi
6584
6585       if test "$linkmode,$pass" = "lib,link" ||
6586          test "$linkmode,$pass" = "prog,scan"; then
6587         libs="$deplibs"
6588         deplibs=
6589       fi
6590       if test "$linkmode" = prog; then
6591         case $pass in
6592         dlopen) libs="$dlfiles" ;;
6593         dlpreopen) libs="$dlprefiles" ;;
6594         link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
6595         esac
6596       fi
6597       if test "$linkmode,$pass" = "lib,dlpreopen"; then
6598         # Collect and forward deplibs of preopened libtool libs
6599         for lib in $dlprefiles; do
6600           # Ignore non-libtool-libs
6601           dependency_libs=
6602           func_resolve_sysroot "$lib"
6603           case $lib in
6604           *.la) func_source "$func_resolve_sysroot_result" ;;
6605           esac
6606
6607           # Collect preopened libtool deplibs, except any this library
6608           # has declared as weak libs
6609           for deplib in $dependency_libs; do
6610             func_basename "$deplib"
6611             deplib_base=$func_basename_result
6612             case " $weak_libs " in
6613             *" $deplib_base "*) ;;
6614             *) deplibs+=" $deplib" ;;
6615             esac
6616           done
6617         done
6618         libs="$dlprefiles"
6619       fi
6620       if test "$pass" = dlopen; then
6621         # Collect dlpreopened libraries
6622         save_deplibs="$deplibs"
6623         deplibs=
6624       fi
6625
6626       for deplib in $libs; do
6627         lib=
6628         found=no
6629         case $deplib in
6630         -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
6631           if test "$linkmode,$pass" = "prog,link"; then
6632             compile_deplibs="$deplib $compile_deplibs"
6633             finalize_deplibs="$deplib $finalize_deplibs"
6634           else
6635             compiler_flags+=" $deplib"
6636             if test "$linkmode" = lib ; then
6637                 case "$new_inherited_linker_flags " in
6638                     *" $deplib "*) ;;
6639                     * ) new_inherited_linker_flags+=" $deplib" ;;
6640                 esac
6641             fi
6642           fi
6643           continue
6644           ;;
6645         -l*)
6646           if test "$linkmode" != lib && test "$linkmode" != prog; then
6647             func_warning "\`-l' is ignored for archives/objects"
6648             continue
6649           fi
6650           func_stripname '-l' '' "$deplib"
6651           name=$func_stripname_result
6652           if test "$linkmode" = lib; then
6653             searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6654           else
6655             searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6656           fi
6657           for searchdir in $searchdirs; do
6658             for search_ext in .la $std_shrext .so .a; do
6659               # Search the libtool library
6660               lib="$searchdir/lib${name}${search_ext}"
6661               if test -f "$lib"; then
6662                 if test "$search_ext" = ".la"; then
6663                   found=yes
6664                 else
6665                   found=no
6666                 fi
6667                 break 2
6668               fi
6669             done
6670           done
6671           if test "$found" != yes; then
6672             # deplib doesn't seem to be a libtool library
6673             if test "$linkmode,$pass" = "prog,link"; then
6674               compile_deplibs="$deplib $compile_deplibs"
6675               finalize_deplibs="$deplib $finalize_deplibs"
6676             else
6677               deplibs="$deplib $deplibs"
6678               test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6679             fi
6680             continue
6681           else # deplib is a libtool library
6682             # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6683             # We need to do some special things here, and not later.
6684             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6685               case " $predeps $postdeps " in
6686               *" $deplib "*)
6687                 if func_lalib_p "$lib"; then
6688                   library_names=
6689                   old_library=
6690                   func_source "$lib"
6691                   for l in $old_library $library_names; do
6692                     ll="$l"
6693                   done
6694                   if test "X$ll" = "X$old_library" ; then # only static version available
6695                     found=no
6696                     func_dirname "$lib" "" "."
6697                     ladir="$func_dirname_result"
6698                     lib=$ladir/$old_library
6699                     if test "$linkmode,$pass" = "prog,link"; then
6700                       compile_deplibs="$deplib $compile_deplibs"
6701                       finalize_deplibs="$deplib $finalize_deplibs"
6702                     else
6703                       deplibs="$deplib $deplibs"
6704                       test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6705                     fi
6706                     continue
6707                   fi
6708                 fi
6709                 ;;
6710               *) ;;
6711               esac
6712             fi
6713           fi
6714           ;; # -l
6715         *.ltframework)
6716           if test "$linkmode,$pass" = "prog,link"; then
6717             compile_deplibs="$deplib $compile_deplibs"
6718             finalize_deplibs="$deplib $finalize_deplibs"
6719           else
6720             deplibs="$deplib $deplibs"
6721             if test "$linkmode" = lib ; then
6722                 case "$new_inherited_linker_flags " in
6723                     *" $deplib "*) ;;
6724                     * ) new_inherited_linker_flags+=" $deplib" ;;
6725                 esac
6726             fi
6727           fi
6728           continue
6729           ;;
6730         -L*)
6731           case $linkmode in
6732           lib)
6733             deplibs="$deplib $deplibs"
6734             test "$pass" = conv && continue
6735             newdependency_libs="$deplib $newdependency_libs"
6736             func_stripname '-L' '' "$deplib"
6737             func_resolve_sysroot "$func_stripname_result"
6738             newlib_search_path+=" $func_resolve_sysroot_result"
6739             ;;
6740           prog)
6741             if test "$pass" = conv; then
6742               deplibs="$deplib $deplibs"
6743               continue
6744             fi
6745             if test "$pass" = scan; then
6746               deplibs="$deplib $deplibs"
6747             else
6748               compile_deplibs="$deplib $compile_deplibs"
6749               finalize_deplibs="$deplib $finalize_deplibs"
6750             fi
6751             func_stripname '-L' '' "$deplib"
6752             func_resolve_sysroot "$func_stripname_result"
6753             newlib_search_path+=" $func_resolve_sysroot_result"
6754             ;;
6755           *)
6756             func_warning "\`-L' is ignored for archives/objects"
6757             ;;
6758           esac # linkmode
6759           continue
6760           ;; # -L
6761         -R*)
6762           if test "$pass" = link; then
6763             func_stripname '-R' '' "$deplib"
6764             func_resolve_sysroot "$func_stripname_result"
6765             dir=$func_resolve_sysroot_result
6766             # Make sure the xrpath contains only unique directories.
6767             case "$xrpath " in
6768             *" $dir "*) ;;
6769             *) xrpath+=" $dir" ;;
6770             esac
6771           fi
6772           deplibs="$deplib $deplibs"
6773           continue
6774           ;;
6775         *.la)
6776           func_resolve_sysroot "$deplib"
6777           lib=$func_resolve_sysroot_result
6778           ;;
6779         *.$libext)
6780           if test "$pass" = conv; then
6781             deplibs="$deplib $deplibs"
6782             continue
6783           fi
6784           case $linkmode in
6785           lib)
6786             # Linking convenience modules into shared libraries is allowed,
6787             # but linking other static libraries is non-portable.
6788             case " $dlpreconveniencelibs " in
6789             *" $deplib "*) ;;
6790             *)
6791               valid_a_lib=no
6792               case $deplibs_check_method in
6793                 match_pattern*)
6794                   set dummy $deplibs_check_method; shift
6795                   match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6796                   if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6797                     | $EGREP "$match_pattern_regex" > /dev/null; then
6798                     valid_a_lib=yes
6799                   fi
6800                 ;;
6801                 pass_all)
6802                   valid_a_lib=yes
6803                 ;;
6804               esac
6805               if test "$valid_a_lib" != yes; then
6806                 echo
6807                 $ECHO "*** Warning: Trying to link with static lib archive $deplib."
6808                 echo "*** I have the capability to make that library automatically link in when"
6809                 echo "*** you link to this library.  But I can only do this if you have a"
6810                 echo "*** shared version of the library, which you do not appear to have"
6811                 echo "*** because the file extensions .$libext of this argument makes me believe"
6812                 echo "*** that it is just a static archive that I should not use here."
6813               else
6814                 echo
6815                 $ECHO "*** Warning: Linking the shared library $output against the"
6816                 $ECHO "*** static library $deplib is not portable!"
6817                 deplibs="$deplib $deplibs"
6818               fi
6819               ;;
6820             esac
6821             continue
6822             ;;
6823           prog)
6824             if test "$pass" != link; then
6825               deplibs="$deplib $deplibs"
6826             else
6827               compile_deplibs="$deplib $compile_deplibs"
6828               finalize_deplibs="$deplib $finalize_deplibs"
6829             fi
6830             continue
6831             ;;
6832           esac # linkmode
6833           ;; # *.$libext
6834         *.lo | *.$objext)
6835           if test "$pass" = conv; then
6836             deplibs="$deplib $deplibs"
6837           elif test "$linkmode" = prog; then
6838             if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6839               # If there is no dlopen support or we're linking statically,
6840               # we need to preload.
6841               newdlprefiles+=" $deplib"
6842               compile_deplibs="$deplib $compile_deplibs"
6843               finalize_deplibs="$deplib $finalize_deplibs"
6844             else
6845               newdlfiles+=" $deplib"
6846             fi
6847           fi
6848           continue
6849           ;;
6850         %DEPLIBS%)
6851           alldeplibs=yes
6852           continue
6853           ;;
6854         esac # case $deplib
6855
6856         if test "$found" = yes || test -f "$lib"; then :
6857         else
6858           func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6859         fi
6860
6861         # Check to see that this really is a libtool archive.
6862         func_lalib_unsafe_p "$lib" \
6863           || func_fatal_error "\`$lib' is not a valid libtool archive"
6864
6865         func_dirname "$lib" "" "."
6866         ladir="$func_dirname_result"
6867
6868         dlname=
6869         dlopen=
6870         dlpreopen=
6871         libdir=
6872         library_names=
6873         old_library=
6874         inherited_linker_flags=
6875         # If the library was installed with an old release of libtool,
6876         # it will not redefine variables installed, or shouldnotlink
6877         installed=yes
6878         shouldnotlink=no
6879         avoidtemprpath=
6880
6881
6882         # Read the .la file
6883         func_source "$lib"
6884
6885         # Convert "-framework foo" to "foo.ltframework"
6886         if test -n "$inherited_linker_flags"; then
6887           tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6888           for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6889             case " $new_inherited_linker_flags " in
6890               *" $tmp_inherited_linker_flag "*) ;;
6891               *) new_inherited_linker_flags+=" $tmp_inherited_linker_flag";;
6892             esac
6893           done
6894         fi
6895         dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6896         if test "$linkmode,$pass" = "lib,link" ||
6897            test "$linkmode,$pass" = "prog,scan" ||
6898            { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6899           test -n "$dlopen" && dlfiles+=" $dlopen"
6900           test -n "$dlpreopen" && dlprefiles+=" $dlpreopen"
6901         fi
6902
6903         if test "$pass" = conv; then
6904           # Only check for convenience libraries
6905           deplibs="$lib $deplibs"
6906           if test -z "$libdir"; then
6907             if test -z "$old_library"; then
6908               func_fatal_error "cannot find name of link library for \`$lib'"
6909             fi
6910             # It is a libtool convenience library, so add in its objects.
6911             convenience+=" $ladir/$objdir/$old_library"
6912             old_convenience+=" $ladir/$objdir/$old_library"
6913           elif test "$linkmode" != prog && test "$linkmode" != lib; then
6914             func_fatal_error "\`$lib' is not a convenience library"
6915           fi
6916           tmp_libs=
6917           for deplib in $dependency_libs; do
6918             deplibs="$deplib $deplibs"
6919             if $opt_preserve_dup_deps ; then
6920               case "$tmp_libs " in
6921               *" $deplib "*) specialdeplibs+=" $deplib" ;;
6922               esac
6923             fi
6924             tmp_libs+=" $deplib"
6925           done
6926           continue
6927         fi # $pass = conv
6928
6929
6930         # Get the name of the library we link against.
6931         linklib=
6932         if test -n "$old_library" &&
6933            { test "$prefer_static_libs" = yes ||
6934              test "$prefer_static_libs,$installed" = "built,no"; }; then
6935           linklib=$old_library
6936         else
6937           for l in $old_library $library_names; do
6938             linklib="$l"
6939           done
6940         fi
6941         if test -z "$linklib"; then
6942           func_fatal_error "cannot find name of link library for \`$lib'"
6943         fi
6944
6945         # This library was specified with -dlopen.
6946         if test "$pass" = dlopen; then
6947           if test -z "$libdir"; then
6948             func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6949           fi
6950           if test -z "$dlname" ||
6951              test "$dlopen_support" != yes ||
6952              test "$build_libtool_libs" = no; then
6953             # If there is no dlname, no dlopen support or we're linking
6954             # statically, we need to preload.  We also need to preload any
6955             # dependent libraries so libltdl's deplib preloader doesn't
6956             # bomb out in the load deplibs phase.
6957             dlprefiles+=" $lib $dependency_libs"
6958           else
6959             newdlfiles+=" $lib"
6960           fi
6961           continue
6962         fi # $pass = dlopen
6963
6964         # We need an absolute path.
6965         case $ladir in
6966         [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6967         *)
6968           abs_ladir=`cd "$ladir" && pwd`
6969           if test -z "$abs_ladir"; then
6970             func_warning "cannot determine absolute directory name of \`$ladir'"
6971             func_warning "passing it literally to the linker, although it might fail"
6972             abs_ladir="$ladir"
6973           fi
6974           ;;
6975         esac
6976         func_basename "$lib"
6977         laname="$func_basename_result"
6978
6979         # Find the relevant object directory and library name.
6980         if test "X$installed" = Xyes; then
6981           if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6982             func_warning "library \`$lib' was moved."
6983             dir="$ladir"
6984             absdir="$abs_ladir"
6985             libdir="$abs_ladir"
6986           else
6987             dir="$lt_sysroot$libdir"
6988             absdir="$lt_sysroot$libdir"
6989           fi
6990           test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6991         else
6992           if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6993             dir="$ladir"
6994             absdir="$abs_ladir"
6995             # Remove this search path later
6996             notinst_path+=" $abs_ladir"
6997           else
6998             dir="$ladir/$objdir"
6999             absdir="$abs_ladir/$objdir"
7000             # Remove this search path later
7001             notinst_path+=" $abs_ladir"
7002           fi
7003         fi # $installed = yes
7004         func_stripname 'lib' '.la' "$laname"
7005         name=$func_stripname_result
7006
7007         # This library was specified with -dlpreopen.
7008         if test "$pass" = dlpreopen; then
7009           if test -z "$libdir" && test "$linkmode" = prog; then
7010             func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
7011           fi
7012           case "$host" in
7013             # special handling for platforms with PE-DLLs.
7014             *cygwin* | *mingw* | *cegcc* )
7015               # Linker will automatically link against shared library if both
7016               # static and shared are present.  Therefore, ensure we extract
7017               # symbols from the import library if a shared library is present
7018               # (otherwise, the dlopen module name will be incorrect).  We do
7019               # this by putting the import library name into $newdlprefiles.
7020               # We recover the dlopen module name by 'saving' the la file
7021               # name in a special purpose variable, and (later) extracting the
7022               # dlname from the la file.
7023               if test -n "$dlname"; then
7024                 func_tr_sh "$dir/$linklib"
7025                 eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
7026                 newdlprefiles+=" $dir/$linklib"
7027               else
7028                 newdlprefiles+=" $dir/$old_library"
7029                 # Keep a list of preopened convenience libraries to check
7030                 # that they are being used correctly in the link pass.
7031                 test -z "$libdir" && \
7032                   dlpreconveniencelibs+=" $dir/$old_library"
7033               fi
7034             ;;
7035             * )
7036               # Prefer using a static library (so that no silly _DYNAMIC symbols
7037               # are required to link).
7038               if test -n "$old_library"; then
7039                 newdlprefiles+=" $dir/$old_library"
7040                 # Keep a list of preopened convenience libraries to check
7041                 # that they are being used correctly in the link pass.
7042                 test -z "$libdir" && \
7043                   dlpreconveniencelibs+=" $dir/$old_library"
7044               # Otherwise, use the dlname, so that lt_dlopen finds it.
7045               elif test -n "$dlname"; then
7046                 newdlprefiles+=" $dir/$dlname"
7047               else
7048                 newdlprefiles+=" $dir/$linklib"
7049               fi
7050             ;;
7051           esac
7052         fi # $pass = dlpreopen
7053
7054         if test -z "$libdir"; then
7055           # Link the convenience library
7056           if test "$linkmode" = lib; then
7057             deplibs="$dir/$old_library $deplibs"
7058           elif test "$linkmode,$pass" = "prog,link"; then
7059             compile_deplibs="$dir/$old_library $compile_deplibs"
7060             finalize_deplibs="$dir/$old_library $finalize_deplibs"
7061           else
7062             deplibs="$lib $deplibs" # used for prog,scan pass
7063           fi
7064           continue
7065         fi
7066
7067
7068         if test "$linkmode" = prog && test "$pass" != link; then
7069           newlib_search_path+=" $ladir"
7070           deplibs="$lib $deplibs"
7071
7072           linkalldeplibs=no
7073           if test "$link_all_deplibs" != no || test -z "$library_names" ||
7074              test "$build_libtool_libs" = no; then
7075             linkalldeplibs=yes
7076           fi
7077
7078           tmp_libs=
7079           for deplib in $dependency_libs; do
7080             case $deplib in
7081             -L*) func_stripname '-L' '' "$deplib"
7082                  func_resolve_sysroot "$func_stripname_result"
7083                  newlib_search_path+=" $func_resolve_sysroot_result"
7084                  ;;
7085             esac
7086             # Need to link against all dependency_libs?
7087             if test "$linkalldeplibs" = yes; then
7088               deplibs="$deplib $deplibs"
7089             else
7090               # Need to hardcode shared library paths
7091               # or/and link against static libraries
7092               newdependency_libs="$deplib $newdependency_libs"
7093             fi
7094             if $opt_preserve_dup_deps ; then
7095               case "$tmp_libs " in
7096               *" $deplib "*) specialdeplibs+=" $deplib" ;;
7097               esac
7098             fi
7099             tmp_libs+=" $deplib"
7100           done # for deplib
7101           continue
7102         fi # $linkmode = prog...
7103
7104         if test "$linkmode,$pass" = "prog,link"; then
7105           if test -n "$library_names" &&
7106              { { test "$prefer_static_libs" = no ||
7107                  test "$prefer_static_libs,$installed" = "built,yes"; } ||
7108                test -z "$old_library"; }; then
7109             # We need to hardcode the library path
7110             if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
7111               # Make sure the rpath contains only unique directories.
7112               case "$temp_rpath:" in
7113               *"$absdir:"*) ;;
7114               *) temp_rpath+="$absdir:" ;;
7115               esac
7116             fi
7117
7118             # Hardcode the library path.
7119             # Skip directories that are in the system default run-time
7120             # search path.
7121             case " $sys_lib_dlsearch_path " in
7122             *" $absdir "*) ;;
7123             *)
7124               case "$compile_rpath " in
7125               *" $absdir "*) ;;
7126               *) compile_rpath+=" $absdir" ;;
7127               esac
7128               ;;
7129             esac
7130             case " $sys_lib_dlsearch_path " in
7131             *" $libdir "*) ;;
7132             *)
7133               case "$finalize_rpath " in
7134               *" $libdir "*) ;;
7135               *) finalize_rpath+=" $libdir" ;;
7136               esac
7137               ;;
7138             esac
7139           fi # $linkmode,$pass = prog,link...
7140
7141           if test "$alldeplibs" = yes &&
7142              { test "$deplibs_check_method" = pass_all ||
7143                { test "$build_libtool_libs" = yes &&
7144                  test -n "$library_names"; }; }; then
7145             # We only need to search for static libraries
7146             continue
7147           fi
7148         fi
7149
7150         link_static=no # Whether the deplib will be linked statically
7151         use_static_libs=$prefer_static_libs
7152         if test "$use_static_libs" = built && test "$installed" = yes; then
7153           use_static_libs=no
7154         fi
7155         if test -n "$library_names" &&
7156            { test "$use_static_libs" = no || test -z "$old_library"; }; then
7157           case $host in
7158           *cygwin* | *mingw* | *cegcc*)
7159               # No point in relinking DLLs because paths are not encoded
7160               notinst_deplibs+=" $lib"
7161               need_relink=no
7162             ;;
7163           *)
7164             if test "$installed" = no; then
7165               notinst_deplibs+=" $lib"
7166               need_relink=yes
7167             fi
7168             ;;
7169           esac
7170           # This is a shared library
7171
7172           # Warn about portability, can't link against -module's on some
7173           # systems (darwin).  Don't bleat about dlopened modules though!
7174           dlopenmodule=""
7175           for dlpremoduletest in $dlprefiles; do
7176             if test "X$dlpremoduletest" = "X$lib"; then
7177               dlopenmodule="$dlpremoduletest"
7178               break
7179             fi
7180           done
7181           if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
7182             echo
7183             if test "$linkmode" = prog; then
7184               $ECHO "*** Warning: Linking the executable $output against the loadable module"
7185             else
7186               $ECHO "*** Warning: Linking the shared library $output against the loadable module"
7187             fi
7188             $ECHO "*** $linklib is not portable!"
7189           fi
7190           if test "$linkmode" = lib &&
7191              test "$hardcode_into_libs" = yes; then
7192             # Hardcode the library path.
7193             # Skip directories that are in the system default run-time
7194             # search path.
7195             case " $sys_lib_dlsearch_path " in
7196             *" $absdir "*) ;;
7197             *)
7198               case "$compile_rpath " in
7199               *" $absdir "*) ;;
7200               *) compile_rpath+=" $absdir" ;;
7201               esac
7202               ;;
7203             esac
7204             case " $sys_lib_dlsearch_path " in
7205             *" $libdir "*) ;;
7206             *)
7207               case "$finalize_rpath " in
7208               *" $libdir "*) ;;
7209               *) finalize_rpath+=" $libdir" ;;
7210               esac
7211               ;;
7212             esac
7213           fi
7214
7215           if test -n "$old_archive_from_expsyms_cmds"; then
7216             # figure out the soname
7217             set dummy $library_names
7218             shift
7219             realname="$1"
7220             shift
7221             libname=`eval "\\$ECHO \"$libname_spec\""`
7222             # use dlname if we got it. it's perfectly good, no?
7223             if test -n "$dlname"; then
7224               soname="$dlname"
7225             elif test -n "$soname_spec"; then
7226               # bleh windows
7227               case $host in
7228               *cygwin* | mingw* | *cegcc*)
7229                 func_arith $current - $age
7230                 major=$func_arith_result
7231                 versuffix="-$major"
7232                 ;;
7233               esac
7234               eval soname=\"$soname_spec\"
7235             else
7236               soname="$realname"
7237             fi
7238
7239             # Make a new name for the extract_expsyms_cmds to use
7240             soroot="$soname"
7241             func_basename "$soroot"
7242             soname="$func_basename_result"
7243             func_stripname 'lib' '.dll' "$soname"
7244             newlib=libimp-$func_stripname_result.a
7245
7246             # If the library has no export list, then create one now
7247             if test -f "$output_objdir/$soname-def"; then :
7248             else
7249               func_verbose "extracting exported symbol list from \`$soname'"
7250               func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
7251             fi
7252
7253             # Create $newlib
7254             if test -f "$output_objdir/$newlib"; then :; else
7255               func_verbose "generating import library for \`$soname'"
7256               func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
7257             fi
7258             # make sure the library variables are pointing to the new library
7259             dir=$output_objdir
7260             linklib=$newlib
7261           fi # test -n "$old_archive_from_expsyms_cmds"
7262
7263           if test "$linkmode" = prog || test "$opt_mode" != relink; then
7264             add_shlibpath=
7265             add_dir=
7266             add=
7267             lib_linked=yes
7268             case $hardcode_action in
7269             immediate | unsupported)
7270               if test "$hardcode_direct" = no; then
7271                 add="$dir/$linklib"
7272                 case $host in
7273                   *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
7274                   *-*-sysv4*uw2*) add_dir="-L$dir" ;;
7275                   *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
7276                     *-*-unixware7*) add_dir="-L$dir" ;;
7277                   *-*-darwin* )
7278                     # if the lib is a (non-dlopened) module then we can not
7279                     # link against it, someone is ignoring the earlier warnings
7280                     if /usr/bin/file -L $add 2> /dev/null |
7281                          $GREP ": [^:]* bundle" >/dev/null ; then
7282                       if test "X$dlopenmodule" != "X$lib"; then
7283                         $ECHO "*** Warning: lib $linklib is a module, not a shared library"
7284                         if test -z "$old_library" ; then
7285                           echo
7286                           echo "*** And there doesn't seem to be a static archive available"
7287                           echo "*** The link will probably fail, sorry"
7288                         else
7289                           add="$dir/$old_library"
7290                         fi
7291                       elif test -n "$old_library"; then
7292                         add="$dir/$old_library"
7293                       fi
7294                     fi
7295                 esac
7296               elif test "$hardcode_minus_L" = no; then
7297                 case $host in
7298                 *-*-sunos*) add_shlibpath="$dir" ;;
7299                 esac
7300                 add_dir="-L$dir"
7301                 add="-l$name"
7302               elif test "$hardcode_shlibpath_var" = no; then
7303                 add_shlibpath="$dir"
7304                 add="-l$name"
7305               else
7306                 lib_linked=no
7307               fi
7308               ;;
7309             relink)
7310               if test "$hardcode_direct" = yes &&
7311                  test "$hardcode_direct_absolute" = no; then
7312                 add="$dir/$linklib"
7313               elif test "$hardcode_minus_L" = yes; then
7314                 add_dir="-L$dir"
7315                 # Try looking first in the location we're being installed to.
7316                 if test -n "$inst_prefix_dir"; then
7317                   case $libdir in
7318                     [\\/]*)
7319                       add_dir+=" -L$inst_prefix_dir$libdir"
7320                       ;;
7321                   esac
7322                 fi
7323                 add="-l$name"
7324               elif test "$hardcode_shlibpath_var" = yes; then
7325                 add_shlibpath="$dir"
7326                 add="-l$name"
7327               else
7328                 lib_linked=no
7329               fi
7330               ;;
7331             *) lib_linked=no ;;
7332             esac
7333
7334             if test "$lib_linked" != yes; then
7335               func_fatal_configuration "unsupported hardcode properties"
7336             fi
7337
7338             if test -n "$add_shlibpath"; then
7339               case :$compile_shlibpath: in
7340               *":$add_shlibpath:"*) ;;
7341               *) compile_shlibpath+="$add_shlibpath:" ;;
7342               esac
7343             fi
7344             if test "$linkmode" = prog; then
7345               test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
7346               test -n "$add" && compile_deplibs="$add $compile_deplibs"
7347             else
7348               test -n "$add_dir" && deplibs="$add_dir $deplibs"
7349               test -n "$add" && deplibs="$add $deplibs"
7350               if test "$hardcode_direct" != yes &&
7351                  test "$hardcode_minus_L" != yes &&
7352                  test "$hardcode_shlibpath_var" = yes; then
7353                 case :$finalize_shlibpath: in
7354                 *":$libdir:"*) ;;
7355                 *) finalize_shlibpath+="$libdir:" ;;
7356                 esac
7357               fi
7358             fi
7359           fi
7360
7361           if test "$linkmode" = prog || test "$opt_mode" = relink; then
7362             add_shlibpath=
7363             add_dir=
7364             add=
7365             # Finalize command for both is simple: just hardcode it.
7366             if test "$hardcode_direct" = yes &&
7367                test "$hardcode_direct_absolute" = no; then
7368               add="$libdir/$linklib"
7369             elif test "$hardcode_minus_L" = yes; then
7370               add_dir="-L$libdir"
7371               add="-l$name"
7372             elif test "$hardcode_shlibpath_var" = yes; then
7373               case :$finalize_shlibpath: in
7374               *":$libdir:"*) ;;
7375               *) finalize_shlibpath+="$libdir:" ;;
7376               esac
7377               add="-l$name"
7378             elif test "$hardcode_automatic" = yes; then
7379               if test -n "$inst_prefix_dir" &&
7380                  test -f "$inst_prefix_dir$libdir/$linklib" ; then
7381                 add="$inst_prefix_dir$libdir/$linklib"
7382               else
7383                 add="$libdir/$linklib"
7384               fi
7385             else
7386               # We cannot seem to hardcode it, guess we'll fake it.
7387               add_dir="-L$libdir"
7388               # Try looking first in the location we're being installed to.
7389               if test -n "$inst_prefix_dir"; then
7390                 case $libdir in
7391                   [\\/]*)
7392                     add_dir+=" -L$inst_prefix_dir$libdir"
7393                     ;;
7394                 esac
7395               fi
7396               add="-l$name"
7397             fi
7398
7399             if test "$linkmode" = prog; then
7400               test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
7401               test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
7402             else
7403               test -n "$add_dir" && deplibs="$add_dir $deplibs"
7404               test -n "$add" && deplibs="$add $deplibs"
7405             fi
7406           fi
7407         elif test "$linkmode" = prog; then
7408           # Here we assume that one of hardcode_direct or hardcode_minus_L
7409           # is not unsupported.  This is valid on all known static and
7410           # shared platforms.
7411           if test "$hardcode_direct" != unsupported; then
7412             test -n "$old_library" && linklib="$old_library"
7413             compile_deplibs="$dir/$linklib $compile_deplibs"
7414             finalize_deplibs="$dir/$linklib $finalize_deplibs"
7415           else
7416             compile_deplibs="-l$name -L$dir $compile_deplibs"
7417             finalize_deplibs="-l$name -L$dir $finalize_deplibs"
7418           fi
7419         elif test "$build_libtool_libs" = yes; then
7420           # Not a shared library
7421           if test "$deplibs_check_method" != pass_all; then
7422             # We're trying link a shared library against a static one
7423             # but the system doesn't support it.
7424
7425             # Just print a warning and add the library to dependency_libs so
7426             # that the program can be linked against the static library.
7427             echo
7428             $ECHO "*** Warning: This system can not link to static lib archive $lib."
7429             echo "*** I have the capability to make that library automatically link in when"
7430             echo "*** you link to this library.  But I can only do this if you have a"
7431             echo "*** shared version of the library, which you do not appear to have."
7432             if test "$module" = yes; then
7433               echo "*** But as you try to build a module library, libtool will still create "
7434               echo "*** a static module, that should work as long as the dlopening application"
7435               echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
7436               if test -z "$global_symbol_pipe"; then
7437                 echo
7438                 echo "*** However, this would only work if libtool was able to extract symbol"
7439                 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7440                 echo "*** not find such a program.  So, this module is probably useless."
7441                 echo "*** \`nm' from GNU binutils and a full rebuild may help."
7442               fi
7443               if test "$build_old_libs" = no; then
7444                 build_libtool_libs=module
7445                 build_old_libs=yes
7446               else
7447                 build_libtool_libs=no
7448               fi
7449             fi
7450           else
7451             deplibs="$dir/$old_library $deplibs"
7452             link_static=yes
7453           fi
7454         fi # link shared/static library?
7455
7456         if test "$linkmode" = lib; then
7457           if test -n "$dependency_libs" &&
7458              { test "$hardcode_into_libs" != yes ||
7459                test "$build_old_libs" = yes ||
7460                test "$link_static" = yes; }; then
7461             # Extract -R from dependency_libs
7462             temp_deplibs=
7463             for libdir in $dependency_libs; do
7464               case $libdir in
7465               -R*) func_stripname '-R' '' "$libdir"
7466                    temp_xrpath=$func_stripname_result
7467                    case " $xrpath " in
7468                    *" $temp_xrpath "*) ;;
7469                    *) xrpath+=" $temp_xrpath";;
7470                    esac;;
7471               *) temp_deplibs+=" $libdir";;
7472               esac
7473             done
7474             dependency_libs="$temp_deplibs"
7475           fi
7476
7477           newlib_search_path+=" $absdir"
7478           # Link against this library
7479           test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7480           # ... and its dependency_libs
7481           tmp_libs=
7482           for deplib in $dependency_libs; do
7483             newdependency_libs="$deplib $newdependency_libs"
7484             case $deplib in
7485               -L*) func_stripname '-L' '' "$deplib"
7486                    func_resolve_sysroot "$func_stripname_result";;
7487               *) func_resolve_sysroot "$deplib" ;;
7488             esac
7489             if $opt_preserve_dup_deps ; then
7490               case "$tmp_libs " in
7491               *" $func_resolve_sysroot_result "*)
7492                 specialdeplibs+=" $func_resolve_sysroot_result" ;;
7493               esac
7494             fi
7495             tmp_libs+=" $func_resolve_sysroot_result"
7496           done
7497
7498           if test "$link_all_deplibs" != no; then
7499             # Add the search paths of all dependency libraries
7500             for deplib in $dependency_libs; do
7501               path=
7502               case $deplib in
7503               -L*) path="$deplib" ;;
7504               *.la)
7505                 func_resolve_sysroot "$deplib"
7506                 deplib=$func_resolve_sysroot_result
7507                 func_dirname "$deplib" "" "."
7508                 dir=$func_dirname_result
7509                 # We need an absolute path.
7510                 case $dir in
7511                 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7512                 *)
7513                   absdir=`cd "$dir" && pwd`
7514                   if test -z "$absdir"; then
7515                     func_warning "cannot determine absolute directory name of \`$dir'"
7516                     absdir="$dir"
7517                   fi
7518                   ;;
7519                 esac
7520                 if $GREP "^installed=no" $deplib > /dev/null; then
7521                 case $host in
7522                 *-*-darwin*)
7523                   depdepl=
7524                   eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7525                   if test -n "$deplibrary_names" ; then
7526                     for tmp in $deplibrary_names ; do
7527                       depdepl=$tmp
7528                     done
7529                     if test -f "$absdir/$objdir/$depdepl" ; then
7530                       depdepl="$absdir/$objdir/$depdepl"
7531                       darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7532                       if test -z "$darwin_install_name"; then
7533                           darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7534                       fi
7535                       compiler_flags+=" ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7536                       linker_flags+=" -dylib_file ${darwin_install_name}:${depdepl}"
7537                       path=
7538                     fi
7539                   fi
7540                   ;;
7541                 *)
7542                   path="-L$absdir/$objdir"
7543                   ;;
7544                 esac
7545                 else
7546                   eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7547                   test -z "$libdir" && \
7548                     func_fatal_error "\`$deplib' is not a valid libtool archive"
7549                   test "$absdir" != "$libdir" && \
7550                     func_warning "\`$deplib' seems to be moved"
7551
7552                   path="-L$absdir"
7553                 fi
7554                 ;;
7555               esac
7556               case " $deplibs " in
7557               *" $path "*) ;;
7558               *) deplibs="$path $deplibs" ;;
7559               esac
7560             done
7561           fi # link_all_deplibs != no
7562         fi # linkmode = lib
7563       done # for deplib in $libs
7564       if test "$pass" = link; then
7565         if test "$linkmode" = "prog"; then
7566           compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7567           finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7568         else
7569           compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7570         fi
7571       fi
7572       dependency_libs="$newdependency_libs"
7573       if test "$pass" = dlpreopen; then
7574         # Link the dlpreopened libraries before other libraries
7575         for deplib in $save_deplibs; do
7576           deplibs="$deplib $deplibs"
7577         done
7578       fi
7579       if test "$pass" != dlopen; then
7580         if test "$pass" != conv; then
7581           # Make sure lib_search_path contains only unique directories.
7582           lib_search_path=
7583           for dir in $newlib_search_path; do
7584             case "$lib_search_path " in
7585             *" $dir "*) ;;
7586             *) lib_search_path+=" $dir" ;;
7587             esac
7588           done
7589           newlib_search_path=
7590         fi
7591
7592         if test "$linkmode,$pass" != "prog,link"; then
7593           vars="deplibs"
7594         else
7595           vars="compile_deplibs finalize_deplibs"
7596         fi
7597         for var in $vars dependency_libs; do
7598           # Add libraries to $var in reverse order
7599           eval tmp_libs=\"\$$var\"
7600           new_libs=
7601           for deplib in $tmp_libs; do
7602             # FIXME: Pedantically, this is the right thing to do, so
7603             #        that some nasty dependency loop isn't accidentally
7604             #        broken:
7605             #new_libs="$deplib $new_libs"
7606             # Pragmatically, this seems to cause very few problems in
7607             # practice:
7608             case $deplib in
7609             -L*) new_libs="$deplib $new_libs" ;;
7610             -R*) ;;
7611             *)
7612               # And here is the reason: when a library appears more
7613               # than once as an explicit dependence of a library, or
7614               # is implicitly linked in more than once by the
7615               # compiler, it is considered special, and multiple
7616               # occurrences thereof are not removed.  Compare this
7617               # with having the same library being listed as a
7618               # dependency of multiple other libraries: in this case,
7619               # we know (pedantically, we assume) the library does not
7620               # need to be listed more than once, so we keep only the
7621               # last copy.  This is not always right, but it is rare
7622               # enough that we require users that really mean to play
7623               # such unportable linking tricks to link the library
7624               # using -Wl,-lname, so that libtool does not consider it
7625               # for duplicate removal.
7626               case " $specialdeplibs " in
7627               *" $deplib "*) new_libs="$deplib $new_libs" ;;
7628               *)
7629                 case " $new_libs " in
7630                 *" $deplib "*) ;;
7631                 *) new_libs="$deplib $new_libs" ;;
7632                 esac
7633                 ;;
7634               esac
7635               ;;
7636             esac
7637           done
7638           tmp_libs=
7639           for deplib in $new_libs; do
7640             case $deplib in
7641             -L*)
7642               case " $tmp_libs " in
7643               *" $deplib "*) ;;
7644               *) tmp_libs+=" $deplib" ;;
7645               esac
7646               ;;
7647             *) tmp_libs+=" $deplib" ;;
7648             esac
7649           done
7650           eval $var=\"$tmp_libs\"
7651         done # for var
7652       fi
7653       # Last step: remove runtime libs from dependency_libs
7654       # (they stay in deplibs)
7655       tmp_libs=
7656       for i in $dependency_libs ; do
7657         case " $predeps $postdeps $compiler_lib_search_path " in
7658         *" $i "*)
7659           i=""
7660           ;;
7661         esac
7662         if test -n "$i" ; then
7663           tmp_libs+=" $i"
7664         fi
7665       done
7666       dependency_libs=$tmp_libs
7667     done # for pass
7668     if test "$linkmode" = prog; then
7669       dlfiles="$newdlfiles"
7670     fi
7671     if test "$linkmode" = prog || test "$linkmode" = lib; then
7672       dlprefiles="$newdlprefiles"
7673     fi
7674
7675     case $linkmode in
7676     oldlib)
7677       if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7678         func_warning "\`-dlopen' is ignored for archives"
7679       fi
7680
7681       case " $deplibs" in
7682       *\ -l* | *\ -L*)
7683         func_warning "\`-l' and \`-L' are ignored for archives" ;;
7684       esac
7685
7686       test -n "$rpath" && \
7687         func_warning "\`-rpath' is ignored for archives"
7688
7689       test -n "$xrpath" && \
7690         func_warning "\`-R' is ignored for archives"
7691
7692       test -n "$vinfo" && \
7693         func_warning "\`-version-info/-version-number' is ignored for archives"
7694
7695       test -n "$release" && \
7696         func_warning "\`-release' is ignored for archives"
7697
7698       test -n "$export_symbols$export_symbols_regex" && \
7699         func_warning "\`-export-symbols' is ignored for archives"
7700
7701       # Now set the variables for building old libraries.
7702       build_libtool_libs=no
7703       oldlibs="$output"
7704       objs+="$old_deplibs"
7705       ;;
7706
7707     lib)
7708       # Make sure we only generate libraries of the form `libNAME.la'.
7709       case $outputname in
7710       lib*)
7711         func_stripname 'lib' '.la' "$outputname"
7712         name=$func_stripname_result
7713         eval shared_ext=\"$shrext_cmds\"
7714         eval libname=\"$libname_spec\"
7715         ;;
7716       *)
7717         test "$module" = no && \
7718           func_fatal_help "libtool library \`$output' must begin with \`lib'"
7719
7720         if test "$need_lib_prefix" != no; then
7721           # Add the "lib" prefix for modules if required
7722           func_stripname '' '.la' "$outputname"
7723           name=$func_stripname_result
7724           eval shared_ext=\"$shrext_cmds\"
7725           eval libname=\"$libname_spec\"
7726         else
7727           func_stripname '' '.la' "$outputname"
7728           libname=$func_stripname_result
7729         fi
7730         ;;
7731       esac
7732
7733       if test -n "$objs"; then
7734         if test "$deplibs_check_method" != pass_all; then
7735           func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7736         else
7737           echo
7738           $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7739           $ECHO "*** objects $objs is not portable!"
7740           libobjs+=" $objs"
7741         fi
7742       fi
7743
7744       test "$dlself" != no && \
7745         func_warning "\`-dlopen self' is ignored for libtool libraries"
7746
7747       set dummy $rpath
7748       shift
7749       test "$#" -gt 1 && \
7750         func_warning "ignoring multiple \`-rpath's for a libtool library"
7751
7752       install_libdir="$1"
7753
7754       oldlibs=
7755       if test -z "$rpath"; then
7756         if test "$build_libtool_libs" = yes; then
7757           # Building a libtool convenience library.
7758           # Some compilers have problems with a `.al' extension so
7759           # convenience libraries should have the same extension an
7760           # archive normally would.
7761           oldlibs="$output_objdir/$libname.$libext $oldlibs"
7762           build_libtool_libs=convenience
7763           build_old_libs=yes
7764         fi
7765
7766         test -n "$vinfo" && \
7767           func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7768
7769         test -n "$release" && \
7770           func_warning "\`-release' is ignored for convenience libraries"
7771       else
7772
7773         # Parse the version information argument.
7774         save_ifs="$IFS"; IFS=':'
7775         set dummy $vinfo 0 0 0
7776         shift
7777         IFS="$save_ifs"
7778
7779         test -n "$7" && \
7780           func_fatal_help "too many parameters to \`-version-info'"
7781
7782         # convert absolute version numbers to libtool ages
7783         # this retains compatibility with .la files and attempts
7784         # to make the code below a bit more comprehensible
7785
7786         case $vinfo_number in
7787         yes)
7788           number_major="$1"
7789           number_minor="$2"
7790           number_revision="$3"
7791           #
7792           # There are really only two kinds -- those that
7793           # use the current revision as the major version
7794           # and those that subtract age and use age as
7795           # a minor version.  But, then there is irix
7796           # which has an extra 1 added just for fun
7797           #
7798           case $version_type in
7799           darwin|linux|osf|windows|none)
7800             func_arith $number_major + $number_minor
7801             current=$func_arith_result
7802             age="$number_minor"
7803             revision="$number_revision"
7804             ;;
7805           freebsd-aout|freebsd-elf|qnx|sunos)
7806             current="$number_major"
7807             revision="$number_minor"
7808             age="0"
7809             ;;
7810           irix|nonstopux)
7811             func_arith $number_major + $number_minor
7812             current=$func_arith_result
7813             age="$number_minor"
7814             revision="$number_minor"
7815             lt_irix_increment=no
7816             ;;
7817           esac
7818           ;;
7819         no)
7820           current="$1"
7821           revision="$2"
7822           age="$3"
7823           ;;
7824         esac
7825
7826         # Check that each of the things are valid numbers.
7827         case $current in
7828         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]) ;;
7829         *)
7830           func_error "CURRENT \`$current' must be a nonnegative integer"
7831           func_fatal_error "\`$vinfo' is not valid version information"
7832           ;;
7833         esac
7834
7835         case $revision in
7836         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]) ;;
7837         *)
7838           func_error "REVISION \`$revision' must be a nonnegative integer"
7839           func_fatal_error "\`$vinfo' is not valid version information"
7840           ;;
7841         esac
7842
7843         case $age in
7844         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]) ;;
7845         *)
7846           func_error "AGE \`$age' must be a nonnegative integer"
7847           func_fatal_error "\`$vinfo' is not valid version information"
7848           ;;
7849         esac
7850
7851         if test "$age" -gt "$current"; then
7852           func_error "AGE \`$age' is greater than the current interface number \`$current'"
7853           func_fatal_error "\`$vinfo' is not valid version information"
7854         fi
7855
7856         # Calculate the version variables.
7857         major=
7858         versuffix=
7859         verstring=
7860         case $version_type in
7861         none) ;;
7862
7863         darwin)
7864           # Like Linux, but with the current version available in
7865           # verstring for coding it into the library header
7866           func_arith $current - $age
7867           major=.$func_arith_result
7868           versuffix="$major.$age.$revision"
7869           # Darwin ld doesn't like 0 for these options...
7870           func_arith $current + 1
7871           minor_current=$func_arith_result
7872           xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7873           verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7874           ;;
7875
7876         freebsd-aout)
7877           major=".$current"
7878           versuffix=".$current.$revision";
7879           ;;
7880
7881         freebsd-elf)
7882           major=".$current"
7883           versuffix=".$current"
7884           ;;
7885
7886         irix | nonstopux)
7887           if test "X$lt_irix_increment" = "Xno"; then
7888             func_arith $current - $age
7889           else
7890             func_arith $current - $age + 1
7891           fi
7892           major=$func_arith_result
7893
7894           case $version_type in
7895             nonstopux) verstring_prefix=nonstopux ;;
7896             *)         verstring_prefix=sgi ;;
7897           esac
7898           verstring="$verstring_prefix$major.$revision"
7899
7900           # Add in all the interfaces that we are compatible with.
7901           loop=$revision
7902           while test "$loop" -ne 0; do
7903             func_arith $revision - $loop
7904             iface=$func_arith_result
7905             func_arith $loop - 1
7906             loop=$func_arith_result
7907             verstring="$verstring_prefix$major.$iface:$verstring"
7908           done
7909
7910           # Before this point, $major must not contain `.'.
7911           major=.$major
7912           versuffix="$major.$revision"
7913           ;;
7914
7915         linux)
7916           func_arith $current - $age
7917           major=.$func_arith_result
7918           versuffix="$major.$age.$revision"
7919           ;;
7920
7921         osf)
7922           func_arith $current - $age
7923           major=.$func_arith_result
7924           versuffix=".$current.$age.$revision"
7925           verstring="$current.$age.$revision"
7926
7927           # Add in all the interfaces that we are compatible with.
7928           loop=$age
7929           while test "$loop" -ne 0; do
7930             func_arith $current - $loop
7931             iface=$func_arith_result
7932             func_arith $loop - 1
7933             loop=$func_arith_result
7934             verstring="$verstring:${iface}.0"
7935           done
7936
7937           # Make executables depend on our current version.
7938           verstring+=":${current}.0"
7939           ;;
7940
7941         qnx)
7942           major=".$current"
7943           versuffix=".$current"
7944           ;;
7945
7946         sunos)
7947           major=".$current"
7948           versuffix=".$current.$revision"
7949           ;;
7950
7951         windows)
7952           # Use '-' rather than '.', since we only want one
7953           # extension on DOS 8.3 filesystems.
7954           func_arith $current - $age
7955           major=$func_arith_result
7956           versuffix="-$major"
7957           ;;
7958
7959         *)
7960           func_fatal_configuration "unknown library version type \`$version_type'"
7961           ;;
7962         esac
7963
7964         # Clear the version info if we defaulted, and they specified a release.
7965         if test -z "$vinfo" && test -n "$release"; then
7966           major=
7967           case $version_type in
7968           darwin)
7969             # we can't check for "0.0" in archive_cmds due to quoting
7970             # problems, so we reset it completely
7971             verstring=
7972             ;;
7973           *)
7974             verstring="0.0"
7975             ;;
7976           esac
7977           if test "$need_version" = no; then
7978             versuffix=
7979           else
7980             versuffix=".0.0"
7981           fi
7982         fi
7983
7984         # Remove version info from name if versioning should be avoided
7985         if test "$avoid_version" = yes && test "$need_version" = no; then
7986           major=
7987           versuffix=
7988           verstring=""
7989         fi
7990
7991         # Check to see if the archive will have undefined symbols.
7992         if test "$allow_undefined" = yes; then
7993           if test "$allow_undefined_flag" = unsupported; then
7994             func_warning "undefined symbols not allowed in $host shared libraries"
7995             build_libtool_libs=no
7996             build_old_libs=yes
7997           fi
7998         else
7999           # Don't allow undefined symbols.
8000           allow_undefined_flag="$no_undefined_flag"
8001         fi
8002
8003       fi
8004
8005       func_generate_dlsyms "$libname" "$libname" "yes"
8006       libobjs+=" $symfileobj"
8007       test "X$libobjs" = "X " && libobjs=
8008
8009       if test "$opt_mode" != relink; then
8010         # Remove our outputs, but don't remove object files since they
8011         # may have been created when compiling PIC objects.
8012         removelist=
8013         tempremovelist=`$ECHO "$output_objdir/*"`
8014         for p in $tempremovelist; do
8015           case $p in
8016             *.$objext | *.gcno)
8017                ;;
8018             $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
8019                if test "X$precious_files_regex" != "X"; then
8020                  if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
8021                  then
8022                    continue
8023                  fi
8024                fi
8025                removelist+=" $p"
8026                ;;
8027             *) ;;
8028           esac
8029         done
8030         test -n "$removelist" && \
8031           func_show_eval "${RM}r \$removelist"
8032       fi
8033
8034       # Now set the variables for building old libraries.
8035       if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
8036         oldlibs+=" $output_objdir/$libname.$libext"
8037
8038         # Transform .lo files to .o files.
8039         oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
8040       fi
8041
8042       # Eliminate all temporary directories.
8043       #for path in $notinst_path; do
8044       # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
8045       # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
8046       # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
8047       #done
8048
8049       if test -n "$xrpath"; then
8050         # If the user specified any rpath flags, then add them.
8051         temp_xrpath=
8052         for libdir in $xrpath; do
8053           func_replace_sysroot "$libdir"
8054           temp_xrpath+=" -R$func_replace_sysroot_result"
8055           case "$finalize_rpath " in
8056           *" $libdir "*) ;;
8057           *) finalize_rpath+=" $libdir" ;;
8058           esac
8059         done
8060         if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
8061           dependency_libs="$temp_xrpath $dependency_libs"
8062         fi
8063       fi
8064
8065       # Make sure dlfiles contains only unique files that won't be dlpreopened
8066       old_dlfiles="$dlfiles"
8067       dlfiles=
8068       for lib in $old_dlfiles; do
8069         case " $dlprefiles $dlfiles " in
8070         *" $lib "*) ;;
8071         *) dlfiles+=" $lib" ;;
8072         esac
8073       done
8074
8075       # Make sure dlprefiles contains only unique files
8076       old_dlprefiles="$dlprefiles"
8077       dlprefiles=
8078       for lib in $old_dlprefiles; do
8079         case "$dlprefiles " in
8080         *" $lib "*) ;;
8081         *) dlprefiles+=" $lib" ;;
8082         esac
8083       done
8084
8085       if test "$build_libtool_libs" = yes; then
8086         if test -n "$rpath"; then
8087           case $host in
8088           *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
8089             # these systems don't actually have a c library (as such)!
8090             ;;
8091           *-*-rhapsody* | *-*-darwin1.[012])
8092             # Rhapsody C library is in the System framework
8093             deplibs+=" System.ltframework"
8094             ;;
8095           *-*-netbsd*)
8096             # Don't link with libc until the a.out ld.so is fixed.
8097             ;;
8098           *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
8099             # Do not include libc due to us having libc/libc_r.
8100             ;;
8101           *-*-sco3.2v5* | *-*-sco5v6*)
8102             # Causes problems with __ctype
8103             ;;
8104           *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
8105             # Compiler inserts libc in the correct place for threads to work
8106             ;;
8107           *)
8108             # Add libc to deplibs on all other systems if necessary.
8109             if test "$build_libtool_need_lc" = "yes"; then
8110               deplibs+=" -lc"
8111             fi
8112             ;;
8113           esac
8114         fi
8115
8116         # Transform deplibs into only deplibs that can be linked in shared.
8117         name_save=$name
8118         libname_save=$libname
8119         release_save=$release
8120         versuffix_save=$versuffix
8121         major_save=$major
8122         # I'm not sure if I'm treating the release correctly.  I think
8123         # release should show up in the -l (ie -lgmp5) so we don't want to
8124         # add it in twice.  Is that correct?
8125         release=""
8126         versuffix=""
8127         major=""
8128         newdeplibs=
8129         droppeddeps=no
8130         case $deplibs_check_method in
8131         pass_all)
8132           # Don't check for shared/static.  Everything works.
8133           # This might be a little naive.  We might want to check
8134           # whether the library exists or not.  But this is on
8135           # osf3 & osf4 and I'm not really sure... Just
8136           # implementing what was already the behavior.
8137           newdeplibs=$deplibs
8138           ;;
8139         test_compile)
8140           # This code stresses the "libraries are programs" paradigm to its
8141           # limits. Maybe even breaks it.  We compile a program, linking it
8142           # against the deplibs as a proxy for the library.  Then we can check
8143           # whether they linked in statically or dynamically with ldd.
8144           $opt_dry_run || $RM conftest.c
8145           cat > conftest.c <<EOF
8146           int main() { return 0; }
8147 EOF
8148           $opt_dry_run || $RM conftest
8149           if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
8150             ldd_output=`ldd conftest`
8151             for i in $deplibs; do
8152               case $i in
8153               -l*)
8154                 func_stripname -l '' "$i"
8155                 name=$func_stripname_result
8156                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
8157                   case " $predeps $postdeps " in
8158                   *" $i "*)
8159                     newdeplibs+=" $i"
8160                     i=""
8161                     ;;
8162                   esac
8163                 fi
8164                 if test -n "$i" ; then
8165                   libname=`eval "\\$ECHO \"$libname_spec\""`
8166                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
8167                   set dummy $deplib_matches; shift
8168                   deplib_match=$1
8169                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
8170                     newdeplibs+=" $i"
8171                   else
8172                     droppeddeps=yes
8173                     echo
8174                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
8175                     echo "*** I have the capability to make that library automatically link in when"
8176                     echo "*** you link to this library.  But I can only do this if you have a"
8177                     echo "*** shared version of the library, which I believe you do not have"
8178                     echo "*** because a test_compile did reveal that the linker did not use it for"
8179                     echo "*** its dynamic dependency list that programs get resolved with at runtime."
8180                   fi
8181                 fi
8182                 ;;
8183               *)
8184                 newdeplibs+=" $i"
8185                 ;;
8186               esac
8187             done
8188           else
8189             # Error occurred in the first compile.  Let's try to salvage
8190             # the situation: Compile a separate program for each library.
8191             for i in $deplibs; do
8192               case $i in
8193               -l*)
8194                 func_stripname -l '' "$i"
8195                 name=$func_stripname_result
8196                 $opt_dry_run || $RM conftest
8197                 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
8198                   ldd_output=`ldd conftest`
8199                   if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
8200                     case " $predeps $postdeps " in
8201                     *" $i "*)
8202                       newdeplibs+=" $i"
8203                       i=""
8204                       ;;
8205                     esac
8206                   fi
8207                   if test -n "$i" ; then
8208                     libname=`eval "\\$ECHO \"$libname_spec\""`
8209                     deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
8210                     set dummy $deplib_matches; shift
8211                     deplib_match=$1
8212                     if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
8213                       newdeplibs+=" $i"
8214                     else
8215                       droppeddeps=yes
8216                       echo
8217                       $ECHO "*** Warning: dynamic linker does not accept needed library $i."
8218                       echo "*** I have the capability to make that library automatically link in when"
8219                       echo "*** you link to this library.  But I can only do this if you have a"
8220                       echo "*** shared version of the library, which you do not appear to have"
8221                       echo "*** because a test_compile did reveal that the linker did not use this one"
8222                       echo "*** as a dynamic dependency that programs can get resolved with at runtime."
8223                     fi
8224                   fi
8225                 else
8226                   droppeddeps=yes
8227                   echo
8228                   $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
8229                   echo "*** make it link in!  You will probably need to install it or some"
8230                   echo "*** library that it depends on before this library will be fully"
8231                   echo "*** functional.  Installing it before continuing would be even better."
8232                 fi
8233                 ;;
8234               *)
8235                 newdeplibs+=" $i"
8236                 ;;
8237               esac
8238             done
8239           fi
8240           ;;
8241         file_magic*)
8242           set dummy $deplibs_check_method; shift
8243           file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
8244           for a_deplib in $deplibs; do
8245             case $a_deplib in
8246             -l*)
8247               func_stripname -l '' "$a_deplib"
8248               name=$func_stripname_result
8249               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
8250                 case " $predeps $postdeps " in
8251                 *" $a_deplib "*)
8252                   newdeplibs+=" $a_deplib"
8253                   a_deplib=""
8254                   ;;
8255                 esac
8256               fi
8257               if test -n "$a_deplib" ; then
8258                 libname=`eval "\\$ECHO \"$libname_spec\""`
8259                 if test -n "$file_magic_glob"; then
8260                   libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
8261                 else
8262                   libnameglob=$libname
8263                 fi
8264                 test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
8265                 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
8266                   if test "$want_nocaseglob" = yes; then
8267                     shopt -s nocaseglob
8268                     potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
8269                     $nocaseglob
8270                   else
8271                     potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
8272                   fi
8273                   for potent_lib in $potential_libs; do
8274                       # Follow soft links.
8275                       if ls -lLd "$potent_lib" 2>/dev/null |
8276                          $GREP " -> " >/dev/null; then
8277                         continue
8278                       fi
8279                       # The statement above tries to avoid entering an
8280                       # endless loop below, in case of cyclic links.
8281                       # We might still enter an endless loop, since a link
8282                       # loop can be closed while we follow links,
8283                       # but so what?
8284                       potlib="$potent_lib"
8285                       while test -h "$potlib" 2>/dev/null; do
8286                         potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
8287                         case $potliblink in
8288                         [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
8289                         *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
8290                         esac
8291                       done
8292                       if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
8293                          $SED -e 10q |
8294                          $EGREP "$file_magic_regex" > /dev/null; then
8295                         newdeplibs+=" $a_deplib"
8296                         a_deplib=""
8297                         break 2
8298                       fi
8299                   done
8300                 done
8301               fi
8302               if test -n "$a_deplib" ; then
8303                 droppeddeps=yes
8304                 echo
8305                 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
8306                 echo "*** I have the capability to make that library automatically link in when"
8307                 echo "*** you link to this library.  But I can only do this if you have a"
8308                 echo "*** shared version of the library, which you do not appear to have"
8309                 echo "*** because I did check the linker path looking for a file starting"
8310                 if test -z "$potlib" ; then
8311                   $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
8312                 else
8313                   $ECHO "*** with $libname and none of the candidates passed a file format test"
8314                   $ECHO "*** using a file magic. Last file checked: $potlib"
8315                 fi
8316               fi
8317               ;;
8318             *)
8319               # Add a -L argument.
8320               newdeplibs+=" $a_deplib"
8321               ;;
8322             esac
8323           done # Gone through all deplibs.
8324           ;;
8325         match_pattern*)
8326           set dummy $deplibs_check_method; shift
8327           match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
8328           for a_deplib in $deplibs; do
8329             case $a_deplib in
8330             -l*)
8331               func_stripname -l '' "$a_deplib"
8332               name=$func_stripname_result
8333               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
8334                 case " $predeps $postdeps " in
8335                 *" $a_deplib "*)
8336                   newdeplibs+=" $a_deplib"
8337                   a_deplib=""
8338                   ;;
8339                 esac
8340               fi
8341               if test -n "$a_deplib" ; then
8342                 libname=`eval "\\$ECHO \"$libname_spec\""`
8343                 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
8344                   potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
8345                   for potent_lib in $potential_libs; do
8346                     potlib="$potent_lib" # see symlink-check above in file_magic test
8347                     if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
8348                        $EGREP "$match_pattern_regex" > /dev/null; then
8349                       newdeplibs+=" $a_deplib"
8350                       a_deplib=""
8351                       break 2
8352                     fi
8353                   done
8354                 done
8355               fi
8356               if test -n "$a_deplib" ; then
8357                 droppeddeps=yes
8358                 echo
8359                 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
8360                 echo "*** I have the capability to make that library automatically link in when"
8361                 echo "*** you link to this library.  But I can only do this if you have a"
8362                 echo "*** shared version of the library, which you do not appear to have"
8363                 echo "*** because I did check the linker path looking for a file starting"
8364                 if test -z "$potlib" ; then
8365                   $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
8366                 else
8367                   $ECHO "*** with $libname and none of the candidates passed a file format test"
8368                   $ECHO "*** using a regex pattern. Last file checked: $potlib"
8369                 fi
8370               fi
8371               ;;
8372             *)
8373               # Add a -L argument.
8374               newdeplibs+=" $a_deplib"
8375               ;;
8376             esac
8377           done # Gone through all deplibs.
8378           ;;
8379         none | unknown | *)
8380           newdeplibs=""
8381           tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
8382           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
8383             for i in $predeps $postdeps ; do
8384               # can't use Xsed below, because $i might contain '/'
8385               tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
8386             done
8387           fi
8388           case $tmp_deplibs in
8389           *[!\  \ ]*)
8390             echo
8391             if test "X$deplibs_check_method" = "Xnone"; then
8392               echo "*** Warning: inter-library dependencies are not supported in this platform."
8393             else
8394               echo "*** Warning: inter-library dependencies are not known to be supported."
8395             fi
8396             echo "*** All declared inter-library dependencies are being dropped."
8397             droppeddeps=yes
8398             ;;
8399           esac
8400           ;;
8401         esac
8402         versuffix=$versuffix_save
8403         major=$major_save
8404         release=$release_save
8405         libname=$libname_save
8406         name=$name_save
8407
8408         case $host in
8409         *-*-rhapsody* | *-*-darwin1.[012])
8410           # On Rhapsody replace the C library with the System framework
8411           newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
8412           ;;
8413         esac
8414
8415         if test "$droppeddeps" = yes; then
8416           if test "$module" = yes; then
8417             echo
8418             echo "*** Warning: libtool could not satisfy all declared inter-library"
8419             $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
8420             echo "*** a static module, that should work as long as the dlopening"
8421             echo "*** application is linked with the -dlopen flag."
8422             if test -z "$global_symbol_pipe"; then
8423               echo
8424               echo "*** However, this would only work if libtool was able to extract symbol"
8425               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
8426               echo "*** not find such a program.  So, this module is probably useless."
8427               echo "*** \`nm' from GNU binutils and a full rebuild may help."
8428             fi
8429             if test "$build_old_libs" = no; then
8430               oldlibs="$output_objdir/$libname.$libext"
8431               build_libtool_libs=module
8432               build_old_libs=yes
8433             else
8434               build_libtool_libs=no
8435             fi
8436           else
8437             echo "*** The inter-library dependencies that have been dropped here will be"
8438             echo "*** automatically added whenever a program is linked with this library"
8439             echo "*** or is declared to -dlopen it."
8440
8441             if test "$allow_undefined" = no; then
8442               echo
8443               echo "*** Since this library must not contain undefined symbols,"
8444               echo "*** because either the platform does not support them or"
8445               echo "*** it was explicitly requested with -no-undefined,"
8446               echo "*** libtool will only create a static version of it."
8447               if test "$build_old_libs" = no; then
8448                 oldlibs="$output_objdir/$libname.$libext"
8449                 build_libtool_libs=module
8450                 build_old_libs=yes
8451               else
8452                 build_libtool_libs=no
8453               fi
8454             fi
8455           fi
8456         fi
8457         # Done checking deplibs!
8458         deplibs=$newdeplibs
8459       fi
8460       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8461       case $host in
8462         *-*-darwin*)
8463           newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8464           new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8465           deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8466           ;;
8467       esac
8468
8469       # move library search paths that coincide with paths to not yet
8470       # installed libraries to the beginning of the library search list
8471       new_libs=
8472       for path in $notinst_path; do
8473         case " $new_libs " in
8474         *" -L$path/$objdir "*) ;;
8475         *)
8476           case " $deplibs " in
8477           *" -L$path/$objdir "*)
8478             new_libs+=" -L$path/$objdir" ;;
8479           esac
8480           ;;
8481         esac
8482       done
8483       for deplib in $deplibs; do
8484         case $deplib in
8485         -L*)
8486           case " $new_libs " in
8487           *" $deplib "*) ;;
8488           *) new_libs+=" $deplib" ;;
8489           esac
8490           ;;
8491         *) new_libs+=" $deplib" ;;
8492         esac
8493       done
8494       deplibs="$new_libs"
8495
8496       # All the library-specific variables (install_libdir is set above).
8497       library_names=
8498       old_library=
8499       dlname=
8500
8501       # Test again, we may have decided not to build it any more
8502       if test "$build_libtool_libs" = yes; then
8503         if test "$hardcode_into_libs" = yes; then
8504           # Hardcode the library paths
8505           hardcode_libdirs=
8506           dep_rpath=
8507           rpath="$finalize_rpath"
8508           test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8509           for libdir in $rpath; do
8510             if test -n "$hardcode_libdir_flag_spec"; then
8511               if test -n "$hardcode_libdir_separator"; then
8512                 func_replace_sysroot "$libdir"
8513                 libdir=$func_replace_sysroot_result
8514                 if test -z "$hardcode_libdirs"; then
8515                   hardcode_libdirs="$libdir"
8516                 else
8517                   # Just accumulate the unique libdirs.
8518                   case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8519                   *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8520                     ;;
8521                   *)
8522                     hardcode_libdirs+="$hardcode_libdir_separator$libdir"
8523                     ;;
8524                   esac
8525                 fi
8526               else
8527                 eval flag=\"$hardcode_libdir_flag_spec\"
8528                 dep_rpath+=" $flag"
8529               fi
8530             elif test -n "$runpath_var"; then
8531               case "$perm_rpath " in
8532               *" $libdir "*) ;;
8533               *) func_apped perm_rpath " $libdir" ;;
8534               esac
8535             fi
8536           done
8537           # Substitute the hardcoded libdirs into the rpath.
8538           if test -n "$hardcode_libdir_separator" &&
8539              test -n "$hardcode_libdirs"; then
8540             libdir="$hardcode_libdirs"
8541             if test -n "$hardcode_libdir_flag_spec_ld"; then
8542               eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
8543             else
8544               eval dep_rpath=\"$hardcode_libdir_flag_spec\"
8545             fi
8546           fi
8547           if test -n "$runpath_var" && test -n "$perm_rpath"; then
8548             # We should set the runpath_var.
8549             rpath=
8550             for dir in $perm_rpath; do
8551               rpath+="$dir:"
8552             done
8553             eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8554           fi
8555           test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8556         fi
8557
8558         shlibpath="$finalize_shlibpath"
8559         test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8560         if test -n "$shlibpath"; then
8561           eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8562         fi
8563
8564         # Get the real and link names of the library.
8565         eval shared_ext=\"$shrext_cmds\"
8566         eval library_names=\"$library_names_spec\"
8567         set dummy $library_names
8568         shift
8569         realname="$1"
8570         shift
8571
8572         if test -n "$soname_spec"; then
8573           eval soname=\"$soname_spec\"
8574         else
8575           soname="$realname"
8576         fi
8577         if test -z "$dlname"; then
8578           dlname=$soname
8579         fi
8580
8581         lib="$output_objdir/$realname"
8582         linknames=
8583         for link
8584         do
8585           linknames+=" $link"
8586         done
8587
8588         # Use standard objects if they are pic
8589         test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8590         test "X$libobjs" = "X " && libobjs=
8591
8592         delfiles=
8593         if test -n "$export_symbols" && test -n "$include_expsyms"; then
8594           $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8595           export_symbols="$output_objdir/$libname.uexp"
8596           delfiles+=" $export_symbols"
8597         fi
8598
8599         orig_export_symbols=
8600         case $host_os in
8601         cygwin* | mingw* | cegcc*)
8602           if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8603             # exporting using user supplied symfile
8604             if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8605               # and it's NOT already a .def file. Must figure out
8606               # which of the given symbols are data symbols and tag
8607               # them as such. So, trigger use of export_symbols_cmds.
8608               # export_symbols gets reassigned inside the "prepare
8609               # the list of exported symbols" if statement, so the
8610               # include_expsyms logic still works.
8611               orig_export_symbols="$export_symbols"
8612               export_symbols=
8613               always_export_symbols=yes
8614             fi
8615           fi
8616           ;;
8617         esac
8618
8619         # Prepare the list of exported symbols
8620         if test -z "$export_symbols"; then
8621           if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8622             func_verbose "generating symbol list for \`$libname.la'"
8623             export_symbols="$output_objdir/$libname.exp"
8624             $opt_dry_run || $RM $export_symbols
8625             cmds=$export_symbols_cmds
8626             save_ifs="$IFS"; IFS='~'
8627             for cmd1 in $cmds; do
8628               IFS="$save_ifs"
8629               # Take the normal branch if the nm_file_list_spec branch
8630               # doesn't work or if tool conversion is not needed.
8631               case $nm_file_list_spec~$to_tool_file_cmd in
8632                 *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8633                   try_normal_branch=yes
8634                   eval cmd=\"$cmd1\"
8635                   func_len " $cmd"
8636                   len=$func_len_result
8637                   ;;
8638                 *)
8639                   try_normal_branch=no
8640                   ;;
8641               esac
8642               if test "$try_normal_branch" = yes \
8643                  && { test "$len" -lt "$max_cmd_len" \
8644                       || test "$max_cmd_len" -le -1; }
8645               then
8646                 func_show_eval "$cmd" 'exit $?'
8647                 skipped_export=false
8648               elif test -n "$nm_file_list_spec"; then
8649                 func_basename "$output"
8650                 output_la=$func_basename_result
8651                 save_libobjs=$libobjs
8652                 save_output=$output
8653                 output=${output_objdir}/${output_la}.nm
8654                 func_to_tool_file "$output"
8655                 libobjs=$nm_file_list_spec$func_to_tool_file_result
8656                 delfiles+=" $output"
8657                 func_verbose "creating $NM input file list: $output"
8658                 for obj in $save_libobjs; do
8659                   func_to_tool_file "$obj"
8660                   $ECHO "$func_to_tool_file_result"
8661                 done > "$output"
8662                 eval cmd=\"$cmd1\"
8663                 func_show_eval "$cmd" 'exit $?'
8664                 output=$save_output
8665                 libobjs=$save_libobjs
8666                 skipped_export=false
8667               else
8668                 # The command line is too long to execute in one step.
8669                 func_verbose "using reloadable object file for export list..."
8670                 skipped_export=:
8671                 # Break out early, otherwise skipped_export may be
8672                 # set to false by a later but shorter cmd.
8673                 break
8674               fi
8675             done
8676             IFS="$save_ifs"
8677             if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8678               func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8679               func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8680             fi
8681           fi
8682         fi
8683
8684         if test -n "$export_symbols" && test -n "$include_expsyms"; then
8685           tmp_export_symbols="$export_symbols"
8686           test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8687           $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8688         fi
8689
8690         if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8691           # The given exports_symbols file has to be filtered, so filter it.
8692           func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8693           # FIXME: $output_objdir/$libname.filter potentially contains lots of
8694           # 's' commands which not all seds can handle. GNU sed should be fine
8695           # though. Also, the filter scales superlinearly with the number of
8696           # global variables. join(1) would be nice here, but unfortunately
8697           # isn't a blessed tool.
8698           $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8699           delfiles+=" $export_symbols $output_objdir/$libname.filter"
8700           export_symbols=$output_objdir/$libname.def
8701           $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8702         fi
8703
8704         tmp_deplibs=
8705         for test_deplib in $deplibs; do
8706           case " $convenience " in
8707           *" $test_deplib "*) ;;
8708           *)
8709             tmp_deplibs+=" $test_deplib"
8710             ;;
8711           esac
8712         done
8713         deplibs="$tmp_deplibs"
8714
8715         if test -n "$convenience"; then
8716           if test -n "$whole_archive_flag_spec" &&
8717             test "$compiler_needs_object" = yes &&
8718             test -z "$libobjs"; then
8719             # extract the archives, so we have objects to list.
8720             # TODO: could optimize this to just extract one archive.
8721             whole_archive_flag_spec=
8722           fi
8723           if test -n "$whole_archive_flag_spec"; then
8724             save_libobjs=$libobjs
8725             eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8726             test "X$libobjs" = "X " && libobjs=
8727           else
8728             gentop="$output_objdir/${outputname}x"
8729             generated+=" $gentop"
8730
8731             func_extract_archives $gentop $convenience
8732             libobjs+=" $func_extract_archives_result"
8733             test "X$libobjs" = "X " && libobjs=
8734           fi
8735         fi
8736
8737         if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8738           eval flag=\"$thread_safe_flag_spec\"
8739           linker_flags+=" $flag"
8740         fi
8741
8742         # Make a backup of the uninstalled library when relinking
8743         if test "$opt_mode" = relink; then
8744           $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8745         fi
8746
8747         # Do each of the archive commands.
8748         if test "$module" = yes && test -n "$module_cmds" ; then
8749           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8750             eval test_cmds=\"$module_expsym_cmds\"
8751             cmds=$module_expsym_cmds
8752           else
8753             eval test_cmds=\"$module_cmds\"
8754             cmds=$module_cmds
8755           fi
8756         else
8757           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8758             eval test_cmds=\"$archive_expsym_cmds\"
8759             cmds=$archive_expsym_cmds
8760           else
8761             eval test_cmds=\"$archive_cmds\"
8762             cmds=$archive_cmds
8763           fi
8764         fi
8765
8766         if test "X$skipped_export" != "X:" &&
8767            func_len " $test_cmds" &&
8768            len=$func_len_result &&
8769            test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8770           :
8771         else
8772           # The command line is too long to link in one step, link piecewise
8773           # or, if using GNU ld and skipped_export is not :, use a linker
8774           # script.
8775
8776           # Save the value of $output and $libobjs because we want to
8777           # use them later.  If we have whole_archive_flag_spec, we
8778           # want to use save_libobjs as it was before
8779           # whole_archive_flag_spec was expanded, because we can't
8780           # assume the linker understands whole_archive_flag_spec.
8781           # This may have to be revisited, in case too many
8782           # convenience libraries get linked in and end up exceeding
8783           # the spec.
8784           if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8785             save_libobjs=$libobjs
8786           fi
8787           save_output=$output
8788           func_basename "$output"
8789           output_la=$func_basename_result
8790
8791           # Clear the reloadable object creation command queue and
8792           # initialize k to one.
8793           test_cmds=
8794           concat_cmds=
8795           objlist=
8796           last_robj=
8797           k=1
8798
8799           if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8800             output=${output_objdir}/${output_la}.lnkscript
8801             func_verbose "creating GNU ld script: $output"
8802             echo 'INPUT (' > $output
8803             for obj in $save_libobjs
8804             do
8805               func_to_tool_file "$obj"
8806               $ECHO "$func_to_tool_file_result" >> $output
8807             done
8808             echo ')' >> $output
8809             delfiles+=" $output"
8810             func_to_tool_file "$output"
8811             output=$func_to_tool_file_result
8812           elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8813             output=${output_objdir}/${output_la}.lnk
8814             func_verbose "creating linker input file list: $output"
8815             : > $output
8816             set x $save_libobjs
8817             shift
8818             firstobj=
8819             if test "$compiler_needs_object" = yes; then
8820               firstobj="$1 "
8821               shift
8822             fi
8823             for obj
8824             do
8825               func_to_tool_file "$obj"
8826               $ECHO "$func_to_tool_file_result" >> $output
8827             done
8828             delfiles+=" $output"
8829             func_to_tool_file "$output"
8830             output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8831           else
8832             if test -n "$save_libobjs"; then
8833               func_verbose "creating reloadable object files..."
8834               output=$output_objdir/$output_la-${k}.$objext
8835               eval test_cmds=\"$reload_cmds\"
8836               func_len " $test_cmds"
8837               len0=$func_len_result
8838               len=$len0
8839
8840               # Loop over the list of objects to be linked.
8841               for obj in $save_libobjs
8842               do
8843                 func_len " $obj"
8844                 func_arith $len + $func_len_result
8845                 len=$func_arith_result
8846                 if test "X$objlist" = X ||
8847                    test "$len" -lt "$max_cmd_len"; then
8848                   objlist+=" $obj"
8849                 else
8850                   # The command $test_cmds is almost too long, add a
8851                   # command to the queue.
8852                   if test "$k" -eq 1 ; then
8853                     # The first file doesn't have a previous command to add.
8854                     reload_objs=$objlist
8855                     eval concat_cmds=\"$reload_cmds\"
8856                   else
8857                     # All subsequent reloadable object files will link in
8858                     # the last one created.
8859                     reload_objs="$objlist $last_robj"
8860                     eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8861                   fi
8862                   last_robj=$output_objdir/$output_la-${k}.$objext
8863                   func_arith $k + 1
8864                   k=$func_arith_result
8865                   output=$output_objdir/$output_la-${k}.$objext
8866                   objlist=" $obj"
8867                   func_len " $last_robj"
8868                   func_arith $len0 + $func_len_result
8869                   len=$func_arith_result
8870                 fi
8871               done
8872               # Handle the remaining objects by creating one last
8873               # reloadable object file.  All subsequent reloadable object
8874               # files will link in the last one created.
8875               test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8876               reload_objs="$objlist $last_robj"
8877               eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8878               if test -n "$last_robj"; then
8879                 eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8880               fi
8881               delfiles+=" $output"
8882
8883             else
8884               output=
8885             fi
8886
8887             if ${skipped_export-false}; then
8888               func_verbose "generating symbol list for \`$libname.la'"
8889               export_symbols="$output_objdir/$libname.exp"
8890               $opt_dry_run || $RM $export_symbols
8891               libobjs=$output
8892               # Append the command to create the export file.
8893               test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8894               eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8895               if test -n "$last_robj"; then
8896                 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8897               fi
8898             fi
8899
8900             test -n "$save_libobjs" &&
8901               func_verbose "creating a temporary reloadable object file: $output"
8902
8903             # Loop through the commands generated above and execute them.
8904             save_ifs="$IFS"; IFS='~'
8905             for cmd in $concat_cmds; do
8906               IFS="$save_ifs"
8907               $opt_silent || {
8908                   func_quote_for_expand "$cmd"
8909                   eval "func_echo $func_quote_for_expand_result"
8910               }
8911               $opt_dry_run || eval "$cmd" || {
8912                 lt_exit=$?
8913
8914                 # Restore the uninstalled library and exit
8915                 if test "$opt_mode" = relink; then
8916                   ( cd "$output_objdir" && \
8917                     $RM "${realname}T" && \
8918                     $MV "${realname}U" "$realname" )
8919                 fi
8920
8921                 exit $lt_exit
8922               }
8923             done
8924             IFS="$save_ifs"
8925
8926             if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8927               func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8928               func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8929             fi
8930           fi
8931
8932           if ${skipped_export-false}; then
8933             if test -n "$export_symbols" && test -n "$include_expsyms"; then
8934               tmp_export_symbols="$export_symbols"
8935               test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8936               $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8937             fi
8938
8939             if test -n "$orig_export_symbols"; then
8940               # The given exports_symbols file has to be filtered, so filter it.
8941               func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8942               # FIXME: $output_objdir/$libname.filter potentially contains lots of
8943               # 's' commands which not all seds can handle. GNU sed should be fine
8944               # though. Also, the filter scales superlinearly with the number of
8945               # global variables. join(1) would be nice here, but unfortunately
8946               # isn't a blessed tool.
8947               $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8948               delfiles+=" $export_symbols $output_objdir/$libname.filter"
8949               export_symbols=$output_objdir/$libname.def
8950               $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8951             fi
8952           fi
8953
8954           libobjs=$output
8955           # Restore the value of output.
8956           output=$save_output
8957
8958           if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8959             eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8960             test "X$libobjs" = "X " && libobjs=
8961           fi
8962           # Expand the library linking commands again to reset the
8963           # value of $libobjs for piecewise linking.
8964
8965           # Do each of the archive commands.
8966           if test "$module" = yes && test -n "$module_cmds" ; then
8967             if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8968               cmds=$module_expsym_cmds
8969             else
8970               cmds=$module_cmds
8971             fi
8972           else
8973             if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8974               cmds=$archive_expsym_cmds
8975             else
8976               cmds=$archive_cmds
8977             fi
8978           fi
8979         fi
8980
8981         if test -n "$delfiles"; then
8982           # Append the command to remove temporary files to $cmds.
8983           eval cmds=\"\$cmds~\$RM $delfiles\"
8984         fi
8985
8986         # Add any objects from preloaded convenience libraries
8987         if test -n "$dlprefiles"; then
8988           gentop="$output_objdir/${outputname}x"
8989           generated+=" $gentop"
8990
8991           func_extract_archives $gentop $dlprefiles
8992           libobjs+=" $func_extract_archives_result"
8993           test "X$libobjs" = "X " && libobjs=
8994         fi
8995
8996         save_ifs="$IFS"; IFS='~'
8997         for cmd in $cmds; do
8998           IFS="$save_ifs"
8999           eval cmd=\"$cmd\"
9000           $opt_silent || {
9001             func_quote_for_expand "$cmd"
9002             eval "func_echo $func_quote_for_expand_result"
9003           }
9004           $opt_dry_run || eval "$cmd" || {
9005             lt_exit=$?
9006
9007             # Restore the uninstalled library and exit
9008             if test "$opt_mode" = relink; then
9009               ( cd "$output_objdir" && \
9010                 $RM "${realname}T" && \
9011                 $MV "${realname}U" "$realname" )
9012             fi
9013
9014             exit $lt_exit
9015           }
9016         done
9017         IFS="$save_ifs"
9018
9019         # Restore the uninstalled library and exit
9020         if test "$opt_mode" = relink; then
9021           $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
9022
9023           if test -n "$convenience"; then
9024             if test -z "$whole_archive_flag_spec"; then
9025               func_show_eval '${RM}r "$gentop"'
9026             fi
9027           fi
9028
9029           exit $EXIT_SUCCESS
9030         fi
9031
9032         # Create links to the real library.
9033         for linkname in $linknames; do
9034           if test "$realname" != "$linkname"; then
9035             func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
9036           fi
9037         done
9038
9039         # If -module or -export-dynamic was specified, set the dlname.
9040         if test "$module" = yes || test "$export_dynamic" = yes; then
9041           # On all known operating systems, these are identical.
9042           dlname="$soname"
9043         fi
9044       fi
9045       ;;
9046
9047     obj)
9048       if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
9049         func_warning "\`-dlopen' is ignored for objects"
9050       fi
9051
9052       case " $deplibs" in
9053       *\ -l* | *\ -L*)
9054         func_warning "\`-l' and \`-L' are ignored for objects" ;;
9055       esac
9056
9057       test -n "$rpath" && \
9058         func_warning "\`-rpath' is ignored for objects"
9059
9060       test -n "$xrpath" && \
9061         func_warning "\`-R' is ignored for objects"
9062
9063       test -n "$vinfo" && \
9064         func_warning "\`-version-info' is ignored for objects"
9065
9066       test -n "$release" && \
9067         func_warning "\`-release' is ignored for objects"
9068
9069       case $output in
9070       *.lo)
9071         test -n "$objs$old_deplibs" && \
9072           func_fatal_error "cannot build library object \`$output' from non-libtool objects"
9073
9074         libobj=$output
9075         func_lo2o "$libobj"
9076         obj=$func_lo2o_result
9077         ;;
9078       *)
9079         libobj=
9080         obj="$output"
9081         ;;
9082       esac
9083
9084       # Delete the old objects.
9085       $opt_dry_run || $RM $obj $libobj
9086
9087       # Objects from convenience libraries.  This assumes
9088       # single-version convenience libraries.  Whenever we create
9089       # different ones for PIC/non-PIC, this we'll have to duplicate
9090       # the extraction.
9091       reload_conv_objs=
9092       gentop=
9093       # reload_cmds runs $LD directly, so let us get rid of
9094       # -Wl from whole_archive_flag_spec and hope we can get by with
9095       # turning comma into space..
9096       wl=
9097
9098       if test -n "$convenience"; then
9099         if test -n "$whole_archive_flag_spec"; then
9100           eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
9101           reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
9102         else
9103           gentop="$output_objdir/${obj}x"
9104           generated+=" $gentop"
9105
9106           func_extract_archives $gentop $convenience
9107           reload_conv_objs="$reload_objs $func_extract_archives_result"
9108         fi
9109       fi
9110
9111       # If we're not building shared, we need to use non_pic_objs
9112       test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
9113
9114       # Create the old-style object.
9115       reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
9116
9117       output="$obj"
9118       func_execute_cmds "$reload_cmds" 'exit $?'
9119
9120       # Exit if we aren't doing a library object file.
9121       if test -z "$libobj"; then
9122         if test -n "$gentop"; then
9123           func_show_eval '${RM}r "$gentop"'
9124         fi
9125
9126         exit $EXIT_SUCCESS
9127       fi
9128
9129       if test "$build_libtool_libs" != yes; then
9130         if test -n "$gentop"; then
9131           func_show_eval '${RM}r "$gentop"'
9132         fi
9133
9134         # Create an invalid libtool object if no PIC, so that we don't
9135         # accidentally link it into a program.
9136         # $show "echo timestamp > $libobj"
9137         # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
9138         exit $EXIT_SUCCESS
9139       fi
9140
9141       if test -n "$pic_flag" || test "$pic_mode" != default; then
9142         # Only do commands if we really have different PIC objects.
9143         reload_objs="$libobjs $reload_conv_objs"
9144         output="$libobj"
9145         func_execute_cmds "$reload_cmds" 'exit $?'
9146       fi
9147
9148       if test -n "$gentop"; then
9149         func_show_eval '${RM}r "$gentop"'
9150       fi
9151
9152       exit $EXIT_SUCCESS
9153       ;;
9154
9155     prog)
9156       case $host in
9157         *cygwin*) func_stripname '' '.exe' "$output"
9158                   output=$func_stripname_result.exe;;
9159       esac
9160       test -n "$vinfo" && \
9161         func_warning "\`-version-info' is ignored for programs"
9162
9163       test -n "$release" && \
9164         func_warning "\`-release' is ignored for programs"
9165
9166       test "$preload" = yes \
9167         && test "$dlopen_support" = unknown \
9168         && test "$dlopen_self" = unknown \
9169         && test "$dlopen_self_static" = unknown && \
9170           func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
9171
9172       case $host in
9173       *-*-rhapsody* | *-*-darwin1.[012])
9174         # On Rhapsody replace the C library is the System framework
9175         compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
9176         finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
9177         ;;
9178       esac
9179
9180       case $host in
9181       *-*-darwin*)
9182         # Don't allow lazy linking, it breaks C++ global constructors
9183         # But is supposedly fixed on 10.4 or later (yay!).
9184         if test "$tagname" = CXX ; then
9185           case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
9186             10.[0123])
9187               compile_command+=" ${wl}-bind_at_load"
9188               finalize_command+=" ${wl}-bind_at_load"
9189             ;;
9190           esac
9191         fi
9192         # Time to change all our "foo.ltframework" stuff back to "-framework foo"
9193         compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9194         finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9195         ;;
9196       esac
9197
9198
9199       # move library search paths that coincide with paths to not yet
9200       # installed libraries to the beginning of the library search list
9201       new_libs=
9202       for path in $notinst_path; do
9203         case " $new_libs " in
9204         *" -L$path/$objdir "*) ;;
9205         *)
9206           case " $compile_deplibs " in
9207           *" -L$path/$objdir "*)
9208             new_libs+=" -L$path/$objdir" ;;
9209           esac
9210           ;;
9211         esac
9212       done
9213       for deplib in $compile_deplibs; do
9214         case $deplib in
9215         -L*)
9216           case " $new_libs " in
9217           *" $deplib "*) ;;
9218           *) new_libs+=" $deplib" ;;
9219           esac
9220           ;;
9221         *) new_libs+=" $deplib" ;;
9222         esac
9223       done
9224       compile_deplibs="$new_libs"
9225
9226
9227       compile_command+=" $compile_deplibs"
9228       finalize_command+=" $finalize_deplibs"
9229
9230       if test -n "$rpath$xrpath"; then
9231         # If the user specified any rpath flags, then add them.
9232         for libdir in $rpath $xrpath; do
9233           # This is the magic to use -rpath.
9234           case "$finalize_rpath " in
9235           *" $libdir "*) ;;
9236           *) finalize_rpath+=" $libdir" ;;
9237           esac
9238         done
9239       fi
9240
9241       # Now hardcode the library paths
9242       rpath=
9243       hardcode_libdirs=
9244       for libdir in $compile_rpath $finalize_rpath; do
9245         if test -n "$hardcode_libdir_flag_spec"; then
9246           if test -n "$hardcode_libdir_separator"; then
9247             if test -z "$hardcode_libdirs"; then
9248               hardcode_libdirs="$libdir"
9249             else
9250               # Just accumulate the unique libdirs.
9251               case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
9252               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
9253                 ;;
9254               *)
9255                 hardcode_libdirs+="$hardcode_libdir_separator$libdir"
9256                 ;;
9257               esac
9258             fi
9259           else
9260             eval flag=\"$hardcode_libdir_flag_spec\"
9261             rpath+=" $flag"
9262           fi
9263         elif test -n "$runpath_var"; then
9264           case "$perm_rpath " in
9265           *" $libdir "*) ;;
9266           *) perm_rpath+=" $libdir" ;;
9267           esac
9268         fi
9269         case $host in
9270         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
9271           testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
9272           case :$dllsearchpath: in
9273           *":$libdir:"*) ;;
9274           ::) dllsearchpath=$libdir;;
9275           *) dllsearchpath+=":$libdir";;
9276           esac
9277           case :$dllsearchpath: in
9278           *":$testbindir:"*) ;;
9279           ::) dllsearchpath=$testbindir;;
9280           *) dllsearchpath+=":$testbindir";;
9281           esac
9282           ;;
9283         esac
9284       done
9285       # Substitute the hardcoded libdirs into the rpath.
9286       if test -n "$hardcode_libdir_separator" &&
9287          test -n "$hardcode_libdirs"; then
9288         libdir="$hardcode_libdirs"
9289         eval rpath=\" $hardcode_libdir_flag_spec\"
9290       fi
9291       compile_rpath="$rpath"
9292
9293       rpath=
9294       hardcode_libdirs=
9295       for libdir in $finalize_rpath; do
9296         if test -n "$hardcode_libdir_flag_spec"; then
9297           if test -n "$hardcode_libdir_separator"; then
9298             if test -z "$hardcode_libdirs"; then
9299               hardcode_libdirs="$libdir"
9300             else
9301               # Just accumulate the unique libdirs.
9302               case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
9303               *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
9304                 ;;
9305               *)
9306                 hardcode_libdirs+="$hardcode_libdir_separator$libdir"
9307                 ;;
9308               esac
9309             fi
9310           else
9311             eval flag=\"$hardcode_libdir_flag_spec\"
9312             rpath+=" $flag"
9313           fi
9314         elif test -n "$runpath_var"; then
9315           case "$finalize_perm_rpath " in
9316           *" $libdir "*) ;;
9317           *) finalize_perm_rpath+=" $libdir" ;;
9318           esac
9319         fi
9320       done
9321       # Substitute the hardcoded libdirs into the rpath.
9322       if test -n "$hardcode_libdir_separator" &&
9323          test -n "$hardcode_libdirs"; then
9324         libdir="$hardcode_libdirs"
9325         eval rpath=\" $hardcode_libdir_flag_spec\"
9326       fi
9327       finalize_rpath="$rpath"
9328
9329       if test -n "$libobjs" && test "$build_old_libs" = yes; then
9330         # Transform all the library objects into standard objects.
9331         compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
9332         finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
9333       fi
9334
9335       func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
9336
9337       # template prelinking step
9338       if test -n "$prelink_cmds"; then
9339         func_execute_cmds "$prelink_cmds" 'exit $?'
9340       fi
9341
9342       wrappers_required=yes
9343       case $host in
9344       *cegcc* | *mingw32ce*)
9345         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
9346         wrappers_required=no
9347         ;;
9348       *cygwin* | *mingw* )
9349         if test "$build_libtool_libs" != yes; then
9350           wrappers_required=no
9351         fi
9352         ;;
9353       *)
9354         if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
9355           wrappers_required=no
9356         fi
9357         ;;
9358       esac
9359       if test "$wrappers_required" = no; then
9360         # Replace the output file specification.
9361         compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
9362         link_command="$compile_command$compile_rpath"
9363
9364         # We have no uninstalled library dependencies, so finalize right now.
9365         exit_status=0
9366         func_show_eval "$link_command" 'exit_status=$?'
9367
9368         if test -n "$postlink_cmds"; then
9369           func_to_tool_file "$output"
9370           postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
9371           func_execute_cmds "$postlink_cmds" 'exit $?'
9372         fi
9373
9374         # Delete the generated files.
9375         if test -f "$output_objdir/${outputname}S.${objext}"; then
9376           func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
9377         fi
9378
9379         exit $exit_status
9380       fi
9381
9382       if test -n "$compile_shlibpath$finalize_shlibpath"; then
9383         compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
9384       fi
9385       if test -n "$finalize_shlibpath"; then
9386         finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
9387       fi
9388
9389       compile_var=
9390       finalize_var=
9391       if test -n "$runpath_var"; then
9392         if test -n "$perm_rpath"; then
9393           # We should set the runpath_var.
9394           rpath=
9395           for dir in $perm_rpath; do
9396             rpath+="$dir:"
9397           done
9398           compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
9399         fi
9400         if test -n "$finalize_perm_rpath"; then
9401           # We should set the runpath_var.
9402           rpath=
9403           for dir in $finalize_perm_rpath; do
9404             rpath+="$dir:"
9405           done
9406           finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
9407         fi
9408       fi
9409
9410       if test "$no_install" = yes; then
9411         # We don't need to create a wrapper script.
9412         link_command="$compile_var$compile_command$compile_rpath"
9413         # Replace the output file specification.
9414         link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
9415         # Delete the old output file.
9416         $opt_dry_run || $RM $output
9417         # Link the executable and exit
9418         func_show_eval "$link_command" 'exit $?'
9419
9420         if test -n "$postlink_cmds"; then
9421           func_to_tool_file "$output"
9422           postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
9423           func_execute_cmds "$postlink_cmds" 'exit $?'
9424         fi
9425
9426         exit $EXIT_SUCCESS
9427       fi
9428
9429       if test "$hardcode_action" = relink; then
9430         # Fast installation is not supported
9431         link_command="$compile_var$compile_command$compile_rpath"
9432         relink_command="$finalize_var$finalize_command$finalize_rpath"
9433
9434         func_warning "this platform does not like uninstalled shared libraries"
9435         func_warning "\`$output' will be relinked during installation"
9436       else
9437         if test "$fast_install" != no; then
9438           link_command="$finalize_var$compile_command$finalize_rpath"
9439           if test "$fast_install" = yes; then
9440             relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
9441           else
9442             # fast_install is set to needless
9443             relink_command=
9444           fi
9445         else
9446           link_command="$compile_var$compile_command$compile_rpath"
9447           relink_command="$finalize_var$finalize_command$finalize_rpath"
9448         fi
9449       fi
9450
9451       # Replace the output file specification.
9452       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
9453
9454       # Delete the old output files.
9455       $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
9456
9457       func_show_eval "$link_command" 'exit $?'
9458
9459       if test -n "$postlink_cmds"; then
9460         func_to_tool_file "$output_objdir/$outputname"
9461         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'`
9462         func_execute_cmds "$postlink_cmds" 'exit $?'
9463       fi
9464
9465       # Now create the wrapper script.
9466       func_verbose "creating $output"
9467
9468       # Quote the relink command for shipping.
9469       if test -n "$relink_command"; then
9470         # Preserve any variables that may affect compiler behavior
9471         for var in $variables_saved_for_relink; do
9472           if eval test -z \"\${$var+set}\"; then
9473             relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9474           elif eval var_value=\$$var; test -z "$var_value"; then
9475             relink_command="$var=; export $var; $relink_command"
9476           else
9477             func_quote_for_eval "$var_value"
9478             relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9479           fi
9480         done
9481         relink_command="(cd `pwd`; $relink_command)"
9482         relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9483       fi
9484
9485       # Only actually do things if not in dry run mode.
9486       $opt_dry_run || {
9487         # win32 will think the script is a binary if it has
9488         # a .exe suffix, so we strip it off here.
9489         case $output in
9490           *.exe) func_stripname '' '.exe' "$output"
9491                  output=$func_stripname_result ;;
9492         esac
9493         # test for cygwin because mv fails w/o .exe extensions
9494         case $host in
9495           *cygwin*)
9496             exeext=.exe
9497             func_stripname '' '.exe' "$outputname"
9498             outputname=$func_stripname_result ;;
9499           *) exeext= ;;
9500         esac
9501         case $host in
9502           *cygwin* | *mingw* )
9503             func_dirname_and_basename "$output" "" "."
9504             output_name=$func_basename_result
9505             output_path=$func_dirname_result
9506             cwrappersource="$output_path/$objdir/lt-$output_name.c"
9507             cwrapper="$output_path/$output_name.exe"
9508             $RM $cwrappersource $cwrapper
9509             trap "$RM $cwrappersource $cwrapper $cwrapper.manifest; exit $EXIT_FAILURE" 1 2 15
9510
9511             func_emit_cwrapperexe_src > $cwrappersource
9512
9513             # The wrapper executable is built using the $host compiler,
9514             # because it contains $host paths and files. If cross-
9515             # compiling, it, like the target executable, must be
9516             # executed on the $host or under an emulation environment.
9517             $opt_dry_run || {
9518               $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9519               $STRIP $cwrapper
9520             }
9521
9522             # Now, create the wrapper script for func_source use:
9523             func_ltwrapper_scriptname $cwrapper
9524             $RM $func_ltwrapper_scriptname_result
9525             trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9526             $opt_dry_run || {
9527               # note: this script will not be executed, so do not chmod.
9528               if test "x$build" = "x$host" ; then
9529                 # Create the UAC manifests first if necessary (but the
9530                 # manifest files must have executable permission regardless).
9531                 case $output_name in
9532                   *instal*|*patch*|*setup*|*update*)
9533                     func_emit_exe_manifest > $cwrapper.manifest
9534                     func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest
9535                     chmod +x $cwrapper.manifest
9536                     chmod +x $output_path/$objdir/$output_name.exe.manifest
9537                   ;;
9538                 esac
9539                 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9540               else
9541                 func_emit_wrapper no > $func_ltwrapper_scriptname_result
9542               fi
9543             }
9544           ;;
9545           * )
9546             $RM $output
9547             trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9548
9549             func_emit_wrapper no > $output
9550             chmod +x $output
9551           ;;
9552         esac
9553       }
9554       exit $EXIT_SUCCESS
9555       ;;
9556     esac
9557
9558     # See if we need to build an old-fashioned archive.
9559     for oldlib in $oldlibs; do
9560
9561       if test "$build_libtool_libs" = convenience; then
9562         oldobjs="$libobjs_save $symfileobj"
9563         addlibs="$convenience"
9564         build_libtool_libs=no
9565       else
9566         if test "$build_libtool_libs" = module; then
9567           oldobjs="$libobjs_save"
9568           build_libtool_libs=no
9569         else
9570           oldobjs="$old_deplibs $non_pic_objects"
9571           if test "$preload" = yes && test -f "$symfileobj"; then
9572             oldobjs+=" $symfileobj"
9573           fi
9574         fi
9575         addlibs="$old_convenience"
9576       fi
9577
9578       if test -n "$addlibs"; then
9579         gentop="$output_objdir/${outputname}x"
9580         generated+=" $gentop"
9581
9582         func_extract_archives $gentop $addlibs
9583         oldobjs+=" $func_extract_archives_result"
9584       fi
9585
9586       # Do each command in the archive commands.
9587       if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9588         cmds=$old_archive_from_new_cmds
9589       else
9590
9591         # Add any objects from preloaded convenience libraries
9592         if test -n "$dlprefiles"; then
9593           gentop="$output_objdir/${outputname}x"
9594           generated+=" $gentop"
9595
9596           func_extract_archives $gentop $dlprefiles
9597           oldobjs+=" $func_extract_archives_result"
9598         fi
9599
9600         # POSIX demands no paths to be encoded in archives.  We have
9601         # to avoid creating archives with duplicate basenames if we
9602         # might have to extract them afterwards, e.g., when creating a
9603         # static archive out of a convenience library, or when linking
9604         # the entirety of a libtool archive into another (currently
9605         # not supported by libtool).
9606         if (for obj in $oldobjs
9607             do
9608               func_basename "$obj"
9609               $ECHO "$func_basename_result"
9610             done | sort | sort -uc >/dev/null 2>&1); then
9611           :
9612         else
9613           echo "copying selected object files to avoid basename conflicts..."
9614           gentop="$output_objdir/${outputname}x"
9615           generated+=" $gentop"
9616           func_mkdir_p "$gentop"
9617           save_oldobjs=$oldobjs
9618           oldobjs=
9619           counter=1
9620           for obj in $save_oldobjs
9621           do
9622             func_basename "$obj"
9623             objbase="$func_basename_result"
9624             case " $oldobjs " in
9625             " ") oldobjs=$obj ;;
9626             *[\ /]"$objbase "*)
9627               while :; do
9628                 # Make sure we don't pick an alternate name that also
9629                 # overlaps.
9630                 newobj=lt$counter-$objbase
9631                 func_arith $counter + 1
9632                 counter=$func_arith_result
9633                 case " $oldobjs " in
9634                 *[\ /]"$newobj "*) ;;
9635                 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
9636                 esac
9637               done
9638               func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9639               oldobjs+=" $gentop/$newobj"
9640               ;;
9641             *) oldobjs+=" $obj" ;;
9642             esac
9643           done
9644         fi
9645         eval cmds=\"$old_archive_cmds\"
9646
9647         func_len " $cmds"
9648         len=$func_len_result
9649         if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9650           cmds=$old_archive_cmds
9651         elif test -n "$archiver_list_spec"; then
9652           func_verbose "using command file archive linking..."
9653           for obj in $oldobjs
9654           do
9655             func_to_tool_file "$obj"
9656             $ECHO "$func_to_tool_file_result"
9657           done > $output_objdir/$libname.libcmd
9658           func_to_tool_file "$output_objdir/$libname.libcmd"
9659           oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9660           cmds=$old_archive_cmds
9661         else
9662           # the command line is too long to link in one step, link in parts
9663           func_verbose "using piecewise archive linking..."
9664           save_RANLIB=$RANLIB
9665           RANLIB=:
9666           objlist=
9667           concat_cmds=
9668           save_oldobjs=$oldobjs
9669           oldobjs=
9670           # Is there a better way of finding the last object in the list?
9671           for obj in $save_oldobjs
9672           do
9673             last_oldobj=$obj
9674           done
9675           eval test_cmds=\"$old_archive_cmds\"
9676           func_len " $test_cmds"
9677           len0=$func_len_result
9678           len=$len0
9679           for obj in $save_oldobjs
9680           do
9681             func_len " $obj"
9682             func_arith $len + $func_len_result
9683             len=$func_arith_result
9684             objlist+=" $obj"
9685             if test "$len" -lt "$max_cmd_len"; then
9686               :
9687             else
9688               # the above command should be used before it gets too long
9689               oldobjs=$objlist
9690               if test "$obj" = "$last_oldobj" ; then
9691                 RANLIB=$save_RANLIB
9692               fi
9693               test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9694               eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9695               objlist=
9696               len=$len0
9697             fi
9698           done
9699           RANLIB=$save_RANLIB
9700           oldobjs=$objlist
9701           if test "X$oldobjs" = "X" ; then
9702             eval cmds=\"\$concat_cmds\"
9703           else
9704             eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9705           fi
9706         fi
9707       fi
9708       func_execute_cmds "$cmds" 'exit $?'
9709     done
9710
9711     test -n "$generated" && \
9712       func_show_eval "${RM}r$generated"
9713
9714     # Now create the libtool archive.
9715     case $output in
9716     *.la)
9717       old_library=
9718       test "$build_old_libs" = yes && old_library="$libname.$libext"
9719       func_verbose "creating $output"
9720
9721       # Preserve any variables that may affect compiler behavior
9722       for var in $variables_saved_for_relink; do
9723         if eval test -z \"\${$var+set}\"; then
9724           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9725         elif eval var_value=\$$var; test -z "$var_value"; then
9726           relink_command="$var=; export $var; $relink_command"
9727         else
9728           func_quote_for_eval "$var_value"
9729           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9730         fi
9731       done
9732       # Quote the link command for shipping.
9733       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9734       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9735       if test "$hardcode_automatic" = yes ; then
9736         relink_command=
9737       fi
9738
9739       # Only create the output if not a dry run.
9740       $opt_dry_run || {
9741         for installed in no yes; do
9742           if test "$installed" = yes; then
9743             if test -z "$install_libdir"; then
9744               break
9745             fi
9746             output="$output_objdir/$outputname"i
9747             # Replace all uninstalled libtool libraries with the installed ones
9748             newdependency_libs=
9749             for deplib in $dependency_libs; do
9750               case $deplib in
9751               *.la)
9752                 func_basename "$deplib"
9753                 name="$func_basename_result"
9754                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
9755                 test -z "$libdir" && \
9756                   func_fatal_error "\`$deplib' is not a valid libtool archive"
9757                 newdependency_libs+=" ${lt_sysroot:+=}$libdir/$name"
9758                 ;;
9759               -L*)
9760                 func_stripname -L '' "$deplib"
9761                 func_replace_sysroot "$func_stripname_result"
9762                 newdependency_libs+=" -L$func_replace_sysroot_result"
9763                 ;;
9764               -R*)
9765                 func_stripname -R '' "$deplib"
9766                 func_replace_sysroot "$func_stripname_result"
9767                 newdependency_libs+=" -R$func_replace_sysroot_result"
9768                 ;;
9769               *) newdependency_libs+=" $deplib" ;;
9770               esac
9771             done
9772             dependency_libs="$newdependency_libs"
9773             newdlfiles=
9774
9775             for lib in $dlfiles; do
9776               case $lib in
9777               *.la)
9778                 func_basename "$lib"
9779                 name="$func_basename_result"
9780                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9781                 test -z "$libdir" && \
9782                   func_fatal_error "\`$lib' is not a valid libtool archive"
9783                 newdlfiles+=" ${lt_sysroot:+=}$libdir/$name"
9784                 ;;
9785               *) newdlfiles+=" $lib" ;;
9786               esac
9787             done
9788             dlfiles="$newdlfiles"
9789             newdlprefiles=
9790             for lib in $dlprefiles; do
9791               case $lib in
9792               *.la)
9793                 # Only pass preopened files to the pseudo-archive (for
9794                 # eventual linking with the app. that links it) if we
9795                 # didn't already link the preopened objects directly into
9796                 # the library:
9797                 func_basename "$lib"
9798                 name="$func_basename_result"
9799                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9800                 test -z "$libdir" && \
9801                   func_fatal_error "\`$lib' is not a valid libtool archive"
9802                 newdlprefiles+=" ${lt_sysroot:+=}$libdir/$name"
9803                 ;;
9804               esac
9805             done
9806             dlprefiles="$newdlprefiles"
9807           else
9808             newdlfiles=
9809             for lib in $dlfiles; do
9810               case $lib in
9811                 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9812                 *) abs=`pwd`"/$lib" ;;
9813               esac
9814               newdlfiles+=" $abs"
9815             done
9816             dlfiles="$newdlfiles"
9817             newdlprefiles=
9818             for lib in $dlprefiles; do
9819               case $lib in
9820                 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9821                 *) abs=`pwd`"/$lib" ;;
9822               esac
9823               newdlprefiles+=" $abs"
9824             done
9825             dlprefiles="$newdlprefiles"
9826           fi
9827           $RM $output
9828           # place dlname in correct position for cygwin
9829           # In fact, it would be nice if we could use this code for all target
9830           # systems that can't hard-code library paths into their executables
9831           # and that have no shared library path variable independent of PATH,
9832           # but it turns out we can't easily determine that from inspecting
9833           # libtool variables, so we have to hard-code the OSs to which it
9834           # applies here; at the moment, that means platforms that use the PE
9835           # object format with DLL files.  See the long comment at the top of
9836           # tests/bindir.at for full details.
9837           tdlname=$dlname
9838           case $host,$output,$installed,$module,$dlname in
9839             *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9840               # If a -bindir argument was supplied, place the dll there.
9841               if test "x$bindir" != x ;
9842               then
9843                 func_relative_path "$install_libdir" "$bindir"
9844                 tdlname=$func_relative_path_result$dlname
9845               else
9846                 # Otherwise fall back on heuristic.
9847                 tdlname=../bin/$dlname
9848               fi
9849               ;;
9850           esac
9851           $ECHO > $output "\
9852 # $outputname - a libtool library file
9853 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9854 #
9855 # Please DO NOT delete this file!
9856 # It is necessary for linking the library.
9857
9858 # The name that we can dlopen(3).
9859 dlname='$tdlname'
9860
9861 # Names of this library.
9862 library_names='$library_names'
9863
9864 # The name of the static archive.
9865 old_library='$old_library'
9866
9867 # Linker flags that can not go in dependency_libs.
9868 inherited_linker_flags='$new_inherited_linker_flags'
9869
9870 # Libraries that this one depends upon.
9871 dependency_libs='$dependency_libs'
9872
9873 # Names of additional weak libraries provided by this library
9874 weak_library_names='$weak_libs'
9875
9876 # Version information for $libname.
9877 current=$current
9878 age=$age
9879 revision=$revision
9880
9881 # Is this an already installed library?
9882 installed=$installed
9883
9884 # Should we warn about portability when linking against -modules?
9885 shouldnotlink=$module
9886
9887 # Files to dlopen/dlpreopen
9888 dlopen='$dlfiles'
9889 dlpreopen='$dlprefiles'
9890
9891 # Directory that this library needs to be installed in:
9892 libdir='$install_libdir'"
9893           if test "$installed" = no && test "$need_relink" = yes; then
9894             $ECHO >> $output "\
9895 relink_command=\"$relink_command\""
9896           fi
9897         done
9898       }
9899
9900       # Do a symbolic link so that the libtool archive can be found in
9901       # LD_LIBRARY_PATH before the program is installed.
9902       func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9903       ;;
9904     esac
9905     exit $EXIT_SUCCESS
9906 }
9907
9908 { test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9909     func_mode_link ${1+"$@"}
9910
9911
9912 # func_mode_uninstall arg...
9913 func_mode_uninstall ()
9914 {
9915     $opt_debug
9916     RM="$nonopt"
9917     files=
9918     rmforce=
9919     exit_status=0
9920
9921     # This variable tells wrapper scripts just to set variables rather
9922     # than running their programs.
9923     libtool_install_magic="$magic"
9924
9925     for arg
9926     do
9927       case $arg in
9928       -f) RM+=" $arg"; rmforce=yes ;;
9929       -*) RM+=" $arg" ;;
9930       *) files+=" $arg" ;;
9931       esac
9932     done
9933
9934     test -z "$RM" && \
9935       func_fatal_help "you must specify an RM program"
9936
9937     rmdirs=
9938
9939     for file in $files; do
9940       func_dirname "$file" "" "."
9941       dir="$func_dirname_result"
9942       if test "X$dir" = X.; then
9943         odir="$objdir"
9944       else
9945         odir="$dir/$objdir"
9946       fi
9947       func_basename "$file"
9948       name="$func_basename_result"
9949       test "$opt_mode" = uninstall && odir="$dir"
9950
9951       # Remember odir for removal later, being careful to avoid duplicates
9952       if test "$opt_mode" = clean; then
9953         case " $rmdirs " in
9954           *" $odir "*) ;;
9955           *) rmdirs+=" $odir" ;;
9956         esac
9957       fi
9958
9959       # Don't error if the file doesn't exist and rm -f was used.
9960       if { test -L "$file"; } >/dev/null 2>&1 ||
9961          { test -h "$file"; } >/dev/null 2>&1 ||
9962          test -f "$file"; then
9963         :
9964       elif test -d "$file"; then
9965         exit_status=1
9966         continue
9967       elif test "$rmforce" = yes; then
9968         continue
9969       fi
9970
9971       rmfiles="$file"
9972
9973       case $name in
9974       *.la)
9975         # Possibly a libtool archive, so verify it.
9976         if func_lalib_p "$file"; then
9977           func_source $dir/$name
9978
9979           # Delete the libtool libraries and symlinks.
9980           for n in $library_names; do
9981             rmfiles+=" $odir/$n"
9982           done
9983           test -n "$old_library" && rmfiles+=" $odir/$old_library"
9984
9985           case "$opt_mode" in
9986           clean)
9987             case " $library_names " in
9988             *" $dlname "*) ;;
9989             *) test -n "$dlname" && rmfiles+=" $odir/$dlname" ;;
9990             esac
9991             test -n "$libdir" && rmfiles+=" $odir/$name $odir/${name}i"
9992             ;;
9993           uninstall)
9994             if test -n "$library_names"; then
9995               # Do each command in the postuninstall commands.
9996               func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9997             fi
9998
9999             if test -n "$old_library"; then
10000               # Do each command in the old_postuninstall commands.
10001               func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
10002             fi
10003             # FIXME: should reinstall the best remaining shared library.
10004             ;;
10005           esac
10006         fi
10007         ;;
10008
10009       *.lo)
10010         # Possibly a libtool object, so verify it.
10011         if func_lalib_p "$file"; then
10012
10013           # Read the .lo file
10014           func_source $dir/$name
10015
10016           # Add PIC object to the list of files to remove.
10017           if test -n "$pic_object" &&
10018              test "$pic_object" != none; then
10019             rmfiles+=" $dir/$pic_object"
10020           fi
10021
10022           # Add non-PIC object to the list of files to remove.
10023           if test -n "$non_pic_object" &&
10024              test "$non_pic_object" != none; then
10025             rmfiles+=" $dir/$non_pic_object"
10026           fi
10027         fi
10028         ;;
10029
10030       *)
10031         if test "$opt_mode" = clean ; then
10032           noexename=$name
10033           case $file in
10034           *.exe)
10035             func_stripname '' '.exe' "$file"
10036             file=$func_stripname_result
10037             func_stripname '' '.exe' "$name"
10038             noexename=$func_stripname_result
10039             # $file with .exe has already been added to rmfiles,
10040             # add $file without .exe
10041             rmfiles+=" $file"
10042             ;;
10043           esac
10044           # Do a test to see if this is a libtool program.
10045           if func_ltwrapper_p "$file"; then
10046             if func_ltwrapper_executable_p "$file"; then
10047               func_ltwrapper_scriptname "$file"
10048               relink_command=
10049               func_source $func_ltwrapper_scriptname_result
10050               rmfiles+=" $func_ltwrapper_scriptname_result"
10051             else
10052               relink_command=
10053               func_source $dir/$noexename
10054             fi
10055
10056             # note $name still contains .exe if it was in $file originally
10057             # as does the version of $file that was added into $rmfiles
10058             rmfiles+=" $odir/$name $odir/${name}S.${objext}"
10059             rmfiles+=" ${name}.manifest $objdir/${name}.manifest"
10060             if test "$fast_install" = yes && test -n "$relink_command"; then
10061               rmfiles+=" $odir/lt-$name $objdir/lt-${name}.manifest"
10062             fi
10063             if test "X$noexename" != "X$name" ; then
10064               rmfiles+=" $odir/lt-${noexename}.c"
10065             fi
10066           fi
10067         fi
10068         ;;
10069       esac
10070       func_show_eval "$RM $rmfiles" 'exit_status=1'
10071     done
10072
10073     # Try to remove the ${objdir}s in the directories where we deleted files
10074     for dir in $rmdirs; do
10075       if test -d "$dir"; then
10076         func_show_eval "rmdir $dir >/dev/null 2>&1"
10077       fi
10078     done
10079
10080     exit $exit_status
10081 }
10082
10083 { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
10084     func_mode_uninstall ${1+"$@"}
10085
10086 test -z "$opt_mode" && {
10087   help="$generic_help"
10088   func_fatal_help "you must specify a MODE"
10089 }
10090
10091 test -z "$exec_cmd" && \
10092   func_fatal_help "invalid operation mode \`$opt_mode'"
10093
10094 if test -n "$exec_cmd"; then
10095   eval exec "$exec_cmd"
10096   exit $EXIT_FAILURE
10097 fi
10098
10099 exit $exit_status
10100
10101
10102 # The TAGs below are defined such that we never get into a situation
10103 # in which we disable both kinds of libraries.  Given conflicting
10104 # choices, we go for a static library, that is the most portable,
10105 # since we can't tell whether shared libraries were disabled because
10106 # the user asked for that or because the platform doesn't support
10107 # them.  This is particularly important on AIX, because we don't
10108 # support having both static and shared libraries enabled at the same
10109 # time on that platform, so we default to a shared-only configuration.
10110 # If a disable-shared tag is given, we'll fallback to a static-only
10111 # configuration.  But we'll never go from static-only to shared-only.
10112
10113 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
10114 build_libtool_libs=no
10115 build_old_libs=yes
10116 # ### END LIBTOOL TAG CONFIG: disable-shared
10117
10118 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
10119 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
10120 # ### END LIBTOOL TAG CONFIG: disable-static
10121
10122 # Local Variables:
10123 # mode:shell-script
10124 # sh-indentation:2
10125 # End:
10126 # vi:sw=2
10127
10128
10129 # ### BEGIN LIBTOOL TAG CONFIG: CXX
10130
10131 # The linker used to build libraries.
10132 LD="/usr/arm-linux-gnueabi/bin/ld"
10133
10134 # How to create reloadable object files.
10135 reload_flag=" -r"
10136 reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
10137
10138 # Commands used to build an old-style archive.
10139 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
10140
10141 # A language specific compiler.
10142 CC="g++"
10143
10144 # Is the compiler the GNU compiler?
10145 with_gcc=yes
10146
10147 # Compiler flag to turn off builtin functions.
10148 no_builtin_flag=" -fno-builtin"
10149
10150 # Additional compiler flags for building library objects.
10151 pic_flag=" -fPIC -DPIC"
10152
10153 # How to pass a linker flag through the compiler.
10154 wl="-Wl,"
10155
10156 # Compiler flag to prevent dynamic linking.
10157 link_static_flag="-static"
10158
10159 # Does compiler simultaneously support -c and -o options?
10160 compiler_c_o="yes"
10161
10162 # Whether or not to add -lc for building shared libraries.
10163 build_libtool_need_lc=no
10164
10165 # Whether or not to disallow shared libs when runtime libs are static.
10166 allow_libtool_libs_with_static_runtimes=no
10167
10168 # Compiler flag to allow reflexive dlopens.
10169 export_dynamic_flag_spec="\${wl}--export-dynamic"
10170
10171 # Compiler flag to generate shared objects directly from archives.
10172 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
10173
10174 # Whether the compiler copes with passing no objects directly.
10175 compiler_needs_object="no"
10176
10177 # Create an old-style archive from a shared archive.
10178 old_archive_from_new_cmds=""
10179
10180 # Create a temporary old-style archive to link instead of a shared archive.
10181 old_archive_from_expsyms_cmds=""
10182
10183 # Commands used to build a shared archive.
10184 archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
10185 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"
10186
10187 # Commands used to build a loadable module if different from building
10188 # a shared archive.
10189 module_cmds=""
10190 module_expsym_cmds=""
10191
10192 # Whether we are building with GNU ld or not.
10193 with_gnu_ld="yes"
10194
10195 # Flag that allows shared libraries with undefined symbols to be built.
10196 allow_undefined_flag=""
10197
10198 # Flag that enforces no undefined symbols.
10199 no_undefined_flag=""
10200
10201 # Flag to hardcode $libdir into a binary during linking.
10202 # This must work even if $libdir does not exist
10203 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
10204
10205 # If ld is used when linking, flag to hardcode $libdir into a binary
10206 # during linking.  This must work even if $libdir does not exist.
10207 hardcode_libdir_flag_spec_ld=""
10208
10209 # Whether we need a single "-rpath" flag with a separated argument.
10210 hardcode_libdir_separator=""
10211
10212 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
10213 # DIR into the resulting binary.
10214 hardcode_direct=no
10215
10216 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
10217 # DIR into the resulting binary and the resulting library dependency is
10218 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
10219 # library is relocated.
10220 hardcode_direct_absolute=no
10221
10222 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
10223 # into the resulting binary.
10224 hardcode_minus_L=no
10225
10226 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
10227 # into the resulting binary.
10228 hardcode_shlibpath_var=unsupported
10229
10230 # Set to "yes" if building a shared library automatically hardcodes DIR
10231 # into the library and all subsequent libraries and executables linked
10232 # against it.
10233 hardcode_automatic=no
10234
10235 # Set to yes if linker adds runtime paths of dependent libraries
10236 # to runtime path list.
10237 inherit_rpath=no
10238
10239 # Whether libtool must link a program against all its dependency libraries.
10240 link_all_deplibs=unknown
10241
10242 # Set to "yes" if exported symbols are required.
10243 always_export_symbols=no
10244
10245 # The commands to list exported symbols.
10246 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
10247
10248 # Symbols that should not be listed in the preloaded symbols.
10249 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
10250
10251 # Symbols that must always be exported.
10252 include_expsyms=""
10253
10254 # Commands necessary for linking programs (against libraries) with templates.
10255 prelink_cmds=""
10256
10257 # Commands necessary for finishing linking programs.
10258 postlink_cmds=""
10259
10260 # Specify filename containing input files.
10261 file_list_spec=""
10262
10263 # How to hardcode a shared library path into an executable.
10264 hardcode_action=immediate
10265
10266 # The directories searched by this compiler when creating a shared library.
10267 compiler_lib_search_dirs="/home/gpeegpee/sbs/target-armel/usr/lib /home/gpeegpee/sbs/target-armel/lib /usr/lib/gcc/arm-linux-gnueabi/4.5.3 /usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/lib"
10268
10269 # Dependencies to place before and after the objects being linked to
10270 # create a shared library.
10271 predep_objects="/usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/lib/crti.o /usr/lib/gcc/arm-linux-gnueabi/4.5.3/crtbeginS.o"
10272 postdep_objects="/usr/lib/gcc/arm-linux-gnueabi/4.5.3/crtendS.o /usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/lib/crtn.o"
10273 predeps=""
10274 postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
10275
10276 # The library search path used internally by the compiler when linking
10277 # a shared library.
10278 compiler_lib_search_path="-L/home/gpeegpee/sbs/target-armel/usr/lib -L/home/gpeegpee/sbs/target-armel/lib -L/usr/lib/gcc/arm-linux-gnueabi/4.5.3 -L/usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/lib"
10279
10280 # ### END LIBTOOL TAG CONFIG: CXX