Add GSM full rate codec to LCR's source repository
[lcr.git] / libtool
1 #! /bin/sh
2
3 # libtool - Provide generalized library-building support services.
4 # Generated automatically by config.status (lcr) 1.14
5 # Libtool was configured on host freeswitch:
6 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
7 #
8 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
9 #                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
10 #                 Inc.
11 #   Written by Gordon Matzigkeit, 1996
12 #
13 #   This file is part of GNU Libtool.
14 #
15 # GNU Libtool is free software; you can redistribute it and/or
16 # modify it under the terms of the GNU General Public License as
17 # published by the Free Software Foundation; either version 2 of
18 # the License, or (at your option) any later version.
19 #
20 # As a special exception to the GNU General Public License,
21 # if you distribute this file as part of a program or library that
22 # is built using GNU Libtool, you may include this file under the
23 # same distribution terms that you use for the rest of that program.
24 #
25 # GNU Libtool is distributed in the hope that it will be useful,
26 # but WITHOUT ANY WARRANTY; without even the implied warranty of
27 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28 # GNU General Public License for more details.
29 #
30 # You should have received a copy of the GNU General Public License
31 # along with GNU Libtool; see the file COPYING.  If not, a copy
32 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
33 # obtained by writing to the Free Software Foundation, Inc.,
34 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
35
36
37 # The names of the tagged configurations supported by this script.
38 available_tags="CXX "
39
40 # ### BEGIN LIBTOOL CONFIG
41
42 # Which release of libtool.m4 was used?
43 macro_version=2.4
44 macro_revision=1.3293
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=needless
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 host system.
65 host_alias=
66 host=i686-pc-linux-gnu
67 host_os=linux-gnu
68
69 # The build system.
70 build_alias=
71 build=i686-pc-linux-gnu
72 build_os=linux-gnu
73
74 # A sed program that does not truncate output.
75 SED="/bin/sed"
76
77 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
78 Xsed="$SED -e 1s/^X//"
79
80 # A grep program that handles long lines.
81 GREP="/bin/grep"
82
83 # An ERE matcher.
84 EGREP="/bin/grep -E"
85
86 # A literal string matcher.
87 FGREP="/bin/grep -F"
88
89 # A BSD- or MS-compatible name lister.
90 NM="/usr/bin/nm -B"
91
92 # Whether we need soft or hard links.
93 LN_S="ln -s"
94
95 # What is the maximum length of a command?
96 max_cmd_len=1572864
97
98 # Object file suffix (normally "o").
99 objext=o
100
101 # Executable file suffix (normally "").
102 exeext=
103
104 # whether the shell understands "unset".
105 lt_unset=unset
106
107 # turn spaces into newlines.
108 SP2NL="tr \\040 \\012"
109
110 # turn newlines into spaces.
111 NL2SP="tr \\015\\012 \\040\\040"
112
113 # convert $build file names to $host format.
114 to_host_file_cmd=func_convert_file_noop
115
116 # convert $build files to toolchain format.
117 to_tool_file_cmd=func_convert_file_noop
118
119 # An object symbol dumper.
120 OBJDUMP="objdump"
121
122 # Method to check whether dependent libraries are shared objects.
123 deplibs_check_method="pass_all"
124
125 # Command to use when deplibs_check_method = "file_magic".
126 file_magic_cmd="\$MAGIC_CMD"
127
128 # How to find potential files when deplibs_check_method = "file_magic".
129 file_magic_glob=""
130
131 # Find potential files using nocaseglob when deplibs_check_method = "file_magic".
132 want_nocaseglob="no"
133
134 # DLL creation program.
135 DLLTOOL="false"
136
137 # Command to associate shared and link libraries.
138 sharedlib_from_linklib_cmd="printf %s\\n"
139
140 # The archiver.
141 AR="ar"
142
143 # Flags to create an archive.
144 AR_FLAGS="cru"
145
146 # How to feed a file listing to the archiver.
147 archiver_list_spec="@"
148
149 # A symbol stripping program.
150 STRIP="strip"
151
152 # Commands used to install an old-style archive.
153 RANLIB="ranlib"
154 old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
155 old_postuninstall_cmds=""
156
157 # Whether to use a lock for old archive extraction.
158 lock_old_archive_extraction=no
159
160 # A C compiler.
161 LTCC="gcc"
162
163 # LTCC compiler flags.
164 LTCFLAGS="-g -O2"
165
166 # Take the output of nm and produce a listing of raw symbols and C names.
167 global_symbol_pipe="sed -n -e 's/^.*[    ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[       ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
168
169 # Transform the output of nm in a proper C declaration.
170 global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
171
172 # Transform the output of nm in a C name address pair.
173 global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
174
175 # Transform the output of nm in a C name address pair when lib prefix is needed.
176 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'"
177
178 # Specify filename containing input files for $NM.
179 nm_file_list_spec="@"
180
181 # The root where to search for dependent libraries,and in which our libraries should be installed.
182 lt_sysroot=
183
184 # The name of the directory that contains temporary libtool files.
185 objdir=.libs
186
187 # Used to examine libraries when file_magic_cmd begins with "file".
188 MAGIC_CMD=file
189
190 # Must we lock files when doing compilation?
191 need_locks="no"
192
193 # Manifest tool.
194 MANIFEST_TOOL=":"
195
196 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
197 DSYMUTIL=""
198
199 # Tool to change global to local symbols on Mac OS X.
200 NMEDIT=""
201
202 # Tool to manipulate fat objects and archives on Mac OS X.
203 LIPO=""
204
205 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
206 OTOOL=""
207
208 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
209 OTOOL64=""
210
211 # Old archive suffix (normally "a").
212 libext=a
213
214 # Shared library suffix (normally ".so").
215 shrext_cmds=".so"
216
217 # The commands to extract the exported symbol list from a shared archive.
218 extract_expsyms_cmds=""
219
220 # Variables whose values should be saved in libtool wrapper scripts and
221 # restored at link time.
222 variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
223
224 # Do we need the "lib" prefix for modules?
225 need_lib_prefix=no
226
227 # Do we need a version for libraries?
228 need_version=no
229
230 # Library versioning type.
231 version_type=linux
232
233 # Shared library runtime path variable.
234 runpath_var=LD_RUN_PATH
235
236 # Shared library path variable.
237 shlibpath_var=LD_LIBRARY_PATH
238
239 # Is shlibpath searched before the hard-coded library search path?
240 shlibpath_overrides_runpath=yes
241
242 # Format of library name prefix.
243 libname_spec="lib\$name"
244
245 # List of archive names.  First name is the real one, the rest are links.
246 # The last name is the one that the linker finds with -lNAME
247 library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
248
249 # The coded name of the library, if different from the real name.
250 soname_spec="\${libname}\${release}\${shared_ext}\$major"
251
252 # Permission mode override for installation of shared libraries.
253 install_override_mode=""
254
255 # Command to use after installation of a shared archive.
256 postinstall_cmds=""
257
258 # Command to use after uninstallation of a shared archive.
259 postuninstall_cmds=""
260
261 # Commands used to finish a libtool library installation in a directory.
262 finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
263
264 # As "finish_cmds", except a single script fragment to be evaled but
265 # not shown.
266 finish_eval=""
267
268 # Whether we should hardcode library paths into libraries.
269 hardcode_into_libs=yes
270
271 # Compile-time system search path for libraries.
272 sys_lib_search_path_spec="/usr/lib/gcc/i686-pc-linux-gnu/4.5.3 /usr/i686-pc-linux-gnu/lib /usr/lib /lib "
273
274 # Run-time system search path for libraries.
275 sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/i686-pc-linux-gnu/lib /usr/lib/gcc/i486-pc-linux-gnu/4.5.3 /usr/lib/gcc/i686-pc-linux-gnu/4.5.3 /usr/local/freeswitch/lib "
276
277 # Whether dlopen is supported.
278 dlopen_support=unknown
279
280 # Whether dlopen of programs is supported.
281 dlopen_self=unknown
282
283 # Whether dlopen of statically linked programs is supported.
284 dlopen_self_static=unknown
285
286 # Commands to strip libraries.
287 old_striplib="strip --strip-debug"
288 striplib="strip --strip-unneeded"
289
290
291 # The linker used to build libraries.
292 LD="/usr/i686-pc-linux-gnu/bin/ld"
293
294 # How to create reloadable object files.
295 reload_flag=" -r"
296 reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
297
298 # Commands used to build an old-style archive.
299 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
300
301 # A language specific compiler.
302 CC="gcc"
303
304 # Is the compiler the GNU compiler?
305 with_gcc=yes
306
307 # Compiler flag to turn off builtin functions.
308 no_builtin_flag=" -fno-builtin"
309
310 # Additional compiler flags for building library objects.
311 pic_flag=" -fPIC -DPIC"
312
313 # How to pass a linker flag through the compiler.
314 wl="-Wl,"
315
316 # Compiler flag to prevent dynamic linking.
317 link_static_flag="-static"
318
319 # Does compiler simultaneously support -c and -o options?
320 compiler_c_o="yes"
321
322 # Whether or not to add -lc for building shared libraries.
323 build_libtool_need_lc=no
324
325 # Whether or not to disallow shared libs when runtime libs are static.
326 allow_libtool_libs_with_static_runtimes=no
327
328 # Compiler flag to allow reflexive dlopens.
329 export_dynamic_flag_spec="\${wl}--export-dynamic"
330
331 # Compiler flag to generate shared objects directly from archives.
332 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
333
334 # Whether the compiler copes with passing no objects directly.
335 compiler_needs_object="no"
336
337 # Create an old-style archive from a shared archive.
338 old_archive_from_new_cmds=""
339
340 # Create a temporary old-style archive to link instead of a shared archive.
341 old_archive_from_expsyms_cmds=""
342
343 # Commands used to build a shared archive.
344 archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
345 archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
346             cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
347             echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
348             \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
349
350 # Commands used to build a loadable module if different from building
351 # a shared archive.
352 module_cmds=""
353 module_expsym_cmds=""
354
355 # Whether we are building with GNU ld or not.
356 with_gnu_ld="yes"
357
358 # Flag that allows shared libraries with undefined symbols to be built.
359 allow_undefined_flag=""
360
361 # Flag that enforces no undefined symbols.
362 no_undefined_flag=""
363
364 # Flag to hardcode $libdir into a binary during linking.
365 # This must work even if $libdir does not exist
366 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
367
368 # If ld is used when linking, flag to hardcode $libdir into a binary
369 # during linking.  This must work even if $libdir does not exist.
370 hardcode_libdir_flag_spec_ld=""
371
372 # Whether we need a single "-rpath" flag with a separated argument.
373 hardcode_libdir_separator=""
374
375 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
376 # DIR into the resulting binary.
377 hardcode_direct=no
378
379 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
380 # DIR into the resulting binary and the resulting library dependency is
381 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
382 # library is relocated.
383 hardcode_direct_absolute=no
384
385 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
386 # into the resulting binary.
387 hardcode_minus_L=no
388
389 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
390 # into the resulting binary.
391 hardcode_shlibpath_var=unsupported
392
393 # Set to "yes" if building a shared library automatically hardcodes DIR
394 # into the library and all subsequent libraries and executables linked
395 # against it.
396 hardcode_automatic=no
397
398 # Set to yes if linker adds runtime paths of dependent libraries
399 # to runtime path list.
400 inherit_rpath=no
401
402 # Whether libtool must link a program against all its dependency libraries.
403 link_all_deplibs=unknown
404
405 # Set to "yes" if exported symbols are required.
406 always_export_symbols=no
407
408 # The commands to list exported symbols.
409 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
410
411 # Symbols that should not be listed in the preloaded symbols.
412 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
413
414 # Symbols that must always be exported.
415 include_expsyms=""
416
417 # Commands necessary for linking programs (against libraries) with templates.
418 prelink_cmds=""
419
420 # Commands necessary for finishing linking programs.
421 postlink_cmds=""
422
423 # Specify filename containing input files.
424 file_list_spec=""
425
426 # How to hardcode a shared library path into an executable.
427 hardcode_action=immediate
428
429 # The directories searched by this compiler when creating a shared library.
430 compiler_lib_search_dirs=""
431
432 # Dependencies to place before and after the objects being linked to
433 # create a shared library.
434 predep_objects=""
435 postdep_objects=""
436 predeps=""
437 postdeps=""
438
439 # The library search path used internally by the compiler when linking
440 # a shared library.
441 compiler_lib_search_path=""
442
443 # ### END LIBTOOL CONFIG
444
445
446 # libtool (GNU libtool) 2.4
447 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
448
449 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
450 # 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
451 # This is free software; see the source for copying conditions.  There is NO
452 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
453
454 # GNU Libtool is free software; you can redistribute it and/or modify
455 # it under the terms of the GNU General Public License as published by
456 # the Free Software Foundation; either version 2 of the License, or
457 # (at your option) any later version.
458 #
459 # As a special exception to the GNU General Public License,
460 # if you distribute this file as part of a program or library that
461 # is built using GNU Libtool, you may include this file under the
462 # same distribution terms that you use for the rest of that program.
463 #
464 # GNU Libtool is distributed in the hope that it will be useful, but
465 # WITHOUT ANY WARRANTY; without even the implied warranty of
466 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
467 # General Public License for more details.
468 #
469 # You should have received a copy of the GNU General Public License
470 # along with GNU Libtool; see the file COPYING.  If not, a copy
471 # can be downloaded from http://www.gnu.org/licenses/gpl.html,
472 # or obtained by writing to the Free Software Foundation, Inc.,
473 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
474
475 # Usage: $progname [OPTION]... [MODE-ARG]...
476 #
477 # Provide generalized library-building support services.
478 #
479 #       --config             show all configuration variables
480 #       --debug              enable verbose shell tracing
481 #   -n, --dry-run            display commands without modifying any files
482 #       --features           display basic configuration information and exit
483 #       --mode=MODE          use operation mode MODE
484 #       --preserve-dup-deps  don't remove duplicate dependency libraries
485 #       --quiet, --silent    don't print informational messages
486 #       --no-quiet, --no-silent
487 #                            print informational messages (default)
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
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
527 TIMESTAMP=""
528 package_revision=1.3293
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 : ${EGREP="grep -E"}
584 : ${FGREP="grep -F"}
585 : ${GREP="grep"}
586 : ${LN_S="ln -s"}
587 : ${MAKE="make"}
588 : ${MKDIR="mkdir"}
589 : ${MV="mv -f"}
590 : ${RM="rm -f"}
591 : ${SED="sed"}
592 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
593 : ${Xsed="$SED -e 1s/^X//"}
594
595 # Global variables:
596 EXIT_SUCCESS=0
597 EXIT_FAILURE=1
598 EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
599 EXIT_SKIP=77      # $? = 77 is used to indicate a skipped test to automake.
600
601 exit_status=$EXIT_SUCCESS
602
603 # Make sure IFS has a sensible default
604 lt_nl='
605 '
606 IFS="   $lt_nl"
607
608 dirname="s,/[^/]*$,,"
609 basename="s,^.*/,,"
610
611 # func_dirname file append nondir_replacement
612 # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
613 # otherwise set result to NONDIR_REPLACEMENT.
614 func_dirname ()
615 {
616     case ${1} in
617       */*) func_dirname_result="${1%/*}${2}" ;;
618       *  ) func_dirname_result="${3}" ;;
619     esac
620 } # Extended-shell func_dirname implementation
621
622
623 # func_basename file
624 func_basename ()
625 {
626     func_basename_result="${1##*/}"
627 } # Extended-shell func_basename implementation
628
629
630 # func_dirname_and_basename file append nondir_replacement
631 # perform func_basename and func_dirname in a single function
632 # call:
633 #   dirname:  Compute the dirname of FILE.  If nonempty,
634 #             add APPEND to the result, otherwise set result
635 #             to NONDIR_REPLACEMENT.
636 #             value returned in "$func_dirname_result"
637 #   basename: Compute filename of FILE.
638 #             value retuned in "$func_basename_result"
639 # Implementation must be kept synchronized with func_dirname
640 # and func_basename. For efficiency, we do not delegate to
641 # those functions but instead duplicate the functionality here.
642 func_dirname_and_basename ()
643 {
644     case ${1} in
645       */*) func_dirname_result="${1%/*}${2}" ;;
646       *  ) func_dirname_result="${3}" ;;
647     esac
648     func_basename_result="${1##*/}"
649 } # Extended-shell func_dirname_and_basename implementation
650
651
652 # func_stripname prefix suffix name
653 # strip PREFIX and SUFFIX off of NAME.
654 # PREFIX and SUFFIX must not contain globbing or regex special
655 # characters, hashes, percent signs, but SUFFIX may contain a leading
656 # dot (in which case that matches only a dot).
657 # func_strip_suffix prefix name
658 func_stripname ()
659 {
660     # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
661     # positional parameters, so assign one to ordinary parameter first.
662     func_stripname_result=${3}
663     func_stripname_result=${func_stripname_result#"${1}"}
664     func_stripname_result=${func_stripname_result%"${2}"}
665 } # Extended-shell func_stripname implementation
666
667
668 # These SED scripts presuppose an absolute path with a trailing slash.
669 pathcar='s,^/\([^/]*\).*$,\1,'
670 pathcdr='s,^/[^/]*,,'
671 removedotparts=':dotsl
672                 s@/\./@/@g
673                 t dotsl
674                 s,/\.$,/,'
675 collapseslashes='s@/\{1,\}@/@g'
676 finalslash='s,/*$,/,'
677
678 # func_normal_abspath PATH
679 # Remove doubled-up and trailing slashes, "." path components,
680 # and cancel out any ".." path components in PATH after making
681 # it an absolute path.
682 #             value returned in "$func_normal_abspath_result"
683 func_normal_abspath ()
684 {
685   # Start from root dir and reassemble the path.
686   func_normal_abspath_result=
687   func_normal_abspath_tpath=$1
688   func_normal_abspath_altnamespace=
689   case $func_normal_abspath_tpath in
690     "")
691       # Empty path, that just means $cwd.
692       func_stripname '' '/' "`pwd`"
693       func_normal_abspath_result=$func_stripname_result
694       return
695     ;;
696     # The next three entries are used to spot a run of precisely
697     # two leading slashes without using negated character classes;
698     # we take advantage of case's first-match behaviour.
699     ///*)
700       # Unusual form of absolute path, do nothing.
701     ;;
702     //*)
703       # Not necessarily an ordinary path; POSIX reserves leading '//'
704       # and for example Cygwin uses it to access remote file shares
705       # over CIFS/SMB, so we conserve a leading double slash if found.
706       func_normal_abspath_altnamespace=/
707     ;;
708     /*)
709       # Absolute path, do nothing.
710     ;;
711     *)
712       # Relative path, prepend $cwd.
713       func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
714     ;;
715   esac
716   # Cancel out all the simple stuff to save iterations.  We also want
717   # the path to end with a slash for ease of parsing, so make sure
718   # there is one (and only one) here.
719   func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
720         -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
721   while :; do
722     # Processed it all yet?
723     if test "$func_normal_abspath_tpath" = / ; then
724       # If we ascended to the root using ".." the result may be empty now.
725       if test -z "$func_normal_abspath_result" ; then
726         func_normal_abspath_result=/
727       fi
728       break
729     fi
730     func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
731         -e "$pathcar"`
732     func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
733         -e "$pathcdr"`
734     # Figure out what to do with it
735     case $func_normal_abspath_tcomponent in
736       "")
737         # Trailing empty path component, ignore it.
738       ;;
739       ..)
740         # Parent dir; strip last assembled component from result.
741         func_dirname "$func_normal_abspath_result"
742         func_normal_abspath_result=$func_dirname_result
743       ;;
744       *)
745         # Actual path component, append it.
746         func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
747       ;;
748     esac
749   done
750   # Restore leading double-slash if one was found on entry.
751   func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
752 }
753
754 # func_relative_path SRCDIR DSTDIR
755 # generates a relative path from SRCDIR to DSTDIR, with a trailing
756 # slash if non-empty, suitable for immediately appending a filename
757 # without needing to append a separator.
758 #             value returned in "$func_relative_path_result"
759 func_relative_path ()
760 {
761   func_relative_path_result=
762   func_normal_abspath "$1"
763   func_relative_path_tlibdir=$func_normal_abspath_result
764   func_normal_abspath "$2"
765   func_relative_path_tbindir=$func_normal_abspath_result
766
767   # Ascend the tree starting from libdir
768   while :; do
769     # check if we have found a prefix of bindir
770     case $func_relative_path_tbindir in
771       $func_relative_path_tlibdir)
772         # found an exact match
773         func_relative_path_tcancelled=
774         break
775         ;;
776       $func_relative_path_tlibdir*)
777         # found a matching prefix
778         func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
779         func_relative_path_tcancelled=$func_stripname_result
780         if test -z "$func_relative_path_result"; then
781           func_relative_path_result=.
782         fi
783         break
784         ;;
785       *)
786         func_dirname $func_relative_path_tlibdir
787         func_relative_path_tlibdir=${func_dirname_result}
788         if test "x$func_relative_path_tlibdir" = x ; then
789           # Have to descend all the way to the root!
790           func_relative_path_result=../$func_relative_path_result
791           func_relative_path_tcancelled=$func_relative_path_tbindir
792           break
793         fi
794         func_relative_path_result=../$func_relative_path_result
795         ;;
796     esac
797   done
798
799   # Now calculate path; take care to avoid doubling-up slashes.
800   func_stripname '' '/' "$func_relative_path_result"
801   func_relative_path_result=$func_stripname_result
802   func_stripname '/' '/' "$func_relative_path_tcancelled"
803   if test "x$func_stripname_result" != x ; then
804     func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
805   fi
806
807   # Normalisation. If bindir is libdir, return empty string,
808   # else relative path ending with a slash; either way, target
809   # file name can be directly appended.
810   if test ! -z "$func_relative_path_result"; then
811     func_stripname './' '' "$func_relative_path_result/"
812     func_relative_path_result=$func_stripname_result
813   fi
814 }
815
816 # The name of this program:
817 func_dirname_and_basename "$progpath"
818 progname=$func_basename_result
819
820 # Make sure we have an absolute path for reexecution:
821 case $progpath in
822   [\\/]*|[A-Za-z]:\\*) ;;
823   *[\\/]*)
824      progdir=$func_dirname_result
825      progdir=`cd "$progdir" && pwd`
826      progpath="$progdir/$progname"
827      ;;
828   *)
829      save_IFS="$IFS"
830      IFS=:
831      for progdir in $PATH; do
832        IFS="$save_IFS"
833        test -x "$progdir/$progname" && break
834      done
835      IFS="$save_IFS"
836      test -n "$progdir" || progdir=`pwd`
837      progpath="$progdir/$progname"
838      ;;
839 esac
840
841 # Sed substitution that helps us do robust quoting.  It backslashifies
842 # metacharacters that are still active within double-quoted strings.
843 Xsed="${SED}"' -e 1s/^X//'
844 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
845
846 # Same as above, but do not quote variable references.
847 double_quote_subst='s/\(["`\\]\)/\\\1/g'
848
849 # Sed substitution that turns a string into a regex matching for the
850 # string literally.
851 sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
852
853 # Sed substitution that converts a w32 file name or path
854 # which contains forward slashes, into one that contains
855 # (escaped) backslashes.  A very naive implementation.
856 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
857
858 # Re-`\' parameter expansions in output of double_quote_subst that were
859 # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
860 # in input to double_quote_subst, that '$' was protected from expansion.
861 # Since each input `\' is now two `\'s, look for any number of runs of
862 # four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
863 bs='\\'
864 bs2='\\\\'
865 bs4='\\\\\\\\'
866 dollar='\$'
867 sed_double_backslash="\
868   s/$bs4/&\\
869 /g
870   s/^$bs2$dollar/$bs&/
871   s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
872   s/\n//g"
873
874 # Standard options:
875 opt_dry_run=false
876 opt_help=false
877 opt_quiet=false
878 opt_verbose=false
879 opt_warning=:
880
881 # func_echo arg...
882 # Echo program name prefixed message, along with the current mode
883 # name if it has been set yet.
884 func_echo ()
885 {
886     $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
887 }
888
889 # func_verbose arg...
890 # Echo program name prefixed message in verbose mode only.
891 func_verbose ()
892 {
893     $opt_verbose && func_echo ${1+"$@"}
894
895     # A bug in bash halts the script if the last line of a function
896     # fails when set -e is in force, so we need another command to
897     # work around that:
898     :
899 }
900
901 # func_echo_all arg...
902 # Invoke $ECHO with all args, space-separated.
903 func_echo_all ()
904 {
905     $ECHO "$*"
906 }
907
908 # func_error arg...
909 # Echo program name prefixed message to standard error.
910 func_error ()
911 {
912     $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
913 }
914
915 # func_warning arg...
916 # Echo program name prefixed warning message to standard error.
917 func_warning ()
918 {
919     $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
920
921     # bash bug again:
922     :
923 }
924
925 # func_fatal_error arg...
926 # Echo program name prefixed message to standard error, and exit.
927 func_fatal_error ()
928 {
929     func_error ${1+"$@"}
930     exit $EXIT_FAILURE
931 }
932
933 # func_fatal_help arg...
934 # Echo program name prefixed message to standard error, followed by
935 # a help hint, and exit.
936 func_fatal_help ()
937 {
938     func_error ${1+"$@"}
939     func_fatal_error "$help"
940 }
941 help="Try \`$progname --help' for more information."  ## default
942
943
944 # func_grep expression filename
945 # Check whether EXPRESSION matches any line of FILENAME, without output.
946 func_grep ()
947 {
948     $GREP "$1" "$2" >/dev/null 2>&1
949 }
950
951
952 # func_mkdir_p directory-path
953 # Make sure the entire path to DIRECTORY-PATH is available.
954 func_mkdir_p ()
955 {
956     my_directory_path="$1"
957     my_dir_list=
958
959     if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
960
961       # Protect directory names starting with `-'
962       case $my_directory_path in
963         -*) my_directory_path="./$my_directory_path" ;;
964       esac
965
966       # While some portion of DIR does not yet exist...
967       while test ! -d "$my_directory_path"; do
968         # ...make a list in topmost first order.  Use a colon delimited
969         # list incase some portion of path contains whitespace.
970         my_dir_list="$my_directory_path:$my_dir_list"
971
972         # If the last portion added has no slash in it, the list is done
973         case $my_directory_path in */*) ;; *) break ;; esac
974
975         # ...otherwise throw away the child directory and loop
976         my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
977       done
978       my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
979
980       save_mkdir_p_IFS="$IFS"; IFS=':'
981       for my_dir in $my_dir_list; do
982         IFS="$save_mkdir_p_IFS"
983         # mkdir can fail with a `File exist' error if two processes
984         # try to create one of the directories concurrently.  Don't
985         # stop in that case!
986         $MKDIR "$my_dir" 2>/dev/null || :
987       done
988       IFS="$save_mkdir_p_IFS"
989
990       # Bail out if we (or some other process) failed to create a directory.
991       test -d "$my_directory_path" || \
992         func_fatal_error "Failed to create \`$1'"
993     fi
994 }
995
996
997 # func_mktempdir [string]
998 # Make a temporary directory that won't clash with other running
999 # libtool processes, and avoids race conditions if possible.  If
1000 # given, STRING is the basename for that directory.
1001 func_mktempdir ()
1002 {
1003     my_template="${TMPDIR-/tmp}/${1-$progname}"
1004
1005     if test "$opt_dry_run" = ":"; then
1006       # Return a directory name, but don't create it in dry-run mode
1007       my_tmpdir="${my_template}-$$"
1008     else
1009
1010       # If mktemp works, use that first and foremost
1011       my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
1012
1013       if test ! -d "$my_tmpdir"; then
1014         # Failing that, at least try and use $RANDOM to avoid a race
1015         my_tmpdir="${my_template}-${RANDOM-0}$$"
1016
1017         save_mktempdir_umask=`umask`
1018         umask 0077
1019         $MKDIR "$my_tmpdir"
1020         umask $save_mktempdir_umask
1021       fi
1022
1023       # If we're not in dry-run mode, bomb out on failure
1024       test -d "$my_tmpdir" || \
1025         func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
1026     fi
1027
1028     $ECHO "$my_tmpdir"
1029 }
1030
1031
1032 # func_quote_for_eval arg
1033 # Aesthetically quote ARG to be evaled later.
1034 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
1035 # is double-quoted, suitable for a subsequent eval, whereas
1036 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
1037 # which are still active within double quotes backslashified.
1038 func_quote_for_eval ()
1039 {
1040     case $1 in
1041       *[\\\`\"\$]*)
1042         func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
1043       *)
1044         func_quote_for_eval_unquoted_result="$1" ;;
1045     esac
1046
1047     case $func_quote_for_eval_unquoted_result in
1048       # Double-quote args containing shell metacharacters to delay
1049       # word splitting, command substitution and and variable
1050       # expansion for a subsequent eval.
1051       # Many Bourne shells cannot handle close brackets correctly
1052       # in scan sets, so we specify it separately.
1053       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
1054         func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
1055         ;;
1056       *)
1057         func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
1058     esac
1059 }
1060
1061
1062 # func_quote_for_expand arg
1063 # Aesthetically quote ARG to be evaled later; same as above,
1064 # but do not quote variable references.
1065 func_quote_for_expand ()
1066 {
1067     case $1 in
1068       *[\\\`\"]*)
1069         my_arg=`$ECHO "$1" | $SED \
1070             -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
1071       *)
1072         my_arg="$1" ;;
1073     esac
1074
1075     case $my_arg in
1076       # Double-quote args containing shell metacharacters to delay
1077       # word splitting and command substitution for a subsequent eval.
1078       # Many Bourne shells cannot handle close brackets correctly
1079       # in scan sets, so we specify it separately.
1080       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
1081         my_arg="\"$my_arg\""
1082         ;;
1083     esac
1084
1085     func_quote_for_expand_result="$my_arg"
1086 }
1087
1088
1089 # func_show_eval cmd [fail_exp]
1090 # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
1091 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1092 # is given, then evaluate it.
1093 func_show_eval ()
1094 {
1095     my_cmd="$1"
1096     my_fail_exp="${2-:}"
1097
1098     ${opt_silent-false} || {
1099       func_quote_for_expand "$my_cmd"
1100       eval "func_echo $func_quote_for_expand_result"
1101     }
1102
1103     if ${opt_dry_run-false}; then :; else
1104       eval "$my_cmd"
1105       my_status=$?
1106       if test "$my_status" -eq 0; then :; else
1107         eval "(exit $my_status); $my_fail_exp"
1108       fi
1109     fi
1110 }
1111
1112
1113 # func_show_eval_locale cmd [fail_exp]
1114 # Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
1115 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1116 # is given, then evaluate it.  Use the saved locale for evaluation.
1117 func_show_eval_locale ()
1118 {
1119     my_cmd="$1"
1120     my_fail_exp="${2-:}"
1121
1122     ${opt_silent-false} || {
1123       func_quote_for_expand "$my_cmd"
1124       eval "func_echo $func_quote_for_expand_result"
1125     }
1126
1127     if ${opt_dry_run-false}; then :; else
1128       eval "$lt_user_locale
1129             $my_cmd"
1130       my_status=$?
1131       eval "$lt_safe_locale"
1132       if test "$my_status" -eq 0; then :; else
1133         eval "(exit $my_status); $my_fail_exp"
1134       fi
1135     fi
1136 }
1137
1138 # func_tr_sh
1139 # Turn $1 into a string suitable for a shell variable name.
1140 # Result is stored in $func_tr_sh_result.  All characters
1141 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1142 # if $1 begins with a digit, a '_' is prepended as well.
1143 func_tr_sh ()
1144 {
1145   case $1 in
1146   [0-9]* | *[!a-zA-Z0-9_]*)
1147     func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
1148     ;;
1149   * )
1150     func_tr_sh_result=$1
1151     ;;
1152   esac
1153 }
1154
1155
1156 # func_version
1157 # Echo version message to standard output and exit.
1158 func_version ()
1159 {
1160     $opt_debug
1161
1162     $SED -n '/(C)/!b go
1163         :more
1164         /\./!{
1165           N
1166           s/\n# / /
1167           b more
1168         }
1169         :go
1170         /^# '$PROGRAM' (GNU /,/# warranty; / {
1171         s/^# //
1172         s/^# *$//
1173         s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
1174         p
1175      }' < "$progpath"
1176      exit $?
1177 }
1178
1179 # func_usage
1180 # Echo short help message to standard output and exit.
1181 func_usage ()
1182 {
1183     $opt_debug
1184
1185     $SED -n '/^# Usage:/,/^#  *.*--help/ {
1186         s/^# //
1187         s/^# *$//
1188         s/\$progname/'$progname'/
1189         p
1190     }' < "$progpath"
1191     echo
1192     $ECHO "run \`$progname --help | more' for full usage"
1193     exit $?
1194 }
1195
1196 # func_help [NOEXIT]
1197 # Echo long help message to standard output and exit,
1198 # unless 'noexit' is passed as argument.
1199 func_help ()
1200 {
1201     $opt_debug
1202
1203     $SED -n '/^# Usage:/,/# Report bugs to/ {
1204         :print
1205         s/^# //
1206         s/^# *$//
1207         s*\$progname*'$progname'*
1208         s*\$host*'"$host"'*
1209         s*\$SHELL*'"$SHELL"'*
1210         s*\$LTCC*'"$LTCC"'*
1211         s*\$LTCFLAGS*'"$LTCFLAGS"'*
1212         s*\$LD*'"$LD"'*
1213         s/\$with_gnu_ld/'"$with_gnu_ld"'/
1214         s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
1215         s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
1216         p
1217         d
1218      }
1219      /^# .* home page:/b print
1220      /^# General help using/b print
1221      ' < "$progpath"
1222     ret=$?
1223     if test -z "$1"; then
1224       exit $ret
1225     fi
1226 }
1227
1228 # func_missing_arg argname
1229 # Echo program name prefixed message to standard error and set global
1230 # exit_cmd.
1231 func_missing_arg ()
1232 {
1233     $opt_debug
1234
1235     func_error "missing argument for $1."
1236     exit_cmd=exit
1237 }
1238
1239
1240 # func_split_short_opt shortopt
1241 # Set func_split_short_opt_name and func_split_short_opt_arg shell
1242 # variables after splitting SHORTOPT after the 2nd character.
1243 func_split_short_opt ()
1244 {
1245     func_split_short_opt_arg=${1#??}
1246     func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
1247 } # Extended-shell func_split_short_opt implementation
1248
1249
1250 # func_split_long_opt longopt
1251 # Set func_split_long_opt_name and func_split_long_opt_arg shell
1252 # variables after splitting LONGOPT at the `=' sign.
1253 func_split_long_opt ()
1254 {
1255     func_split_long_opt_name=${1%%=*}
1256     func_split_long_opt_arg=${1#*=}
1257 } # Extended-shell func_split_long_opt implementation
1258
1259 exit_cmd=:
1260
1261
1262
1263
1264
1265 magic="%%%MAGIC variable%%%"
1266 magic_exe="%%%MAGIC EXE variable%%%"
1267
1268 # Global variables.
1269 nonopt=
1270 preserve_args=
1271 lo2o="s/\\.lo\$/.${objext}/"
1272 o2lo="s/\\.${objext}\$/.lo/"
1273 extracted_archives=
1274 extracted_serial=0
1275
1276 # If this variable is set in any of the actions, the command in it
1277 # will be execed at the end.  This prevents here-documents from being
1278 # left over by shells.
1279 exec_cmd=
1280
1281 # func_append var value
1282 # Append VALUE to the end of shell variable VAR.
1283 func_append ()
1284 {
1285     eval "${1}+=\${2}"
1286 } # Extended-shell func_append implementation
1287
1288 # func_append_quoted var value
1289 # Quote VALUE and append to the end of shell variable VAR, separated
1290 # by a space.
1291 func_append_quoted ()
1292 {
1293     func_quote_for_eval "${2}"
1294     eval "${1}+=\\ \$func_quote_for_eval_result"
1295 } # Extended-shell func_append_quoted implementation
1296
1297
1298 # func_arith arithmetic-term...
1299 func_arith ()
1300 {
1301     func_arith_result=$(( $* ))
1302 } # Extended-shell func_arith implementation
1303
1304
1305 # func_len string
1306 # STRING may not start with a hyphen.
1307 func_len ()
1308 {
1309     func_len_result=${#1}
1310 } # Extended-shell func_len implementation
1311
1312
1313 # func_lo2o object
1314 func_lo2o ()
1315 {
1316     case ${1} in
1317       *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
1318       *)    func_lo2o_result=${1} ;;
1319     esac
1320 } # Extended-shell func_lo2o implementation
1321
1322
1323 # func_xform libobj-or-source
1324 func_xform ()
1325 {
1326     func_xform_result=${1%.*}.lo
1327 } # Extended-shell func_xform implementation
1328
1329
1330 # func_fatal_configuration arg...
1331 # Echo program name prefixed message to standard error, followed by
1332 # a configuration failure hint, and exit.
1333 func_fatal_configuration ()
1334 {
1335     func_error ${1+"$@"}
1336     func_error "See the $PACKAGE documentation for more information."
1337     func_fatal_error "Fatal configuration error."
1338 }
1339
1340
1341 # func_config
1342 # Display the configuration for all the tags in this script.
1343 func_config ()
1344 {
1345     re_begincf='^# ### BEGIN LIBTOOL'
1346     re_endcf='^# ### END LIBTOOL'
1347
1348     # Default configuration.
1349     $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
1350
1351     # Now print the configurations for the tags.
1352     for tagname in $taglist; do
1353       $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
1354     done
1355
1356     exit $?
1357 }
1358
1359 # func_features
1360 # Display the features supported by this script.
1361 func_features ()
1362 {
1363     echo "host: $host"
1364     if test "$build_libtool_libs" = yes; then
1365       echo "enable shared libraries"
1366     else
1367       echo "disable shared libraries"
1368     fi
1369     if test "$build_old_libs" = yes; then
1370       echo "enable static libraries"
1371     else
1372       echo "disable static libraries"
1373     fi
1374
1375     exit $?
1376 }
1377
1378 # func_enable_tag tagname
1379 # Verify that TAGNAME is valid, and either flag an error and exit, or
1380 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
1381 # variable here.
1382 func_enable_tag ()
1383 {
1384   # Global variable:
1385   tagname="$1"
1386
1387   re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
1388   re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
1389   sed_extractcf="/$re_begincf/,/$re_endcf/p"
1390
1391   # Validate tagname.
1392   case $tagname in
1393     *[!-_A-Za-z0-9,/]*)
1394       func_fatal_error "invalid tag name: $tagname"
1395       ;;
1396   esac
1397
1398   # Don't test for the "default" C tag, as we know it's
1399   # there but not specially marked.
1400   case $tagname in
1401     CC) ;;
1402     *)
1403       if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
1404         taglist="$taglist $tagname"
1405
1406         # Evaluate the configuration.  Be careful to quote the path
1407         # and the sed script, to avoid splitting on whitespace, but
1408         # also don't use non-portable quotes within backquotes within
1409         # quotes we have to do it in 2 steps:
1410         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
1411         eval "$extractedcf"
1412       else
1413         func_error "ignoring unknown tag $tagname"
1414       fi
1415       ;;
1416   esac
1417 }
1418
1419 # func_check_version_match
1420 # Ensure that we are using m4 macros, and libtool script from the same
1421 # release of libtool.
1422 func_check_version_match ()
1423 {
1424   if test "$package_revision" != "$macro_revision"; then
1425     if test "$VERSION" != "$macro_version"; then
1426       if test -z "$macro_version"; then
1427         cat >&2 <<_LT_EOF
1428 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1429 $progname: definition of this LT_INIT comes from an older release.
1430 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1431 $progname: and run autoconf again.
1432 _LT_EOF
1433       else
1434         cat >&2 <<_LT_EOF
1435 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
1436 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1437 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1438 $progname: and run autoconf again.
1439 _LT_EOF
1440       fi
1441     else
1442       cat >&2 <<_LT_EOF
1443 $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1444 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
1445 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
1446 $progname: of $PACKAGE $VERSION and run autoconf again.
1447 _LT_EOF
1448     fi
1449
1450     exit $EXIT_MISMATCH
1451   fi
1452 }
1453
1454
1455 # Shorthand for --mode=foo, only valid as the first argument
1456 case $1 in
1457 clean|clea|cle|cl)
1458   shift; set dummy --mode clean ${1+"$@"}; shift
1459   ;;
1460 compile|compil|compi|comp|com|co|c)
1461   shift; set dummy --mode compile ${1+"$@"}; shift
1462   ;;
1463 execute|execut|execu|exec|exe|ex|e)
1464   shift; set dummy --mode execute ${1+"$@"}; shift
1465   ;;
1466 finish|finis|fini|fin|fi|f)
1467   shift; set dummy --mode finish ${1+"$@"}; shift
1468   ;;
1469 install|instal|insta|inst|ins|in|i)
1470   shift; set dummy --mode install ${1+"$@"}; shift
1471   ;;
1472 link|lin|li|l)
1473   shift; set dummy --mode link ${1+"$@"}; shift
1474   ;;
1475 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1476   shift; set dummy --mode uninstall ${1+"$@"}; shift
1477   ;;
1478 esac
1479
1480
1481
1482 # Option defaults:
1483 opt_debug=:
1484 opt_dry_run=false
1485 opt_config=false
1486 opt_preserve_dup_deps=false
1487 opt_features=false
1488 opt_finish=false
1489 opt_help=false
1490 opt_help_all=false
1491 opt_silent=:
1492 opt_verbose=:
1493 opt_silent=false
1494 opt_verbose=false
1495
1496
1497 # Parse options once, thoroughly.  This comes as soon as possible in the
1498 # script to make things like `--version' happen as quickly as we can.
1499 {
1500   # this just eases exit handling
1501   while test $# -gt 0; do
1502     opt="$1"
1503     shift
1504     case $opt in
1505       --debug|-x)       opt_debug='set -x'
1506                         func_echo "enabling shell trace mode"
1507                         $opt_debug
1508                         ;;
1509       --dry-run|--dryrun|-n)
1510                         opt_dry_run=:
1511                         ;;
1512       --config)
1513                         opt_config=:
1514 func_config
1515                         ;;
1516       --dlopen|-dlopen)
1517                         optarg="$1"
1518                         opt_dlopen="${opt_dlopen+$opt_dlopen
1519 }$optarg"
1520                         shift
1521                         ;;
1522       --preserve-dup-deps)
1523                         opt_preserve_dup_deps=:
1524                         ;;
1525       --features)
1526                         opt_features=:
1527 func_features
1528                         ;;
1529       --finish)
1530                         opt_finish=:
1531 set dummy --mode finish ${1+"$@"}; shift
1532                         ;;
1533       --help)
1534                         opt_help=:
1535                         ;;
1536       --help-all)
1537                         opt_help_all=:
1538 opt_help=': help-all'
1539                         ;;
1540       --mode)
1541                         test $# = 0 && func_missing_arg $opt && break
1542                         optarg="$1"
1543                         opt_mode="$optarg"
1544 case $optarg in
1545   # Valid mode arguments:
1546   clean|compile|execute|finish|install|link|relink|uninstall) ;;
1547
1548   # Catch anything else as an error
1549   *) func_error "invalid argument for $opt"
1550      exit_cmd=exit
1551      break
1552      ;;
1553 esac
1554                         shift
1555                         ;;
1556       --no-silent|--no-quiet)
1557                         opt_silent=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 | *.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
3642       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3643
3644       if test -n "$stripme" && test -n "$old_striplib"; then
3645         func_show_eval "$old_striplib $oldlib" 'exit $?'
3646       fi
3647
3648       # Do each command in the postinstall commands.
3649       func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3650     done
3651
3652     test -n "$future_libdirs" && \
3653       func_warning "remember to run \`$progname --finish$future_libdirs'"
3654
3655     if test -n "$current_libdirs"; then
3656       # Maybe just do a dry run.
3657       $opt_dry_run && current_libdirs=" -n$current_libdirs"
3658       exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3659     else
3660       exit $EXIT_SUCCESS
3661     fi
3662 }
3663
3664 test "$opt_mode" = install && func_mode_install ${1+"$@"}
3665
3666
3667 # func_generate_dlsyms outputname originator pic_p
3668 # Extract symbols from dlprefiles and create ${outputname}S.o with
3669 # a dlpreopen symbol table.
3670 func_generate_dlsyms ()
3671 {
3672     $opt_debug
3673     my_outputname="$1"
3674     my_originator="$2"
3675     my_pic_p="${3-no}"
3676     my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3677     my_dlsyms=
3678
3679     if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3680       if test -n "$NM" && test -n "$global_symbol_pipe"; then
3681         my_dlsyms="${my_outputname}S.c"
3682       else
3683         func_error "not configured to extract global symbols from dlpreopened files"
3684       fi
3685     fi
3686
3687     if test -n "$my_dlsyms"; then
3688       case $my_dlsyms in
3689       "") ;;
3690       *.c)
3691         # Discover the nlist of each of the dlfiles.
3692         nlist="$output_objdir/${my_outputname}.nm"
3693
3694         func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3695
3696         # Parse the name list into a source file.
3697         func_verbose "creating $output_objdir/$my_dlsyms"
3698
3699         $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3700 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3701 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3702
3703 #ifdef __cplusplus
3704 extern \"C\" {
3705 #endif
3706
3707 #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3708 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3709 #endif
3710
3711 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3712 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3713 /* DATA imports from DLLs on WIN32 con't be const, because runtime
3714    relocations are performed -- see ld's documentation on pseudo-relocs.  */
3715 # define LT_DLSYM_CONST
3716 #elif defined(__osf__)
3717 /* This system does not cope well with relocations in const data.  */
3718 # define LT_DLSYM_CONST
3719 #else
3720 # define LT_DLSYM_CONST const
3721 #endif
3722
3723 /* External symbol declarations for the compiler. */\
3724 "
3725
3726         if test "$dlself" = yes; then
3727           func_verbose "generating symbol list for \`$output'"
3728
3729           $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3730
3731           # Add our own program objects to the symbol list.
3732           progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3733           for progfile in $progfiles; do
3734             func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3735             func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3736             $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3737           done
3738
3739           if test -n "$exclude_expsyms"; then
3740             $opt_dry_run || {
3741               eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3742               eval '$MV "$nlist"T "$nlist"'
3743             }
3744           fi
3745
3746           if test -n "$export_symbols_regex"; then
3747             $opt_dry_run || {
3748               eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3749               eval '$MV "$nlist"T "$nlist"'
3750             }
3751           fi
3752
3753           # Prepare the list of exported symbols
3754           if test -z "$export_symbols"; then
3755             export_symbols="$output_objdir/$outputname.exp"
3756             $opt_dry_run || {
3757               $RM $export_symbols
3758               eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3759               case $host in
3760               *cygwin* | *mingw* | *cegcc* )
3761                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3762                 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3763                 ;;
3764               esac
3765             }
3766           else
3767             $opt_dry_run || {
3768               eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3769               eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3770               eval '$MV "$nlist"T "$nlist"'
3771               case $host in
3772                 *cygwin* | *mingw* | *cegcc* )
3773                   eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3774                   eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3775                   ;;
3776               esac
3777             }
3778           fi
3779         fi
3780
3781         for dlprefile in $dlprefiles; do
3782           func_verbose "extracting global C symbols from \`$dlprefile'"
3783           func_basename "$dlprefile"
3784           name="$func_basename_result"
3785           case $host in
3786             *cygwin* | *mingw* | *cegcc* )
3787               # if an import library, we need to obtain dlname
3788               if func_win32_import_lib_p "$dlprefile"; then
3789                 func_tr_sh "$dlprefile"
3790                 eval "curr_lafile=\$libfile_$func_tr_sh_result"
3791                 dlprefile_dlbasename=""
3792                 if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3793                   # Use subshell, to avoid clobbering current variable values
3794                   dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3795                   if test -n "$dlprefile_dlname" ; then
3796                     func_basename "$dlprefile_dlname"
3797                     dlprefile_dlbasename="$func_basename_result"
3798                   else
3799                     # no lafile. user explicitly requested -dlpreopen <import library>.
3800                     $sharedlib_from_linklib_cmd "$dlprefile"
3801                     dlprefile_dlbasename=$sharedlib_from_linklib_result
3802                   fi
3803                 fi
3804                 $opt_dry_run || {
3805                   if test -n "$dlprefile_dlbasename" ; then
3806                     eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3807                   else
3808                     func_warning "Could not compute DLL name from $name"
3809                     eval '$ECHO ": $name " >> "$nlist"'
3810                   fi
3811                   func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3812                   eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3813                     $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3814                 }
3815               else # not an import lib
3816                 $opt_dry_run || {
3817                   eval '$ECHO ": $name " >> "$nlist"'
3818                   func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3819                   eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3820                 }
3821               fi
3822             ;;
3823             *)
3824               $opt_dry_run || {
3825                 eval '$ECHO ": $name " >> "$nlist"'
3826                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3827                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3828               }
3829             ;;
3830           esac
3831         done
3832
3833         $opt_dry_run || {
3834           # Make sure we have at least an empty file.
3835           test -f "$nlist" || : > "$nlist"
3836
3837           if test -n "$exclude_expsyms"; then
3838             $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3839             $MV "$nlist"T "$nlist"
3840           fi
3841
3842           # Try sorting and uniquifying the output.
3843           if $GREP -v "^: " < "$nlist" |
3844               if sort -k 3 </dev/null >/dev/null 2>&1; then
3845                 sort -k 3
3846               else
3847                 sort +2
3848               fi |
3849               uniq > "$nlist"S; then
3850             :
3851           else
3852             $GREP -v "^: " < "$nlist" > "$nlist"S
3853           fi
3854
3855           if test -f "$nlist"S; then
3856             eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3857           else
3858             echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3859           fi
3860
3861           echo >> "$output_objdir/$my_dlsyms" "\
3862
3863 /* The mapping between symbol names and symbols.  */
3864 typedef struct {
3865   const char *name;
3866   void *address;
3867 } lt_dlsymlist;
3868 extern LT_DLSYM_CONST lt_dlsymlist
3869 lt_${my_prefix}_LTX_preloaded_symbols[];
3870 LT_DLSYM_CONST lt_dlsymlist
3871 lt_${my_prefix}_LTX_preloaded_symbols[] =
3872 {\
3873   { \"$my_originator\", (void *) 0 },"
3874
3875           case $need_lib_prefix in
3876           no)
3877             eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3878             ;;
3879           *)
3880             eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3881             ;;
3882           esac
3883           echo >> "$output_objdir/$my_dlsyms" "\
3884   {0, (void *) 0}
3885 };
3886
3887 /* This works around a problem in FreeBSD linker */
3888 #ifdef FREEBSD_WORKAROUND
3889 static const void *lt_preloaded_setup() {
3890   return lt_${my_prefix}_LTX_preloaded_symbols;
3891 }
3892 #endif
3893
3894 #ifdef __cplusplus
3895 }
3896 #endif\
3897 "
3898         } # !$opt_dry_run
3899
3900         pic_flag_for_symtable=
3901         case "$compile_command " in
3902         *" -static "*) ;;
3903         *)
3904           case $host in
3905           # compiling the symbol table file with pic_flag works around
3906           # a FreeBSD bug that causes programs to crash when -lm is
3907           # linked before any other PIC object.  But we must not use
3908           # pic_flag when linking with -static.  The problem exists in
3909           # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3910           *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3911             pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3912           *-*-hpux*)
3913             pic_flag_for_symtable=" $pic_flag"  ;;
3914           *)
3915             if test "X$my_pic_p" != Xno; then
3916               pic_flag_for_symtable=" $pic_flag"
3917             fi
3918             ;;
3919           esac
3920           ;;
3921         esac
3922         symtab_cflags=
3923         for arg in $LTCFLAGS; do
3924           case $arg in
3925           -pie | -fpie | -fPIE) ;;
3926           *) symtab_cflags+=" $arg" ;;
3927           esac
3928         done
3929
3930         # Now compile the dynamic symbol file.
3931         func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3932
3933         # Clean up the generated files.
3934         func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3935
3936         # Transform the symbol file into the correct name.
3937         symfileobj="$output_objdir/${my_outputname}S.$objext"
3938         case $host in
3939         *cygwin* | *mingw* | *cegcc* )
3940           if test -f "$output_objdir/$my_outputname.def"; then
3941             compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3942             finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3943           else
3944             compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3945             finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3946           fi
3947           ;;
3948         *)
3949           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3950           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3951           ;;
3952         esac
3953         ;;
3954       *)
3955         func_fatal_error "unknown suffix for \`$my_dlsyms'"
3956         ;;
3957       esac
3958     else
3959       # We keep going just in case the user didn't refer to
3960       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3961       # really was required.
3962
3963       # Nullify the symbol file.
3964       compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3965       finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3966     fi
3967 }
3968
3969 # func_win32_libid arg
3970 # return the library type of file 'arg'
3971 #
3972 # Need a lot of goo to handle *both* DLLs and import libs
3973 # Has to be a shell function in order to 'eat' the argument
3974 # that is supplied when $file_magic_command is called.
3975 # Despite the name, also deal with 64 bit binaries.
3976 func_win32_libid ()
3977 {
3978   $opt_debug
3979   win32_libid_type="unknown"
3980   win32_fileres=`file -L $1 2>/dev/null`
3981   case $win32_fileres in
3982   *ar\ archive\ import\ library*) # definitely import
3983     win32_libid_type="x86 archive import"
3984     ;;
3985   *ar\ archive*) # could be an import, or static
3986     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3987     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3988        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3989       func_to_tool_file "$1" func_convert_file_msys_to_w32
3990       win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3991         $SED -n -e '
3992             1,100{
3993                 / I /{
3994                     s,.*,import,
3995                     p
3996                     q
3997                 }
3998             }'`
3999       case $win32_nmres in
4000       import*)  win32_libid_type="x86 archive import";;
4001       *)        win32_libid_type="x86 archive static";;
4002       esac
4003     fi
4004     ;;
4005   *DLL*)
4006     win32_libid_type="x86 DLL"
4007     ;;
4008   *executable*) # but shell scripts are "executable" too...
4009     case $win32_fileres in
4010     *MS\ Windows\ PE\ Intel*)
4011       win32_libid_type="x86 DLL"
4012       ;;
4013     esac
4014     ;;
4015   esac
4016   $ECHO "$win32_libid_type"
4017 }
4018
4019 # func_cygming_dll_for_implib ARG
4020 #
4021 # Platform-specific function to extract the
4022 # name of the DLL associated with the specified
4023 # import library ARG.
4024 # Invoked by eval'ing the libtool variable
4025 #    $sharedlib_from_linklib_cmd
4026 # Result is available in the variable
4027 #    $sharedlib_from_linklib_result
4028 func_cygming_dll_for_implib ()
4029 {
4030   $opt_debug
4031   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
4032 }
4033
4034 # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
4035 #
4036 # The is the core of a fallback implementation of a
4037 # platform-specific function to extract the name of the
4038 # DLL associated with the specified import library LIBNAME.
4039 #
4040 # SECTION_NAME is either .idata$6 or .idata$7, depending
4041 # on the platform and compiler that created the implib.
4042 #
4043 # Echos the name of the DLL associated with the
4044 # specified import library.
4045 func_cygming_dll_for_implib_fallback_core ()
4046 {
4047   $opt_debug
4048   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
4049   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
4050     $SED '/^Contents of section '"$match_literal"':/{
4051       # Place marker at beginning of archive member dllname section
4052       s/.*/====MARK====/
4053       p
4054       d
4055     }
4056     # These lines can sometimes be longer than 43 characters, but
4057     # are always uninteresting
4058     /:[  ]*file format pe[i]\{,1\}-/d
4059     /^In archive [^:]*:/d
4060     # Ensure marker is printed
4061     /^====MARK====/p
4062     # Remove all lines with less than 43 characters
4063     /^.\{43\}/!d
4064     # From remaining lines, remove first 43 characters
4065     s/^.\{43\}//' |
4066     $SED -n '
4067       # Join marker and all lines until next marker into a single line
4068       /^====MARK====/ b para
4069       H
4070       $ b para
4071       b
4072       :para
4073       x
4074       s/\n//g
4075       # Remove the marker
4076       s/^====MARK====//
4077       # Remove trailing dots and whitespace
4078       s/[\. \t]*$//
4079       # Print
4080       /./p' |
4081     # we now have a list, one entry per line, of the stringified
4082     # contents of the appropriate section of all members of the
4083     # archive which possess that section. Heuristic: eliminate
4084     # all those which have a first or second character that is
4085     # a '.' (that is, objdump's representation of an unprintable
4086     # character.) This should work for all archives with less than
4087     # 0x302f exports -- but will fail for DLLs whose name actually
4088     # begins with a literal '.' or a single character followed by
4089     # a '.'.
4090     #
4091     # Of those that remain, print the first one.
4092     $SED -e '/^\./d;/^.\./d;q'
4093 }
4094
4095 # func_cygming_gnu_implib_p ARG
4096 # This predicate returns with zero status (TRUE) if
4097 # ARG is a GNU/binutils-style import library. Returns
4098 # with nonzero status (FALSE) otherwise.
4099 func_cygming_gnu_implib_p ()
4100 {
4101   $opt_debug
4102   func_to_tool_file "$1" func_convert_file_msys_to_w32
4103   func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
4104   test -n "$func_cygming_gnu_implib_tmp"
4105 }
4106
4107 # func_cygming_ms_implib_p ARG
4108 # This predicate returns with zero status (TRUE) if
4109 # ARG is an MS-style import library. Returns
4110 # with nonzero status (FALSE) otherwise.
4111 func_cygming_ms_implib_p ()
4112 {
4113   $opt_debug
4114   func_to_tool_file "$1" func_convert_file_msys_to_w32
4115   func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
4116   test -n "$func_cygming_ms_implib_tmp"
4117 }
4118
4119 # func_cygming_dll_for_implib_fallback ARG
4120 # Platform-specific function to extract the
4121 # name of the DLL associated with the specified
4122 # import library ARG.
4123 #
4124 # This fallback implementation is for use when $DLLTOOL
4125 # does not support the --identify-strict option.
4126 # Invoked by eval'ing the libtool variable
4127 #    $sharedlib_from_linklib_cmd
4128 # Result is available in the variable
4129 #    $sharedlib_from_linklib_result
4130 func_cygming_dll_for_implib_fallback ()
4131 {
4132   $opt_debug
4133   if func_cygming_gnu_implib_p "$1" ; then
4134     # binutils import library
4135     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
4136   elif func_cygming_ms_implib_p "$1" ; then
4137     # ms-generated import library
4138     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
4139   else
4140     # unknown
4141     sharedlib_from_linklib_result=""
4142   fi
4143 }
4144
4145
4146 # func_extract_an_archive dir oldlib
4147 func_extract_an_archive ()
4148 {
4149     $opt_debug
4150     f_ex_an_ar_dir="$1"; shift
4151     f_ex_an_ar_oldlib="$1"
4152     if test "$lock_old_archive_extraction" = yes; then
4153       lockfile=$f_ex_an_ar_oldlib.lock
4154       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
4155         func_echo "Waiting for $lockfile to be removed"
4156         sleep 2
4157       done
4158     fi
4159     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
4160                    'stat=$?; rm -f "$lockfile"; exit $stat'
4161     if test "$lock_old_archive_extraction" = yes; then
4162       $opt_dry_run || rm -f "$lockfile"
4163     fi
4164     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
4165      :
4166     else
4167       func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
4168     fi
4169 }
4170
4171
4172 # func_extract_archives gentop oldlib ...
4173 func_extract_archives ()
4174 {
4175     $opt_debug
4176     my_gentop="$1"; shift
4177     my_oldlibs=${1+"$@"}
4178     my_oldobjs=""
4179     my_xlib=""
4180     my_xabs=""
4181     my_xdir=""
4182
4183     for my_xlib in $my_oldlibs; do
4184       # Extract the objects.
4185       case $my_xlib in
4186         [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
4187         *) my_xabs=`pwd`"/$my_xlib" ;;
4188       esac
4189       func_basename "$my_xlib"
4190       my_xlib="$func_basename_result"
4191       my_xlib_u=$my_xlib
4192       while :; do
4193         case " $extracted_archives " in
4194         *" $my_xlib_u "*)
4195           func_arith $extracted_serial + 1
4196           extracted_serial=$func_arith_result
4197           my_xlib_u=lt$extracted_serial-$my_xlib ;;
4198         *) break ;;
4199         esac
4200       done
4201       extracted_archives="$extracted_archives $my_xlib_u"
4202       my_xdir="$my_gentop/$my_xlib_u"
4203
4204       func_mkdir_p "$my_xdir"
4205
4206       case $host in
4207       *-darwin*)
4208         func_verbose "Extracting $my_xabs"
4209         # Do not bother doing anything if just a dry run
4210         $opt_dry_run || {
4211           darwin_orig_dir=`pwd`
4212           cd $my_xdir || exit $?
4213           darwin_archive=$my_xabs
4214           darwin_curdir=`pwd`
4215           darwin_base_archive=`basename "$darwin_archive"`
4216           darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
4217           if test -n "$darwin_arches"; then
4218             darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
4219             darwin_arch=
4220             func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
4221             for darwin_arch in  $darwin_arches ; do
4222               func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
4223               $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
4224               cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
4225               func_extract_an_archive "`pwd`" "${darwin_base_archive}"
4226               cd "$darwin_curdir"
4227               $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
4228             done # $darwin_arches
4229             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
4230             darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
4231             darwin_file=
4232             darwin_files=
4233             for darwin_file in $darwin_filelist; do
4234               darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
4235               $LIPO -create -output "$darwin_file" $darwin_files
4236             done # $darwin_filelist
4237             $RM -rf unfat-$$
4238             cd "$darwin_orig_dir"
4239           else
4240             cd $darwin_orig_dir
4241             func_extract_an_archive "$my_xdir" "$my_xabs"
4242           fi # $darwin_arches
4243         } # !$opt_dry_run
4244         ;;
4245       *)
4246         func_extract_an_archive "$my_xdir" "$my_xabs"
4247         ;;
4248       esac
4249       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
4250     done
4251
4252     func_extract_archives_result="$my_oldobjs"
4253 }
4254
4255
4256 # func_emit_wrapper [arg=no]
4257 #
4258 # Emit a libtool wrapper script on stdout.
4259 # Don't directly open a file because we may want to
4260 # incorporate the script contents within a cygwin/mingw
4261 # wrapper executable.  Must ONLY be called from within
4262 # func_mode_link because it depends on a number of variables
4263 # set therein.
4264 #
4265 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
4266 # variable will take.  If 'yes', then the emitted script
4267 # will assume that the directory in which it is stored is
4268 # the $objdir directory.  This is a cygwin/mingw-specific
4269 # behavior.
4270 func_emit_wrapper ()
4271 {
4272         func_emit_wrapper_arg1=${1-no}
4273
4274         $ECHO "\
4275 #! $SHELL
4276
4277 # $output - temporary wrapper script for $objdir/$outputname
4278 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4279 #
4280 # The $output program cannot be directly executed until all the libtool
4281 # libraries that it depends on are installed.
4282 #
4283 # This wrapper script should never be moved out of the build directory.
4284 # If it is, it will not operate correctly.
4285
4286 # Sed substitution that helps us do robust quoting.  It backslashifies
4287 # metacharacters that are still active within double-quoted strings.
4288 sed_quote_subst='$sed_quote_subst'
4289
4290 # Be Bourne compatible
4291 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
4292   emulate sh
4293   NULLCMD=:
4294   # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
4295   # is contrary to our usage.  Disable this feature.
4296   alias -g '\${1+\"\$@\"}'='\"\$@\"'
4297   setopt NO_GLOB_SUBST
4298 else
4299   case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
4300 fi
4301 BIN_SH=xpg4; export BIN_SH # for Tru64
4302 DUALCASE=1; export DUALCASE # for MKS sh
4303
4304 # The HP-UX ksh and POSIX shell print the target directory to stdout
4305 # if CDPATH is set.
4306 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
4307
4308 relink_command=\"$relink_command\"
4309
4310 # This environment variable determines our operation mode.
4311 if test \"\$libtool_install_magic\" = \"$magic\"; then
4312   # install mode needs the following variables:
4313   generated_by_libtool_version='$macro_version'
4314   notinst_deplibs='$notinst_deplibs'
4315 else
4316   # When we are sourced in execute mode, \$file and \$ECHO are already set.
4317   if test \"\$libtool_execute_magic\" != \"$magic\"; then
4318     file=\"\$0\""
4319
4320     qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
4321     $ECHO "\
4322
4323 # A function that is used when there is no print builtin or printf.
4324 func_fallback_echo ()
4325 {
4326   eval 'cat <<_LTECHO_EOF
4327 \$1
4328 _LTECHO_EOF'
4329 }
4330     ECHO=\"$qECHO\"
4331   fi
4332
4333 # Very basic option parsing. These options are (a) specific to
4334 # the libtool wrapper, (b) are identical between the wrapper
4335 # /script/ and the wrapper /executable/ which is used only on
4336 # windows platforms, and (c) all begin with the string "--lt-"
4337 # (application programs are unlikely to have options which match
4338 # this pattern).
4339 #
4340 # There are only two supported options: --lt-debug and
4341 # --lt-dump-script. There is, deliberately, no --lt-help.
4342 #
4343 # The first argument to this parsing function should be the
4344 # script's $0 value, followed by "$@".
4345 lt_option_debug=
4346 func_parse_lt_options ()
4347 {
4348   lt_script_arg0=\$0
4349   shift
4350   for lt_opt
4351   do
4352     case \"\$lt_opt\" in
4353     --lt-debug) lt_option_debug=1 ;;
4354     --lt-dump-script)
4355         lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
4356         test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
4357         lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
4358         cat \"\$lt_dump_D/\$lt_dump_F\"
4359         exit 0
4360       ;;
4361     --lt-*)
4362         \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
4363         exit 1
4364       ;;
4365     esac
4366   done
4367
4368   # Print the debug banner immediately:
4369   if test -n \"\$lt_option_debug\"; then
4370     echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
4371   fi
4372 }
4373
4374 # Used when --lt-debug. Prints its arguments to stdout
4375 # (redirection is the responsibility of the caller)
4376 func_lt_dump_args ()
4377 {
4378   lt_dump_args_N=1;
4379   for lt_arg
4380   do
4381     \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
4382     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
4383   done
4384 }
4385
4386 # Core function for launching the target application
4387 func_exec_program_core ()
4388 {
4389 "
4390   case $host in
4391   # Backslashes separate directories on plain windows
4392   *-*-mingw | *-*-os2* | *-cegcc*)
4393     $ECHO "\
4394       if test -n \"\$lt_option_debug\"; then
4395         \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
4396         func_lt_dump_args \${1+\"\$@\"} 1>&2
4397       fi
4398       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
4399 "
4400     ;;
4401
4402   *)
4403     $ECHO "\
4404       if test -n \"\$lt_option_debug\"; then
4405         \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
4406         func_lt_dump_args \${1+\"\$@\"} 1>&2
4407       fi
4408       exec \"\$progdir/\$program\" \${1+\"\$@\"}
4409 "
4410     ;;
4411   esac
4412   $ECHO "\
4413       \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
4414       exit 1
4415 }
4416
4417 # A function to encapsulate launching the target application
4418 # Strips options in the --lt-* namespace from \$@ and
4419 # launches target application with the remaining arguments.
4420 func_exec_program ()
4421 {
4422   for lt_wr_arg
4423   do
4424     case \$lt_wr_arg in
4425     --lt-*) ;;
4426     *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
4427     esac
4428     shift
4429   done
4430   func_exec_program_core \${1+\"\$@\"}
4431 }
4432
4433   # Parse options
4434   func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4435
4436   # Find the directory that this script lives in.
4437   thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4438   test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4439
4440   # Follow symbolic links until we get to the real thisdir.
4441   file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4442   while test -n \"\$file\"; do
4443     destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4444
4445     # If there was a directory component, then change thisdir.
4446     if test \"x\$destdir\" != \"x\$file\"; then
4447       case \"\$destdir\" in
4448       [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4449       *) thisdir=\"\$thisdir/\$destdir\" ;;
4450       esac
4451     fi
4452
4453     file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4454     file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4455   done
4456
4457   # Usually 'no', except on cygwin/mingw when embedded into
4458   # the cwrapper.
4459   WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4460   if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4461     # special case for '.'
4462     if test \"\$thisdir\" = \".\"; then
4463       thisdir=\`pwd\`
4464     fi
4465     # remove .libs from thisdir
4466     case \"\$thisdir\" in
4467     *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4468     $objdir )   thisdir=. ;;
4469     esac
4470   fi
4471
4472   # Try to get the absolute directory name.
4473   absdir=\`cd \"\$thisdir\" && pwd\`
4474   test -n \"\$absdir\" && thisdir=\"\$absdir\"
4475 "
4476
4477         if test "$fast_install" = yes; then
4478           $ECHO "\
4479   program=lt-'$outputname'$exeext
4480   progdir=\"\$thisdir/$objdir\"
4481
4482   if test ! -f \"\$progdir/\$program\" ||
4483      { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4484        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4485
4486     file=\"\$\$-\$program\"
4487
4488     if test ! -d \"\$progdir\"; then
4489       $MKDIR \"\$progdir\"
4490     else
4491       $RM \"\$progdir/\$file\"
4492     fi"
4493
4494           $ECHO "\
4495
4496     # relink executable if necessary
4497     if test -n \"\$relink_command\"; then
4498       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4499       else
4500         $ECHO \"\$relink_command_output\" >&2
4501         $RM \"\$progdir/\$file\"
4502         exit 1
4503       fi
4504     fi
4505
4506     $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4507     { $RM \"\$progdir/\$program\";
4508       $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4509     $RM \"\$progdir/\$file\"
4510   fi"
4511         else
4512           $ECHO "\
4513   program='$outputname'
4514   progdir=\"\$thisdir/$objdir\"
4515 "
4516         fi
4517
4518         $ECHO "\
4519
4520   if test -f \"\$progdir/\$program\"; then"
4521
4522         # fixup the dll searchpath if we need to.
4523         #
4524         # Fix the DLL searchpath if we need to.  Do this before prepending
4525         # to shlibpath, because on Windows, both are PATH and uninstalled
4526         # libraries must come first.
4527         if test -n "$dllsearchpath"; then
4528           $ECHO "\
4529     # Add the dll search path components to the executable PATH
4530     PATH=$dllsearchpath:\$PATH
4531 "
4532         fi
4533
4534         # Export our shlibpath_var if we have one.
4535         if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4536           $ECHO "\
4537     # Add our own library path to $shlibpath_var
4538     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4539
4540     # Some systems cannot cope with colon-terminated $shlibpath_var
4541     # The second colon is a workaround for a bug in BeOS R4 sed
4542     $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4543
4544     export $shlibpath_var
4545 "
4546         fi
4547
4548         $ECHO "\
4549     if test \"\$libtool_execute_magic\" != \"$magic\"; then
4550       # Run the actual program with our arguments.
4551       func_exec_program \${1+\"\$@\"}
4552     fi
4553   else
4554     # The program doesn't exist.
4555     \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4556     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4557     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4558     exit 1
4559   fi
4560 fi\
4561 "
4562 }
4563
4564
4565 # func_emit_cwrapperexe_src
4566 # emit the source code for a wrapper executable on stdout
4567 # Must ONLY be called from within func_mode_link because
4568 # it depends on a number of variable set therein.
4569 func_emit_cwrapperexe_src ()
4570 {
4571         cat <<EOF
4572
4573 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4574    Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4575
4576    The $output program cannot be directly executed until all the libtool
4577    libraries that it depends on are installed.
4578
4579    This wrapper executable should never be moved out of the build directory.
4580    If it is, it will not operate correctly.
4581 */
4582 EOF
4583             cat <<"EOF"
4584 #ifdef _MSC_VER
4585 # define _CRT_SECURE_NO_DEPRECATE 1
4586 #endif
4587 #include <stdio.h>
4588 #include <stdlib.h>
4589 #ifdef _MSC_VER
4590 # include <direct.h>
4591 # include <process.h>
4592 # include <io.h>
4593 #else
4594 # include <unistd.h>
4595 # include <stdint.h>
4596 # ifdef __CYGWIN__
4597 #  include <io.h>
4598 # endif
4599 #endif
4600 #include <malloc.h>
4601 #include <stdarg.h>
4602 #include <assert.h>
4603 #include <string.h>
4604 #include <ctype.h>
4605 #include <errno.h>
4606 #include <fcntl.h>
4607 #include <sys/stat.h>
4608
4609 /* declarations of non-ANSI functions */
4610 #if defined(__MINGW32__)
4611 # ifdef __STRICT_ANSI__
4612 int _putenv (const char *);
4613 # endif
4614 #elif defined(__CYGWIN__)
4615 # ifdef __STRICT_ANSI__
4616 char *realpath (const char *, char *);
4617 int putenv (char *);
4618 int setenv (const char *, const char *, int);
4619 # endif
4620 /* #elif defined (other platforms) ... */
4621 #endif
4622
4623 /* portability defines, excluding path handling macros */
4624 #if defined(_MSC_VER)
4625 # define setmode _setmode
4626 # define stat    _stat
4627 # define chmod   _chmod
4628 # define getcwd  _getcwd
4629 # define putenv  _putenv
4630 # define S_IXUSR _S_IEXEC
4631 # ifndef _INTPTR_T_DEFINED
4632 #  define _INTPTR_T_DEFINED
4633 #  define intptr_t int
4634 # endif
4635 #elif defined(__MINGW32__)
4636 # define setmode _setmode
4637 # define stat    _stat