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