Merge branch 'upstream'
[nfs-utils.git] / libtool
1 #! /bin/sh
2
3 # libtool - Provide generalized library-building support services.
4 # Generated automatically by config.status (nfs-utils) 1.2.8
5 # Libtool was configured on host bighat.boston.devel.redhat.com:
6 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
7 #
8 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
9 #                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
10 #                 Foundation, Inc.
11 #   Written by Gordon Matzigkeit, 1996
12 #
13 #   This file is part of GNU Libtool.
14 #
15 # GNU Libtool is free software; you can redistribute it and/or
16 # modify it under the terms of the GNU General Public License as
17 # published by the Free Software Foundation; either version 2 of
18 # the License, or (at your option) any later version.
19 #
20 # As a special exception to the GNU General Public License,
21 # if you distribute this file as part of a program or library that
22 # is built using GNU Libtool, you may include this file under the
23 # same distribution terms that you use for the rest of that program.
24 #
25 # GNU Libtool is distributed in the hope that it will be useful,
26 # but WITHOUT ANY WARRANTY; without even the implied warranty of
27 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28 # GNU General Public License for more details.
29 #
30 # You should have received a copy of the GNU General Public License
31 # along with GNU Libtool; see the file COPYING.  If not, a copy
32 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
33 # obtained by writing to the Free Software Foundation, Inc.,
34 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
35
36
37 # The names of the tagged configurations supported by this script.
38 available_tags="CXX "
39
40 # ### BEGIN LIBTOOL CONFIG
41
42 # Which release of libtool.m4 was used?
43 macro_version=2.4.2
44 macro_revision=1.3337
45
46 # Whether or not to build shared libraries.
47 build_libtool_libs=yes
48
49 # Whether or not to build static libraries.
50 build_old_libs=yes
51
52 # What type of objects to build.
53 pic_mode=default
54
55 # Whether or not to optimize for fast installation.
56 fast_install=yes
57
58 # Shell to use when invoking shell scripts.
59 SHELL="/bin/sh"
60
61 # An echo program that protects backslashes.
62 ECHO="printf %s\\n"
63
64 # The PATH separator for the build system.
65 PATH_SEPARATOR=":"
66
67 # The host system.
68 host_alias=
69 host=x86_64-unknown-linux-gnu
70 host_os=linux-gnu
71
72 # The build system.
73 build_alias=
74 build=x86_64-unknown-linux-gnu
75 build_os=linux-gnu
76
77 # A sed program that does not truncate output.
78 SED="/usr/bin/sed"
79
80 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
81 Xsed="$SED -e 1s/^X//"
82
83 # A grep program that handles long lines.
84 GREP="/usr/bin/grep"
85
86 # An ERE matcher.
87 EGREP="/usr/bin/grep -E"
88
89 # A literal string matcher.
90 FGREP="/usr/bin/grep -F"
91
92 # A BSD- or MS-compatible name lister.
93 NM="/usr/bin/nm -B"
94
95 # Whether we need soft or hard links.
96 LN_S="ln -s"
97
98 # What is the maximum length of a command?
99 max_cmd_len=1572864
100
101 # Object file suffix (normally "o").
102 objext=o
103
104 # Executable file suffix (normally "").
105 exeext=
106
107 # whether the shell understands "unset".
108 lt_unset=unset
109
110 # turn spaces into newlines.
111 SP2NL="tr \\040 \\012"
112
113 # turn newlines into spaces.
114 NL2SP="tr \\015\\012 \\040\\040"
115
116 # convert $build file names to $host format.
117 to_host_file_cmd=func_convert_file_noop
118
119 # convert $build files to toolchain format.
120 to_tool_file_cmd=func_convert_file_noop
121
122 # An object symbol dumper.
123 OBJDUMP="objdump"
124
125 # Method to check whether dependent libraries are shared objects.
126 deplibs_check_method="pass_all"
127
128 # Command to use when deplibs_check_method = "file_magic".
129 file_magic_cmd="\$MAGIC_CMD"
130
131 # How to find potential files when deplibs_check_method = "file_magic".
132 file_magic_glob=""
133
134 # Find potential files using nocaseglob when deplibs_check_method = "file_magic".
135 want_nocaseglob="no"
136
137 # DLL creation program.
138 DLLTOOL="false"
139
140 # Command to associate shared and link libraries.
141 sharedlib_from_linklib_cmd="printf %s\\n"
142
143 # The archiver.
144 AR="ar"
145
146 # Flags to create an archive.
147 AR_FLAGS="cru"
148
149 # How to feed a file listing to the archiver.
150 archiver_list_spec="@"
151
152 # A symbol stripping program.
153 STRIP="strip"
154
155 # Commands used to install an old-style archive.
156 RANLIB="ranlib"
157 old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
158 old_postuninstall_cmds=""
159
160 # Whether to use a lock for old archive extraction.
161 lock_old_archive_extraction=no
162
163 # A C compiler.
164 LTCC="gcc"
165
166 # LTCC compiler flags.
167 LTCFLAGS="-g -O2"
168
169 # Take the output of nm and produce a listing of raw symbols and C names.
170 global_symbol_pipe="sed -n -e 's/^.*[    ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[       ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
171
172 # Transform the output of nm in a proper C declaration.
173 global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
174
175 # Transform the output of nm in a C name address pair.
176 global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
177
178 # Transform the output of nm in a C name address pair when lib prefix is needed.
179 global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"
180
181 # Specify filename containing input files for $NM.
182 nm_file_list_spec="@"
183
184 # The root where to search for dependent libraries,and in which our libraries should be installed.
185 lt_sysroot=
186
187 # The name of the directory that contains temporary libtool files.
188 objdir=.libs
189
190 # Used to examine libraries when file_magic_cmd begins with "file".
191 MAGIC_CMD=file
192
193 # Must we lock files when doing compilation?
194 need_locks="no"
195
196 # Manifest tool.
197 MANIFEST_TOOL=":"
198
199 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
200 DSYMUTIL=""
201
202 # Tool to change global to local symbols on Mac OS X.
203 NMEDIT=""
204
205 # Tool to manipulate fat objects and archives on Mac OS X.
206 LIPO=""
207
208 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
209 OTOOL=""
210
211 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
212 OTOOL64=""
213
214 # Old archive suffix (normally "a").
215 libext=a
216
217 # Shared library suffix (normally ".so").
218 shrext_cmds=".so"
219
220 # The commands to extract the exported symbol list from a shared archive.
221 extract_expsyms_cmds=""
222
223 # Variables whose values should be saved in libtool wrapper scripts and
224 # restored at link time.
225 variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
226
227 # Do we need the "lib" prefix for modules?
228 need_lib_prefix=no
229
230 # Do we need a version for libraries?
231 need_version=no
232
233 # Library versioning type.
234 version_type=linux
235
236 # Shared library runtime path variable.
237 runpath_var=LD_RUN_PATH
238
239 # Shared library path variable.
240 shlibpath_var=LD_LIBRARY_PATH
241
242 # Is shlibpath searched before the hard-coded library search path?
243 shlibpath_overrides_runpath=no
244
245 # Format of library name prefix.
246 libname_spec="lib\$name"
247
248 # List of archive names.  First name is the real one, the rest are links.
249 # The last name is the one that the linker finds with -lNAME
250 library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
251
252 # The coded name of the library, if different from the real name.
253 soname_spec="\${libname}\${release}\${shared_ext}\$major"
254
255 # Permission mode override for installation of shared libraries.
256 install_override_mode=""
257
258 # Command to use after installation of a shared archive.
259 postinstall_cmds=""
260
261 # Command to use after uninstallation of a shared archive.
262 postuninstall_cmds=""
263
264 # Commands used to finish a libtool library installation in a directory.
265 finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
266
267 # As "finish_cmds", except a single script fragment to be evaled but
268 # not shown.
269 finish_eval=""
270
271 # Whether we should hardcode library paths into libraries.
272 hardcode_into_libs=yes
273
274 # Compile-time system search path for libraries.
275 sys_lib_search_path_spec="/usr/lib/gcc/x86_64-redhat-linux/4.7.2 /usr/lib64 /lib64 "
276
277 # Run-time system search path for libraries.
278 sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib64/atlas /usr/lib64/dyninst /usr/lib64/iscsi /usr/lib64/llvm /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib64/tcl8.5 /usr/lib64/tracker-0.14 /usr/lib64/xulrunner "
279
280 # Whether dlopen is supported.
281 dlopen_support=unknown
282
283 # Whether dlopen of programs is supported.
284 dlopen_self=unknown
285
286 # Whether dlopen of statically linked programs is supported.
287 dlopen_self_static=unknown
288
289 # Commands to strip libraries.
290 old_striplib="strip --strip-debug"
291 striplib="strip --strip-unneeded"
292
293
294 # The linker used to build libraries.
295 LD="/usr/bin/ld -m elf_x86_64"
296
297 # How to create reloadable object files.
298 reload_flag=" -r"
299 reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
300
301 # Commands used to build an old-style archive.
302 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
303
304 # A language specific compiler.
305 CC="gcc"
306
307 # Is the compiler the GNU compiler?
308 with_gcc=yes
309
310 # Compiler flag to turn off builtin functions.
311 no_builtin_flag=" -fno-builtin"
312
313 # Additional compiler flags for building library objects.
314 pic_flag=" -fPIC -DPIC"
315
316 # How to pass a linker flag through the compiler.
317 wl="-Wl,"
318
319 # Compiler flag to prevent dynamic linking.
320 link_static_flag=""
321
322 # Does compiler simultaneously support -c and -o options?
323 compiler_c_o="yes"
324
325 # Whether or not to add -lc for building shared libraries.
326 build_libtool_need_lc=no
327
328 # Whether or not to disallow shared libs when runtime libs are static.
329 allow_libtool_libs_with_static_runtimes=no
330
331 # Compiler flag to allow reflexive dlopens.
332 export_dynamic_flag_spec="\${wl}--export-dynamic"
333
334 # Compiler flag to generate shared objects directly from archives.
335 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
336
337 # Whether the compiler copes with passing no objects directly.
338 compiler_needs_object="no"
339
340 # Create an old-style archive from a shared archive.
341 old_archive_from_new_cmds=""
342
343 # Create a temporary old-style archive to link instead of a shared archive.
344 old_archive_from_expsyms_cmds=""
345
346 # Commands used to build a shared archive.
347 archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
348 archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
349             cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
350             echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
351             \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
352
353 # Commands used to build a loadable module if different from building
354 # a shared archive.
355 module_cmds=""
356 module_expsym_cmds=""
357
358 # Whether we are building with GNU ld or not.
359 with_gnu_ld="yes"
360
361 # Flag that allows shared libraries with undefined symbols to be built.
362 allow_undefined_flag=""
363
364 # Flag that enforces no undefined symbols.
365 no_undefined_flag=""
366
367 # Flag to hardcode $libdir into a binary during linking.
368 # This must work even if $libdir does not exist
369 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
370
371 # Whether we need a single "-rpath" flag with a separated argument.
372 hardcode_libdir_separator=""
373
374 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
375 # DIR into the resulting binary.
376 hardcode_direct=no
377
378 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
379 # DIR into the resulting binary and the resulting library dependency is
380 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
381 # library is relocated.
382 hardcode_direct_absolute=no
383
384 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
385 # into the resulting binary.
386 hardcode_minus_L=no
387
388 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
389 # into the resulting binary.
390 hardcode_shlibpath_var=unsupported
391
392 # Set to "yes" if building a shared library automatically hardcodes DIR
393 # into the library and all subsequent libraries and executables linked
394 # against it.
395 hardcode_automatic=no
396
397 # Set to yes if linker adds runtime paths of dependent libraries
398 # to runtime path list.
399 inherit_rpath=no
400
401 # Whether libtool must link a program against all its dependency libraries.
402 link_all_deplibs=unknown
403
404 # Set to "yes" if exported symbols are required.
405 always_export_symbols=no
406
407 # The commands to list exported symbols.
408 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
409
410 # Symbols that should not be listed in the preloaded symbols.
411 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
412
413 # Symbols that must always be exported.
414 include_expsyms=""
415
416 # Commands necessary for linking programs (against libraries) with templates.
417 prelink_cmds=""
418
419 # Commands necessary for finishing linking programs.
420 postlink_cmds=""
421
422 # Specify filename containing input files.
423 file_list_spec=""
424
425 # How to hardcode a shared library path into an executable.
426 hardcode_action=immediate
427
428 # The directories searched by this compiler when creating a shared library.
429 compiler_lib_search_dirs=""
430
431 # Dependencies to place before and after the objects being linked to
432 # create a shared library.
433 predep_objects=""
434 postdep_objects=""
435 predeps=""
436 postdeps=""
437
438 # The library search path used internally by the compiler when linking
439 # a shared library.
440 compiler_lib_search_path=""
441
442 # ### END LIBTOOL CONFIG
443
444
445 # libtool (GNU libtool) 2.4.2
446 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
447
448 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
449 # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
450 # This is free software; see the source for copying conditions.  There is NO
451 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
452
453 # GNU Libtool is free software; you can redistribute it and/or modify
454 # it under the terms of the GNU General Public License as published by
455 # the Free Software Foundation; either version 2 of the License, or
456 # (at your option) any later version.
457 #
458 # As a special exception to the GNU General Public License,
459 # if you distribute this file as part of a program or library that
460 # is built using GNU Libtool, you may include this file under the
461 # same distribution terms that you use for the rest of that program.
462 #
463 # GNU Libtool is distributed in the hope that it will be useful, but
464 # WITHOUT ANY WARRANTY; without even the implied warranty of
465 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
466 # General Public License for more details.
467 #
468 # You should have received a copy of the GNU General Public License
469 # along with GNU Libtool; see the file COPYING.  If not, a copy
470 # can be downloaded from http://www.gnu.org/licenses/gpl.html,
471 # or obtained by writing to the Free Software Foundation, Inc.,
472 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
473
474 # Usage: $progname [OPTION]... [MODE-ARG]...
475 #
476 # Provide generalized library-building support services.
477 #
478 #       --config             show all configuration variables
479 #       --debug              enable verbose shell tracing
480 #   -n, --dry-run            display commands without modifying any files
481 #       --features           display basic configuration information and exit
482 #       --mode=MODE          use operation mode MODE
483 #       --preserve-dup-deps  don't remove duplicate dependency libraries
484 #       --quiet, --silent    don't print informational messages
485 #       --no-quiet, --no-silent
486 #                            print informational messages (default)
487 #       --no-warn            don't display warning messages
488 #       --tag=TAG            use configuration variables from tag TAG
489 #   -v, --verbose            print more informational messages than default
490 #       --no-verbose         don't print the extra informational messages
491 #       --version            print version information
492 #   -h, --help, --help-all   print short, long, or detailed help message
493 #
494 # MODE must be one of the following:
495 #
496 #         clean              remove files from the build directory
497 #         compile            compile a source file into a libtool object
498 #         execute            automatically set library path, then run a program
499 #         finish             complete the installation of libtool libraries
500 #         install            install libraries or executables
501 #         link               create a library or an executable
502 #         uninstall          remove libraries from an installed directory
503 #
504 # MODE-ARGS vary depending on the MODE.  When passed as first option,
505 # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
506 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
507 #
508 # When reporting a bug, please describe a test case to reproduce it and
509 # include the following information:
510 #
511 #         host-triplet: $host
512 #         shell:                $SHELL
513 #         compiler:             $LTCC
514 #         compiler flags:               $LTCFLAGS
515 #         linker:               $LD (gnu? $with_gnu_ld)
516 #         $progname:    (GNU libtool) 2.4.2
517 #         automake:     $automake_version
518 #         autoconf:     $autoconf_version
519 #
520 # Report bugs to <bug-libtool@gnu.org>.
521 # GNU libtool home page: <http://www.gnu.org/software/libtool/>.
522 # General help using GNU software: <http://www.gnu.org/gethelp/>.
523
524 PROGRAM=libtool
525 PACKAGE=libtool
526 VERSION=2.4.2
527 TIMESTAMP=""
528 package_revision=1.3337
529
530 # Be Bourne compatible
531 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
532   emulate sh
533   NULLCMD=:
534   # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
535   # is contrary to our usage.  Disable this feature.
536   alias -g '${1+"$@"}'='"$@"'
537   setopt NO_GLOB_SUBST
538 else
539   case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
540 fi
541 BIN_SH=xpg4; export BIN_SH # for Tru64
542 DUALCASE=1; export DUALCASE # for MKS sh
543
544 # A function that is used when there is no print builtin or printf.
545 func_fallback_echo ()
546 {
547   eval 'cat <<_LTECHO_EOF
548 $1
549 _LTECHO_EOF'
550 }
551
552 # NLS nuisances: We save the old values to restore during execute mode.
553 lt_user_locale=
554 lt_safe_locale=
555 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
556 do
557   eval "if test \"\${$lt_var+set}\" = set; then
558           save_$lt_var=\$$lt_var
559           $lt_var=C
560           export $lt_var
561           lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
562           lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
563         fi"
564 done
565 LC_ALL=C
566 LANGUAGE=C
567 export LANGUAGE LC_ALL
568
569 $lt_unset CDPATH
570
571
572 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
573 # is ksh but when the shell is invoked as "sh" and the current value of
574 # the _XPG environment variable is not equal to 1 (one), the special
575 # positional parameter $0, within a function call, is the name of the
576 # function.
577 progpath="$0"
578
579
580
581 : ${CP="cp -f"}
582 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
583 : ${MAKE="make"}
584 : ${MKDIR="mkdir"}
585 : ${MV="mv -f"}
586 : ${RM="rm -f"}
587 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
588 : ${Xsed="$SED -e 1s/^X//"}
589
590 # Global variables:
591 EXIT_SUCCESS=0
592 EXIT_FAILURE=1
593 EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
594 EXIT_SKIP=77      # $? = 77 is used to indicate a skipped test to automake.
595
596 exit_status=$EXIT_SUCCESS
597
598 # Make sure IFS has a sensible default
599 lt_nl='
600 '
601 IFS="   $lt_nl"
602
603 dirname="s,/[^/]*$,,"
604 basename="s,^.*/,,"
605
606 # func_dirname file append nondir_replacement
607 # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
608 # otherwise set result to NONDIR_REPLACEMENT.
609 func_dirname ()
610 {
611     case ${1} in
612       */*) func_dirname_result="${1%/*}${2}" ;;
613       *  ) func_dirname_result="${3}" ;;
614     esac
615 } # Extended-shell func_dirname implementation
616
617
618 # func_basename file
619 func_basename ()
620 {
621     func_basename_result="${1##*/}"
622 } # Extended-shell func_basename implementation
623
624
625 # func_dirname_and_basename file append nondir_replacement
626 # perform func_basename and func_dirname in a single function
627 # call:
628 #   dirname:  Compute the dirname of FILE.  If nonempty,
629 #             add APPEND to the result, otherwise set result
630 #             to NONDIR_REPLACEMENT.
631 #             value returned in "$func_dirname_result"
632 #   basename: Compute filename of FILE.
633 #             value retuned in "$func_basename_result"
634 # Implementation must be kept synchronized with func_dirname
635 # and func_basename. For efficiency, we do not delegate to
636 # those functions but instead duplicate the functionality here.
637 func_dirname_and_basename ()
638 {
639     case ${1} in
640       */*) func_dirname_result="${1%/*}${2}" ;;
641       *  ) func_dirname_result="${3}" ;;
642     esac
643     func_basename_result="${1##*/}"
644 } # Extended-shell func_dirname_and_basename implementation
645
646
647 # func_stripname prefix suffix name
648 # strip PREFIX and SUFFIX off of NAME.
649 # PREFIX and SUFFIX must not contain globbing or regex special
650 # characters, hashes, percent signs, but SUFFIX may contain a leading
651 # dot (in which case that matches only a dot).
652 # func_strip_suffix prefix name
653 func_stripname ()
654 {
655     # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
656     # positional parameters, so assign one to ordinary parameter first.
657     func_stripname_result=${3}
658     func_stripname_result=${func_stripname_result#"${1}"}
659     func_stripname_result=${func_stripname_result%"${2}"}
660 } # Extended-shell func_stripname implementation
661
662
663 # These SED scripts presuppose an absolute path with a trailing slash.
664 pathcar='s,^/\([^/]*\).*$,\1,'
665 pathcdr='s,^/[^/]*,,'
666 removedotparts=':dotsl
667                 s@/\./@/@g
668                 t dotsl
669                 s,/\.$,/,'
670 collapseslashes='s@/\{1,\}@/@g'
671 finalslash='s,/*$,/,'
672
673 # func_normal_abspath PATH
674 # Remove doubled-up and trailing slashes, "." path components,
675 # and cancel out any ".." path components in PATH after making
676 # it an absolute path.
677 #             value returned in "$func_normal_abspath_result"
678 func_normal_abspath ()
679 {
680   # Start from root dir and reassemble the path.
681   func_normal_abspath_result=
682   func_normal_abspath_tpath=$1
683   func_normal_abspath_altnamespace=
684   case $func_normal_abspath_tpath in
685     "")
686       # Empty path, that just means $cwd.
687       func_stripname '' '/' "`pwd`"
688       func_normal_abspath_result=$func_stripname_result
689       return
690     ;;
691     # The next three entries are used to spot a run of precisely
692     # two leading slashes without using negated character classes;
693     # we take advantage of case's first-match behaviour.
694     ///*)
695       # Unusual form of absolute path, do nothing.
696     ;;
697     //*)
698       # Not necessarily an ordinary path; POSIX reserves leading '//'
699       # and for example Cygwin uses it to access remote file shares
700       # over CIFS/SMB, so we conserve a leading double slash if found.
701       func_normal_abspath_altnamespace=/
702     ;;
703     /*)
704       # Absolute path, do nothing.
705     ;;
706     *)
707       # Relative path, prepend $cwd.
708       func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
709     ;;
710   esac
711   # Cancel out all the simple stuff to save iterations.  We also want
712   # the path to end with a slash for ease of parsing, so make sure
713   # there is one (and only one) here.
714   func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
715         -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
716   while :; do
717     # Processed it all yet?
718     if test "$func_normal_abspath_tpath" = / ; then
719       # If we ascended to the root using ".." the result may be empty now.
720       if test -z "$func_normal_abspath_result" ; then
721         func_normal_abspath_result=/
722       fi
723       break
724     fi
725     func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
726         -e "$pathcar"`
727     func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
728         -e "$pathcdr"`
729     # Figure out what to do with it
730     case $func_normal_abspath_tcomponent in
731       "")
732         # Trailing empty path component, ignore it.
733       ;;
734       ..)
735         # Parent dir; strip last assembled component from result.
736         func_dirname "$func_normal_abspath_result"
737         func_normal_abspath_result=$func_dirname_result
738       ;;
739       *)
740         # Actual path component, append it.
741         func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
742       ;;
743     esac
744   done
745   # Restore leading double-slash if one was found on entry.
746   func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
747 }
748
749 # func_relative_path SRCDIR DSTDIR
750 # generates a relative path from SRCDIR to DSTDIR, with a trailing
751 # slash if non-empty, suitable for immediately appending a filename
752 # without needing to append a separator.
753 #             value returned in "$func_relative_path_result"
754 func_relative_path ()
755 {
756   func_relative_path_result=
757   func_normal_abspath "$1"
758   func_relative_path_tlibdir=$func_normal_abspath_result
759   func_normal_abspath "$2"
760   func_relative_path_tbindir=$func_normal_abspath_result
761
762   # Ascend the tree starting from libdir
763   while :; do
764     # check if we have found a prefix of bindir
765     case $func_relative_path_tbindir in
766       $func_relative_path_tlibdir)
767         # found an exact match
768         func_relative_path_tcancelled=
769         break
770         ;;
771       $func_relative_path_tlibdir*)
772         # found a matching prefix
773         func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
774         func_relative_path_tcancelled=$func_stripname_result
775         if test -z "$func_relative_path_result"; then
776           func_relative_path_result=.
777         fi
778         break
779         ;;
780       *)
781         func_dirname $func_relative_path_tlibdir
782         func_relative_path_tlibdir=${func_dirname_result}
783         if test "x$func_relative_path_tlibdir" = x ; then
784           # Have to descend all the way to the root!
785           func_relative_path_result=../$func_relative_path_result
786           func_relative_path_tcancelled=$func_relative_path_tbindir
787           break
788         fi
789         func_relative_path_result=../$func_relative_path_result
790         ;;
791     esac
792   done
793
794   # Now calculate path; take care to avoid doubling-up slashes.
795   func_stripname '' '/' "$func_relative_path_result"
796   func_relative_path_result=$func_stripname_result
797   func_stripname '/' '/' "$func_relative_path_tcancelled"
798   if test "x$func_stripname_result" != x ; then
799     func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
800   fi
801
802   # Normalisation. If bindir is libdir, return empty string,
803   # else relative path ending with a slash; either way, target
804   # file name can be directly appended.
805   if test ! -z "$func_relative_path_result"; then
806     func_stripname './' '' "$func_relative_path_result/"
807     func_relative_path_result=$func_stripname_result
808   fi
809 }
810
811 # The name of this program:
812 func_dirname_and_basename "$progpath"
813 progname=$func_basename_result
814
815 # Make sure we have an absolute path for reexecution:
816 case $progpath in
817   [\\/]*|[A-Za-z]:\\*) ;;
818   *[\\/]*)
819      progdir=$func_dirname_result
820      progdir=`cd "$progdir" && pwd`
821      progpath="$progdir/$progname"
822      ;;
823   *)
824      save_IFS="$IFS"
825      IFS=${PATH_SEPARATOR-:}
826      for progdir in $PATH; do
827        IFS="$save_IFS"
828        test -x "$progdir/$progname" && break
829      done
830      IFS="$save_IFS"
831      test -n "$progdir" || progdir=`pwd`
832      progpath="$progdir/$progname"
833      ;;
834 esac
835
836 # Sed substitution that helps us do robust quoting.  It backslashifies
837 # metacharacters that are still active within double-quoted strings.
838 Xsed="${SED}"' -e 1s/^X//'
839 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
840
841 # Same as above, but do not quote variable references.
842 double_quote_subst='s/\(["`\\]\)/\\\1/g'
843
844 # Sed substitution that turns a string into a regex matching for the
845 # string literally.
846 sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
847
848 # Sed substitution that converts a w32 file name or path
849 # which contains forward slashes, into one that contains
850 # (escaped) backslashes.  A very naive implementation.
851 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
852
853 # Re-`\' parameter expansions in output of double_quote_subst that were
854 # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
855 # in input to double_quote_subst, that '$' was protected from expansion.
856 # Since each input `\' is now two `\'s, look for any number of runs of
857 # four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
858 bs='\\'
859 bs2='\\\\'
860 bs4='\\\\\\\\'
861 dollar='\$'
862 sed_double_backslash="\
863   s/$bs4/&\\
864 /g
865   s/^$bs2$dollar/$bs&/
866   s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
867   s/\n//g"
868
869 # Standard options:
870 opt_dry_run=false
871 opt_help=false
872 opt_quiet=false
873 opt_verbose=false
874 opt_warning=:
875
876 # func_echo arg...
877 # Echo program name prefixed message, along with the current mode
878 # name if it has been set yet.
879 func_echo ()
880 {
881     $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
882 }
883
884 # func_verbose arg...
885 # Echo program name prefixed message in verbose mode only.
886 func_verbose ()
887 {
888     $opt_verbose && func_echo ${1+"$@"}
889
890     # A bug in bash halts the script if the last line of a function
891     # fails when set -e is in force, so we need another command to
892     # work around that:
893     :
894 }
895
896 # func_echo_all arg...
897 # Invoke $ECHO with all args, space-separated.
898 func_echo_all ()
899 {
900     $ECHO "$*"
901 }
902
903 # func_error arg...
904 # Echo program name prefixed message to standard error.
905 func_error ()
906 {
907     $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
908 }
909
910 # func_warning arg...
911 # Echo program name prefixed warning message to standard error.
912 func_warning ()
913 {
914     $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
915
916     # bash bug again:
917     :
918 }
919
920 # func_fatal_error arg...
921 # Echo program name prefixed message to standard error, and exit.
922 func_fatal_error ()
923 {
924     func_error ${1+"$@"}
925     exit $EXIT_FAILURE
926 }
927
928 # func_fatal_help arg...
929 # Echo program name prefixed message to standard error, followed by
930 # a help hint, and exit.
931 func_fatal_help ()
932 {
933     func_error ${1+"$@"}
934     func_fatal_error "$help"
935 }
936 help="Try \`$progname --help' for more information."  ## default
937
938
939 # func_grep expression filename
940 # Check whether EXPRESSION matches any line of FILENAME, without output.
941 func_grep ()
942 {
943     $GREP "$1" "$2" >/dev/null 2>&1
944 }
945
946
947 # func_mkdir_p directory-path
948 # Make sure the entire path to DIRECTORY-PATH is available.
949 func_mkdir_p ()
950 {
951     my_directory_path="$1"
952     my_dir_list=
953
954     if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
955
956       # Protect directory names starting with `-'
957       case $my_directory_path in
958         -*) my_directory_path="./$my_directory_path" ;;
959       esac
960
961       # While some portion of DIR does not yet exist...
962       while test ! -d "$my_directory_path"; do
963         # ...make a list in topmost first order.  Use a colon delimited
964         # list incase some portion of path contains whitespace.
965         my_dir_list="$my_directory_path:$my_dir_list"
966
967         # If the last portion added has no slash in it, the list is done
968         case $my_directory_path in */*) ;; *) break ;; esac
969
970         # ...otherwise throw away the child directory and loop
971         my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
972       done
973       my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
974
975       save_mkdir_p_IFS="$IFS"; IFS=':'
976       for my_dir in $my_dir_list; do
977         IFS="$save_mkdir_p_IFS"
978         # mkdir can fail with a `File exist' error if two processes
979         # try to create one of the directories concurrently.  Don't
980         # stop in that case!
981         $MKDIR "$my_dir" 2>/dev/null || :
982       done
983       IFS="$save_mkdir_p_IFS"
984
985       # Bail out if we (or some other process) failed to create a directory.
986       test -d "$my_directory_path" || \
987         func_fatal_error "Failed to create \`$1'"
988     fi
989 }
990
991
992 # func_mktempdir [string]
993 # Make a temporary directory that won't clash with other running
994 # libtool processes, and avoids race conditions if possible.  If
995 # given, STRING is the basename for that directory.
996 func_mktempdir ()
997 {
998     my_template="${TMPDIR-/tmp}/${1-$progname}"
999
1000     if test "$opt_dry_run" = ":"; then
1001       # Return a directory name, but don't create it in dry-run mode
1002       my_tmpdir="${my_template}-$$"
1003     else
1004
1005       # If mktemp works, use that first and foremost
1006       my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
1007
1008       if test ! -d "$my_tmpdir"; then
1009         # Failing that, at least try and use $RANDOM to avoid a race
1010         my_tmpdir="${my_template}-${RANDOM-0}$$"
1011
1012         save_mktempdir_umask=`umask`
1013         umask 0077
1014         $MKDIR "$my_tmpdir"
1015         umask $save_mktempdir_umask
1016       fi
1017
1018       # If we're not in dry-run mode, bomb out on failure
1019       test -d "$my_tmpdir" || \
1020         func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
1021     fi
1022
1023     $ECHO "$my_tmpdir"
1024 }
1025
1026
1027 # func_quote_for_eval arg
1028 # Aesthetically quote ARG to be evaled later.
1029 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
1030 # is double-quoted, suitable for a subsequent eval, whereas
1031 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
1032 # which are still active within double quotes backslashified.
1033 func_quote_for_eval ()
1034 {
1035     case $1 in
1036       *[\\\`\"\$]*)
1037         func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
1038       *)
1039         func_quote_for_eval_unquoted_result="$1" ;;
1040     esac
1041
1042     case $func_quote_for_eval_unquoted_result in
1043       # Double-quote args containing shell metacharacters to delay
1044       # word splitting, command substitution and and variable
1045       # expansion for a subsequent eval.
1046       # Many Bourne shells cannot handle close brackets correctly
1047       # in scan sets, so we specify it separately.
1048       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
1049         func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
1050         ;;
1051       *)
1052         func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
1053     esac
1054 }
1055
1056
1057 # func_quote_for_expand arg
1058 # Aesthetically quote ARG to be evaled later; same as above,
1059 # but do not quote variable references.
1060 func_quote_for_expand ()
1061 {
1062     case $1 in
1063       *[\\\`\"]*)
1064         my_arg=`$ECHO "$1" | $SED \
1065             -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
1066       *)
1067         my_arg="$1" ;;
1068     esac
1069
1070     case $my_arg in
1071       # Double-quote args containing shell metacharacters to delay
1072       # word splitting and command substitution for a subsequent eval.
1073       # Many Bourne shells cannot handle close brackets correctly
1074       # in scan sets, so we specify it separately.
1075       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
1076         my_arg="\"$my_arg\""
1077         ;;
1078     esac
1079
1080     func_quote_for_expand_result="$my_arg"
1081 }
1082
1083
1084 # func_show_eval cmd [fail_exp]
1085 # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
1086 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1087 # is given, then evaluate it.
1088 func_show_eval ()
1089 {
1090     my_cmd="$1"
1091     my_fail_exp="${2-:}"
1092
1093     ${opt_silent-false} || {
1094       func_quote_for_expand "$my_cmd"
1095       eval "func_echo $func_quote_for_expand_result"
1096     }
1097
1098     if ${opt_dry_run-false}; then :; else
1099       eval "$my_cmd"
1100       my_status=$?
1101       if test "$my_status" -eq 0; then :; else
1102         eval "(exit $my_status); $my_fail_exp"
1103       fi
1104     fi
1105 }
1106
1107
1108 # func_show_eval_locale cmd [fail_exp]
1109 # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
1110 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1111 # is given, then evaluate it.  Use the saved locale for evaluation.
1112 func_show_eval_locale ()
1113 {
1114     my_cmd="$1"
1115     my_fail_exp="${2-:}"
1116
1117     ${opt_silent-false} || {
1118       func_quote_for_expand "$my_cmd"
1119       eval "func_echo $func_quote_for_expand_result"
1120     }
1121
1122     if ${opt_dry_run-false}; then :; else
1123       eval "$lt_user_locale
1124             $my_cmd"
1125       my_status=$?
1126       eval "$lt_safe_locale"
1127       if test "$my_status" -eq 0; then :; else
1128         eval "(exit $my_status); $my_fail_exp"
1129       fi
1130     fi
1131 }
1132
1133 # func_tr_sh
1134 # Turn $1 into a string suitable for a shell variable name.
1135 # Result is stored in $func_tr_sh_result.  All characters
1136 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1137 # if $1 begins with a digit, a '_' is prepended as well.
1138 func_tr_sh ()
1139 {
1140   case $1 in
1141   [0-9]* | *[!a-zA-Z0-9_]*)
1142     func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
1143     ;;
1144   * )
1145     func_tr_sh_result=$1
1146     ;;
1147   esac
1148 }
1149
1150
1151 # func_version
1152 # Echo version message to standard output and exit.
1153 func_version ()
1154 {
1155     $opt_debug
1156
1157     $SED -n '/(C)/!b go
1158         :more
1159         /\./!{
1160           N
1161           s/\n# / /
1162           b more
1163         }
1164         :go
1165         /^# '$PROGRAM' (GNU /,/# warranty; / {
1166         s/^# //
1167         s/^# *$//
1168         s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
1169         p
1170      }' < "$progpath"
1171      exit $?
1172 }
1173
1174 # func_usage
1175 # Echo short help message to standard output and exit.
1176 func_usage ()
1177 {
1178     $opt_debug
1179
1180     $SED -n '/^# Usage:/,/^#  *.*--help/ {
1181         s/^# //
1182         s/^# *$//
1183         s/\$progname/'$progname'/
1184         p
1185     }' < "$progpath"
1186     echo
1187     $ECHO "run \`$progname --help | more' for full usage"
1188     exit $?
1189 }
1190
1191 # func_help [NOEXIT]
1192 # Echo long help message to standard output and exit,
1193 # unless 'noexit' is passed as argument.
1194 func_help ()
1195 {
1196     $opt_debug
1197
1198     $SED -n '/^# Usage:/,/# Report bugs to/ {
1199         :print
1200         s/^# //
1201         s/^# *$//
1202         s*\$progname*'$progname'*
1203         s*\$host*'"$host"'*
1204         s*\$SHELL*'"$SHELL"'*
1205         s*\$LTCC*'"$LTCC"'*
1206         s*\$LTCFLAGS*'"$LTCFLAGS"'*
1207         s*\$LD*'"$LD"'*
1208         s/\$with_gnu_ld/'"$with_gnu_ld"'/
1209         s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
1210         s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
1211         p
1212         d
1213      }
1214      /^# .* home page:/b print
1215      /^# General help using/b print
1216      ' < "$progpath"
1217     ret=$?
1218     if test -z "$1"; then
1219       exit $ret
1220     fi
1221 }
1222
1223 # func_missing_arg argname
1224 # Echo program name prefixed message to standard error and set global
1225 # exit_cmd.
1226 func_missing_arg ()
1227 {
1228     $opt_debug
1229
1230     func_error "missing argument for $1."
1231     exit_cmd=exit
1232 }
1233
1234
1235 # func_split_short_opt shortopt
1236 # Set func_split_short_opt_name and func_split_short_opt_arg shell
1237 # variables after splitting SHORTOPT after the 2nd character.
1238 func_split_short_opt ()
1239 {
1240     func_split_short_opt_arg=${1#??}
1241     func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
1242 } # Extended-shell func_split_short_opt implementation
1243
1244
1245 # func_split_long_opt longopt
1246 # Set func_split_long_opt_name and func_split_long_opt_arg shell
1247 # variables after splitting LONGOPT at the `=' sign.
1248 func_split_long_opt ()
1249 {
1250     func_split_long_opt_name=${1%%=*}
1251     func_split_long_opt_arg=${1#*=}
1252 } # Extended-shell func_split_long_opt implementation
1253
1254 exit_cmd=:
1255
1256
1257
1258
1259
1260 magic="%%%MAGIC variable%%%"
1261 magic_exe="%%%MAGIC EXE variable%%%"
1262
1263 # Global variables.
1264 nonopt=
1265 preserve_args=
1266 lo2o="s/\\.lo\$/.${objext}/"
1267 o2lo="s/\\.${objext}\$/.lo/"
1268 extracted_archives=
1269 extracted_serial=0
1270
1271 # If this variable is set in any of the actions, the command in it
1272 # will be execed at the end.  This prevents here-documents from being
1273 # left over by shells.
1274 exec_cmd=
1275
1276 # func_append var value
1277 # Append VALUE to the end of shell variable VAR.
1278 func_append ()
1279 {
1280     eval "${1}+=\${2}"
1281 } # Extended-shell func_append implementation
1282
1283 # func_append_quoted var value
1284 # Quote VALUE and append to the end of shell variable VAR, separated
1285 # by a space.
1286 func_append_quoted ()
1287 {
1288     func_quote_for_eval "${2}"
1289     eval "${1}+=\\ \$func_quote_for_eval_result"
1290 } # Extended-shell func_append_quoted implementation
1291
1292
1293 # func_arith arithmetic-term...
1294 func_arith ()
1295 {
1296     func_arith_result=$(( $* ))
1297 } # Extended-shell func_arith implementation
1298
1299
1300 # func_len string
1301 # STRING may not start with a hyphen.
1302 func_len ()
1303 {
1304     func_len_result=${#1}
1305 } # Extended-shell func_len implementation
1306
1307
1308 # func_lo2o object
1309 func_lo2o ()
1310 {
1311     case ${1} in
1312       *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
1313       *)    func_lo2o_result=${1} ;;
1314     esac
1315 } # Extended-shell func_lo2o implementation
1316
1317
1318 # func_xform libobj-or-source
1319 func_xform ()
1320 {
1321     func_xform_result=${1%.*}.lo
1322 } # Extended-shell func_xform implementation
1323
1324
1325 # func_fatal_configuration arg...
1326 # Echo program name prefixed message to standard error, followed by
1327 # a configuration failure hint, and exit.
1328 func_fatal_configuration ()
1329 {
1330     func_error ${1+"$@"}
1331     func_error "See the $PACKAGE documentation for more information."
1332     func_fatal_error "Fatal configuration error."
1333 }
1334
1335
1336 # func_config
1337 # Display the configuration for all the tags in this script.
1338 func_config ()
1339 {
1340     re_begincf='^# ### BEGIN LIBTOOL'
1341     re_endcf='^# ### END LIBTOOL'
1342
1343     # Default configuration.
1344     $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
1345
1346     # Now print the configurations for the tags.
1347     for tagname in $taglist; do
1348       $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
1349     done
1350
1351     exit $?
1352 }
1353
1354 # func_features
1355 # Display the features supported by this script.
1356 func_features ()
1357 {
1358     echo "host: $host"
1359     if test "$build_libtool_libs" = yes; then
1360       echo "enable shared libraries"
1361     else
1362       echo "disable shared libraries"
1363     fi
1364     if test "$build_old_libs" = yes; then
1365       echo "enable static libraries"
1366     else
1367       echo "disable static libraries"
1368     fi
1369
1370     exit $?
1371 }
1372
1373 # func_enable_tag tagname
1374 # Verify that TAGNAME is valid, and either flag an error and exit, or
1375 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
1376 # variable here.
1377 func_enable_tag ()
1378 {
1379   # Global variable:
1380   tagname="$1"
1381
1382   re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
1383   re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
1384   sed_extractcf="/$re_begincf/,/$re_endcf/p"
1385
1386   # Validate tagname.
1387   case $tagname in
1388     *[!-_A-Za-z0-9,/]*)
1389       func_fatal_error "invalid tag name: $tagname"
1390       ;;
1391   esac
1392
1393   # Don't test for the "default" C tag, as we know it's
1394   # there but not specially marked.
1395   case $tagname in
1396     CC) ;;
1397     *)
1398       if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
1399         taglist="$taglist $tagname"
1400
1401         # Evaluate the configuration.  Be careful to quote the path
1402         # and the sed script, to avoid splitting on whitespace, but
1403         # also don't use non-portable quotes within backquotes within
1404         # quotes we have to do it in 2 steps:
1405         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
1406         eval "$extractedcf"
1407       else
1408         func_error "ignoring unknown tag $tagname"
1409       fi
1410       ;;
1411   esac
1412 }
1413
1414 # func_check_version_match
1415 # Ensure that we are using m4 macros, and libtool script from the same
1416 # release of libtool.
1417 func_check_version_match ()
1418 {
1419   if test "$package_revision" != "$macro_revision"; then
1420     if test "$VERSION" != "$macro_version"; then
1421       if test -z "$macro_version"; then
1422         cat >&2 <<_LT_EOF
1423 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1424 $progname: definition of this LT_INIT comes from an older release.
1425 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1426 $progname: and run autoconf again.
1427 _LT_EOF
1428       else
1429         cat >&2 <<_LT_EOF
1430 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1431 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1432 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1433 $progname: and run autoconf again.
1434 _LT_EOF
1435       fi
1436     else
1437       cat >&2 <<_LT_EOF
1438 $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1439 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
1440 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
1441 $progname: of $PACKAGE $VERSION and run autoconf again.
1442 _LT_EOF
1443     fi
1444
1445     exit $EXIT_MISMATCH
1446   fi
1447 }
1448
1449
1450 # Shorthand for --mode=foo, only valid as the first argument
1451 case $1 in
1452 clean|clea|cle|cl)
1453   shift; set dummy --mode clean ${1+"$@"}; shift
1454   ;;
1455 compile|compil|compi|comp|com|co|c)
1456   shift; set dummy --mode compile ${1+"$@"}; shift
1457   ;;
1458 execute|execut|execu|exec|exe|ex|e)
1459   shift; set dummy --mode execute ${1+"$@"}; shift
1460   ;;
1461 finish|finis|fini|fin|fi|f)
1462   shift; set dummy --mode finish ${1+"$@"}; shift
1463   ;;
1464 install|instal|insta|inst|ins|in|i)
1465   shift; set dummy --mode install ${1+"$@"}; shift
1466   ;;
1467 link|lin|li|l)
1468   shift; set dummy --mode link ${1+"$@"}; shift
1469   ;;
1470 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1471   shift; set dummy --mode uninstall ${1+"$@"}; shift
1472   ;;
1473 esac
1474
1475
1476
1477 # Option defaults:
1478 opt_debug=:
1479 opt_dry_run=false
1480 opt_config=false
1481 opt_preserve_dup_deps=false
1482 opt_features=false
1483 opt_finish=false
1484 opt_help=false
1485 opt_help_all=false
1486 opt_silent=:
1487 opt_warning=:
1488 opt_verbose=:
1489 opt_silent=false
1490 opt_verbose=false
1491
1492
1493 # Parse options once, thoroughly.  This comes as soon as possible in the
1494 # script to make things like `--version' happen as quickly as we can.
1495 {
1496   # this just eases exit handling
1497   while test $# -gt 0; do
1498     opt="$1"
1499     shift
1500     case $opt in
1501       --debug|-x)       opt_debug='set -x'
1502                         func_echo "enabling shell trace mode"
1503                         $opt_debug
1504                         ;;
1505       --dry-run|--dryrun|-n)
1506                         opt_dry_run=:
1507                         ;;
1508       --config)
1509                         opt_config=:
1510 func_config
1511                         ;;
1512       --dlopen|-dlopen)
1513                         optarg="$1"
1514                         opt_dlopen="${opt_dlopen+$opt_dlopen
1515 }$optarg"
1516                         shift
1517                         ;;
1518       --preserve-dup-deps)
1519                         opt_preserve_dup_deps=:
1520                         ;;
1521       --features)
1522                         opt_features=:
1523 func_features
1524                         ;;
1525       --finish)
1526                         opt_finish=:
1527 set dummy --mode finish ${1+"$@"}; shift
1528                         ;;
1529       --help)
1530                         opt_help=:
1531                         ;;
1532       --help-all)
1533                         opt_help_all=:
1534 opt_help=': help-all'
1535                         ;;
1536       --mode)
1537                         test $# = 0 && func_missing_arg $opt && break
1538                         optarg="$1"
1539                         opt_mode="$optarg"
1540 case $optarg in
1541   # Valid mode arguments:
1542   clean|compile|execute|finish|install|link|relink|uninstall) ;;
1543
1544   # Catch anything else as an error
1545   *) func_error "invalid argument for $opt"
1546      exit_cmd=exit
1547      break
1548      ;;
1549 esac
1550                         shift
1551                         ;;
1552       --no-silent|--no-quiet)
1553                         opt_silent=false
1554 preserve_args+=" $opt"
1555                         ;;
1556       --no-warning|--no-warn)
1557                         opt_warning=false
1558 preserve_args+=" $opt"
1559                         ;;
1560       --no-verbose)
1561                         opt_verbose=false
1562 preserve_args+=" $opt"
1563                         ;;
1564       --silent|--quiet)
1565                         opt_silent=:
1566 preserve_args+=" $opt"
1567         opt_verbose=false
1568                         ;;
1569       --verbose|-v)
1570                         opt_verbose=:
1571 preserve_args+=" $opt"
1572 opt_silent=false
1573                         ;;
1574       --tag)
1575                         test $# = 0 && func_missing_arg $opt && break
1576                         optarg="$1"
1577                         opt_tag="$optarg"
1578 preserve_args+=" $opt $optarg"
1579 func_enable_tag "$optarg"
1580                         shift
1581                         ;;
1582
1583       -\?|-h)           func_usage                              ;;
1584       --help)           func_help                               ;;
1585       --version)        func_version                            ;;
1586
1587       # Separate optargs to long options:
1588       --*=*)
1589                         func_split_long_opt "$opt"
1590                         set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1591                         shift
1592                         ;;
1593
1594       # Separate non-argument short options:
1595       -\?*|-h*|-n*|-v*)
1596                         func_split_short_opt "$opt"
1597                         set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1598                         shift
1599                         ;;
1600
1601       --)               break                                   ;;
1602       -*)               func_fatal_help "unrecognized option \`$opt'" ;;
1603       *)                set dummy "$opt" ${1+"$@"};     shift; break  ;;
1604     esac
1605   done
1606
1607   # Validate options:
1608
1609   # save first non-option argument
1610   if test "$#" -gt 0; then
1611     nonopt="$opt"
1612     shift
1613   fi
1614
1615   # preserve --debug
1616   test "$opt_debug" = : || preserve_args+=" --debug"
1617
1618   case $host in
1619     *cygwin* | *mingw* | *pw32* | *cegcc*)
1620       # don't eliminate duplications in $postdeps and $predeps
1621       opt_duplicate_compiler_generated_deps=:
1622       ;;
1623     *)
1624       opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1625       ;;
1626   esac
1627
1628   $opt_help || {
1629     # Sanity checks first:
1630     func_check_version_match
1631
1632     if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1633       func_fatal_configuration "not configured to build any kind of library"
1634     fi
1635
1636     # Darwin sucks
1637     eval std_shrext=\"$shrext_cmds\"
1638
1639     # Only execute mode is allowed to have -dlopen flags.
1640     if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1641       func_error "unrecognized option \`-dlopen'"
1642       $ECHO "$help" 1>&2
1643       exit $EXIT_FAILURE
1644     fi
1645
1646     # Change the help message to a mode-specific one.
1647     generic_help="$help"
1648     help="Try \`$progname --help --mode=$opt_mode' for more information."
1649   }
1650
1651
1652   # Bail if the options were screwed
1653   $exit_cmd $EXIT_FAILURE
1654 }
1655
1656
1657
1658
1659 ## ----------- ##
1660 ##    Main.    ##
1661 ## ----------- ##
1662
1663 # func_lalib_p file
1664 # True iff FILE is a libtool `.la' library or `.lo' object file.
1665 # This function is only a basic sanity check; it will hardly flush out
1666 # determined imposters.
1667 func_lalib_p ()
1668 {
1669     test -f "$1" &&
1670       $SED -e 4q "$1" 2>/dev/null \
1671         | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1672 }
1673
1674 # func_lalib_unsafe_p file
1675 # True iff FILE is a libtool `.la' library or `.lo' object file.
1676 # This function implements the same check as func_lalib_p without
1677 # resorting to external programs.  To this end, it redirects stdin and
1678 # closes it afterwards, without saving the original file descriptor.
1679 # As a safety measure, use it only where a negative result would be
1680 # fatal anyway.  Works if `file' does not exist.
1681 func_lalib_unsafe_p ()
1682 {
1683     lalib_p=no
1684     if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1685         for lalib_p_l in 1 2 3 4
1686         do
1687             read lalib_p_line
1688             case "$lalib_p_line" in
1689                 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1690             esac
1691         done
1692         exec 0<&5 5<&-
1693     fi
1694     test "$lalib_p" = yes
1695 }
1696
1697 # func_ltwrapper_script_p file
1698 # True iff FILE is a libtool wrapper script
1699 # This function is only a basic sanity check; it will hardly flush out
1700 # determined imposters.
1701 func_ltwrapper_script_p ()
1702 {
1703     func_lalib_p "$1"
1704 }
1705
1706 # func_ltwrapper_executable_p file
1707 # True iff FILE is a libtool wrapper executable
1708 # This function is only a basic sanity check; it will hardly flush out
1709 # determined imposters.
1710 func_ltwrapper_executable_p ()
1711 {
1712     func_ltwrapper_exec_suffix=
1713     case $1 in
1714     *.exe) ;;
1715     *) func_ltwrapper_exec_suffix=.exe ;;
1716     esac
1717     $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1718 }
1719
1720 # func_ltwrapper_scriptname file
1721 # Assumes file is an ltwrapper_executable
1722 # uses $file to determine the appropriate filename for a
1723 # temporary ltwrapper_script.
1724 func_ltwrapper_scriptname ()
1725 {
1726     func_dirname_and_basename "$1" "" "."
1727     func_stripname '' '.exe' "$func_basename_result"
1728     func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1729 }
1730
1731 # func_ltwrapper_p file
1732 # True iff FILE is a libtool wrapper script or wrapper executable
1733 # This function is only a basic sanity check; it will hardly flush out
1734 # determined imposters.
1735 func_ltwrapper_p ()
1736 {
1737     func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1738 }
1739
1740
1741 # func_execute_cmds commands fail_cmd
1742 # Execute tilde-delimited COMMANDS.
1743 # If FAIL_CMD is given, eval that upon failure.
1744 # FAIL_CMD may read-access the current command in variable CMD!
1745 func_execute_cmds ()
1746 {
1747     $opt_debug
1748     save_ifs=$IFS; IFS='~'
1749     for cmd in $1; do
1750       IFS=$save_ifs
1751       eval cmd=\"$cmd\"
1752       func_show_eval "$cmd" "${2-:}"
1753     done
1754     IFS=$save_ifs
1755 }
1756
1757
1758 # func_source file
1759 # Source FILE, adding directory component if necessary.
1760 # Note that it is not necessary on cygwin/mingw to append a dot to
1761 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1762 # behavior happens only for exec(3), not for open(2)!  Also, sourcing
1763 # `FILE.' does not work on cygwin managed mounts.
1764 func_source ()
1765 {
1766     $opt_debug
1767     case $1 in
1768     */* | *\\*) . "$1" ;;
1769     *)          . "./$1" ;;
1770     esac
1771 }
1772
1773
1774 # func_resolve_sysroot PATH
1775 # Replace a leading = in PATH with a sysroot.  Store the result into
1776 # func_resolve_sysroot_result
1777 func_resolve_sysroot ()
1778 {
1779   func_resolve_sysroot_result=$1
1780   case $func_resolve_sysroot_result in
1781   =*)
1782     func_stripname '=' '' "$func_resolve_sysroot_result"
1783     func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1784     ;;
1785   esac
1786 }
1787
1788 # func_replace_sysroot PATH
1789 # If PATH begins with the sysroot, replace it with = and
1790 # store the result into func_replace_sysroot_result.
1791 func_replace_sysroot ()
1792 {
1793   case "$lt_sysroot:$1" in
1794   ?*:"$lt_sysroot"*)
1795     func_stripname "$lt_sysroot" '' "$1"
1796     func_replace_sysroot_result="=$func_stripname_result"
1797     ;;
1798   *)
1799     # Including no sysroot.
1800     func_replace_sysroot_result=$1
1801     ;;
1802   esac
1803 }
1804
1805 # func_infer_tag arg
1806 # Infer tagged configuration to use if any are available and
1807 # if one wasn't chosen via the "--tag" command line option.
1808 # Only attempt this if the compiler in the base compile
1809 # command doesn't match the default compiler.
1810 # arg is usually of the form 'gcc ...'
1811 func_infer_tag ()
1812 {
1813     $opt_debug
1814     if test -n "$available_tags" && test -z "$tagname"; then
1815       CC_quoted=
1816       for arg in $CC; do
1817         func_append_quoted CC_quoted "$arg"
1818       done
1819       CC_expanded=`func_echo_all $CC`
1820       CC_quoted_expanded=`func_echo_all $CC_quoted`
1821       case $@ in
1822       # Blanks in the command may have been stripped by the calling shell,
1823       # but not from the CC environment variable when configure was run.
1824       " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1825       " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1826       # Blanks at the start of $base_compile will cause this to fail
1827       # if we don't check for them as well.
1828       *)
1829         for z in $available_tags; do
1830           if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1831             # Evaluate the configuration.
1832             eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1833             CC_quoted=
1834             for arg in $CC; do
1835               # Double-quote args containing other shell metacharacters.
1836               func_append_quoted CC_quoted "$arg"
1837             done
1838             CC_expanded=`func_echo_all $CC`
1839             CC_quoted_expanded=`func_echo_all $CC_quoted`
1840             case "$@ " in
1841             " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1842             " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1843               # The compiler in the base compile command matches
1844               # the one in the tagged configuration.
1845               # Assume this is the tagged configuration we want.
1846               tagname=$z
1847               break
1848               ;;
1849             esac
1850           fi
1851         done
1852         # If $tagname still isn't set, then no tagged configuration
1853         # was found and let the user know that the "--tag" command
1854         # line option must be used.
1855         if test -z "$tagname"; then
1856           func_echo "unable to infer tagged configuration"
1857           func_fatal_error "specify a tag with \`--tag'"
1858 #       else
1859 #         func_verbose "using $tagname tagged configuration"
1860         fi
1861         ;;
1862       esac
1863     fi
1864 }
1865
1866
1867
1868 # func_write_libtool_object output_name pic_name nonpic_name
1869 # Create a libtool object file (analogous to a ".la" file),
1870 # but don't create it if we're doing a dry run.
1871 func_write_libtool_object ()
1872 {
1873     write_libobj=${1}
1874     if test "$build_libtool_libs" = yes; then
1875       write_lobj=\'${2}\'
1876     else
1877       write_lobj=none
1878     fi
1879
1880     if test "$build_old_libs" = yes; then
1881       write_oldobj=\'${3}\'
1882     else
1883       write_oldobj=none
1884     fi
1885
1886     $opt_dry_run || {
1887       cat >${write_libobj}T <<EOF
1888 # $write_libobj - a libtool object file
1889 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1890 #
1891 # Please DO NOT delete this file!
1892 # It is necessary for linking the library.
1893
1894 # Name of the PIC object.
1895 pic_object=$write_lobj
1896
1897 # Name of the non-PIC object
1898 non_pic_object=$write_oldobj
1899
1900 EOF
1901       $MV "${write_libobj}T" "${write_libobj}"
1902     }
1903 }
1904
1905
1906 ##################################################
1907 # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1908 ##################################################
1909
1910 # func_convert_core_file_wine_to_w32 ARG
1911 # Helper function used by file name conversion functions when $build is *nix,
1912 # and $host is mingw, cygwin, or some other w32 environment. Relies on a
1913 # correctly configured wine environment available, with the winepath program
1914 # in $build's $PATH.
1915 #
1916 # ARG is the $build file name to be converted to w32 format.
1917 # Result is available in $func_convert_core_file_wine_to_w32_result, and will
1918 # be empty on error (or when ARG is empty)
1919 func_convert_core_file_wine_to_w32 ()
1920 {
1921   $opt_debug
1922   func_convert_core_file_wine_to_w32_result="$1"
1923   if test -n "$1"; then
1924     # Unfortunately, winepath does not exit with a non-zero error code, so we
1925     # are forced to check the contents of stdout. On the other hand, if the
1926     # command is not found, the shell will set an exit code of 127 and print
1927     # *an error message* to stdout. So we must check for both error code of
1928     # zero AND non-empty stdout, which explains the odd construction:
1929     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1930     if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1931       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1932         $SED -e "$lt_sed_naive_backslashify"`
1933     else
1934       func_convert_core_file_wine_to_w32_result=
1935     fi
1936   fi
1937 }
1938 # end: func_convert_core_file_wine_to_w32
1939
1940
1941 # func_convert_core_path_wine_to_w32 ARG
1942 # Helper function used by path conversion functions when $build is *nix, and
1943 # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1944 # configured wine environment available, with the winepath program in $build's
1945 # $PATH. Assumes ARG has no leading or trailing path separator characters.
1946 #
1947 # ARG is path to be converted from $build format to win32.
1948 # Result is available in $func_convert_core_path_wine_to_w32_result.
1949 # Unconvertible file (directory) names in ARG are skipped; if no directory names
1950 # are convertible, then the result may be empty.
1951 func_convert_core_path_wine_to_w32 ()
1952 {
1953   $opt_debug
1954   # unfortunately, winepath doesn't convert paths, only file names
1955   func_convert_core_path_wine_to_w32_result=""
1956   if test -n "$1"; then
1957     oldIFS=$IFS
1958     IFS=:
1959     for func_convert_core_path_wine_to_w32_f in $1; do
1960       IFS=$oldIFS
1961       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1962       if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1963         if test -z "$func_convert_core_path_wine_to_w32_result"; then
1964           func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1965         else
1966           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1967         fi
1968       fi
1969     done
1970     IFS=$oldIFS
1971   fi
1972 }
1973 # end: func_convert_core_path_wine_to_w32
1974
1975
1976 # func_cygpath ARGS...
1977 # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1978 # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1979 # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1980 # (2), returns the Cygwin file name or path in func_cygpath_result (input
1981 # file name or path is assumed to be in w32 format, as previously converted
1982 # from $build's *nix or MSYS format). In case (3), returns the w32 file name
1983 # or path in func_cygpath_result (input file name or path is assumed to be in
1984 # Cygwin format). Returns an empty string on error.
1985 #
1986 # ARGS are passed to cygpath, with the last one being the file name or path to
1987 # be converted.
1988 #
1989 # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1990 # environment variable; do not put it in $PATH.
1991 func_cygpath ()
1992 {
1993   $opt_debug
1994   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1995     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1996     if test "$?" -ne 0; then
1997       # on failure, ensure result is empty
1998       func_cygpath_result=
1999     fi
2000   else
2001     func_cygpath_result=
2002     func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
2003   fi
2004 }
2005 #end: func_cygpath
2006
2007
2008 # func_convert_core_msys_to_w32 ARG
2009 # Convert file name or path ARG from MSYS format to w32 format.  Return
2010 # result in func_convert_core_msys_to_w32_result.
2011 func_convert_core_msys_to_w32 ()
2012 {
2013   $opt_debug
2014   # awkward: cmd appends spaces to result
2015   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
2016     $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
2017 }
2018 #end: func_convert_core_msys_to_w32
2019
2020
2021 # func_convert_file_check ARG1 ARG2
2022 # Verify that ARG1 (a file name in $build format) was converted to $host
2023 # format in ARG2. Otherwise, emit an error message, but continue (resetting
2024 # func_to_host_file_result to ARG1).
2025 func_convert_file_check ()
2026 {
2027   $opt_debug
2028   if test -z "$2" && test -n "$1" ; then
2029     func_error "Could not determine host file name corresponding to"
2030     func_error "  \`$1'"
2031     func_error "Continuing, but uninstalled executables may not work."
2032     # Fallback:
2033     func_to_host_file_result="$1"
2034   fi
2035 }
2036 # end func_convert_file_check
2037
2038
2039 # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
2040 # Verify that FROM_PATH (a path in $build format) was converted to $host
2041 # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
2042 # func_to_host_file_result to a simplistic fallback value (see below).
2043 func_convert_path_check ()
2044 {
2045   $opt_debug
2046   if test -z "$4" && test -n "$3"; then
2047     func_error "Could not determine the host path corresponding to"
2048     func_error "  \`$3'"
2049     func_error "Continuing, but uninstalled executables may not work."
2050     # Fallback.  This is a deliberately simplistic "conversion" and
2051     # should not be "improved".  See libtool.info.
2052     if test "x$1" != "x$2"; then
2053       lt_replace_pathsep_chars="s|$1|$2|g"
2054       func_to_host_path_result=`echo "$3" |
2055         $SED -e "$lt_replace_pathsep_chars"`
2056     else
2057       func_to_host_path_result="$3"
2058     fi
2059   fi
2060 }
2061 # end func_convert_path_check
2062
2063
2064 # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
2065 # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
2066 # and appending REPL if ORIG matches BACKPAT.
2067 func_convert_path_front_back_pathsep ()
2068 {
2069   $opt_debug
2070   case $4 in
2071   $1 ) func_to_host_path_result="$3$func_to_host_path_result"
2072     ;;
2073   esac
2074   case $4 in
2075   $2 ) func_to_host_path_result+="$3"
2076     ;;
2077   esac
2078 }
2079 # end func_convert_path_front_back_pathsep
2080
2081
2082 ##################################################
2083 # $build to $host FILE NAME CONVERSION FUNCTIONS #
2084 ##################################################
2085 # invoked via `$to_host_file_cmd ARG'
2086 #
2087 # In each case, ARG is the path to be converted from $build to $host format.
2088 # Result will be available in $func_to_host_file_result.
2089
2090
2091 # func_to_host_file ARG
2092 # Converts the file name ARG from $build format to $host format. Return result
2093 # in func_to_host_file_result.
2094 func_to_host_file ()
2095 {
2096   $opt_debug
2097   $to_host_file_cmd "$1"
2098 }
2099 # end func_to_host_file
2100
2101
2102 # func_to_tool_file ARG LAZY
2103 # converts the file name ARG from $build format to toolchain format. Return
2104 # result in func_to_tool_file_result.  If the conversion in use is listed
2105 # in (the comma separated) LAZY, no conversion takes place.
2106 func_to_tool_file ()
2107 {
2108   $opt_debug
2109   case ,$2, in
2110     *,"$to_tool_file_cmd",*)
2111       func_to_tool_file_result=$1
2112       ;;
2113     *)
2114       $to_tool_file_cmd "$1"
2115       func_to_tool_file_result=$func_to_host_file_result
2116       ;;
2117   esac
2118 }
2119 # end func_to_tool_file
2120
2121
2122 # func_convert_file_noop ARG
2123 # Copy ARG to func_to_host_file_result.
2124 func_convert_file_noop ()
2125 {
2126   func_to_host_file_result="$1"
2127 }
2128 # end func_convert_file_noop
2129
2130
2131 # func_convert_file_msys_to_w32 ARG
2132 # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
2133 # conversion to w32 is not available inside the cwrapper.  Returns result in
2134 # func_to_host_file_result.
2135 func_convert_file_msys_to_w32 ()
2136 {
2137   $opt_debug
2138   func_to_host_file_result="$1"
2139   if test -n "$1"; then
2140     func_convert_core_msys_to_w32 "$1"
2141     func_to_host_file_result="$func_convert_core_msys_to_w32_result"
2142   fi
2143   func_convert_file_check "$1" "$func_to_host_file_result"
2144 }
2145 # end func_convert_file_msys_to_w32
2146
2147
2148 # func_convert_file_cygwin_to_w32 ARG
2149 # Convert file name ARG from Cygwin to w32 format.  Returns result in
2150 # func_to_host_file_result.
2151 func_convert_file_cygwin_to_w32 ()
2152 {
2153   $opt_debug
2154   func_to_host_file_result="$1"
2155   if test -n "$1"; then
2156     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
2157     # LT_CYGPATH in this case.
2158     func_to_host_file_result=`cygpath -m "$1"`
2159   fi
2160   func_convert_file_check "$1" "$func_to_host_file_result"
2161 }
2162 # end func_convert_file_cygwin_to_w32
2163
2164
2165 # func_convert_file_nix_to_w32 ARG
2166 # Convert file name ARG from *nix to w32 format.  Requires a wine environment
2167 # and a working winepath. Returns result in func_to_host_file_result.
2168 func_convert_file_nix_to_w32 ()
2169 {
2170   $opt_debug
2171   func_to_host_file_result="$1"
2172   if test -n "$1"; then
2173     func_convert_core_file_wine_to_w32 "$1"
2174     func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
2175   fi
2176   func_convert_file_check "$1" "$func_to_host_file_result"
2177 }
2178 # end func_convert_file_nix_to_w32
2179
2180
2181 # func_convert_file_msys_to_cygwin ARG
2182 # Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
2183 # Returns result in func_to_host_file_result.
2184 func_convert_file_msys_to_cygwin ()
2185 {
2186   $opt_debug
2187   func_to_host_file_result="$1"
2188   if test -n "$1"; then
2189     func_convert_core_msys_to_w32 "$1"
2190     func_cygpath -u "$func_convert_core_msys_to_w32_result"
2191     func_to_host_file_result="$func_cygpath_result"
2192   fi
2193   func_convert_file_check "$1" "$func_to_host_file_result"
2194 }
2195 # end func_convert_file_msys_to_cygwin
2196
2197
2198 # func_convert_file_nix_to_cygwin ARG
2199 # Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
2200 # in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
2201 # in func_to_host_file_result.
2202 func_convert_file_nix_to_cygwin ()
2203 {
2204   $opt_debug
2205   func_to_host_file_result="$1"
2206   if test -n "$1"; then
2207     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
2208     func_convert_core_file_wine_to_w32 "$1"
2209     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
2210     func_to_host_file_result="$func_cygpath_result"
2211   fi
2212   func_convert_file_check "$1" "$func_to_host_file_result"
2213 }
2214 # end func_convert_file_nix_to_cygwin
2215
2216
2217 #############################################
2218 # $build to $host PATH CONVERSION FUNCTIONS #
2219 #############################################
2220 # invoked via `$to_host_path_cmd ARG'
2221 #
2222 # In each case, ARG is the path to be converted from $build to $host format.
2223 # The result will be available in $func_to_host_path_result.
2224 #
2225 # Path separators are also converted from $build format to $host format.  If
2226 # ARG begins or ends with a path separator character, it is preserved (but
2227 # converted to $host format) on output.
2228 #
2229 # All path conversion functions are named using the following convention:
2230 #   file name conversion function    : func_convert_file_X_to_Y ()
2231 #   path conversion function         : func_convert_path_X_to_Y ()
2232 # where, for any given $build/$host combination the 'X_to_Y' value is the
2233 # same.  If conversion functions are added for new $build/$host combinations,
2234 # the two new functions must follow this pattern, or func_init_to_host_path_cmd
2235 # will break.
2236
2237
2238 # func_init_to_host_path_cmd
2239 # Ensures that function "pointer" variable $to_host_path_cmd is set to the
2240 # appropriate value, based on the value of $to_host_file_cmd.
2241 to_host_path_cmd=
2242 func_init_to_host_path_cmd ()
2243 {
2244   $opt_debug
2245   if test -z "$to_host_path_cmd"; then
2246     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
2247     to_host_path_cmd="func_convert_path_${func_stripname_result}"
2248   fi
2249 }
2250
2251
2252 # func_to_host_path ARG
2253 # Converts the path ARG from $build format to $host format. Return result
2254 # in func_to_host_path_result.
2255 func_to_host_path ()
2256 {
2257   $opt_debug
2258   func_init_to_host_path_cmd
2259   $to_host_path_cmd "$1"
2260 }
2261 # end func_to_host_path
2262
2263
2264 # func_convert_path_noop ARG
2265 # Copy ARG to func_to_host_path_result.
2266 func_convert_path_noop ()
2267 {
2268   func_to_host_path_result="$1"
2269 }
2270 # end func_convert_path_noop
2271
2272
2273 # func_convert_path_msys_to_w32 ARG
2274 # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
2275 # conversion to w32 is not available inside the cwrapper.  Returns result in
2276 # func_to_host_path_result.
2277 func_convert_path_msys_to_w32 ()
2278 {
2279   $opt_debug
2280   func_to_host_path_result="$1"
2281   if test -n "$1"; then
2282     # Remove leading and trailing path separator characters from ARG.  MSYS
2283     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
2284     # and winepath ignores them completely.
2285     func_stripname : : "$1"
2286     func_to_host_path_tmp1=$func_stripname_result
2287     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
2288     func_to_host_path_result="$func_convert_core_msys_to_w32_result"
2289     func_convert_path_check : ";" \
2290       "$func_to_host_path_tmp1" "$func_to_host_path_result"
2291     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
2292   fi
2293 }
2294 # end func_convert_path_msys_to_w32
2295
2296
2297 # func_convert_path_cygwin_to_w32 ARG
2298 # Convert path ARG from Cygwin to w32 format.  Returns result in
2299 # func_to_host_file_result.
2300 func_convert_path_cygwin_to_w32 ()
2301 {
2302   $opt_debug
2303   func_to_host_path_result="$1"
2304   if test -n "$1"; then
2305     # See func_convert_path_msys_to_w32:
2306     func_stripname : : "$1"
2307     func_to_host_path_tmp1=$func_stripname_result
2308     func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
2309     func_convert_path_check : ";" \
2310       "$func_to_host_path_tmp1" "$func_to_host_path_result"
2311     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
2312   fi
2313 }
2314 # end func_convert_path_cygwin_to_w32
2315
2316
2317 # func_convert_path_nix_to_w32 ARG
2318 # Convert path ARG from *nix to w32 format.  Requires a wine environment and
2319 # a working winepath.  Returns result in func_to_host_file_result.
2320 func_convert_path_nix_to_w32 ()
2321 {
2322   $opt_debug
2323   func_to_host_path_result="$1"
2324   if test -n "$1"; then
2325     # See func_convert_path_msys_to_w32:
2326     func_stripname : : "$1"
2327     func_to_host_path_tmp1=$func_stripname_result
2328     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
2329     func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
2330     func_convert_path_check : ";" \
2331       "$func_to_host_path_tmp1" "$func_to_host_path_result"
2332     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
2333   fi
2334 }
2335 # end func_convert_path_nix_to_w32
2336
2337
2338 # func_convert_path_msys_to_cygwin ARG
2339 # Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
2340 # Returns result in func_to_host_file_result.
2341 func_convert_path_msys_to_cygwin ()
2342 {
2343   $opt_debug
2344   func_to_host_path_result="$1"
2345   if test -n "$1"; then
2346     # See func_convert_path_msys_to_w32:
2347     func_stripname : : "$1"
2348     func_to_host_path_tmp1=$func_stripname_result
2349     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
2350     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
2351     func_to_host_path_result="$func_cygpath_result"
2352     func_convert_path_check : : \
2353       "$func_to_host_path_tmp1" "$func_to_host_path_result"
2354     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
2355   fi
2356 }
2357 # end func_convert_path_msys_to_cygwin
2358
2359
2360 # func_convert_path_nix_to_cygwin ARG
2361 # Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
2362 # a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
2363 # func_to_host_file_result.
2364 func_convert_path_nix_to_cygwin ()
2365 {
2366   $opt_debug
2367   func_to_host_path_result="$1"
2368   if test -n "$1"; then
2369     # Remove leading and trailing path separator characters from
2370     # ARG. msys behavior is inconsistent here, cygpath turns them
2371     # into '.;' and ';.', and winepath ignores them completely.
2372     func_stripname : : "$1"
2373     func_to_host_path_tmp1=$func_stripname_result
2374     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
2375     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
2376     func_to_host_path_result="$func_cygpath_result"
2377     func_convert_path_check : : \
2378       "$func_to_host_path_tmp1" "$func_to_host_path_result"
2379     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
2380   fi
2381 }
2382 # end func_convert_path_nix_to_cygwin
2383
2384
2385 # func_mode_compile arg...
2386 func_mode_compile ()
2387 {
2388     $opt_debug
2389     # Get the compilation command and the source file.
2390     base_compile=
2391     srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
2392     suppress_opt=yes
2393     suppress_output=
2394     arg_mode=normal
2395     libobj=
2396     later=
2397     pie_flag=
2398
2399     for arg
2400     do
2401       case $arg_mode in
2402       arg  )
2403         # do not "continue".  Instead, add this to base_compile
2404         lastarg="$arg"
2405         arg_mode=normal
2406         ;;
2407
2408       target )
2409         libobj="$arg"
2410         arg_mode=normal
2411         continue
2412         ;;
2413
2414       normal )
2415         # Accept any command-line options.
2416         case $arg in
2417         -o)
2418           test -n "$libobj" && \
2419             func_fatal_error "you cannot specify \`-o' more than once"
2420           arg_mode=target
2421           continue
2422           ;;
2423
2424         -pie | -fpie | -fPIE)
2425           pie_flag+=" $arg"
2426           continue
2427           ;;
2428
2429         -shared | -static | -prefer-pic | -prefer-non-pic)
2430           later+=" $arg"
2431           continue
2432           ;;
2433
2434         -no-suppress)
2435           suppress_opt=no
2436           continue
2437           ;;
2438
2439         -Xcompiler)
2440           arg_mode=arg  #  the next one goes into the "base_compile" arg list
2441           continue      #  The current "srcfile" will either be retained or
2442           ;;            #  replaced later.  I would guess that would be a bug.
2443
2444         -Wc,*)
2445           func_stripname '-Wc,' '' "$arg"
2446           args=$func_stripname_result
2447           lastarg=
2448           save_ifs="$IFS"; IFS=','
2449           for arg in $args; do
2450             IFS="$save_ifs"
2451             func_append_quoted lastarg "$arg"
2452           done
2453           IFS="$save_ifs"
2454           func_stripname ' ' '' "$lastarg"
2455           lastarg=$func_stripname_result
2456
2457           # Add the arguments to base_compile.
2458           base_compile+=" $lastarg"
2459           continue
2460           ;;
2461
2462         *)
2463           # Accept the current argument as the source file.
2464           # The previous "srcfile" becomes the current argument.
2465           #
2466           lastarg="$srcfile"
2467           srcfile="$arg"
2468           ;;
2469         esac  #  case $arg
2470         ;;
2471       esac    #  case $arg_mode
2472
2473       # Aesthetically quote the previous argument.
2474       func_append_quoted base_compile "$lastarg"
2475     done # for arg
2476
2477     case $arg_mode in
2478     arg)
2479       func_fatal_error "you must specify an argument for -Xcompile"
2480       ;;
2481     target)
2482       func_fatal_error "you must specify a target with \`-o'"
2483       ;;
2484     *)
2485       # Get the name of the library object.
2486       test -z "$libobj" && {
2487         func_basename "$srcfile"
2488         libobj="$func_basename_result"
2489       }
2490       ;;
2491     esac
2492
2493     # Recognize several different file suffixes.
2494     # If the user specifies -o file.o, it is replaced with file.lo
2495     case $libobj in
2496     *.[cCFSifmso] | \
2497     *.ada | *.adb | *.ads | *.asm | \
2498     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2499     *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2500       func_xform "$libobj"
2501       libobj=$func_xform_result
2502       ;;
2503     esac
2504
2505     case $libobj in
2506     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2507     *)
2508       func_fatal_error "cannot determine name of library object from \`$libobj'"
2509       ;;
2510     esac
2511
2512     func_infer_tag $base_compile
2513
2514     for arg in $later; do
2515       case $arg in
2516       -shared)
2517         test "$build_libtool_libs" != yes && \
2518           func_fatal_configuration "can not build a shared library"
2519         build_old_libs=no
2520         continue
2521         ;;
2522
2523       -static)
2524         build_libtool_libs=no
2525         build_old_libs=yes
2526         continue
2527         ;;
2528
2529       -prefer-pic)
2530         pic_mode=yes
2531         continue
2532         ;;
2533
2534       -prefer-non-pic)
2535         pic_mode=no
2536         continue
2537         ;;
2538       esac
2539     done
2540
2541     func_quote_for_eval "$libobj"
2542     test "X$libobj" != "X$func_quote_for_eval_result" \
2543       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'    &()|`$[]' \
2544       && func_warning "libobj name \`$libobj' may not contain shell special characters."
2545     func_dirname_and_basename "$obj" "/" ""
2546     objname="$func_basename_result"
2547     xdir="$func_dirname_result"
2548     lobj=${xdir}$objdir/$objname
2549
2550     test -z "$base_compile" && \
2551       func_fatal_help "you must specify a compilation command"
2552
2553     # Delete any leftover library objects.
2554     if test "$build_old_libs" = yes; then
2555       removelist="$obj $lobj $libobj ${libobj}T"
2556     else
2557       removelist="$lobj $libobj ${libobj}T"
2558     fi
2559
2560     # On Cygwin there's no "real" PIC flag so we must build both object types
2561     case $host_os in
2562     cygwin* | mingw* | pw32* | os2* | cegcc*)
2563       pic_mode=default
2564       ;;
2565     esac
2566     if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2567       # non-PIC code in shared libraries is not supported
2568       pic_mode=default
2569     fi
2570
2571     # Calculate the filename of the output object if compiler does
2572     # not support -o with -c
2573     if test "$compiler_c_o" = no; then
2574       output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2575       lockfile="$output_obj.lock"
2576     else
2577       output_obj=
2578       need_locks=no
2579       lockfile=
2580     fi
2581
2582     # Lock this critical section if it is needed
2583     # We use this script file to make the link, it avoids creating a new file
2584     if test "$need_locks" = yes; then
2585       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2586         func_echo "Waiting for $lockfile to be removed"
2587         sleep 2
2588       done
2589     elif test "$need_locks" = warn; then
2590       if test -f "$lockfile"; then
2591         $ECHO "\
2592 *** ERROR, $lockfile exists and contains:
2593 `cat $lockfile 2>/dev/null`
2594
2595 This indicates that another process is trying to use the same
2596 temporary object file, and libtool could not work around it because
2597 your compiler does not support \`-c' and \`-o' together.  If you
2598 repeat this compilation, it may succeed, by chance, but you had better
2599 avoid parallel builds (make -j) in this platform, or get a better
2600 compiler."
2601
2602         $opt_dry_run || $RM $removelist
2603         exit $EXIT_FAILURE
2604       fi
2605       removelist+=" $output_obj"
2606       $ECHO "$srcfile" > "$lockfile"
2607     fi
2608
2609     $opt_dry_run || $RM $removelist
2610     removelist+=" $lockfile"
2611     trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2612
2613     func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2614     srcfile=$func_to_tool_file_result
2615     func_quote_for_eval "$srcfile"
2616     qsrcfile=$func_quote_for_eval_result
2617
2618     # Only build a PIC object if we are building libtool libraries.
2619     if test "$build_libtool_libs" = yes; then
2620       # Without this assignment, base_compile gets emptied.
2621       fbsd_hideous_sh_bug=$base_compile
2622
2623       if test "$pic_mode" != no; then
2624         command="$base_compile $qsrcfile $pic_flag"
2625       else
2626         # Don't build PIC code
2627         command="$base_compile $qsrcfile"
2628       fi
2629
2630       func_mkdir_p "$xdir$objdir"
2631
2632       if test -z "$output_obj"; then
2633         # Place PIC objects in $objdir
2634         command+=" -o $lobj"
2635       fi
2636
2637       func_show_eval_locale "$command"  \
2638           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2639
2640       if test "$need_locks" = warn &&
2641          test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2642         $ECHO "\
2643 *** ERROR, $lockfile contains:
2644 `cat $lockfile 2>/dev/null`
2645
2646 but it should contain:
2647 $srcfile
2648
2649 This indicates that another process is trying to use the same
2650 temporary object file, and libtool could not work around it because
2651 your compiler does not support \`-c' and \`-o' together.  If you
2652 repeat this compilation, it may succeed, by chance, but you had better
2653 avoid parallel builds (make -j) in this platform, or get a better
2654 compiler."
2655
2656         $opt_dry_run || $RM $removelist
2657         exit $EXIT_FAILURE
2658       fi
2659
2660       # Just move the object if needed, then go on to compile the next one
2661       if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2662         func_show_eval '$MV "$output_obj" "$lobj"' \
2663           'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2664       fi
2665
2666       # Allow error messages only from the first compilation.
2667       if test "$suppress_opt" = yes; then
2668         suppress_output=' >/dev/null 2>&1'
2669       fi
2670     fi
2671
2672     # Only build a position-dependent object if we build old libraries.
2673     if test "$build_old_libs" = yes; then
2674       if test "$pic_mode" != yes; then
2675         # Don't build PIC code
2676         command="$base_compile $qsrcfile$pie_flag"
2677       else
2678         command="$base_compile $qsrcfile $pic_flag"
2679       fi
2680       if test "$compiler_c_o" = yes; then
2681         command+=" -o $obj"
2682       fi
2683
2684       # Suppress compiler output if we already did a PIC compilation.
2685       command+="$suppress_output"
2686       func_show_eval_locale "$command" \
2687         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2688
2689       if test "$need_locks" = warn &&
2690          test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2691         $ECHO "\
2692 *** ERROR, $lockfile contains:
2693 `cat $lockfile 2>/dev/null`
2694
2695 but it should contain:
2696 $srcfile
2697
2698 This indicates that another process is trying to use the same
2699 temporary object file, and libtool could not work around it because
2700 your compiler does not support \`-c' and \`-o' together.  If you
2701 repeat this compilation, it may succeed, by chance, but you had better
2702 avoid parallel builds (make -j) in this platform, or get a better
2703 compiler."
2704
2705         $opt_dry_run || $RM $removelist
2706         exit $EXIT_FAILURE
2707       fi
2708
2709       # Just move the object if needed
2710       if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2711         func_show_eval '$MV "$output_obj" "$obj"' \
2712           'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2713       fi
2714     fi
2715
2716     $opt_dry_run || {
2717       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2718
2719       # Unlock the critical section if it was locked
2720       if test "$need_locks" != no; then
2721         removelist=$lockfile
2722         $RM "$lockfile"
2723       fi
2724     }
2725
2726     exit $EXIT_SUCCESS
2727 }
2728
2729 $opt_help || {
2730   test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2731 }
2732
2733 func_mode_help ()
2734 {
2735     # We need to display help for each of the modes.
2736     case $opt_mode in
2737       "")
2738         # Generic help is extracted from the usage comments
2739         # at the start of this file.
2740         func_help
2741         ;;
2742
2743       clean)
2744         $ECHO \
2745 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2746
2747 Remove files from the build directory.
2748
2749 RM is the name of the program to use to delete files associated with each FILE
2750 (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2751 to RM.
2752
2753 If FILE is a libtool library, object or program, all the files associated
2754 with it are deleted. Otherwise, only FILE itself is deleted using RM."
2755         ;;
2756
2757       compile)
2758       $ECHO \
2759 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2760
2761 Compile a source file into a libtool library object.
2762
2763 This mode accepts the following additional options:
2764
2765   -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2766   -no-suppress      do not suppress compiler output for multiple passes
2767   -prefer-pic       try to build PIC objects only
2768   -prefer-non-pic   try to build non-PIC objects only
2769   -shared           do not build a \`.o' file suitable for static linking
2770   -static           only build a \`.o' file suitable for static linking
2771   -Wc,FLAG          pass FLAG directly to the compiler
2772
2773 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2774 from the given SOURCEFILE.
2775
2776 The output file name is determined by removing the directory component from
2777 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2778 library object suffix, \`.lo'."
2779         ;;
2780
2781       execute)
2782         $ECHO \
2783 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2784
2785 Automatically set library path, then run a program.
2786
2787 This mode accepts the following additional options:
2788
2789   -dlopen FILE      add the directory containing FILE to the library path
2790
2791 This mode sets the library path environment variable according to \`-dlopen'
2792 flags.
2793
2794 If any of the ARGS are libtool executable wrappers, then they are translated
2795 into their corresponding uninstalled binary, and any of their required library
2796 directories are added to the library path.
2797
2798 Then, COMMAND is executed, with ARGS as arguments."
2799         ;;
2800
2801       finish)
2802         $ECHO \
2803 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2804
2805 Complete the installation of libtool libraries.
2806
2807 Each LIBDIR is a directory that contains libtool libraries.
2808
2809 The commands that this mode executes may require superuser privileges.  Use
2810 the \`--dry-run' option if you just want to see what would be executed."
2811         ;;
2812
2813       install)
2814         $ECHO \
2815 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2816
2817 Install executables or libraries.
2818
2819 INSTALL-COMMAND is the installation command.  The first component should be
2820 either the \`install' or \`cp' program.
2821
2822 The following components of INSTALL-COMMAND are treated specially:
2823
2824   -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2825
2826 The rest of the components are interpreted as arguments to that command (only
2827 BSD-compatible install options are recognized)."
2828         ;;
2829
2830       link)
2831         $ECHO \
2832 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2833
2834 Link object files or libraries together to form another library, or to
2835 create an executable program.
2836
2837 LINK-COMMAND is a command using the C compiler that you would use to create
2838 a program from several object files.
2839
2840 The following components of LINK-COMMAND are treated specially:
2841
2842   -all-static       do not do any dynamic linking at all
2843   -avoid-version    do not add a version suffix if possible
2844   -bindir BINDIR    specify path to binaries directory (for systems where
2845                     libraries must be found in the PATH setting at runtime)
2846   -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2847   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2848   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2849   -export-symbols SYMFILE
2850                     try to export only the symbols listed in SYMFILE
2851   -export-symbols-regex REGEX
2852                     try to export only the symbols matching REGEX
2853   -LLIBDIR          search LIBDIR for required installed libraries
2854   -lNAME            OUTPUT-FILE requires the installed library libNAME
2855   -module           build a library that can dlopened
2856   -no-fast-install  disable the fast-install mode
2857   -no-install       link a not-installable executable
2858   -no-undefined     declare that a library does not refer to external symbols
2859   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2860   -objectlist FILE  Use a list of object files found in FILE to specify objects
2861   -precious-files-regex REGEX
2862                     don't remove output files matching REGEX
2863   -release RELEASE  specify package release information
2864   -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2865   -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2866   -shared           only do dynamic linking of libtool libraries
2867   -shrext SUFFIX    override the standard shared library file extension
2868   -static           do not do any dynamic linking of uninstalled libtool libraries
2869   -static-libtool-libs
2870                     do not do any dynamic linking of libtool libraries
2871   -version-info CURRENT[:REVISION[:AGE]]
2872                     specify library version info [each variable defaults to 0]
2873   -weak LIBNAME     declare that the target provides the LIBNAME interface
2874   -Wc,FLAG
2875   -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2876   -Wl,FLAG
2877   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2878   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2879
2880 All other options (arguments beginning with \`-') are ignored.
2881
2882 Every other argument is treated as a filename.  Files ending in \`.la' are
2883 treated as uninstalled libtool libraries, other files are standard or library
2884 object files.
2885
2886 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2887 only library objects (\`.lo' files) may be specified, and \`-rpath' is
2888 required, except when creating a convenience library.
2889
2890 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2891 using \`ar' and \`ranlib', or on Windows using \`lib'.
2892
2893 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2894 is created, otherwise an executable program is created."
2895         ;;
2896
2897       uninstall)
2898         $ECHO \
2899 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2900
2901 Remove libraries from an installation directory.
2902
2903 RM is the name of the program to use to delete files associated with each FILE
2904 (typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2905 to RM.
2906
2907 If FILE is a libtool library, all the files associated with it are deleted.
2908 Otherwise, only FILE itself is deleted using RM."
2909         ;;
2910
2911       *)
2912         func_fatal_help "invalid operation mode \`$opt_mode'"
2913         ;;
2914     esac
2915
2916     echo
2917     $ECHO "Try \`$progname --help' for more information about other modes."
2918 }
2919
2920 # Now that we've collected a possible --mode arg, show help if necessary
2921 if $opt_help; then
2922   if test "$opt_help" = :; then
2923     func_mode_help
2924   else
2925     {
2926       func_help noexit
2927       for opt_mode in compile link execute install finish uninstall clean; do
2928         func_mode_help
2929       done
2930     } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2931     {
2932       func_help noexit
2933       for opt_mode in compile link execute install finish uninstall clean; do
2934         echo
2935         func_mode_help
2936       done
2937     } |
2938     sed '1d
2939       /^When reporting/,/^Report/{
2940         H
2941         d
2942       }
2943       $x
2944       /information about other modes/d
2945       /more detailed .*MODE/d
2946       s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2947   fi
2948   exit $?
2949 fi
2950
2951
2952 # func_mode_execute arg...
2953 func_mode_execute ()
2954 {
2955     $opt_debug
2956     # The first argument is the command name.
2957     cmd="$nonopt"
2958     test -z "$cmd" && \
2959       func_fatal_help "you must specify a COMMAND"
2960
2961     # Handle -dlopen flags immediately.
2962     for file in $opt_dlopen; do
2963       test -f "$file" \
2964         || func_fatal_help "\`$file' is not a file"
2965
2966       dir=
2967       case $file in
2968       *.la)
2969         func_resolve_sysroot "$file"
2970         file=$func_resolve_sysroot_result
2971
2972         # Check to see that this really is a libtool archive.
2973         func_lalib_unsafe_p "$file" \
2974           || func_fatal_help "\`$lib' is not a valid libtool archive"
2975
2976         # Read the libtool library.
2977         dlname=
2978         library_names=
2979         func_source "$file"
2980
2981         # Skip this library if it cannot be dlopened.
2982         if test -z "$dlname"; then
2983           # Warn if it was a shared library.
2984           test -n "$library_names" && \
2985             func_warning "\`$file' was not linked with \`-export-dynamic'"
2986           continue
2987         fi
2988
2989         func_dirname "$file" "" "."
2990         dir="$func_dirname_result"
2991
2992         if test -f "$dir/$objdir/$dlname"; then
2993           dir+="/$objdir"
2994         else
2995           if test ! -f "$dir/$dlname"; then
2996             func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2997           fi
2998         fi
2999         ;;
3000
3001       *.lo)
3002         # Just add the directory containing the .lo file.
3003         func_dirname "$file" "" "."
3004         dir="$func_dirname_result"
3005         ;;
3006
3007       *)
3008         func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
3009         continue
3010         ;;
3011       esac
3012
3013       # Get the absolute pathname.
3014       absdir=`cd "$dir" && pwd`
3015       test -n "$absdir" && dir="$absdir"
3016
3017       # Now add the directory to shlibpath_var.
3018       if eval "test -z \"\$$shlibpath_var\""; then
3019         eval "$shlibpath_var=\"\$dir\""
3020       else
3021         eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3022       fi
3023     done
3024
3025     # This variable tells wrapper scripts just to set shlibpath_var
3026     # rather than running their programs.
3027     libtool_execute_magic="$magic"
3028
3029     # Check if any of the arguments is a wrapper script.
3030     args=
3031     for file
3032     do
3033       case $file in
3034       -* | *.la | *.lo ) ;;
3035       *)
3036         # Do a test to see if this is really a libtool program.
3037         if func_ltwrapper_script_p "$file"; then
3038           func_source "$file"
3039           # Transform arg to wrapped name.
3040           file="$progdir/$program"
3041         elif func_ltwrapper_executable_p "$file"; then
3042           func_ltwrapper_scriptname "$file"
3043           func_source "$func_ltwrapper_scriptname_result"
3044           # Transform arg to wrapped name.
3045           file="$progdir/$program"
3046         fi
3047         ;;
3048       esac
3049       # Quote arguments (to preserve shell metacharacters).
3050       func_append_quoted args "$file"
3051     done
3052
3053     if test "X$opt_dry_run" = Xfalse; then
3054       if test -n "$shlibpath_var"; then
3055         # Export the shlibpath_var.
3056         eval "export $shlibpath_var"
3057       fi
3058
3059       # Restore saved environment variables
3060       for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
3061       do
3062         eval "if test \"\${save_$lt_var+set}\" = set; then
3063                 $lt_var=\$save_$lt_var; export $lt_var
3064               else
3065                 $lt_unset $lt_var
3066               fi"
3067       done
3068
3069       # Now prepare to actually exec the command.
3070       exec_cmd="\$cmd$args"
3071     else
3072       # Display what would be done.
3073       if test -n "$shlibpath_var"; then
3074         eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
3075         echo "export $shlibpath_var"
3076       fi
3077       $ECHO "$cmd$args"
3078       exit $EXIT_SUCCESS
3079     fi
3080 }
3081
3082 test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
3083
3084
3085 # func_mode_finish arg...
3086 func_mode_finish ()
3087 {
3088     $opt_debug
3089     libs=
3090     libdirs=
3091     admincmds=
3092
3093     for opt in "$nonopt" ${1+"$@"}
3094     do
3095       if test -d "$opt"; then
3096         libdirs+=" $opt"
3097
3098       elif test -f "$opt"; then
3099         if func_lalib_unsafe_p "$opt"; then
3100           libs+=" $opt"
3101         else
3102           func_warning "\`$opt' is not a valid libtool archive"
3103         fi
3104
3105       else
3106         func_fatal_error "invalid argument \`$opt'"
3107       fi
3108     done
3109
3110     if test -n "$libs"; then
3111       if test -n "$lt_sysroot"; then
3112         sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
3113         sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
3114       else
3115         sysroot_cmd=
3116       fi
3117
3118       # Remove sysroot references
3119       if $opt_dry_run; then
3120         for lib in $libs; do
3121           echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
3122         done
3123       else
3124         tmpdir=`func_mktempdir`
3125         for lib in $libs; do
3126           sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
3127             > $tmpdir/tmp-la
3128           mv -f $tmpdir/tmp-la $lib
3129         done
3130         ${RM}r "$tmpdir"
3131       fi
3132     fi
3133
3134     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3135       for libdir in $libdirs; do
3136         if test -n "$finish_cmds"; then
3137           # Do each command in the finish commands.
3138           func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
3139 '"$cmd"'"'
3140         fi
3141         if test -n "$finish_eval"; then
3142           # Do the single finish_eval.
3143           eval cmds=\"$finish_eval\"
3144           $opt_dry_run || eval "$cmds" || admincmds+="
3145        $cmds"
3146         fi
3147       done
3148     fi
3149
3150     # Exit here if they wanted silent mode.
3151     $opt_silent && exit $EXIT_SUCCESS
3152
3153     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3154       echo "----------------------------------------------------------------------"
3155       echo "Libraries have been installed in:"
3156       for libdir in $libdirs; do
3157         $ECHO "   $libdir"
3158       done
3159       echo
3160       echo "If you ever happen to want to link against installed libraries"
3161       echo "in a given directory, LIBDIR, you must either use libtool, and"
3162       echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
3163       echo "flag during linking and do at least one of the following:"
3164       if test -n "$shlibpath_var"; then
3165         echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
3166         echo "     during execution"
3167       fi
3168       if test -n "$runpath_var"; then
3169         echo "   - add LIBDIR to the \`$runpath_var' environment variable"
3170         echo "     during linking"
3171       fi
3172       if test -n "$hardcode_libdir_flag_spec"; then
3173         libdir=LIBDIR
3174         eval flag=\"$hardcode_libdir_flag_spec\"
3175
3176         $ECHO "   - use the \`$flag' linker flag"
3177       fi
3178       if test -n "$admincmds"; then
3179         $ECHO "   - have your system administrator run these commands:$admincmds"
3180       fi
3181       if test -f /etc/ld.so.conf; then
3182         echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3183       fi
3184       echo
3185
3186       echo "See any operating system documentation about shared libraries for"
3187       case $host in
3188         solaris2.[6789]|solaris2.1[0-9])
3189           echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
3190           echo "pages."
3191           ;;
3192         *)
3193           echo "more information, such as the ld(1) and ld.so(8) manual pages."
3194           ;;
3195       esac
3196       echo "----------------------------------------------------------------------"
3197     fi
3198     exit $EXIT_SUCCESS
3199 }
3200
3201 test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
3202
3203
3204 # func_mode_install arg...
3205 func_mode_install ()
3206 {
3207     $opt_debug
3208     # There may be an optional sh(1) argument at the beginning of
3209     # install_prog (especially on Windows NT).
3210     if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
3211        # Allow the use of GNU shtool's install command.
3212        case $nonopt in *shtool*) :;; *) false;; esac; then
3213       # Aesthetically quote it.
3214       func_quote_for_eval "$nonopt"
3215       install_prog="$func_quote_for_eval_result "
3216       arg=$1
3217       shift
3218     else
3219       install_prog=
3220       arg=$nonopt
3221     fi
3222
3223     # The real first argument should be the name of the installation program.
3224     # Aesthetically quote it.
3225     func_quote_for_eval "$arg"
3226     install_prog+="$func_quote_for_eval_result"
3227     install_shared_prog=$install_prog
3228     case " $install_prog " in
3229       *[\\\ /]cp\ *) install_cp=: ;;
3230       *) install_cp=false ;;
3231     esac
3232
3233     # We need to accept at least all the BSD install flags.
3234     dest=
3235     files=
3236     opts=
3237     prev=
3238     install_type=
3239     isdir=no
3240     stripme=
3241     no_mode=:
3242     for arg
3243     do
3244       arg2=
3245       if test -n "$dest"; then
3246         files+=" $dest"
3247         dest=$arg
3248         continue
3249       fi
3250
3251       case $arg in
3252       -d) isdir=yes ;;
3253       -f)
3254         if $install_cp; then :; else
3255           prev=$arg
3256         fi
3257         ;;
3258       -g | -m | -o)
3259         prev=$arg
3260         ;;
3261       -s)
3262         stripme=" -s"
3263         continue
3264         ;;
3265       -*)
3266         ;;
3267       *)
3268         # If the previous option needed an argument, then skip it.
3269         if test -n "$prev"; then
3270           if test "x$prev" = x-m && test -n "$install_override_mode"; then
3271             arg2=$install_override_mode
3272             no_mode=false
3273           fi
3274           prev=
3275         else
3276           dest=$arg
3277           continue
3278         fi
3279         ;;
3280       esac
3281
3282       # Aesthetically quote the argument.
3283       func_quote_for_eval "$arg"
3284       install_prog+=" $func_quote_for_eval_result"
3285       if test -n "$arg2"; then
3286         func_quote_for_eval "$arg2"
3287       fi
3288       install_shared_prog+=" $func_quote_for_eval_result"
3289     done
3290
3291     test -z "$install_prog" && \
3292       func_fatal_help "you must specify an install program"
3293
3294     test -n "$prev" && \
3295       func_fatal_help "the \`$prev' option requires an argument"
3296
3297     if test -n "$install_override_mode" && $no_mode; then
3298       if $install_cp; then :; else
3299         func_quote_for_eval "$install_override_mode"
3300         install_shared_prog+=" -m $func_quote_for_eval_result"
3301       fi
3302     fi
3303
3304     if test -z "$files"; then
3305       if test -z "$dest"; then
3306         func_fatal_help "no file or destination specified"
3307       else
3308         func_fatal_help "you must specify a destination"
3309       fi
3310     fi
3311
3312     # Strip any trailing slash from the destination.
3313     func_stripname '' '/' "$dest"
3314     dest=$func_stripname_result
3315
3316     # Check to see that the destination is a directory.
3317     test -d "$dest" && isdir=yes
3318     if test "$isdir" = yes; then
3319       destdir="$dest"
3320       destname=
3321     else
3322       func_dirname_and_basename "$dest" "" "."
3323       destdir="$func_dirname_result"
3324       destname="$func_basename_result"
3325
3326       # Not a directory, so check to see that there is only one file specified.
3327       set dummy $files; shift
3328       test "$#" -gt 1 && \
3329         func_fatal_help "\`$dest' is not a directory"
3330     fi
3331     case $destdir in
3332     [\\/]* | [A-Za-z]:[\\/]*) ;;
3333     *)
3334       for file in $files; do
3335         case $file in
3336         *.lo) ;;
3337         *)
3338           func_fatal_help "\`$destdir' must be an absolute directory name"
3339           ;;
3340         esac
3341       done
3342       ;;
3343     esac
3344
3345     # This variable tells wrapper scripts just to set variables rather
3346     # than running their programs.
3347     libtool_install_magic="$magic"
3348
3349     staticlibs=
3350     future_libdirs=
3351     current_libdirs=
3352     for file in $files; do
3353
3354       # Do each installation.
3355       case $file in
3356       *.$libext)
3357         # Do the static libraries later.
3358         staticlibs+=" $file"
3359         ;;
3360
3361       *.la)
3362         func_resolve_sysroot "$file"
3363         file=$func_resolve_sysroot_result
3364
3365         # Check to see that this really is a libtool archive.
3366         func_lalib_unsafe_p "$file" \
3367           || func_fatal_help "\`$file' is not a valid libtool archive"
3368
3369         library_names=
3370         old_library=
3371         relink_command=
3372         func_source "$file"
3373
3374         # Add the libdir to current_libdirs if it is the destination.
3375         if test "X$destdir" = "X$libdir"; then
3376           case "$current_libdirs " in
3377           *" $libdir "*) ;;
3378           *) current_libdirs+=" $libdir" ;;
3379           esac
3380         else
3381           # Note the libdir as a future libdir.
3382           case "$future_libdirs " in
3383           *" $libdir "*) ;;
3384           *) future_libdirs+=" $libdir" ;;
3385           esac
3386         fi
3387
3388         func_dirname "$file" "/" ""
3389         dir="$func_dirname_result"
3390         dir+="$objdir"
3391
3392         if test -n "$relink_command"; then
3393           # Determine the prefix the user has applied to our future dir.
3394           inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
3395
3396           # Don't allow the user to place us outside of our expected
3397           # location b/c this prevents finding dependent libraries that
3398           # are installed to the same prefix.
3399           # At present, this check doesn't affect windows .dll's that
3400           # are installed into $libdir/../bin (currently, that works fine)
3401           # but it's something to keep an eye on.
3402           test "$inst_prefix_dir" = "$destdir" && \
3403             func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
3404
3405           if test -n "$inst_prefix_dir"; then
3406             # Stick the inst_prefix_dir data into the link command.
3407             relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
3408           else
3409             relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
3410           fi
3411
3412           func_warning "relinking \`$file'"
3413           func_show_eval "$relink_command" \
3414             'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
3415         fi
3416
3417         # See the names of the shared library.
3418         set dummy $library_names; shift
3419         if test -n "$1"; then
3420           realname="$1"
3421           shift
3422
3423           srcname="$realname"
3424           test -n "$relink_command" && srcname="$realname"T
3425
3426           # Install the shared library and build the symlinks.
3427           func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
3428               'exit $?'
3429           tstripme="$stripme"
3430           case $host_os in
3431           cygwin* | mingw* | pw32* | cegcc*)
3432             case $realname in
3433             *.dll.a)
3434               tstripme=""
3435               ;;
3436             esac
3437             ;;
3438           esac
3439           if test -n "$tstripme" && test -n "$striplib"; then
3440             func_show_eval "$striplib $destdir/$realname" 'exit $?'
3441           fi
3442
3443           if test "$#" -gt 0; then
3444             # Delete the old symlinks, and create new ones.
3445             # Try `ln -sf' first, because the `ln' binary might depend on
3446             # the symlink we replace!  Solaris /bin/ln does not understand -f,
3447             # so we also need to try rm && ln -s.
3448             for linkname
3449             do
3450               test "$linkname" != "$realname" \
3451                 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3452             done
3453           fi
3454
3455           # Do each command in the postinstall commands.
3456           lib="$destdir/$realname"
3457           func_execute_cmds "$postinstall_cmds" 'exit $?'
3458         fi
3459
3460         # Install the pseudo-library for information purposes.
3461         func_basename "$file"
3462         name="$func_basename_result"
3463         instname="$dir/$name"i
3464         func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3465
3466         # Maybe install the static library, too.
3467         test -n "$old_library" && staticlibs+=" $dir/$old_library"
3468         ;;
3469
3470       *.lo)
3471         # Install (i.e. copy) a libtool object.
3472
3473         # Figure out destination file name, if it wasn't already specified.
3474         if test -n "$destname"; then
3475           destfile="$destdir/$destname"
3476         else
3477           func_basename "$file"
3478           destfile="$func_basename_result"
3479           destfile="$destdir/$destfile"
3480         fi
3481
3482         # Deduce the name of the destination old-style object file.
3483         case $destfile in
3484         *.lo)
3485           func_lo2o "$destfile"
3486           staticdest=$func_lo2o_result
3487           ;;
3488         *.$objext)
3489           staticdest="$destfile"
3490           destfile=
3491           ;;
3492         *)
3493           func_fatal_help "cannot copy a libtool object to \`$destfile'"
3494           ;;
3495         esac
3496
3497         # Install the libtool object if requested.
3498         test -n "$destfile" && \
3499           func_show_eval "$install_prog $file $destfile" 'exit $?'
3500
3501         # Install the old object if enabled.
3502         if test "$build_old_libs" = yes; then
3503           # Deduce the name of the old-style object file.
3504           func_lo2o "$file"
3505           staticobj=$func_lo2o_result
3506           func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3507         fi
3508         exit $EXIT_SUCCESS
3509         ;;
3510
3511       *)
3512         # Figure out destination file name, if it wasn't already specified.
3513         if test -n "$destname"; then
3514           destfile="$destdir/$destname"
3515         else
3516           func_basename "$file"
3517           destfile="$func_basename_result"
3518           destfile="$destdir/$destfile"
3519         fi
3520
3521         # If the file is missing, and there is a .exe on the end, strip it
3522         # because it is most likely a libtool script we actually want to
3523         # install
3524         stripped_ext=""
3525         case $file in
3526           *.exe)
3527             if test ! -f "$file"; then
3528               func_stripname '' '.exe' "$file"
3529               file=$func_stripname_result
3530               stripped_ext=".exe"
3531             fi
3532             ;;
3533         esac
3534
3535         # Do a test to see if this is really a libtool program.
3536         case $host in
3537         *cygwin* | *mingw*)
3538             if func_ltwrapper_executable_p "$file"; then
3539               func_ltwrapper_scriptname "$file"
3540               wrapper=$func_ltwrapper_scriptname_result
3541             else
3542               func_stripname '' '.exe' "$file"
3543               wrapper=$func_stripname_result
3544             fi
3545             ;;
3546         *)
3547             wrapper=$file
3548             ;;
3549         esac
3550         if func_ltwrapper_script_p "$wrapper"; then
3551           notinst_deplibs=
3552           relink_command=
3553
3554           func_source "$wrapper"
3555
3556           # Check the variables that should have been set.
3557           test -z "$generated_by_libtool_version" && \
3558             func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3559
3560           finalize=yes
3561           for lib in $notinst_deplibs; do
3562             # Check to see that each library is installed.
3563             libdir=
3564             if test -f "$lib"; then
3565               func_source "$lib"
3566             fi
3567             libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3568             if test -n "$libdir" && test ! -f "$libfile"; then
3569               func_warning "\`$lib' has not been installed in \`$libdir'"
3570               finalize=no
3571             fi
3572           done
3573
3574           relink_command=
3575           func_source "$wrapper"
3576
3577           outputname=
3578           if test "$fast_install" = no && test -n "$relink_command"; then
3579             $opt_dry_run || {
3580               if test "$finalize" = yes; then
3581                 tmpdir=`func_mktempdir`
3582                 func_basename "$file$stripped_ext"
3583                 file="$func_basename_result"
3584                 outputname="$tmpdir/$file"
3585                 # Replace the output file specification.
3586                 relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3587
3588                 $opt_silent || {
3589                   func_quote_for_expand "$relink_command"
3590                   eval "func_echo $func_quote_for_expand_result"
3591                 }
3592                 if eval "$relink_command"; then :
3593                   else
3594                   func_error "error: relink \`$file' with the above command before installing it"
3595                   $opt_dry_run || ${RM}r "$tmpdir"
3596                   continue
3597                 fi
3598                 file="$outputname"
3599               else
3600                 func_warning "cannot relink \`$file'"
3601               fi
3602             }
3603           else
3604             # Install the binary that we compiled earlier.
3605             file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3606           fi
3607         fi
3608
3609         # remove .exe since cygwin /usr/bin/install will append another
3610         # one anyway
3611         case $install_prog,$host in
3612         */usr/bin/install*,*cygwin*)
3613           case $file:$destfile in
3614           *.exe:*.exe)
3615             # this is ok
3616             ;;
3617           *.exe:*)
3618             destfile=$destfile.exe
3619             ;;
3620           *:*.exe)
3621             func_stripname '' '.exe' "$destfile"
3622             destfile=$func_stripname_result
3623             ;;
3624           esac
3625           ;;
3626         esac
3627         func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3628         $opt_dry_run || if test -n "$outputname"; then
3629           ${RM}r "$tmpdir"
3630         fi
3631         ;;
3632       esac
3633     done
3634
3635     for file in $staticlibs; do
3636       func_basename "$file"
3637       name="$func_basename_result"
3638
3639       # Set up the ranlib parameters.
3640       oldlib="$destdir/$name"
3641       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3642       tool_oldlib=$func_to_tool_file_result
3643
3644       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3645
3646       if test -n "$stripme" && test -n "$old_striplib"; then
3647         func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3648       fi
3649
3650       # Do each command in the postinstall commands.
3651       func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3652     done
3653
3654     test -n "$future_libdirs" && \
3655       func_warning "remember to run \`$progname --finish$future_libdirs'"
3656
3657     if test -n "$current_libdirs"; then
3658       # Maybe just do a dry run.
3659       $opt_dry_run && current_libdirs=" -n$current_libdirs"
3660       exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3661     else
3662       exit $EXIT_SUCCESS
3663     fi
3664 }
3665
3666 test "$opt_mode" = install && func_mode_install ${1+"$@"}
3667
3668
3669 # func_generate_dlsyms outputname originator pic_p
3670 # Extract symbols from dlprefiles and create ${outputname}S.o with
3671 # a dlpreopen symbol table.
3672 func_generate_dlsyms ()
3673 {
3674     $opt_debug
3675     my_outputname="$1"
3676     my_originator="$2"
3677     my_pic_p="${3-no}"
3678     my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3679     my_dlsyms=
3680
3681     if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3682       if test -n "$NM" && test -n "$global_symbol_pipe"; then
3683         my_dlsyms="${my_outputname}S.c"
3684       else
3685         func_error "not configured to extract global symbols from dlpreopened files"
3686       fi
3687     fi
3688
3689     if test -n "$my_dlsyms"; then
3690       case $my_dlsyms in
3691       "") ;;
3692       *.c)
3693         # Discover the nlist of each of the dlfiles.
3694         nlist="$output_objdir/${my_outputname}.nm"
3695
3696         func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3697
3698         # Parse the name list into a source file.
3699         func_verbose "creating $output_objdir/$my_dlsyms"
3700
3701         $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3702 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3703 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3704
3705 #ifdef __cplusplus
3706 extern \"C\" {
3707 #endif
3708
3709 #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3710 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3711 #endif
3712
3713 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3714 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3715 /* DATA imports from DLLs on WIN32 con't be const, because runtime
3716    relocations are performed -- see ld's documentation on pseudo-relocs.  */
3717 # define LT_DLSYM_CONST
3718 #elif defined(__osf__)
3719 /* This system does not cope well with relocations in const data.  */
3720 # define LT_DLSYM_CONST
3721 #else
3722 # define LT_DLSYM_CONST const
3723 #endif
3724
3725 /* External symbol declarations for the compiler. */\
3726 "
3727
3728         if test "$dlself" = yes; then
3729           func_verbose "generating symbol list for \`$output'"
3730
3731           $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3732
3733           # Add our own program objects to the symbol list.
3734           progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3735           for progfile in $progfiles; do
3736             func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3737             func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3738             $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3739           done
3740
3741           if test -n "$exclude_expsyms"; then
3742             $opt_dry_run || {
3743               eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3744               eval '$MV "$nlist"T "$nlist"'
3745             }
3746           fi
3747
3748           if test -n "$export_symbols_regex"; then
3749             $opt_dry_run || {
3750               eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3751               eval '$MV "$nlist"T "$nlist"'
3752             }
3753           fi
3754
3755           # Prepare the list of exported symbols
3756           if test -z "$export_symbols"; then
3757             export_symbols="$output_objdir/$outputname.exp"
3758             $opt_dry_run || {
3759               $RM $export_symbols
3760               eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3761               case $host in
3762               *cygwin* | *mingw* | *cegcc* )
3763                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3764                 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3765                 ;;
3766               esac
3767             }
3768           else
3769             $opt_dry_run || {
3770               eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3771               eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3772               eval '$MV "$nlist"T "$nlist"'
3773               case $host in
3774                 *cygwin* | *mingw* | *cegcc* )
3775                   eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3776                   eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3777                   ;;
3778               esac
3779             }
3780           fi
3781         fi
3782
3783         for dlprefile in $dlprefiles; do
3784           func_verbose "extracting global C symbols from \`$dlprefile'"
3785           func_basename "$dlprefile"
3786           name="$func_basename_result"
3787           case $host in
3788             *cygwin* | *mingw* | *cegcc* )
3789               # if an import library, we need to obtain dlname
3790               if func_win32_import_lib_p "$dlprefile"; then
3791                 func_tr_sh "$dlprefile"
3792                 eval "curr_lafile=\$libfile_$func_tr_sh_result"
3793                 dlprefile_dlbasename=""
3794                 if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3795                   # Use subshell, to avoid clobbering current variable values
3796                   dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3797                   if test -n "$dlprefile_dlname" ; then
3798                     func_basename "$dlprefile_dlname"
3799                     dlprefile_dlbasename="$func_basename_result"
3800                   else
3801                     # no lafile. user explicitly requested -dlpreopen <import library>.
3802                     $sharedlib_from_linklib_cmd "$dlprefile"
3803                     dlprefile_dlbasename=$sharedlib_from_linklib_result
3804                   fi
3805                 fi
3806                 $opt_dry_run || {
3807                   if test -n "$dlprefile_dlbasename" ; then
3808                     eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3809                   else
3810                     func_warning "Could not compute DLL name from $name"
3811                     eval '$ECHO ": $name " >> "$nlist"'
3812                   fi
3813                   func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3814                   eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3815                     $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3816                 }
3817               else # not an import lib
3818                 $opt_dry_run || {
3819                   eval '$ECHO ": $name " >> "$nlist"'
3820                   func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3821                   eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3822                 }
3823               fi
3824             ;;
3825             *)
3826               $opt_dry_run || {
3827                 eval '$ECHO ": $name " >> "$nlist"'
3828                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3829                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3830               }
3831             ;;
3832           esac
3833         done
3834
3835         $opt_dry_run || {
3836           # Make sure we have at least an empty file.
3837           test -f "$nlist" || : > "$nlist"
3838
3839           if test -n "$exclude_expsyms"; then
3840             $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3841             $MV "$nlist"T "$nlist"
3842           fi
3843
3844           # Try sorting and uniquifying the output.
3845           if $GREP -v "^: " < "$nlist" |
3846               if sort -k 3 </dev/null >/dev/null 2>&1; then
3847                 sort -k 3