MiniDLNA update: 1.0.19.1 to 1.0.20
[tomato.git] / release / src / router / transmission / libtool
blob126e8792df715be30a20528473f54ec33446ad3b
1 #! /bin/sh
3 # libtool - Provide generalized library-building support services.
4 # Generated automatically by config.status (transmission) 2.22
5 # Libtool was configured on host archeo:
6 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
8 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
9 # 2006, 2007, 2008 Free Software Foundation, Inc.
10 # Written by Gordon Matzigkeit, 1996
12 # This file is part of GNU Libtool.
14 # GNU Libtool is free software; you can redistribute it and/or
15 # modify it under the terms of the GNU General Public License as
16 # published by the Free Software Foundation; either version 2 of
17 # the License, or (at your option) any later version.
19 # As a special exception to the GNU General Public License,
20 # if you distribute this file as part of a program or library that
21 # is built using GNU Libtool, you may include this file under the
22 # same distribution terms that you use for the rest of that program.
24 # GNU Libtool is distributed in the hope that it will be useful,
25 # but WITHOUT ANY WARRANTY; without even the implied warranty of
26 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 # GNU General Public License for more details.
29 # You should have received a copy of the GNU General Public License
30 # along with GNU Libtool; see the file COPYING. If not, a copy
31 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
32 # obtained by writing to the Free Software Foundation, Inc.,
33 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
36 # The names of the tagged configurations supported by this script.
37 available_tags="CXX "
39 # ### BEGIN LIBTOOL CONFIG
41 # Which release of libtool.m4 was used?
42 macro_version=2.2.6b
43 macro_revision=1.3017
45 # Whether or not to build shared libraries.
46 build_libtool_libs=yes
48 # Whether or not to build static libraries.
49 build_old_libs=yes
51 # What type of objects to build.
52 pic_mode=default
54 # Whether or not to optimize for fast installation.
55 fast_install=yes
57 # The host system.
58 host_alias=mipsel-linux
59 host=mipsel-unknown-linux-gnu
60 host_os=linux-gnu
62 # The build system.
63 build_alias=x86_64-linux-gnu
64 build=x86_64-pc-linux-gnu
65 build_os=linux-gnu
67 # A sed program that does not truncate output.
68 SED="/bin/sed"
70 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
71 Xsed="$SED -e 1s/^X//"
73 # A grep program that handles long lines.
74 GREP="/bin/grep"
76 # An ERE matcher.
77 EGREP="/bin/grep -E"
79 # A literal string matcher.
80 FGREP="/bin/grep -F"
82 # A BSD- or MS-compatible name lister.
83 NM="mipsel-uclibc-nm"
85 # Whether we need soft or hard links.
86 LN_S="ln -s"
88 # What is the maximum length of a command?
89 max_cmd_len=98304
91 # Object file suffix (normally "o").
92 objext=o
94 # Executable file suffix (normally "").
95 exeext=
97 # whether the shell understands "unset".
98 lt_unset=unset
100 # turn spaces into newlines.
101 SP2NL="tr \\040 \\012"
103 # turn newlines into spaces.
104 NL2SP="tr \\015\\012 \\040\\040"
106 # How to create reloadable object files.
107 reload_flag=" -r"
108 reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
110 # An object symbol dumper.
111 OBJDUMP="mipsel-linux-objdump"
113 # Method to check whether dependent libraries are shared objects.
114 deplibs_check_method="pass_all"
116 # Command to use when deplibs_check_method == "file_magic".
117 file_magic_cmd="\$MAGIC_CMD"
119 # The archiver.
120 AR="mipsel-uclibc-ar"
121 AR_FLAGS="cru"
123 # A symbol stripping program.
124 STRIP="mipsel-uclibc-strip"
126 # Commands used to install an old-style archive.
127 RANLIB="mipsel-uclibc-ranlib"
128 old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
129 old_postuninstall_cmds=""
131 # A C compiler.
132 LTCC="mipsel-uclibc-gcc"
134 # LTCC compiler flags.
135 LTCFLAGS="-Os -Wall -fno-delete-null-pointer-checks -funit-at-a-time --param large-function-growth=800 --param max-inline-insns-single=3000 -ffunction-sections -fdata-sections -std=gnu99 -ggdb3 -Wall -W -Wpointer-arith -Wformat-security -Wcast-align -Wundef -Wcast-align -Wstrict-prototypes -Wmissing-declarations -Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Wunused-parameter -Wwrite-strings -Winline -Wfloat-equal -Wextra -Wdeclaration-after-statement -Winit-self"
137 # Take the output of nm and produce a listing of raw symbols and C names.
138 global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
140 # Transform the output of nm in a proper C declaration.
141 global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
143 # Transform the output of nm in a C name address pair.
144 global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
146 # Transform the output of nm in a C name address pair when lib prefix is needed.
147 global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'"
149 # The name of the directory that contains temporary libtool files.
150 objdir=.libs
152 # Shell to use when invoking shell scripts.
153 SHELL="/bin/sh"
155 # An echo program that does not interpret backslashes.
156 ECHO="echo"
158 # Used to examine libraries when file_magic_cmd begins with "file".
159 MAGIC_CMD=file
161 # Must we lock files when doing compilation?
162 need_locks="no"
164 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
165 DSYMUTIL=""
167 # Tool to change global to local symbols on Mac OS X.
168 NMEDIT=""
170 # Tool to manipulate fat objects and archives on Mac OS X.
171 LIPO=""
173 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
174 OTOOL=""
176 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
177 OTOOL64=""
179 # Old archive suffix (normally "a").
180 libext=a
182 # Shared library suffix (normally ".so").
183 shrext_cmds=".so"
185 # The commands to extract the exported symbol list from a shared archive.
186 extract_expsyms_cmds=""
188 # Variables whose values should be saved in libtool wrapper scripts and
189 # restored at link time.
190 variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
192 # Do we need the "lib" prefix for modules?
193 need_lib_prefix=no
195 # Do we need a version for libraries?
196 need_version=no
198 # Library versioning type.
199 version_type=linux
201 # Shared library runtime path variable.
202 runpath_var=LD_RUN_PATH
204 # Shared library path variable.
205 shlibpath_var=LD_LIBRARY_PATH
207 # Is shlibpath searched before the hard-coded library search path?
208 shlibpath_overrides_runpath=no
210 # Format of library name prefix.
211 libname_spec="lib\$name"
213 # List of archive names. First name is the real one, the rest are links.
214 # The last name is the one that the linker finds with -lNAME
215 library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
217 # The coded name of the library, if different from the real name.
218 soname_spec="\${libname}\${release}\${shared_ext}\$major"
220 # Command to use after installation of a shared archive.
221 postinstall_cmds=""
223 # Command to use after uninstallation of a shared archive.
224 postuninstall_cmds=""
226 # Commands used to finish a libtool library installation in a directory.
227 finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
229 # As "finish_cmds", except a single script fragment to be evaled but
230 # not shown.
231 finish_eval=""
233 # Whether we should hardcode library paths into libraries.
234 hardcode_into_libs=yes
236 # Compile-time system search path for libraries.
237 sys_lib_search_path_spec="/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/lib/gcc/mipsel-linux-uclibc/4.2.4 /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/lib/gcc /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/mipsel-linux-uclibc/lib"
239 # Run-time system search path for libraries.
240 sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu "
242 # Whether dlopen is supported.
243 dlopen_support=unknown
245 # Whether dlopen of programs is supported.
246 dlopen_self=unknown
248 # Whether dlopen of statically linked programs is supported.
249 dlopen_self_static=unknown
251 # Commands to strip libraries.
252 old_striplib="mipsel-uclibc-strip --strip-debug"
253 striplib="mipsel-uclibc-strip --strip-unneeded"
256 # The linker used to build libraries.
257 LD="mipsel-uclibc-ld"
259 # Commands used to build an old-style archive.
260 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
262 # A language specific compiler.
263 CC="mipsel-uclibc-gcc"
265 # Is the compiler the GNU compiler?
266 with_gcc=yes
268 # Compiler flag to turn off builtin functions.
269 no_builtin_flag=" -fno-builtin"
271 # How to pass a linker flag through the compiler.
272 wl="-Wl,"
274 # Additional compiler flags for building library objects.
275 pic_flag=" -fPIC -DPIC"
277 # Compiler flag to prevent dynamic linking.
278 link_static_flag="-static"
280 # Does compiler simultaneously support -c and -o options?
281 compiler_c_o="yes"
283 # Whether or not to add -lc for building shared libraries.
284 build_libtool_need_lc=no
286 # Whether or not to disallow shared libs when runtime libs are static.
287 allow_libtool_libs_with_static_runtimes=no
289 # Compiler flag to allow reflexive dlopens.
290 export_dynamic_flag_spec="\${wl}--export-dynamic"
292 # Compiler flag to generate shared objects directly from archives.
293 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
295 # Whether the compiler copes with passing no objects directly.
296 compiler_needs_object="no"
298 # Create an old-style archive from a shared archive.
299 old_archive_from_new_cmds=""
301 # Create a temporary old-style archive to link instead of a shared archive.
302 old_archive_from_expsyms_cmds=""
304 # Commands used to build a shared archive.
305 archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
306 archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
307 cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
308 echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
309 \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
311 # Commands used to build a loadable module if different from building
312 # a shared archive.
313 module_cmds=""
314 module_expsym_cmds=""
316 # Whether we are building with GNU ld or not.
317 with_gnu_ld="yes"
319 # Flag that allows shared libraries with undefined symbols to be built.
320 allow_undefined_flag=""
322 # Flag that enforces no undefined symbols.
323 no_undefined_flag=""
325 # Flag to hardcode $libdir into a binary during linking.
326 # This must work even if $libdir does not exist
327 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
329 # If ld is used when linking, flag to hardcode $libdir into a binary
330 # during linking. This must work even if $libdir does not exist.
331 hardcode_libdir_flag_spec_ld=""
333 # Whether we need a single "-rpath" flag with a separated argument.
334 hardcode_libdir_separator=""
336 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
337 # DIR into the resulting binary.
338 hardcode_direct=no
340 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
341 # DIR into the resulting binary and the resulting library dependency is
342 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
343 # library is relocated.
344 hardcode_direct_absolute=no
346 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
347 # into the resulting binary.
348 hardcode_minus_L=no
350 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
351 # into the resulting binary.
352 hardcode_shlibpath_var=unsupported
354 # Set to "yes" if building a shared library automatically hardcodes DIR
355 # into the library and all subsequent libraries and executables linked
356 # against it.
357 hardcode_automatic=no
359 # Set to yes if linker adds runtime paths of dependent libraries
360 # to runtime path list.
361 inherit_rpath=no
363 # Whether libtool must link a program against all its dependency libraries.
364 link_all_deplibs=no
366 # Fix the shell variable $srcfile for the compiler.
367 fix_srcfile_path=""
369 # Set to "yes" if exported symbols are required.
370 always_export_symbols=no
372 # The commands to list exported symbols.
373 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
375 # Symbols that should not be listed in the preloaded symbols.
376 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
378 # Symbols that must always be exported.
379 include_expsyms=""
381 # Commands necessary for linking programs (against libraries) with templates.
382 prelink_cmds=""
384 # Specify filename containing input files.
385 file_list_spec=""
387 # How to hardcode a shared library path into an executable.
388 hardcode_action=immediate
390 # The directories searched by this compiler when creating a shared library.
391 compiler_lib_search_dirs=""
393 # Dependencies to place before and after the objects being linked to
394 # create a shared library.
395 predep_objects=""
396 postdep_objects=""
397 predeps=""
398 postdeps=""
400 # The library search path used internally by the compiler when linking
401 # a shared library.
402 compiler_lib_search_path=""
404 # ### END LIBTOOL CONFIG
406 # Generated from ltmain.m4sh.
408 # ltmain.sh (GNU libtool) 2.2.6b
409 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
411 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
412 # This is free software; see the source for copying conditions. There is NO
413 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
415 # GNU Libtool is free software; you can redistribute it and/or modify
416 # it under the terms of the GNU General Public License as published by
417 # the Free Software Foundation; either version 2 of the License, or
418 # (at your option) any later version.
420 # As a special exception to the GNU General Public License,
421 # if you distribute this file as part of a program or library that
422 # is built using GNU Libtool, you may include this file under the
423 # same distribution terms that you use for the rest of that program.
425 # GNU Libtool is distributed in the hope that it will be useful, but
426 # WITHOUT ANY WARRANTY; without even the implied warranty of
427 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
428 # General Public License for more details.
430 # You should have received a copy of the GNU General Public License
431 # along with GNU Libtool; see the file COPYING. If not, a copy
432 # can be downloaded from http://www.gnu.org/licenses/gpl.html,
433 # or obtained by writing to the Free Software Foundation, Inc.,
434 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
436 # Usage: $progname [OPTION]... [MODE-ARG]...
438 # Provide generalized library-building support services.
440 # --config show all configuration variables
441 # --debug enable verbose shell tracing
442 # -n, --dry-run display commands without modifying any files
443 # --features display basic configuration information and exit
444 # --mode=MODE use operation mode MODE
445 # --preserve-dup-deps don't remove duplicate dependency libraries
446 # --quiet, --silent don't print informational messages
447 # --tag=TAG use configuration variables from tag TAG
448 # -v, --verbose print informational messages (default)
449 # --version print version information
450 # -h, --help print short or long help message
452 # MODE must be one of the following:
454 # clean remove files from the build directory
455 # compile compile a source file into a libtool object
456 # execute automatically set library path, then run a program
457 # finish complete the installation of libtool libraries
458 # install install libraries or executables
459 # link create a library or an executable
460 # uninstall remove libraries from an installed directory
462 # MODE-ARGS vary depending on the MODE.
463 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
465 # When reporting a bug, please describe a test case to reproduce it and
466 # include the following information:
468 # host-triplet: $host
469 # shell: $SHELL
470 # compiler: $LTCC
471 # compiler flags: $LTCFLAGS
472 # linker: $LD (gnu? $with_gnu_ld)
473 # $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
474 # automake: $automake_version
475 # autoconf: $autoconf_version
477 # Report bugs to <bug-libtool@gnu.org>.
479 PROGRAM=ltmain.sh
480 PACKAGE=libtool
481 VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"
482 TIMESTAMP=""
483 package_revision=1.3017
485 # Be Bourne compatible
486 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
487 emulate sh
488 NULLCMD=:
489 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
490 # is contrary to our usage. Disable this feature.
491 alias -g '${1+"$@"}'='"$@"'
492 setopt NO_GLOB_SUBST
493 else
494 case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
496 BIN_SH=xpg4; export BIN_SH # for Tru64
497 DUALCASE=1; export DUALCASE # for MKS sh
499 # NLS nuisances: We save the old values to restore during execute mode.
500 # Only set LANG and LC_ALL to C if already set.
501 # These must not be set unconditionally because not all systems understand
502 # e.g. LANG=C (notably SCO).
503 lt_user_locale=
504 lt_safe_locale=
505 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
507 eval "if test \"\${$lt_var+set}\" = set; then
508 save_$lt_var=\$$lt_var
509 $lt_var=C
510 export $lt_var
511 lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
512 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
514 done
516 $lt_unset CDPATH
522 : ${CP="cp -f"}
523 : ${ECHO="echo"}
524 : ${EGREP="/bin/grep -E"}
525 : ${FGREP="/bin/grep -F"}
526 : ${GREP="/bin/grep"}
527 : ${LN_S="ln -s"}
528 : ${MAKE="make"}
529 : ${MKDIR="mkdir"}
530 : ${MV="mv -f"}
531 : ${RM="rm -f"}
532 : ${SED="/bin/sed"}
533 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
534 : ${Xsed="$SED -e 1s/^X//"}
536 # Global variables:
537 EXIT_SUCCESS=0
538 EXIT_FAILURE=1
539 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
540 EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
542 exit_status=$EXIT_SUCCESS
544 # Make sure IFS has a sensible default
545 lt_nl='
547 IFS=" $lt_nl"
549 dirname="s,/[^/]*$,,"
550 basename="s,^.*/,,"
552 # func_dirname_and_basename file append nondir_replacement
553 # perform func_basename and func_dirname in a single function
554 # call:
555 # dirname: Compute the dirname of FILE. If nonempty,
556 # add APPEND to the result, otherwise set result
557 # to NONDIR_REPLACEMENT.
558 # value returned in "$func_dirname_result"
559 # basename: Compute filename of FILE.
560 # value retuned in "$func_basename_result"
561 # Implementation must be kept synchronized with func_dirname
562 # and func_basename. For efficiency, we do not delegate to
563 # those functions but instead duplicate the functionality here.
564 func_dirname_and_basename ()
566 # Extract subdirectory from the argument.
567 func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
568 if test "X$func_dirname_result" = "X${1}"; then
569 func_dirname_result="${3}"
570 else
571 func_dirname_result="$func_dirname_result${2}"
573 func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
576 # Generated shell functions inserted here.
578 # func_dirname file append nondir_replacement
579 # Compute the dirname of FILE. If nonempty, add APPEND to the result,
580 # otherwise set result to NONDIR_REPLACEMENT.
581 func_dirname ()
583 case ${1} in
584 */*) func_dirname_result="${1%/*}${2}" ;;
585 * ) func_dirname_result="${3}" ;;
586 esac
589 # func_basename file
590 func_basename ()
592 func_basename_result="${1##*/}"
595 # func_dirname_and_basename file append nondir_replacement
596 # perform func_basename and func_dirname in a single function
597 # call:
598 # dirname: Compute the dirname of FILE. If nonempty,
599 # add APPEND to the result, otherwise set result
600 # to NONDIR_REPLACEMENT.
601 # value returned in "$func_dirname_result"
602 # basename: Compute filename of FILE.
603 # value retuned in "$func_basename_result"
604 # Implementation must be kept synchronized with func_dirname
605 # and func_basename. For efficiency, we do not delegate to
606 # those functions but instead duplicate the functionality here.
607 func_dirname_and_basename ()
609 case ${1} in
610 */*) func_dirname_result="${1%/*}${2}" ;;
611 * ) func_dirname_result="${3}" ;;
612 esac
613 func_basename_result="${1##*/}"
616 # func_stripname prefix suffix name
617 # strip PREFIX and SUFFIX off of NAME.
618 # PREFIX and SUFFIX must not contain globbing or regex special
619 # characters, hashes, percent signs, but SUFFIX may contain a leading
620 # dot (in which case that matches only a dot).
621 func_stripname ()
623 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
624 # positional parameters, so assign one to ordinary parameter first.
625 func_stripname_result=${3}
626 func_stripname_result=${func_stripname_result#"${1}"}
627 func_stripname_result=${func_stripname_result%"${2}"}
630 # func_opt_split
631 func_opt_split ()
633 func_opt_split_opt=${1%%=*}
634 func_opt_split_arg=${1#*=}
637 # func_lo2o object
638 func_lo2o ()
640 case ${1} in
641 *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
642 *) func_lo2o_result=${1} ;;
643 esac
646 # func_xform libobj-or-source
647 func_xform ()
649 func_xform_result=${1%.*}.lo
652 # func_arith arithmetic-term...
653 func_arith ()
655 func_arith_result=$(( $* ))
658 # func_len string
659 # STRING may not start with a hyphen.
660 func_len ()
662 func_len_result=${#1}
666 # func_append var value
667 # Append VALUE to the end of shell variable VAR.
668 func_append ()
670 eval "$1+=\$2"
672 # Generated shell functions inserted here.
674 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
675 # is ksh but when the shell is invoked as "sh" and the current value of
676 # the _XPG environment variable is not equal to 1 (one), the special
677 # positional parameter $0, within a function call, is the name of the
678 # function.
679 progpath="$0"
681 # The name of this program:
682 # In the unlikely event $progname began with a '-', it would play havoc with
683 # func_echo (imagine progname=-n), so we prepend ./ in that case:
684 func_dirname_and_basename "$progpath"
685 progname=$func_basename_result
686 case $progname in
687 -*) progname=./$progname ;;
688 esac
690 # Make sure we have an absolute path for reexecution:
691 case $progpath in
692 [\\/]*|[A-Za-z]:\\*) ;;
693 *[\\/]*)
694 progdir=$func_dirname_result
695 progdir=`cd "$progdir" && pwd`
696 progpath="$progdir/$progname"
699 save_IFS="$IFS"
700 IFS=:
701 for progdir in $PATH; do
702 IFS="$save_IFS"
703 test -x "$progdir/$progname" && break
704 done
705 IFS="$save_IFS"
706 test -n "$progdir" || progdir=`pwd`
707 progpath="$progdir/$progname"
709 esac
711 # Sed substitution that helps us do robust quoting. It backslashifies
712 # metacharacters that are still active within double-quoted strings.
713 Xsed="${SED}"' -e 1s/^X//'
714 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
716 # Same as above, but do not quote variable references.
717 double_quote_subst='s/\(["`\\]\)/\\\1/g'
719 # Re-`\' parameter expansions in output of double_quote_subst that were
720 # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
721 # in input to double_quote_subst, that '$' was protected from expansion.
722 # Since each input `\' is now two `\'s, look for any number of runs of
723 # four `\'s followed by two `\'s and then a '$'. `\' that '$'.
724 bs='\\'
725 bs2='\\\\'
726 bs4='\\\\\\\\'
727 dollar='\$'
728 sed_double_backslash="\
729 s/$bs4/&\\
731 s/^$bs2$dollar/$bs&/
732 s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
733 s/\n//g"
735 # Standard options:
736 opt_dry_run=false
737 opt_help=false
738 opt_quiet=false
739 opt_verbose=false
740 opt_warning=:
742 # func_echo arg...
743 # Echo program name prefixed message, along with the current mode
744 # name if it has been set yet.
745 func_echo ()
747 $ECHO "$progname${mode+: }$mode: $*"
750 # func_verbose arg...
751 # Echo program name prefixed message in verbose mode only.
752 func_verbose ()
754 $opt_verbose && func_echo ${1+"$@"}
756 # A bug in bash halts the script if the last line of a function
757 # fails when set -e is in force, so we need another command to
758 # work around that:
762 # func_error arg...
763 # Echo program name prefixed message to standard error.
764 func_error ()
766 $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
769 # func_warning arg...
770 # Echo program name prefixed warning message to standard error.
771 func_warning ()
773 $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
775 # bash bug again:
779 # func_fatal_error arg...
780 # Echo program name prefixed message to standard error, and exit.
781 func_fatal_error ()
783 func_error ${1+"$@"}
784 exit $EXIT_FAILURE
787 # func_fatal_help arg...
788 # Echo program name prefixed message to standard error, followed by
789 # a help hint, and exit.
790 func_fatal_help ()
792 func_error ${1+"$@"}
793 func_fatal_error "$help"
795 help="Try \`$progname --help' for more information." ## default
798 # func_grep expression filename
799 # Check whether EXPRESSION matches any line of FILENAME, without output.
800 func_grep ()
802 $GREP "$1" "$2" >/dev/null 2>&1
806 # func_mkdir_p directory-path
807 # Make sure the entire path to DIRECTORY-PATH is available.
808 func_mkdir_p ()
810 my_directory_path="$1"
811 my_dir_list=
813 if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
815 # Protect directory names starting with `-'
816 case $my_directory_path in
817 -*) my_directory_path="./$my_directory_path" ;;
818 esac
820 # While some portion of DIR does not yet exist...
821 while test ! -d "$my_directory_path"; do
822 # ...make a list in topmost first order. Use a colon delimited
823 # list incase some portion of path contains whitespace.
824 my_dir_list="$my_directory_path:$my_dir_list"
826 # If the last portion added has no slash in it, the list is done
827 case $my_directory_path in */*) ;; *) break ;; esac
829 # ...otherwise throw away the child directory and loop
830 my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
831 done
832 my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
834 save_mkdir_p_IFS="$IFS"; IFS=':'
835 for my_dir in $my_dir_list; do
836 IFS="$save_mkdir_p_IFS"
837 # mkdir can fail with a `File exist' error if two processes
838 # try to create one of the directories concurrently. Don't
839 # stop in that case!
840 $MKDIR "$my_dir" 2>/dev/null || :
841 done
842 IFS="$save_mkdir_p_IFS"
844 # Bail out if we (or some other process) failed to create a directory.
845 test -d "$my_directory_path" || \
846 func_fatal_error "Failed to create \`$1'"
851 # func_mktempdir [string]
852 # Make a temporary directory that won't clash with other running
853 # libtool processes, and avoids race conditions if possible. If
854 # given, STRING is the basename for that directory.
855 func_mktempdir ()
857 my_template="${TMPDIR-/tmp}/${1-$progname}"
859 if test "$opt_dry_run" = ":"; then
860 # Return a directory name, but don't create it in dry-run mode
861 my_tmpdir="${my_template}-$$"
862 else
864 # If mktemp works, use that first and foremost
865 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
867 if test ! -d "$my_tmpdir"; then
868 # Failing that, at least try and use $RANDOM to avoid a race
869 my_tmpdir="${my_template}-${RANDOM-0}$$"
871 save_mktempdir_umask=`umask`
872 umask 0077
873 $MKDIR "$my_tmpdir"
874 umask $save_mktempdir_umask
877 # If we're not in dry-run mode, bomb out on failure
878 test -d "$my_tmpdir" || \
879 func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
882 $ECHO "X$my_tmpdir" | $Xsed
886 # func_quote_for_eval arg
887 # Aesthetically quote ARG to be evaled later.
888 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
889 # is double-quoted, suitable for a subsequent eval, whereas
890 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
891 # which are still active within double quotes backslashified.
892 func_quote_for_eval ()
894 case $1 in
895 *[\\\`\"\$]*)
896 func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
898 func_quote_for_eval_unquoted_result="$1" ;;
899 esac
901 case $func_quote_for_eval_unquoted_result in
902 # Double-quote args containing shell metacharacters to delay
903 # word splitting, command substitution and and variable
904 # expansion for a subsequent eval.
905 # Many Bourne shells cannot handle close brackets correctly
906 # in scan sets, so we specify it separately.
907 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
908 func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
911 func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
912 esac
916 # func_quote_for_expand arg
917 # Aesthetically quote ARG to be evaled later; same as above,
918 # but do not quote variable references.
919 func_quote_for_expand ()
921 case $1 in
922 *[\\\`\"]*)
923 my_arg=`$ECHO "X$1" | $Xsed \
924 -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
926 my_arg="$1" ;;
927 esac
929 case $my_arg in
930 # Double-quote args containing shell metacharacters to delay
931 # word splitting and command substitution for a subsequent eval.
932 # Many Bourne shells cannot handle close brackets correctly
933 # in scan sets, so we specify it separately.
934 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
935 my_arg="\"$my_arg\""
937 esac
939 func_quote_for_expand_result="$my_arg"
943 # func_show_eval cmd [fail_exp]
944 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
945 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
946 # is given, then evaluate it.
947 func_show_eval ()
949 my_cmd="$1"
950 my_fail_exp="${2-:}"
952 ${opt_silent-false} || {
953 func_quote_for_expand "$my_cmd"
954 eval "func_echo $func_quote_for_expand_result"
957 if ${opt_dry_run-false}; then :; else
958 eval "$my_cmd"
959 my_status=$?
960 if test "$my_status" -eq 0; then :; else
961 eval "(exit $my_status); $my_fail_exp"
967 # func_show_eval_locale cmd [fail_exp]
968 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
969 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
970 # is given, then evaluate it. Use the saved locale for evaluation.
971 func_show_eval_locale ()
973 my_cmd="$1"
974 my_fail_exp="${2-:}"
976 ${opt_silent-false} || {
977 func_quote_for_expand "$my_cmd"
978 eval "func_echo $func_quote_for_expand_result"
981 if ${opt_dry_run-false}; then :; else
982 eval "$lt_user_locale
983 $my_cmd"
984 my_status=$?
985 eval "$lt_safe_locale"
986 if test "$my_status" -eq 0; then :; else
987 eval "(exit $my_status); $my_fail_exp"
996 # func_version
997 # Echo version message to standard output and exit.
998 func_version ()
1000 $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
1001 s/^# //
1002 s/^# *$//
1003 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
1005 }' < "$progpath"
1006 exit $?
1009 # func_usage
1010 # Echo short help message to standard output and exit.
1011 func_usage ()
1013 $SED -n '/^# Usage:/,/# -h/ {
1014 s/^# //
1015 s/^# *$//
1016 s/\$progname/'$progname'/
1018 }' < "$progpath"
1019 $ECHO
1020 $ECHO "run \`$progname --help | more' for full usage"
1021 exit $?
1024 # func_help
1025 # Echo long help message to standard output and exit.
1026 func_help ()
1028 $SED -n '/^# Usage:/,/# Report bugs to/ {
1029 s/^# //
1030 s/^# *$//
1031 s*\$progname*'$progname'*
1032 s*\$host*'"$host"'*
1033 s*\$SHELL*'"$SHELL"'*
1034 s*\$LTCC*'"$LTCC"'*
1035 s*\$LTCFLAGS*'"$LTCFLAGS"'*
1036 s*\$LD*'"$LD"'*
1037 s/\$with_gnu_ld/'"$with_gnu_ld"'/
1038 s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
1039 s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
1041 }' < "$progpath"
1042 exit $?
1045 # func_missing_arg argname
1046 # Echo program name prefixed message to standard error and set global
1047 # exit_cmd.
1048 func_missing_arg ()
1050 func_error "missing argument for $1"
1051 exit_cmd=exit
1054 exit_cmd=:
1060 # Check that we have a working $ECHO.
1061 if test "X$1" = X--no-reexec; then
1062 # Discard the --no-reexec flag, and continue.
1063 shift
1064 elif test "X$1" = X--fallback-echo; then
1065 # Avoid inline document here, it may be left over
1067 elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
1068 # Yippee, $ECHO works!
1070 else
1071 # Restart under the correct shell, and then maybe $ECHO will work.
1072 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
1075 if test "X$1" = X--fallback-echo; then
1076 # used as fallback echo
1077 shift
1078 cat <<EOF
1081 exit $EXIT_SUCCESS
1084 magic="%%%MAGIC variable%%%"
1085 magic_exe="%%%MAGIC EXE variable%%%"
1087 # Global variables.
1088 # $mode is unset
1089 nonopt=
1090 execute_dlfiles=
1091 preserve_args=
1092 lo2o="s/\\.lo\$/.${objext}/"
1093 o2lo="s/\\.${objext}\$/.lo/"
1094 extracted_archives=
1095 extracted_serial=0
1097 opt_dry_run=false
1098 opt_duplicate_deps=false
1099 opt_silent=false
1100 opt_debug=:
1102 # If this variable is set in any of the actions, the command in it
1103 # will be execed at the end. This prevents here-documents from being
1104 # left over by shells.
1105 exec_cmd=
1107 # func_fatal_configuration arg...
1108 # Echo program name prefixed message to standard error, followed by
1109 # a configuration failure hint, and exit.
1110 func_fatal_configuration ()
1112 func_error ${1+"$@"}
1113 func_error "See the $PACKAGE documentation for more information."
1114 func_fatal_error "Fatal configuration error."
1118 # func_config
1119 # Display the configuration for all the tags in this script.
1120 func_config ()
1122 re_begincf='^# ### BEGIN LIBTOOL'
1123 re_endcf='^# ### END LIBTOOL'
1125 # Default configuration.
1126 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
1128 # Now print the configurations for the tags.
1129 for tagname in $taglist; do
1130 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
1131 done
1133 exit $?
1136 # func_features
1137 # Display the features supported by this script.
1138 func_features ()
1140 $ECHO "host: $host"
1141 if test "$build_libtool_libs" = yes; then
1142 $ECHO "enable shared libraries"
1143 else
1144 $ECHO "disable shared libraries"
1146 if test "$build_old_libs" = yes; then
1147 $ECHO "enable static libraries"
1148 else
1149 $ECHO "disable static libraries"
1152 exit $?
1155 # func_enable_tag tagname
1156 # Verify that TAGNAME is valid, and either flag an error and exit, or
1157 # enable the TAGNAME tag. We also add TAGNAME to the global $taglist
1158 # variable here.
1159 func_enable_tag ()
1161 # Global variable:
1162 tagname="$1"
1164 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
1165 re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
1166 sed_extractcf="/$re_begincf/,/$re_endcf/p"
1168 # Validate tagname.
1169 case $tagname in
1170 *[!-_A-Za-z0-9,/]*)
1171 func_fatal_error "invalid tag name: $tagname"
1173 esac
1175 # Don't test for the "default" C tag, as we know it's
1176 # there but not specially marked.
1177 case $tagname in
1178 CC) ;;
1180 if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
1181 taglist="$taglist $tagname"
1183 # Evaluate the configuration. Be careful to quote the path
1184 # and the sed script, to avoid splitting on whitespace, but
1185 # also don't use non-portable quotes within backquotes within
1186 # quotes we have to do it in 2 steps:
1187 extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
1188 eval "$extractedcf"
1189 else
1190 func_error "ignoring unknown tag $tagname"
1193 esac
1196 # Parse options once, thoroughly. This comes as soon as possible in
1197 # the script to make things like `libtool --version' happen quickly.
1200 # Shorthand for --mode=foo, only valid as the first argument
1201 case $1 in
1202 clean|clea|cle|cl)
1203 shift; set dummy --mode clean ${1+"$@"}; shift
1205 compile|compil|compi|comp|com|co|c)
1206 shift; set dummy --mode compile ${1+"$@"}; shift
1208 execute|execut|execu|exec|exe|ex|e)
1209 shift; set dummy --mode execute ${1+"$@"}; shift
1211 finish|finis|fini|fin|fi|f)
1212 shift; set dummy --mode finish ${1+"$@"}; shift
1214 install|instal|insta|inst|ins|in|i)
1215 shift; set dummy --mode install ${1+"$@"}; shift
1217 link|lin|li|l)
1218 shift; set dummy --mode link ${1+"$@"}; shift
1220 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1221 shift; set dummy --mode uninstall ${1+"$@"}; shift
1223 esac
1225 # Parse non-mode specific arguments:
1226 while test "$#" -gt 0; do
1227 opt="$1"
1228 shift
1230 case $opt in
1231 --config) func_config ;;
1233 --debug) preserve_args="$preserve_args $opt"
1234 func_echo "enabling shell trace mode"
1235 opt_debug='set -x'
1236 $opt_debug
1239 -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
1240 execute_dlfiles="$execute_dlfiles $1"
1241 shift
1244 --dry-run | -n) opt_dry_run=: ;;
1245 --features) func_features ;;
1246 --finish) mode="finish" ;;
1248 --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
1249 case $1 in
1250 # Valid mode arguments:
1251 clean) ;;
1252 compile) ;;
1253 execute) ;;
1254 finish) ;;
1255 install) ;;
1256 link) ;;
1257 relink) ;;
1258 uninstall) ;;
1260 # Catch anything else as an error
1261 *) func_error "invalid argument for $opt"
1262 exit_cmd=exit
1263 break
1265 esac
1267 mode="$1"
1268 shift
1271 --preserve-dup-deps)
1272 opt_duplicate_deps=: ;;
1274 --quiet|--silent) preserve_args="$preserve_args $opt"
1275 opt_silent=:
1278 --verbose| -v) preserve_args="$preserve_args $opt"
1279 opt_silent=false
1282 --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
1283 preserve_args="$preserve_args $opt $1"
1284 func_enable_tag "$1" # tagname is set here
1285 shift
1288 # Separate optargs to long options:
1289 -dlopen=*|--mode=*|--tag=*)
1290 func_opt_split "$opt"
1291 set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
1292 shift
1295 -\?|-h) func_usage ;;
1296 --help) opt_help=: ;;
1297 --version) func_version ;;
1299 -*) func_fatal_help "unrecognized option \`$opt'" ;;
1301 *) nonopt="$opt"
1302 break
1304 esac
1305 done
1308 case $host in
1309 *cygwin* | *mingw* | *pw32* | *cegcc*)
1310 # don't eliminate duplications in $postdeps and $predeps
1311 opt_duplicate_compiler_generated_deps=:
1314 opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
1316 esac
1318 # Having warned about all mis-specified options, bail out if
1319 # anything was wrong.
1320 $exit_cmd $EXIT_FAILURE
1323 # func_check_version_match
1324 # Ensure that we are using m4 macros, and libtool script from the same
1325 # release of libtool.
1326 func_check_version_match ()
1328 if test "$package_revision" != "$macro_revision"; then
1329 if test "$VERSION" != "$macro_version"; then
1330 if test -z "$macro_version"; then
1331 cat >&2 <<_LT_EOF
1332 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
1333 $progname: definition of this LT_INIT comes from an older release.
1334 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1335 $progname: and run autoconf again.
1336 _LT_EOF
1337 else
1338 cat >&2 <<_LT_EOF
1339 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
1340 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1341 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1342 $progname: and run autoconf again.
1343 _LT_EOF
1345 else
1346 cat >&2 <<_LT_EOF
1347 $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
1348 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
1349 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
1350 $progname: of $PACKAGE $VERSION and run autoconf again.
1351 _LT_EOF
1354 exit $EXIT_MISMATCH
1359 ## ----------- ##
1360 ## Main. ##
1361 ## ----------- ##
1363 $opt_help || {
1364 # Sanity checks first:
1365 func_check_version_match
1367 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1368 func_fatal_configuration "not configured to build any kind of library"
1371 test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1374 # Darwin sucks
1375 eval std_shrext=\"$shrext_cmds\"
1378 # Only execute mode is allowed to have -dlopen flags.
1379 if test -n "$execute_dlfiles" && test "$mode" != execute; then
1380 func_error "unrecognized option \`-dlopen'"
1381 $ECHO "$help" 1>&2
1382 exit $EXIT_FAILURE
1385 # Change the help message to a mode-specific one.
1386 generic_help="$help"
1387 help="Try \`$progname --help --mode=$mode' for more information."
1391 # func_lalib_p file
1392 # True iff FILE is a libtool `.la' library or `.lo' object file.
1393 # This function is only a basic sanity check; it will hardly flush out
1394 # determined imposters.
1395 func_lalib_p ()
1397 test -f "$1" &&
1398 $SED -e 4q "$1" 2>/dev/null \
1399 | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1402 # func_lalib_unsafe_p file
1403 # True iff FILE is a libtool `.la' library or `.lo' object file.
1404 # This function implements the same check as func_lalib_p without
1405 # resorting to external programs. To this end, it redirects stdin and
1406 # closes it afterwards, without saving the original file descriptor.
1407 # As a safety measure, use it only where a negative result would be
1408 # fatal anyway. Works if `file' does not exist.
1409 func_lalib_unsafe_p ()
1411 lalib_p=no
1412 if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1413 for lalib_p_l in 1 2 3 4
1415 read lalib_p_line
1416 case "$lalib_p_line" in
1417 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1418 esac
1419 done
1420 exec 0<&5 5<&-
1422 test "$lalib_p" = yes
1425 # func_ltwrapper_script_p file
1426 # True iff FILE is a libtool wrapper script
1427 # This function is only a basic sanity check; it will hardly flush out
1428 # determined imposters.
1429 func_ltwrapper_script_p ()
1431 func_lalib_p "$1"
1434 # func_ltwrapper_executable_p file
1435 # True iff FILE is a libtool wrapper executable
1436 # This function is only a basic sanity check; it will hardly flush out
1437 # determined imposters.
1438 func_ltwrapper_executable_p ()
1440 func_ltwrapper_exec_suffix=
1441 case $1 in
1442 *.exe) ;;
1443 *) func_ltwrapper_exec_suffix=.exe ;;
1444 esac
1445 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1448 # func_ltwrapper_scriptname file
1449 # Assumes file is an ltwrapper_executable
1450 # uses $file to determine the appropriate filename for a
1451 # temporary ltwrapper_script.
1452 func_ltwrapper_scriptname ()
1454 func_ltwrapper_scriptname_result=""
1455 if func_ltwrapper_executable_p "$1"; then
1456 func_dirname_and_basename "$1" "" "."
1457 func_stripname '' '.exe' "$func_basename_result"
1458 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1462 # func_ltwrapper_p file
1463 # True iff FILE is a libtool wrapper script or wrapper executable
1464 # This function is only a basic sanity check; it will hardly flush out
1465 # determined imposters.
1466 func_ltwrapper_p ()
1468 func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1472 # func_execute_cmds commands fail_cmd
1473 # Execute tilde-delimited COMMANDS.
1474 # If FAIL_CMD is given, eval that upon failure.
1475 # FAIL_CMD may read-access the current command in variable CMD!
1476 func_execute_cmds ()
1478 $opt_debug
1479 save_ifs=$IFS; IFS='~'
1480 for cmd in $1; do
1481 IFS=$save_ifs
1482 eval cmd=\"$cmd\"
1483 func_show_eval "$cmd" "${2-:}"
1484 done
1485 IFS=$save_ifs
1489 # func_source file
1490 # Source FILE, adding directory component if necessary.
1491 # Note that it is not necessary on cygwin/mingw to append a dot to
1492 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1493 # behavior happens only for exec(3), not for open(2)! Also, sourcing
1494 # `FILE.' does not work on cygwin managed mounts.
1495 func_source ()
1497 $opt_debug
1498 case $1 in
1499 */* | *\\*) . "$1" ;;
1500 *) . "./$1" ;;
1501 esac
1505 # func_infer_tag arg
1506 # Infer tagged configuration to use if any are available and
1507 # if one wasn't chosen via the "--tag" command line option.
1508 # Only attempt this if the compiler in the base compile
1509 # command doesn't match the default compiler.
1510 # arg is usually of the form 'gcc ...'
1511 func_infer_tag ()
1513 $opt_debug
1514 if test -n "$available_tags" && test -z "$tagname"; then
1515 CC_quoted=
1516 for arg in $CC; do
1517 func_quote_for_eval "$arg"
1518 CC_quoted="$CC_quoted $func_quote_for_eval_result"
1519 done
1520 case $@ in
1521 # Blanks in the command may have been stripped by the calling shell,
1522 # but not from the CC environment variable when configure was run.
1523 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1524 # Blanks at the start of $base_compile will cause this to fail
1525 # if we don't check for them as well.
1527 for z in $available_tags; do
1528 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1529 # Evaluate the configuration.
1530 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1531 CC_quoted=
1532 for arg in $CC; do
1533 # Double-quote args containing other shell metacharacters.
1534 func_quote_for_eval "$arg"
1535 CC_quoted="$CC_quoted $func_quote_for_eval_result"
1536 done
1537 case "$@ " in
1538 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1539 # The compiler in the base compile command matches
1540 # the one in the tagged configuration.
1541 # Assume this is the tagged configuration we want.
1542 tagname=$z
1543 break
1545 esac
1547 done
1548 # If $tagname still isn't set, then no tagged configuration
1549 # was found and let the user know that the "--tag" command
1550 # line option must be used.
1551 if test -z "$tagname"; then
1552 func_echo "unable to infer tagged configuration"
1553 func_fatal_error "specify a tag with \`--tag'"
1554 # else
1555 # func_verbose "using $tagname tagged configuration"
1558 esac
1564 # func_write_libtool_object output_name pic_name nonpic_name
1565 # Create a libtool object file (analogous to a ".la" file),
1566 # but don't create it if we're doing a dry run.
1567 func_write_libtool_object ()
1569 write_libobj=${1}
1570 if test "$build_libtool_libs" = yes; then
1571 write_lobj=\'${2}\'
1572 else
1573 write_lobj=none
1576 if test "$build_old_libs" = yes; then
1577 write_oldobj=\'${3}\'
1578 else
1579 write_oldobj=none
1582 $opt_dry_run || {
1583 cat >${write_libobj}T <<EOF
1584 # $write_libobj - a libtool object file
1585 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1587 # Please DO NOT delete this file!
1588 # It is necessary for linking the library.
1590 # Name of the PIC object.
1591 pic_object=$write_lobj
1593 # Name of the non-PIC object
1594 non_pic_object=$write_oldobj
1597 $MV "${write_libobj}T" "${write_libobj}"
1601 # func_mode_compile arg...
1602 func_mode_compile ()
1604 $opt_debug
1605 # Get the compilation command and the source file.
1606 base_compile=
1607 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
1608 suppress_opt=yes
1609 suppress_output=
1610 arg_mode=normal
1611 libobj=
1612 later=
1613 pie_flag=
1615 for arg
1617 case $arg_mode in
1618 arg )
1619 # do not "continue". Instead, add this to base_compile
1620 lastarg="$arg"
1621 arg_mode=normal
1624 target )
1625 libobj="$arg"
1626 arg_mode=normal
1627 continue
1630 normal )
1631 # Accept any command-line options.
1632 case $arg in
1634 test -n "$libobj" && \
1635 func_fatal_error "you cannot specify \`-o' more than once"
1636 arg_mode=target
1637 continue
1640 -pie | -fpie | -fPIE)
1641 pie_flag="$pie_flag $arg"
1642 continue
1645 -shared | -static | -prefer-pic | -prefer-non-pic)
1646 later="$later $arg"
1647 continue
1650 -no-suppress)
1651 suppress_opt=no
1652 continue
1655 -Xcompiler)
1656 arg_mode=arg # the next one goes into the "base_compile" arg list
1657 continue # The current "srcfile" will either be retained or
1658 ;; # replaced later. I would guess that would be a bug.
1660 -Wc,*)
1661 func_stripname '-Wc,' '' "$arg"
1662 args=$func_stripname_result
1663 lastarg=
1664 save_ifs="$IFS"; IFS=','
1665 for arg in $args; do
1666 IFS="$save_ifs"
1667 func_quote_for_eval "$arg"
1668 lastarg="$lastarg $func_quote_for_eval_result"
1669 done
1670 IFS="$save_ifs"
1671 func_stripname ' ' '' "$lastarg"
1672 lastarg=$func_stripname_result
1674 # Add the arguments to base_compile.
1675 base_compile="$base_compile $lastarg"
1676 continue
1680 # Accept the current argument as the source file.
1681 # The previous "srcfile" becomes the current argument.
1683 lastarg="$srcfile"
1684 srcfile="$arg"
1686 esac # case $arg
1688 esac # case $arg_mode
1690 # Aesthetically quote the previous argument.
1691 func_quote_for_eval "$lastarg"
1692 base_compile="$base_compile $func_quote_for_eval_result"
1693 done # for arg
1695 case $arg_mode in
1696 arg)
1697 func_fatal_error "you must specify an argument for -Xcompile"
1699 target)
1700 func_fatal_error "you must specify a target with \`-o'"
1703 # Get the name of the library object.
1704 test -z "$libobj" && {
1705 func_basename "$srcfile"
1706 libobj="$func_basename_result"
1709 esac
1711 # Recognize several different file suffixes.
1712 # If the user specifies -o file.o, it is replaced with file.lo
1713 case $libobj in
1714 *.[cCFSifmso] | \
1715 *.ada | *.adb | *.ads | *.asm | \
1716 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1717 *.[fF][09]? | *.for | *.java | *.obj | *.sx)
1718 func_xform "$libobj"
1719 libobj=$func_xform_result
1721 esac
1723 case $libobj in
1724 *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1726 func_fatal_error "cannot determine name of library object from \`$libobj'"
1728 esac
1730 func_infer_tag $base_compile
1732 for arg in $later; do
1733 case $arg in
1734 -shared)
1735 test "$build_libtool_libs" != yes && \
1736 func_fatal_configuration "can not build a shared library"
1737 build_old_libs=no
1738 continue
1741 -static)
1742 build_libtool_libs=no
1743 build_old_libs=yes
1744 continue
1747 -prefer-pic)
1748 pic_mode=yes
1749 continue
1752 -prefer-non-pic)
1753 pic_mode=no
1754 continue
1756 esac
1757 done
1759 func_quote_for_eval "$libobj"
1760 test "X$libobj" != "X$func_quote_for_eval_result" \
1761 && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
1762 && func_warning "libobj name \`$libobj' may not contain shell special characters."
1763 func_dirname_and_basename "$obj" "/" ""
1764 objname="$func_basename_result"
1765 xdir="$func_dirname_result"
1766 lobj=${xdir}$objdir/$objname
1768 test -z "$base_compile" && \
1769 func_fatal_help "you must specify a compilation command"
1771 # Delete any leftover library objects.
1772 if test "$build_old_libs" = yes; then
1773 removelist="$obj $lobj $libobj ${libobj}T"
1774 else
1775 removelist="$lobj $libobj ${libobj}T"
1778 # On Cygwin there's no "real" PIC flag so we must build both object types
1779 case $host_os in
1780 cygwin* | mingw* | pw32* | os2* | cegcc*)
1781 pic_mode=default
1783 esac
1784 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1785 # non-PIC code in shared libraries is not supported
1786 pic_mode=default
1789 # Calculate the filename of the output object if compiler does
1790 # not support -o with -c
1791 if test "$compiler_c_o" = no; then
1792 output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1793 lockfile="$output_obj.lock"
1794 else
1795 output_obj=
1796 need_locks=no
1797 lockfile=
1800 # Lock this critical section if it is needed
1801 # We use this script file to make the link, it avoids creating a new file
1802 if test "$need_locks" = yes; then
1803 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1804 func_echo "Waiting for $lockfile to be removed"
1805 sleep 2
1806 done
1807 elif test "$need_locks" = warn; then
1808 if test -f "$lockfile"; then
1809 $ECHO "\
1810 *** ERROR, $lockfile exists and contains:
1811 `cat $lockfile 2>/dev/null`
1813 This indicates that another process is trying to use the same
1814 temporary object file, and libtool could not work around it because
1815 your compiler does not support \`-c' and \`-o' together. If you
1816 repeat this compilation, it may succeed, by chance, but you had better
1817 avoid parallel builds (make -j) in this platform, or get a better
1818 compiler."
1820 $opt_dry_run || $RM $removelist
1821 exit $EXIT_FAILURE
1823 removelist="$removelist $output_obj"
1824 $ECHO "$srcfile" > "$lockfile"
1827 $opt_dry_run || $RM $removelist
1828 removelist="$removelist $lockfile"
1829 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1831 if test -n "$fix_srcfile_path"; then
1832 eval srcfile=\"$fix_srcfile_path\"
1834 func_quote_for_eval "$srcfile"
1835 qsrcfile=$func_quote_for_eval_result
1837 # Only build a PIC object if we are building libtool libraries.
1838 if test "$build_libtool_libs" = yes; then
1839 # Without this assignment, base_compile gets emptied.
1840 fbsd_hideous_sh_bug=$base_compile
1842 if test "$pic_mode" != no; then
1843 command="$base_compile $qsrcfile $pic_flag"
1844 else
1845 # Don't build PIC code
1846 command="$base_compile $qsrcfile"
1849 func_mkdir_p "$xdir$objdir"
1851 if test -z "$output_obj"; then
1852 # Place PIC objects in $objdir
1853 command="$command -o $lobj"
1856 func_show_eval_locale "$command" \
1857 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1859 if test "$need_locks" = warn &&
1860 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1861 $ECHO "\
1862 *** ERROR, $lockfile contains:
1863 `cat $lockfile 2>/dev/null`
1865 but it should contain:
1866 $srcfile
1868 This indicates that another process is trying to use the same
1869 temporary object file, and libtool could not work around it because
1870 your compiler does not support \`-c' and \`-o' together. If you
1871 repeat this compilation, it may succeed, by chance, but you had better
1872 avoid parallel builds (make -j) in this platform, or get a better
1873 compiler."
1875 $opt_dry_run || $RM $removelist
1876 exit $EXIT_FAILURE
1879 # Just move the object if needed, then go on to compile the next one
1880 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1881 func_show_eval '$MV "$output_obj" "$lobj"' \
1882 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1885 # Allow error messages only from the first compilation.
1886 if test "$suppress_opt" = yes; then
1887 suppress_output=' >/dev/null 2>&1'
1891 # Only build a position-dependent object if we build old libraries.
1892 if test "$build_old_libs" = yes; then
1893 if test "$pic_mode" != yes; then
1894 # Don't build PIC code
1895 command="$base_compile $qsrcfile$pie_flag"
1896 else
1897 command="$base_compile $qsrcfile $pic_flag"
1899 if test "$compiler_c_o" = yes; then
1900 command="$command -o $obj"
1903 # Suppress compiler output if we already did a PIC compilation.
1904 command="$command$suppress_output"
1905 func_show_eval_locale "$command" \
1906 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1908 if test "$need_locks" = warn &&
1909 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1910 $ECHO "\
1911 *** ERROR, $lockfile contains:
1912 `cat $lockfile 2>/dev/null`
1914 but it should contain:
1915 $srcfile
1917 This indicates that another process is trying to use the same
1918 temporary object file, and libtool could not work around it because
1919 your compiler does not support \`-c' and \`-o' together. If you
1920 repeat this compilation, it may succeed, by chance, but you had better
1921 avoid parallel builds (make -j) in this platform, or get a better
1922 compiler."
1924 $opt_dry_run || $RM $removelist
1925 exit $EXIT_FAILURE
1928 # Just move the object if needed
1929 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1930 func_show_eval '$MV "$output_obj" "$obj"' \
1931 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1935 $opt_dry_run || {
1936 func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1938 # Unlock the critical section if it was locked
1939 if test "$need_locks" != no; then
1940 removelist=$lockfile
1941 $RM "$lockfile"
1945 exit $EXIT_SUCCESS
1948 $opt_help || {
1949 test "$mode" = compile && func_mode_compile ${1+"$@"}
1952 func_mode_help ()
1954 # We need to display help for each of the modes.
1955 case $mode in
1957 # Generic help is extracted from the usage comments
1958 # at the start of this file.
1959 func_help
1962 clean)
1963 $ECHO \
1964 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1966 Remove files from the build directory.
1968 RM is the name of the program to use to delete files associated with each FILE
1969 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
1970 to RM.
1972 If FILE is a libtool library, object or program, all the files associated
1973 with it are deleted. Otherwise, only FILE itself is deleted using RM."
1976 compile)
1977 $ECHO \
1978 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1980 Compile a source file into a libtool library object.
1982 This mode accepts the following additional options:
1984 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
1985 -no-suppress do not suppress compiler output for multiple passes
1986 -prefer-pic try to building PIC objects only
1987 -prefer-non-pic try to building non-PIC objects only
1988 -shared do not build a \`.o' file suitable for static linking
1989 -static only build a \`.o' file suitable for static linking
1991 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
1992 from the given SOURCEFILE.
1994 The output file name is determined by removing the directory component from
1995 SOURCEFILE, then substituting the C source code suffix \`.c' with the
1996 library object suffix, \`.lo'."
1999 execute)
2000 $ECHO \
2001 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2003 Automatically set library path, then run a program.
2005 This mode accepts the following additional options:
2007 -dlopen FILE add the directory containing FILE to the library path
2009 This mode sets the library path environment variable according to \`-dlopen'
2010 flags.
2012 If any of the ARGS are libtool executable wrappers, then they are translated
2013 into their corresponding uninstalled binary, and any of their required library
2014 directories are added to the library path.
2016 Then, COMMAND is executed, with ARGS as arguments."
2019 finish)
2020 $ECHO \
2021 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2023 Complete the installation of libtool libraries.
2025 Each LIBDIR is a directory that contains libtool libraries.
2027 The commands that this mode executes may require superuser privileges. Use
2028 the \`--dry-run' option if you just want to see what would be executed."
2031 install)
2032 $ECHO \
2033 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2035 Install executables or libraries.
2037 INSTALL-COMMAND is the installation command. The first component should be
2038 either the \`install' or \`cp' program.
2040 The following components of INSTALL-COMMAND are treated specially:
2042 -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
2044 The rest of the components are interpreted as arguments to that command (only
2045 BSD-compatible install options are recognized)."
2048 link)
2049 $ECHO \
2050 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2052 Link object files or libraries together to form another library, or to
2053 create an executable program.
2055 LINK-COMMAND is a command using the C compiler that you would use to create
2056 a program from several object files.
2058 The following components of LINK-COMMAND are treated specially:
2060 -all-static do not do any dynamic linking at all
2061 -avoid-version do not add a version suffix if possible
2062 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2063 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
2064 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2065 -export-symbols SYMFILE
2066 try to export only the symbols listed in SYMFILE
2067 -export-symbols-regex REGEX
2068 try to export only the symbols matching REGEX
2069 -LLIBDIR search LIBDIR for required installed libraries
2070 -lNAME OUTPUT-FILE requires the installed library libNAME
2071 -module build a library that can dlopened
2072 -no-fast-install disable the fast-install mode
2073 -no-install link a not-installable executable
2074 -no-undefined declare that a library does not refer to external symbols
2075 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2076 -objectlist FILE Use a list of object files found in FILE to specify objects
2077 -precious-files-regex REGEX
2078 don't remove output files matching REGEX
2079 -release RELEASE specify package release information
2080 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2081 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
2082 -shared only do dynamic linking of libtool libraries
2083 -shrext SUFFIX override the standard shared library file extension
2084 -static do not do any dynamic linking of uninstalled libtool libraries
2085 -static-libtool-libs
2086 do not do any dynamic linking of libtool libraries
2087 -version-info CURRENT[:REVISION[:AGE]]
2088 specify library version info [each variable defaults to 0]
2089 -weak LIBNAME declare that the target provides the LIBNAME interface
2091 All other options (arguments beginning with \`-') are ignored.
2093 Every other argument is treated as a filename. Files ending in \`.la' are
2094 treated as uninstalled libtool libraries, other files are standard or library
2095 object files.
2097 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2098 only library objects (\`.lo' files) may be specified, and \`-rpath' is
2099 required, except when creating a convenience library.
2101 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2102 using \`ar' and \`ranlib', or on Windows using \`lib'.
2104 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2105 is created, otherwise an executable program is created."
2108 uninstall)
2109 $ECHO \
2110 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2112 Remove libraries from an installation directory.
2114 RM is the name of the program to use to delete files associated with each FILE
2115 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2116 to RM.
2118 If FILE is a libtool library, all the files associated with it are deleted.
2119 Otherwise, only FILE itself is deleted using RM."
2123 func_fatal_help "invalid operation mode \`$mode'"
2125 esac
2127 $ECHO
2128 $ECHO "Try \`$progname --help' for more information about other modes."
2130 exit $?
2133 # Now that we've collected a possible --mode arg, show help if necessary
2134 $opt_help && func_mode_help
2137 # func_mode_execute arg...
2138 func_mode_execute ()
2140 $opt_debug
2141 # The first argument is the command name.
2142 cmd="$nonopt"
2143 test -z "$cmd" && \
2144 func_fatal_help "you must specify a COMMAND"
2146 # Handle -dlopen flags immediately.
2147 for file in $execute_dlfiles; do
2148 test -f "$file" \
2149 || func_fatal_help "\`$file' is not a file"
2151 dir=
2152 case $file in
2153 *.la)
2154 # Check to see that this really is a libtool archive.
2155 func_lalib_unsafe_p "$file" \
2156 || func_fatal_help "\`$lib' is not a valid libtool archive"
2158 # Read the libtool library.
2159 dlname=
2160 library_names=
2161 func_source "$file"
2163 # Skip this library if it cannot be dlopened.
2164 if test -z "$dlname"; then
2165 # Warn if it was a shared library.
2166 test -n "$library_names" && \
2167 func_warning "\`$file' was not linked with \`-export-dynamic'"
2168 continue
2171 func_dirname "$file" "" "."
2172 dir="$func_dirname_result"
2174 if test -f "$dir/$objdir/$dlname"; then
2175 dir="$dir/$objdir"
2176 else
2177 if test ! -f "$dir/$dlname"; then
2178 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2183 *.lo)
2184 # Just add the directory containing the .lo file.
2185 func_dirname "$file" "" "."
2186 dir="$func_dirname_result"
2190 func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2191 continue
2193 esac
2195 # Get the absolute pathname.
2196 absdir=`cd "$dir" && pwd`
2197 test -n "$absdir" && dir="$absdir"
2199 # Now add the directory to shlibpath_var.
2200 if eval "test -z \"\$$shlibpath_var\""; then
2201 eval "$shlibpath_var=\"\$dir\""
2202 else
2203 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2205 done
2207 # This variable tells wrapper scripts just to set shlibpath_var
2208 # rather than running their programs.
2209 libtool_execute_magic="$magic"
2211 # Check if any of the arguments is a wrapper script.
2212 args=
2213 for file
2215 case $file in
2216 -*) ;;
2218 # Do a test to see if this is really a libtool program.
2219 if func_ltwrapper_script_p "$file"; then
2220 func_source "$file"
2221 # Transform arg to wrapped name.
2222 file="$progdir/$program"
2223 elif func_ltwrapper_executable_p "$file"; then
2224 func_ltwrapper_scriptname "$file"
2225 func_source "$func_ltwrapper_scriptname_result"
2226 # Transform arg to wrapped name.
2227 file="$progdir/$program"
2230 esac
2231 # Quote arguments (to preserve shell metacharacters).
2232 func_quote_for_eval "$file"
2233 args="$args $func_quote_for_eval_result"
2234 done
2236 if test "X$opt_dry_run" = Xfalse; then
2237 if test -n "$shlibpath_var"; then
2238 # Export the shlibpath_var.
2239 eval "export $shlibpath_var"
2242 # Restore saved environment variables
2243 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2245 eval "if test \"\${save_$lt_var+set}\" = set; then
2246 $lt_var=\$save_$lt_var; export $lt_var
2247 else
2248 $lt_unset $lt_var
2250 done
2252 # Now prepare to actually exec the command.
2253 exec_cmd="\$cmd$args"
2254 else
2255 # Display what would be done.
2256 if test -n "$shlibpath_var"; then
2257 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2258 $ECHO "export $shlibpath_var"
2260 $ECHO "$cmd$args"
2261 exit $EXIT_SUCCESS
2265 test "$mode" = execute && func_mode_execute ${1+"$@"}
2268 # func_mode_finish arg...
2269 func_mode_finish ()
2271 $opt_debug
2272 libdirs="$nonopt"
2273 admincmds=
2275 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2276 for dir
2278 libdirs="$libdirs $dir"
2279 done
2281 for libdir in $libdirs; do
2282 if test -n "$finish_cmds"; then
2283 # Do each command in the finish commands.
2284 func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2285 '"$cmd"'"'
2287 if test -n "$finish_eval"; then
2288 # Do the single finish_eval.
2289 eval cmds=\"$finish_eval\"
2290 $opt_dry_run || eval "$cmds" || admincmds="$admincmds
2291 $cmds"
2293 done
2296 # Exit here if they wanted silent mode.
2297 $opt_silent && exit $EXIT_SUCCESS
2299 $ECHO "X----------------------------------------------------------------------" | $Xsed
2300 $ECHO "Libraries have been installed in:"
2301 for libdir in $libdirs; do
2302 $ECHO " $libdir"
2303 done
2304 $ECHO
2305 $ECHO "If you ever happen to want to link against installed libraries"
2306 $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
2307 $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
2308 $ECHO "flag during linking and do at least one of the following:"
2309 if test -n "$shlibpath_var"; then
2310 $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
2311 $ECHO " during execution"
2313 if test -n "$runpath_var"; then
2314 $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
2315 $ECHO " during linking"
2317 if test -n "$hardcode_libdir_flag_spec"; then
2318 libdir=LIBDIR
2319 eval flag=\"$hardcode_libdir_flag_spec\"
2321 $ECHO " - use the \`$flag' linker flag"
2323 if test -n "$admincmds"; then
2324 $ECHO " - have your system administrator run these commands:$admincmds"
2326 if test -f /etc/ld.so.conf; then
2327 $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2329 $ECHO
2331 $ECHO "See any operating system documentation about shared libraries for"
2332 case $host in
2333 solaris2.[6789]|solaris2.1[0-9])
2334 $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2335 $ECHO "pages."
2338 $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
2340 esac
2341 $ECHO "X----------------------------------------------------------------------" | $Xsed
2342 exit $EXIT_SUCCESS
2345 test "$mode" = finish && func_mode_finish ${1+"$@"}
2348 # func_mode_install arg...
2349 func_mode_install ()
2351 $opt_debug
2352 # There may be an optional sh(1) argument at the beginning of
2353 # install_prog (especially on Windows NT).
2354 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2355 # Allow the use of GNU shtool's install command.
2356 $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
2357 # Aesthetically quote it.
2358 func_quote_for_eval "$nonopt"
2359 install_prog="$func_quote_for_eval_result "
2360 arg=$1
2361 shift
2362 else
2363 install_prog=
2364 arg=$nonopt
2367 # The real first argument should be the name of the installation program.
2368 # Aesthetically quote it.
2369 func_quote_for_eval "$arg"
2370 install_prog="$install_prog$func_quote_for_eval_result"
2372 # We need to accept at least all the BSD install flags.
2373 dest=
2374 files=
2375 opts=
2376 prev=
2377 install_type=
2378 isdir=no
2379 stripme=
2380 for arg
2382 if test -n "$dest"; then
2383 files="$files $dest"
2384 dest=$arg
2385 continue
2388 case $arg in
2389 -d) isdir=yes ;;
2391 case " $install_prog " in
2392 *[\\\ /]cp\ *) ;;
2393 *) prev=$arg ;;
2394 esac
2396 -g | -m | -o)
2397 prev=$arg
2400 stripme=" -s"
2401 continue
2406 # If the previous option needed an argument, then skip it.
2407 if test -n "$prev"; then
2408 prev=
2409 else
2410 dest=$arg
2411 continue
2414 esac
2416 # Aesthetically quote the argument.
2417 func_quote_for_eval "$arg"
2418 install_prog="$install_prog $func_quote_for_eval_result"
2419 done
2421 test -z "$install_prog" && \
2422 func_fatal_help "you must specify an install program"
2424 test -n "$prev" && \
2425 func_fatal_help "the \`$prev' option requires an argument"
2427 if test -z "$files"; then
2428 if test -z "$dest"; then
2429 func_fatal_help "no file or destination specified"
2430 else
2431 func_fatal_help "you must specify a destination"
2435 # Strip any trailing slash from the destination.
2436 func_stripname '' '/' "$dest"
2437 dest=$func_stripname_result
2439 # Check to see that the destination is a directory.
2440 test -d "$dest" && isdir=yes
2441 if test "$isdir" = yes; then
2442 destdir="$dest"
2443 destname=
2444 else
2445 func_dirname_and_basename "$dest" "" "."
2446 destdir="$func_dirname_result"
2447 destname="$func_basename_result"
2449 # Not a directory, so check to see that there is only one file specified.
2450 set dummy $files; shift
2451 test "$#" -gt 1 && \
2452 func_fatal_help "\`$dest' is not a directory"
2454 case $destdir in
2455 [\\/]* | [A-Za-z]:[\\/]*) ;;
2457 for file in $files; do
2458 case $file in
2459 *.lo) ;;
2461 func_fatal_help "\`$destdir' must be an absolute directory name"
2463 esac
2464 done
2466 esac
2468 # This variable tells wrapper scripts just to set variables rather
2469 # than running their programs.
2470 libtool_install_magic="$magic"
2472 staticlibs=
2473 future_libdirs=
2474 current_libdirs=
2475 for file in $files; do
2477 # Do each installation.
2478 case $file in
2479 *.$libext)
2480 # Do the static libraries later.
2481 staticlibs="$staticlibs $file"
2484 *.la)
2485 # Check to see that this really is a libtool archive.
2486 func_lalib_unsafe_p "$file" \
2487 || func_fatal_help "\`$file' is not a valid libtool archive"
2489 library_names=
2490 old_library=
2491 relink_command=
2492 func_source "$file"
2494 # Add the libdir to current_libdirs if it is the destination.
2495 if test "X$destdir" = "X$libdir"; then
2496 case "$current_libdirs " in
2497 *" $libdir "*) ;;
2498 *) current_libdirs="$current_libdirs $libdir" ;;
2499 esac
2500 else
2501 # Note the libdir as a future libdir.
2502 case "$future_libdirs " in
2503 *" $libdir "*) ;;
2504 *) future_libdirs="$future_libdirs $libdir" ;;
2505 esac
2508 func_dirname "$file" "/" ""
2509 dir="$func_dirname_result"
2510 dir="$dir$objdir"
2512 if test -n "$relink_command"; then
2513 # Determine the prefix the user has applied to our future dir.
2514 inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2516 # Don't allow the user to place us outside of our expected
2517 # location b/c this prevents finding dependent libraries that
2518 # are installed to the same prefix.
2519 # At present, this check doesn't affect windows .dll's that
2520 # are installed into $libdir/../bin (currently, that works fine)
2521 # but it's something to keep an eye on.
2522 test "$inst_prefix_dir" = "$destdir" && \
2523 func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2525 if test -n "$inst_prefix_dir"; then
2526 # Stick the inst_prefix_dir data into the link command.
2527 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2528 else
2529 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2532 func_warning "relinking \`$file'"
2533 func_show_eval "$relink_command" \
2534 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2537 # See the names of the shared library.
2538 set dummy $library_names; shift
2539 if test -n "$1"; then
2540 realname="$1"
2541 shift
2543 srcname="$realname"
2544 test -n "$relink_command" && srcname="$realname"T
2546 # Install the shared library and build the symlinks.
2547 func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2548 'exit $?'
2549 tstripme="$stripme"
2550 case $host_os in
2551 cygwin* | mingw* | pw32* | cegcc*)
2552 case $realname in
2553 *.dll.a)
2554 tstripme=""
2556 esac
2558 esac
2559 if test -n "$tstripme" && test -n "$striplib"; then
2560 func_show_eval "$striplib $destdir/$realname" 'exit $?'
2563 if test "$#" -gt 0; then
2564 # Delete the old symlinks, and create new ones.
2565 # Try `ln -sf' first, because the `ln' binary might depend on
2566 # the symlink we replace! Solaris /bin/ln does not understand -f,
2567 # so we also need to try rm && ln -s.
2568 for linkname
2570 test "$linkname" != "$realname" \
2571 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2572 done
2575 # Do each command in the postinstall commands.
2576 lib="$destdir/$realname"
2577 func_execute_cmds "$postinstall_cmds" 'exit $?'
2580 # Install the pseudo-library for information purposes.
2581 func_basename "$file"
2582 name="$func_basename_result"
2583 instname="$dir/$name"i
2584 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2586 # Maybe install the static library, too.
2587 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2590 *.lo)
2591 # Install (i.e. copy) a libtool object.
2593 # Figure out destination file name, if it wasn't already specified.
2594 if test -n "$destname"; then
2595 destfile="$destdir/$destname"
2596 else
2597 func_basename "$file"
2598 destfile="$func_basename_result"
2599 destfile="$destdir/$destfile"
2602 # Deduce the name of the destination old-style object file.
2603 case $destfile in
2604 *.lo)
2605 func_lo2o "$destfile"
2606 staticdest=$func_lo2o_result
2608 *.$objext)
2609 staticdest="$destfile"
2610 destfile=
2613 func_fatal_help "cannot copy a libtool object to \`$destfile'"
2615 esac
2617 # Install the libtool object if requested.
2618 test -n "$destfile" && \
2619 func_show_eval "$install_prog $file $destfile" 'exit $?'
2621 # Install the old object if enabled.
2622 if test "$build_old_libs" = yes; then
2623 # Deduce the name of the old-style object file.
2624 func_lo2o "$file"
2625 staticobj=$func_lo2o_result
2626 func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2628 exit $EXIT_SUCCESS
2632 # Figure out destination file name, if it wasn't already specified.
2633 if test -n "$destname"; then
2634 destfile="$destdir/$destname"
2635 else
2636 func_basename "$file"
2637 destfile="$func_basename_result"
2638 destfile="$destdir/$destfile"
2641 # If the file is missing, and there is a .exe on the end, strip it
2642 # because it is most likely a libtool script we actually want to
2643 # install
2644 stripped_ext=""
2645 case $file in
2646 *.exe)
2647 if test ! -f "$file"; then
2648 func_stripname '' '.exe' "$file"
2649 file=$func_stripname_result
2650 stripped_ext=".exe"
2653 esac
2655 # Do a test to see if this is really a libtool program.
2656 case $host in
2657 *cygwin* | *mingw*)
2658 if func_ltwrapper_executable_p "$file"; then
2659 func_ltwrapper_scriptname "$file"
2660 wrapper=$func_ltwrapper_scriptname_result
2661 else
2662 func_stripname '' '.exe' "$file"
2663 wrapper=$func_stripname_result
2667 wrapper=$file
2669 esac
2670 if func_ltwrapper_script_p "$wrapper"; then
2671 notinst_deplibs=
2672 relink_command=
2674 func_source "$wrapper"
2676 # Check the variables that should have been set.
2677 test -z "$generated_by_libtool_version" && \
2678 func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2680 finalize=yes
2681 for lib in $notinst_deplibs; do
2682 # Check to see that each library is installed.
2683 libdir=
2684 if test -f "$lib"; then
2685 func_source "$lib"
2687 libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
2688 if test -n "$libdir" && test ! -f "$libfile"; then
2689 func_warning "\`$lib' has not been installed in \`$libdir'"
2690 finalize=no
2692 done
2694 relink_command=
2695 func_source "$wrapper"
2697 outputname=
2698 if test "$fast_install" = no && test -n "$relink_command"; then
2699 $opt_dry_run || {
2700 if test "$finalize" = yes; then
2701 tmpdir=`func_mktempdir`
2702 func_basename "$file$stripped_ext"
2703 file="$func_basename_result"
2704 outputname="$tmpdir/$file"
2705 # Replace the output file specification.
2706 relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
2708 $opt_silent || {
2709 func_quote_for_expand "$relink_command"
2710 eval "func_echo $func_quote_for_expand_result"
2712 if eval "$relink_command"; then :
2713 else
2714 func_error "error: relink \`$file' with the above command before installing it"
2715 $opt_dry_run || ${RM}r "$tmpdir"
2716 continue
2718 file="$outputname"
2719 else
2720 func_warning "cannot relink \`$file'"
2723 else
2724 # Install the binary that we compiled earlier.
2725 file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2729 # remove .exe since cygwin /usr/bin/install will append another
2730 # one anyway
2731 case $install_prog,$host in
2732 */usr/bin/install*,*cygwin*)
2733 case $file:$destfile in
2734 *.exe:*.exe)
2735 # this is ok
2737 *.exe:*)
2738 destfile=$destfile.exe
2740 *:*.exe)
2741 func_stripname '' '.exe' "$destfile"
2742 destfile=$func_stripname_result
2744 esac
2746 esac
2747 func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2748 $opt_dry_run || if test -n "$outputname"; then
2749 ${RM}r "$tmpdir"
2752 esac
2753 done
2755 for file in $staticlibs; do
2756 func_basename "$file"
2757 name="$func_basename_result"
2759 # Set up the ranlib parameters.
2760 oldlib="$destdir/$name"
2762 func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2764 if test -n "$stripme" && test -n "$old_striplib"; then
2765 func_show_eval "$old_striplib $oldlib" 'exit $?'
2768 # Do each command in the postinstall commands.
2769 func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2770 done
2772 test -n "$future_libdirs" && \
2773 func_warning "remember to run \`$progname --finish$future_libdirs'"
2775 if test -n "$current_libdirs"; then
2776 # Maybe just do a dry run.
2777 $opt_dry_run && current_libdirs=" -n$current_libdirs"
2778 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2779 else
2780 exit $EXIT_SUCCESS
2784 test "$mode" = install && func_mode_install ${1+"$@"}
2787 # func_generate_dlsyms outputname originator pic_p
2788 # Extract symbols from dlprefiles and create ${outputname}S.o with
2789 # a dlpreopen symbol table.
2790 func_generate_dlsyms ()
2792 $opt_debug
2793 my_outputname="$1"
2794 my_originator="$2"
2795 my_pic_p="${3-no}"
2796 my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2797 my_dlsyms=
2799 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2800 if test -n "$NM" && test -n "$global_symbol_pipe"; then
2801 my_dlsyms="${my_outputname}S.c"
2802 else
2803 func_error "not configured to extract global symbols from dlpreopened files"
2807 if test -n "$my_dlsyms"; then
2808 case $my_dlsyms in
2809 "") ;;
2810 *.c)
2811 # Discover the nlist of each of the dlfiles.
2812 nlist="$output_objdir/${my_outputname}.nm"
2814 func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2816 # Parse the name list into a source file.
2817 func_verbose "creating $output_objdir/$my_dlsyms"
2819 $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2820 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2821 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2823 #ifdef __cplusplus
2824 extern \"C\" {
2825 #endif
2827 /* External symbol declarations for the compiler. */\
2830 if test "$dlself" = yes; then
2831 func_verbose "generating symbol list for \`$output'"
2833 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2835 # Add our own program objects to the symbol list.
2836 progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2837 for progfile in $progfiles; do
2838 func_verbose "extracting global C symbols from \`$progfile'"
2839 $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2840 done
2842 if test -n "$exclude_expsyms"; then
2843 $opt_dry_run || {
2844 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2845 eval '$MV "$nlist"T "$nlist"'
2849 if test -n "$export_symbols_regex"; then
2850 $opt_dry_run || {
2851 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2852 eval '$MV "$nlist"T "$nlist"'
2856 # Prepare the list of exported symbols
2857 if test -z "$export_symbols"; then
2858 export_symbols="$output_objdir/$outputname.exp"
2859 $opt_dry_run || {
2860 $RM $export_symbols
2861 eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2862 case $host in
2863 *cygwin* | *mingw* | *cegcc* )
2864 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2865 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2867 esac
2869 else
2870 $opt_dry_run || {
2871 eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2872 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2873 eval '$MV "$nlist"T "$nlist"'
2874 case $host in
2875 *cygwin | *mingw* | *cegcc* )
2876 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2877 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2879 esac
2884 for dlprefile in $dlprefiles; do
2885 func_verbose "extracting global C symbols from \`$dlprefile'"
2886 func_basename "$dlprefile"
2887 name="$func_basename_result"
2888 $opt_dry_run || {
2889 eval '$ECHO ": $name " >> "$nlist"'
2890 eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2892 done
2894 $opt_dry_run || {
2895 # Make sure we have at least an empty file.
2896 test -f "$nlist" || : > "$nlist"
2898 if test -n "$exclude_expsyms"; then
2899 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2900 $MV "$nlist"T "$nlist"
2903 # Try sorting and uniquifying the output.
2904 if $GREP -v "^: " < "$nlist" |
2905 if sort -k 3 </dev/null >/dev/null 2>&1; then
2906 sort -k 3
2907 else
2908 sort +2
2909 fi |
2910 uniq > "$nlist"S; then
2912 else
2913 $GREP -v "^: " < "$nlist" > "$nlist"S
2916 if test -f "$nlist"S; then
2917 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2918 else
2919 $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
2922 $ECHO >> "$output_objdir/$my_dlsyms" "\
2924 /* The mapping between symbol names and symbols. */
2925 typedef struct {
2926 const char *name;
2927 void *address;
2928 } lt_dlsymlist;
2930 case $host in
2931 *cygwin* | *mingw* | *cegcc* )
2932 $ECHO >> "$output_objdir/$my_dlsyms" "\
2933 /* DATA imports from DLLs on WIN32 con't be const, because
2934 runtime relocations are performed -- see ld's documentation
2935 on pseudo-relocs. */"
2936 lt_dlsym_const= ;;
2937 *osf5*)
2938 echo >> "$output_objdir/$my_dlsyms" "\
2939 /* This system does not cope well with relocations in const data */"
2940 lt_dlsym_const= ;;
2942 lt_dlsym_const=const ;;
2943 esac
2945 $ECHO >> "$output_objdir/$my_dlsyms" "\
2946 extern $lt_dlsym_const lt_dlsymlist
2947 lt_${my_prefix}_LTX_preloaded_symbols[];
2948 $lt_dlsym_const lt_dlsymlist
2949 lt_${my_prefix}_LTX_preloaded_symbols[] =
2951 { \"$my_originator\", (void *) 0 },"
2953 case $need_lib_prefix in
2955 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2958 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2960 esac
2961 $ECHO >> "$output_objdir/$my_dlsyms" "\
2962 {0, (void *) 0}
2965 /* This works around a problem in FreeBSD linker */
2966 #ifdef FREEBSD_WORKAROUND
2967 static const void *lt_preloaded_setup() {
2968 return lt_${my_prefix}_LTX_preloaded_symbols;
2970 #endif
2972 #ifdef __cplusplus
2974 #endif\
2976 } # !$opt_dry_run
2978 pic_flag_for_symtable=
2979 case "$compile_command " in
2980 *" -static "*) ;;
2982 case $host in
2983 # compiling the symbol table file with pic_flag works around
2984 # a FreeBSD bug that causes programs to crash when -lm is
2985 # linked before any other PIC object. But we must not use
2986 # pic_flag when linking with -static. The problem exists in
2987 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2988 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2989 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2990 *-*-hpux*)
2991 pic_flag_for_symtable=" $pic_flag" ;;
2993 if test "X$my_pic_p" != Xno; then
2994 pic_flag_for_symtable=" $pic_flag"
2997 esac
2999 esac
3000 symtab_cflags=
3001 for arg in $LTCFLAGS; do
3002 case $arg in
3003 -pie | -fpie | -fPIE) ;;
3004 *) symtab_cflags="$symtab_cflags $arg" ;;
3005 esac
3006 done
3008 # Now compile the dynamic symbol file.
3009 func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3011 # Clean up the generated files.
3012 func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3014 # Transform the symbol file into the correct name.
3015 symfileobj="$output_objdir/${my_outputname}S.$objext"
3016 case $host in
3017 *cygwin* | *mingw* | *cegcc* )
3018 if test -f "$output_objdir/$my_outputname.def"; then
3019 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3020 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3021 else
3022 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3023 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3027 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3028 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3030 esac
3033 func_fatal_error "unknown suffix for \`$my_dlsyms'"
3035 esac
3036 else
3037 # We keep going just in case the user didn't refer to
3038 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3039 # really was required.
3041 # Nullify the symbol file.
3042 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
3043 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
3047 # func_win32_libid arg
3048 # return the library type of file 'arg'
3050 # Need a lot of goo to handle *both* DLLs and import libs
3051 # Has to be a shell function in order to 'eat' the argument
3052 # that is supplied when $file_magic_command is called.
3053 func_win32_libid ()
3055 $opt_debug
3056 win32_libid_type="unknown"
3057 win32_fileres=`file -L $1 2>/dev/null`
3058 case $win32_fileres in
3059 *ar\ archive\ import\ library*) # definitely import
3060 win32_libid_type="x86 archive import"
3062 *ar\ archive*) # could be an import, or static
3063 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3064 $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
3065 win32_nmres=`eval $NM -f posix -A $1 |
3066 $SED -n -e '
3067 1,100{
3068 / I /{
3069 s,.*,import,
3074 case $win32_nmres in
3075 import*) win32_libid_type="x86 archive import";;
3076 *) win32_libid_type="x86 archive static";;
3077 esac
3080 *DLL*)
3081 win32_libid_type="x86 DLL"
3083 *executable*) # but shell scripts are "executable" too...
3084 case $win32_fileres in
3085 *MS\ Windows\ PE\ Intel*)
3086 win32_libid_type="x86 DLL"
3088 esac
3090 esac
3091 $ECHO "$win32_libid_type"
3096 # func_extract_an_archive dir oldlib
3097 func_extract_an_archive ()
3099 $opt_debug
3100 f_ex_an_ar_dir="$1"; shift
3101 f_ex_an_ar_oldlib="$1"
3102 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
3103 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3105 else
3106 func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3111 # func_extract_archives gentop oldlib ...
3112 func_extract_archives ()
3114 $opt_debug
3115 my_gentop="$1"; shift
3116 my_oldlibs=${1+"$@"}
3117 my_oldobjs=""
3118 my_xlib=""
3119 my_xabs=""
3120 my_xdir=""
3122 for my_xlib in $my_oldlibs; do
3123 # Extract the objects.
3124 case $my_xlib in
3125 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3126 *) my_xabs=`pwd`"/$my_xlib" ;;
3127 esac
3128 func_basename "$my_xlib"
3129 my_xlib="$func_basename_result"
3130 my_xlib_u=$my_xlib
3131 while :; do
3132 case " $extracted_archives " in
3133 *" $my_xlib_u "*)
3134 func_arith $extracted_serial + 1
3135 extracted_serial=$func_arith_result
3136 my_xlib_u=lt$extracted_serial-$my_xlib ;;
3137 *) break ;;
3138 esac
3139 done
3140 extracted_archives="$extracted_archives $my_xlib_u"
3141 my_xdir="$my_gentop/$my_xlib_u"
3143 func_mkdir_p "$my_xdir"
3145 case $host in
3146 *-darwin*)
3147 func_verbose "Extracting $my_xabs"
3148 # Do not bother doing anything if just a dry run
3149 $opt_dry_run || {
3150 darwin_orig_dir=`pwd`
3151 cd $my_xdir || exit $?
3152 darwin_archive=$my_xabs
3153 darwin_curdir=`pwd`
3154 darwin_base_archive=`basename "$darwin_archive"`
3155 darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3156 if test -n "$darwin_arches"; then
3157 darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3158 darwin_arch=
3159 func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3160 for darwin_arch in $darwin_arches ; do
3161 func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3162 $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3163 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3164 func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3165 cd "$darwin_curdir"
3166 $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3167 done # $darwin_arches
3168 ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3169 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3170 darwin_file=
3171 darwin_files=
3172 for darwin_file in $darwin_filelist; do
3173 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
3174 $LIPO -create -output "$darwin_file" $darwin_files
3175 done # $darwin_filelist
3176 $RM -rf unfat-$$
3177 cd "$darwin_orig_dir"
3178 else
3179 cd $darwin_orig_dir
3180 func_extract_an_archive "$my_xdir" "$my_xabs"
3181 fi # $darwin_arches
3182 } # !$opt_dry_run
3185 func_extract_an_archive "$my_xdir" "$my_xabs"
3187 esac
3188 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3189 done
3191 func_extract_archives_result="$my_oldobjs"
3196 # func_emit_wrapper_part1 [arg=no]
3198 # Emit the first part of a libtool wrapper script on stdout.
3199 # For more information, see the description associated with
3200 # func_emit_wrapper(), below.
3201 func_emit_wrapper_part1 ()
3203 func_emit_wrapper_part1_arg1=no
3204 if test -n "$1" ; then
3205 func_emit_wrapper_part1_arg1=$1
3208 $ECHO "\
3209 #! $SHELL
3211 # $output - temporary wrapper script for $objdir/$outputname
3212 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3214 # The $output program cannot be directly executed until all the libtool
3215 # libraries that it depends on are installed.
3217 # This wrapper script should never be moved out of the build directory.
3218 # If it is, it will not operate correctly.
3220 # Sed substitution that helps us do robust quoting. It backslashifies
3221 # metacharacters that are still active within double-quoted strings.
3222 Xsed='${SED} -e 1s/^X//'
3223 sed_quote_subst='$sed_quote_subst'
3225 # Be Bourne compatible
3226 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3227 emulate sh
3228 NULLCMD=:
3229 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3230 # is contrary to our usage. Disable this feature.
3231 alias -g '\${1+\"\$@\"}'='\"\$@\"'
3232 setopt NO_GLOB_SUBST
3233 else
3234 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3236 BIN_SH=xpg4; export BIN_SH # for Tru64
3237 DUALCASE=1; export DUALCASE # for MKS sh
3239 # The HP-UX ksh and POSIX shell print the target directory to stdout
3240 # if CDPATH is set.
3241 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3243 relink_command=\"$relink_command\"
3245 # This environment variable determines our operation mode.
3246 if test \"\$libtool_install_magic\" = \"$magic\"; then
3247 # install mode needs the following variables:
3248 generated_by_libtool_version='$macro_version'
3249 notinst_deplibs='$notinst_deplibs'
3250 else
3251 # When we are sourced in execute mode, \$file and \$ECHO are already set.
3252 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3253 ECHO=\"$qecho\"
3254 file=\"\$0\"
3255 # Make sure echo works.
3256 if test \"X\$1\" = X--no-reexec; then
3257 # Discard the --no-reexec flag, and continue.
3258 shift
3259 elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
3260 # Yippee, \$ECHO works!
3262 else
3263 # Restart under the correct shell, and then maybe \$ECHO will work.
3264 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
3268 $ECHO "\
3270 # Find the directory that this script lives in.
3271 thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
3272 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3274 # Follow symbolic links until we get to the real thisdir.
3275 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
3276 while test -n \"\$file\"; do
3277 destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
3279 # If there was a directory component, then change thisdir.
3280 if test \"x\$destdir\" != \"x\$file\"; then
3281 case \"\$destdir\" in
3282 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
3283 *) thisdir=\"\$thisdir/\$destdir\" ;;
3284 esac
3287 file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
3288 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
3289 done
3292 # end: func_emit_wrapper_part1
3294 # func_emit_wrapper_part2 [arg=no]
3296 # Emit the second part of a libtool wrapper script on stdout.
3297 # For more information, see the description associated with
3298 # func_emit_wrapper(), below.
3299 func_emit_wrapper_part2 ()
3301 func_emit_wrapper_part2_arg1=no
3302 if test -n "$1" ; then
3303 func_emit_wrapper_part2_arg1=$1
3306 $ECHO "\
3308 # Usually 'no', except on cygwin/mingw when embedded into
3309 # the cwrapper.
3310 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
3311 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
3312 # special case for '.'
3313 if test \"\$thisdir\" = \".\"; then
3314 thisdir=\`pwd\`
3316 # remove .libs from thisdir
3317 case \"\$thisdir\" in
3318 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
3319 $objdir ) thisdir=. ;;
3320 esac
3323 # Try to get the absolute directory name.
3324 absdir=\`cd \"\$thisdir\" && pwd\`
3325 test -n \"\$absdir\" && thisdir=\"\$absdir\"
3328 if test "$fast_install" = yes; then
3329 $ECHO "\
3330 program=lt-'$outputname'$exeext
3331 progdir=\"\$thisdir/$objdir\"
3333 if test ! -f \"\$progdir/\$program\" ||
3334 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
3335 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
3337 file=\"\$\$-\$program\"
3339 if test ! -d \"\$progdir\"; then
3340 $MKDIR \"\$progdir\"
3341 else
3342 $RM \"\$progdir/\$file\"
3345 $ECHO "\
3347 # relink executable if necessary
3348 if test -n \"\$relink_command\"; then
3349 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
3350 else
3351 $ECHO \"\$relink_command_output\" >&2
3352 $RM \"\$progdir/\$file\"
3353 exit 1
3357 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3358 { $RM \"\$progdir/\$program\";
3359 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3360 $RM \"\$progdir/\$file\"
3362 else
3363 $ECHO "\
3364 program='$outputname'
3365 progdir=\"\$thisdir/$objdir\"
3369 $ECHO "\
3371 if test -f \"\$progdir/\$program\"; then"
3373 # Export our shlibpath_var if we have one.
3374 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3375 $ECHO "\
3376 # Add our own library path to $shlibpath_var
3377 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3379 # Some systems cannot cope with colon-terminated $shlibpath_var
3380 # The second colon is a workaround for a bug in BeOS R4 sed
3381 $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3383 export $shlibpath_var
3387 # fixup the dll searchpath if we need to.
3388 if test -n "$dllsearchpath"; then
3389 $ECHO "\
3390 # Add the dll search path components to the executable PATH
3391 PATH=$dllsearchpath:\$PATH
3395 $ECHO "\
3396 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3397 # Run the actual program with our arguments.
3399 case $host in
3400 # Backslashes separate directories on plain windows
3401 *-*-mingw | *-*-os2* | *-cegcc*)
3402 $ECHO "\
3403 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3408 $ECHO "\
3409 exec \"\$progdir/\$program\" \${1+\"\$@\"}
3412 esac
3413 $ECHO "\
3414 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3415 exit 1
3417 else
3418 # The program doesn't exist.
3419 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
3420 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
3421 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3422 exit 1
3427 # end: func_emit_wrapper_part2
3430 # func_emit_wrapper [arg=no]
3432 # Emit a libtool wrapper script on stdout.
3433 # Don't directly open a file because we may want to
3434 # incorporate the script contents within a cygwin/mingw
3435 # wrapper executable. Must ONLY be called from within
3436 # func_mode_link because it depends on a number of variables
3437 # set therein.
3439 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3440 # variable will take. If 'yes', then the emitted script
3441 # will assume that the directory in which it is stored is
3442 # the $objdir directory. This is a cygwin/mingw-specific
3443 # behavior.
3444 func_emit_wrapper ()
3446 func_emit_wrapper_arg1=no
3447 if test -n "$1" ; then
3448 func_emit_wrapper_arg1=$1
3451 # split this up so that func_emit_cwrapperexe_src
3452 # can call each part independently.
3453 func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
3454 func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
3458 # func_to_host_path arg
3460 # Convert paths to host format when used with build tools.
3461 # Intended for use with "native" mingw (where libtool itself
3462 # is running under the msys shell), or in the following cross-
3463 # build environments:
3464 # $build $host
3465 # mingw (msys) mingw [e.g. native]
3466 # cygwin mingw
3467 # *nix + wine mingw
3468 # where wine is equipped with the `winepath' executable.
3469 # In the native mingw case, the (msys) shell automatically
3470 # converts paths for any non-msys applications it launches,
3471 # but that facility isn't available from inside the cwrapper.
3472 # Similar accommodations are necessary for $host mingw and
3473 # $build cygwin. Calling this function does no harm for other
3474 # $host/$build combinations not listed above.
3476 # ARG is the path (on $build) that should be converted to
3477 # the proper representation for $host. The result is stored
3478 # in $func_to_host_path_result.
3479 func_to_host_path ()
3481 func_to_host_path_result="$1"
3482 if test -n "$1" ; then
3483 case $host in
3484 *mingw* )
3485 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3486 case $build in
3487 *mingw* ) # actually, msys
3488 # awkward: cmd appends spaces to result
3489 lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3490 func_to_host_path_tmp1=`( cmd //c echo "$1" |\
3491 $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3492 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3493 $SED -e "$lt_sed_naive_backslashify"`
3495 *cygwin* )
3496 func_to_host_path_tmp1=`cygpath -w "$1"`
3497 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3498 $SED -e "$lt_sed_naive_backslashify"`
3501 # Unfortunately, winepath does not exit with a non-zero
3502 # error code, so we are forced to check the contents of
3503 # stdout. On the other hand, if the command is not
3504 # found, the shell will set an exit code of 127 and print
3505 # *an error message* to stdout. So we must check for both
3506 # error code of zero AND non-empty stdout, which explains
3507 # the odd construction:
3508 func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3509 if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3510 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3511 $SED -e "$lt_sed_naive_backslashify"`
3512 else
3513 # Allow warning below.
3514 func_to_host_path_result=""
3517 esac
3518 if test -z "$func_to_host_path_result" ; then
3519 func_error "Could not determine host path corresponding to"
3520 func_error " '$1'"
3521 func_error "Continuing, but uninstalled executables may not work."
3522 # Fallback:
3523 func_to_host_path_result="$1"
3526 esac
3529 # end: func_to_host_path
3531 # func_to_host_pathlist arg
3533 # Convert pathlists to host format when used with build tools.
3534 # See func_to_host_path(), above. This function supports the
3535 # following $build/$host combinations (but does no harm for
3536 # combinations not listed here):
3537 # $build $host
3538 # mingw (msys) mingw [e.g. native]
3539 # cygwin mingw
3540 # *nix + wine mingw
3542 # Path separators are also converted from $build format to
3543 # $host format. If ARG begins or ends with a path separator
3544 # character, it is preserved (but converted to $host format)
3545 # on output.
3547 # ARG is a pathlist (on $build) that should be converted to
3548 # the proper representation on $host. The result is stored
3549 # in $func_to_host_pathlist_result.
3550 func_to_host_pathlist ()
3552 func_to_host_pathlist_result="$1"
3553 if test -n "$1" ; then
3554 case $host in
3555 *mingw* )
3556 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3557 # Remove leading and trailing path separator characters from
3558 # ARG. msys behavior is inconsistent here, cygpath turns them
3559 # into '.;' and ';.', and winepath ignores them completely.
3560 func_to_host_pathlist_tmp2="$1"
3561 # Once set for this call, this variable should not be
3562 # reassigned. It is used in tha fallback case.
3563 func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3564 $SED -e 's|^:*||' -e 's|:*$||'`
3565 case $build in
3566 *mingw* ) # Actually, msys.
3567 # Awkward: cmd appends spaces to result.
3568 lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3569 func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3570 $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3571 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3572 $SED -e "$lt_sed_naive_backslashify"`
3574 *cygwin* )
3575 func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3576 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3577 $SED -e "$lt_sed_naive_backslashify"`
3580 # unfortunately, winepath doesn't convert pathlists
3581 func_to_host_pathlist_result=""
3582 func_to_host_pathlist_oldIFS=$IFS
3583 IFS=:
3584 for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3585 IFS=$func_to_host_pathlist_oldIFS
3586 if test -n "$func_to_host_pathlist_f" ; then
3587 func_to_host_path "$func_to_host_pathlist_f"
3588 if test -n "$func_to_host_path_result" ; then
3589 if test -z "$func_to_host_pathlist_result" ; then
3590 func_to_host_pathlist_result="$func_to_host_path_result"
3591 else
3592 func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3596 IFS=:
3597 done
3598 IFS=$func_to_host_pathlist_oldIFS
3600 esac
3601 if test -z "$func_to_host_pathlist_result" ; then
3602 func_error "Could not determine the host path(s) corresponding to"
3603 func_error " '$1'"
3604 func_error "Continuing, but uninstalled executables may not work."
3605 # Fallback. This may break if $1 contains DOS-style drive
3606 # specifications. The fix is not to complicate the expression
3607 # below, but for the user to provide a working wine installation
3608 # with winepath so that path translation in the cross-to-mingw
3609 # case works properly.
3610 lt_replace_pathsep_nix_to_dos="s|:|;|g"
3611 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3612 $SED -e "$lt_replace_pathsep_nix_to_dos"`
3614 # Now, add the leading and trailing path separators back
3615 case "$1" in
3616 :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3618 esac
3619 case "$1" in
3620 *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3622 esac
3624 esac
3627 # end: func_to_host_pathlist
3629 # func_emit_cwrapperexe_src
3630 # emit the source code for a wrapper executable on stdout
3631 # Must ONLY be called from within func_mode_link because
3632 # it depends on a number of variable set therein.
3633 func_emit_cwrapperexe_src ()
3635 cat <<EOF
3637 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3638 Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3640 The $output program cannot be directly executed until all the libtool
3641 libraries that it depends on are installed.
3643 This wrapper executable should never be moved out of the build directory.
3644 If it is, it will not operate correctly.
3646 Currently, it simply execs the wrapper *script* "$SHELL $output",
3647 but could eventually absorb all of the scripts functionality and
3648 exec $objdir/$outputname directly.
3651 cat <<"EOF"
3652 #include <stdio.h>
3653 #include <stdlib.h>
3654 #ifdef _MSC_VER
3655 # include <direct.h>
3656 # include <process.h>
3657 # include <io.h>
3658 # define setmode _setmode
3659 #else
3660 # include <unistd.h>
3661 # include <stdint.h>
3662 # ifdef __CYGWIN__
3663 # include <io.h>
3664 # define HAVE_SETENV
3665 # ifdef __STRICT_ANSI__
3666 char *realpath (const char *, char *);
3667 int putenv (char *);
3668 int setenv (const char *, const char *, int);
3669 # endif
3670 # endif
3671 #endif
3672 #include <malloc.h>
3673 #include <stdarg.h>
3674 #include <assert.h>
3675 #include <string.h>
3676 #include <ctype.h>
3677 #include <errno.h>
3678 #include <fcntl.h>
3679 #include <sys/stat.h>
3681 #if defined(PATH_MAX)
3682 # define LT_PATHMAX PATH_MAX
3683 #elif defined(MAXPATHLEN)
3684 # define LT_PATHMAX MAXPATHLEN
3685 #else
3686 # define LT_PATHMAX 1024
3687 #endif
3689 #ifndef S_IXOTH
3690 # define S_IXOTH 0
3691 #endif
3692 #ifndef S_IXGRP
3693 # define S_IXGRP 0
3694 #endif
3696 #ifdef _MSC_VER
3697 # define S_IXUSR _S_IEXEC
3698 # define stat _stat
3699 # ifndef _INTPTR_T_DEFINED
3700 # define intptr_t int
3701 # endif
3702 #endif
3704 #ifndef DIR_SEPARATOR
3705 # define DIR_SEPARATOR '/'
3706 # define PATH_SEPARATOR ':'
3707 #endif
3709 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3710 defined (__OS2__)
3711 # define HAVE_DOS_BASED_FILE_SYSTEM
3712 # define FOPEN_WB "wb"
3713 # ifndef DIR_SEPARATOR_2
3714 # define DIR_SEPARATOR_2 '\\'
3715 # endif
3716 # ifndef PATH_SEPARATOR_2
3717 # define PATH_SEPARATOR_2 ';'
3718 # endif
3719 #endif
3721 #ifndef DIR_SEPARATOR_2
3722 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3723 #else /* DIR_SEPARATOR_2 */
3724 # define IS_DIR_SEPARATOR(ch) \
3725 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3726 #endif /* DIR_SEPARATOR_2 */
3728 #ifndef PATH_SEPARATOR_2
3729 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3730 #else /* PATH_SEPARATOR_2 */
3731 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3732 #endif /* PATH_SEPARATOR_2 */
3734 #ifdef __CYGWIN__
3735 # define FOPEN_WB "wb"
3736 #endif
3738 #ifndef FOPEN_WB
3739 # define FOPEN_WB "w"
3740 #endif
3741 #ifndef _O_BINARY
3742 # define _O_BINARY 0
3743 #endif
3745 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
3746 #define XFREE(stale) do { \
3747 if (stale) { free ((void *) stale); stale = 0; } \
3748 } while (0)
3750 #undef LTWRAPPER_DEBUGPRINTF
3751 #if defined DEBUGWRAPPER
3752 # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3753 static void
3754 ltwrapper_debugprintf (const char *fmt, ...)
3756 va_list args;
3757 va_start (args, fmt);
3758 (void) vfprintf (stderr, fmt, args);
3759 va_end (args);
3761 #else
3762 # define LTWRAPPER_DEBUGPRINTF(args)
3763 #endif
3765 const char *program_name = NULL;
3767 void *xmalloc (size_t num);
3768 char *xstrdup (const char *string);
3769 const char *base_name (const char *name);
3770 char *find_executable (const char *wrapper);
3771 char *chase_symlinks (const char *pathspec);
3772 int make_executable (const char *path);
3773 int check_executable (const char *path);
3774 char *strendzap (char *str, const char *pat);
3775 void lt_fatal (const char *message, ...);
3776 void lt_setenv (const char *name, const char *value);
3777 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
3778 void lt_opt_process_env_set (const char *arg);
3779 void lt_opt_process_env_prepend (const char *arg);
3780 void lt_opt_process_env_append (const char *arg);
3781 int lt_split_name_value (const char *arg, char** name, char** value);
3782 void lt_update_exe_path (const char *name, const char *value);
3783 void lt_update_lib_path (const char *name, const char *value);
3785 static const char *script_text_part1 =
3788 func_emit_wrapper_part1 yes |
3789 $SED -e 's/\([\\"]\)/\\\1/g' \
3790 -e 's/^/ "/' -e 's/$/\\n"/'
3791 echo ";"
3792 cat <<EOF
3794 static const char *script_text_part2 =
3796 func_emit_wrapper_part2 yes |
3797 $SED -e 's/\([\\"]\)/\\\1/g' \
3798 -e 's/^/ "/' -e 's/$/\\n"/'
3799 echo ";"
3801 cat <<EOF
3802 const char * MAGIC_EXE = "$magic_exe";
3803 const char * LIB_PATH_VARNAME = "$shlibpath_var";
3806 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3807 func_to_host_pathlist "$temp_rpath"
3808 cat <<EOF
3809 const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
3811 else
3812 cat <<"EOF"
3813 const char * LIB_PATH_VALUE = "";
3817 if test -n "$dllsearchpath"; then
3818 func_to_host_pathlist "$dllsearchpath:"
3819 cat <<EOF
3820 const char * EXE_PATH_VARNAME = "PATH";
3821 const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
3823 else
3824 cat <<"EOF"
3825 const char * EXE_PATH_VARNAME = "";
3826 const char * EXE_PATH_VALUE = "";
3830 if test "$fast_install" = yes; then
3831 cat <<EOF
3832 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3834 else
3835 cat <<EOF
3836 const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3841 cat <<"EOF"
3843 #define LTWRAPPER_OPTION_PREFIX "--lt-"
3844 #define LTWRAPPER_OPTION_PREFIX_LENGTH 5
3846 static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
3847 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3849 static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
3851 static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3852 static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
3853 /* argument is putenv-style "foo=bar", value of foo is set to bar */
3855 static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3856 static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
3857 /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
3859 static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3860 static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
3861 /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
3864 main (int argc, char *argv[])
3866 char **newargz;
3867 int newargc;
3868 char *tmp_pathspec;
3869 char *actual_cwrapper_path;
3870 char *actual_cwrapper_name;
3871 char *target_name;
3872 char *lt_argv_zero;
3873 intptr_t rval = 127;
3875 int i;
3877 program_name = (char *) xstrdup (base_name (argv[0]));
3878 LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
3879 LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
3881 /* very simple arg parsing; don't want to rely on getopt */
3882 for (i = 1; i < argc; i++)
3884 if (strcmp (argv[i], dumpscript_opt) == 0)
3887 case "$host" in
3888 *mingw* | *cygwin* )
3889 # make stdout use "unix" line endings
3890 echo " setmode(1,_O_BINARY);"
3892 esac
3894 cat <<"EOF"
3895 printf ("%s", script_text_part1);
3896 printf ("%s", script_text_part2);
3897 return 0;
3901 newargz = XMALLOC (char *, argc + 1);
3902 tmp_pathspec = find_executable (argv[0]);
3903 if (tmp_pathspec == NULL)
3904 lt_fatal ("Couldn't find %s", argv[0]);
3905 LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
3906 tmp_pathspec));
3908 actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3909 LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
3910 actual_cwrapper_path));
3911 XFREE (tmp_pathspec);
3913 actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
3914 strendzap (actual_cwrapper_path, actual_cwrapper_name);
3916 /* wrapper name transforms */
3917 strendzap (actual_cwrapper_name, ".exe");
3918 tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3919 XFREE (actual_cwrapper_name);
3920 actual_cwrapper_name = tmp_pathspec;
3921 tmp_pathspec = 0;
3923 /* target_name transforms -- use actual target program name; might have lt- prefix */
3924 target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3925 strendzap (target_name, ".exe");
3926 tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3927 XFREE (target_name);
3928 target_name = tmp_pathspec;
3929 tmp_pathspec = 0;
3931 LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
3932 target_name));
3935 cat <<EOF
3936 newargz[0] =
3937 XMALLOC (char, (strlen (actual_cwrapper_path) +
3938 strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3939 strcpy (newargz[0], actual_cwrapper_path);
3940 strcat (newargz[0], "$objdir");
3941 strcat (newargz[0], "/");
3944 cat <<"EOF"
3945 /* stop here, and copy so we don't have to do this twice */
3946 tmp_pathspec = xstrdup (newargz[0]);
3948 /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3949 strcat (newargz[0], actual_cwrapper_name);
3951 /* DO want the lt- prefix here if it exists, so use target_name */
3952 lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3953 XFREE (tmp_pathspec);
3954 tmp_pathspec = NULL;
3957 case $host_os in
3958 mingw*)
3959 cat <<"EOF"
3961 char* p;
3962 while ((p = strchr (newargz[0], '\\')) != NULL)
3964 *p = '/';
3966 while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3968 *p = '/';
3973 esac
3975 cat <<"EOF"
3976 XFREE (target_name);
3977 XFREE (actual_cwrapper_path);
3978 XFREE (actual_cwrapper_name);
3980 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3981 lt_setenv ("DUALCASE", "1"); /* for MSK sh */
3982 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3983 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3985 newargc=0;
3986 for (i = 1; i < argc; i++)
3988 if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3990 if (argv[i][env_set_opt_len] == '=')
3992 const char *p = argv[i] + env_set_opt_len + 1;
3993 lt_opt_process_env_set (p);
3995 else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3997 lt_opt_process_env_set (argv[++i]); /* don't copy */
3999 else
4000 lt_fatal ("%s missing required argument", env_set_opt);
4001 continue;
4003 if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
4005 if (argv[i][env_prepend_opt_len] == '=')
4007 const char *p = argv[i] + env_prepend_opt_len + 1;
4008 lt_opt_process_env_prepend (p);
4010 else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
4012 lt_opt_process_env_prepend (argv[++i]); /* don't copy */
4014 else
4015 lt_fatal ("%s missing required argument", env_prepend_opt);
4016 continue;
4018 if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
4020 if (argv[i][env_append_opt_len] == '=')
4022 const char *p = argv[i] + env_append_opt_len + 1;
4023 lt_opt_process_env_append (p);
4025 else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
4027 lt_opt_process_env_append (argv[++i]); /* don't copy */
4029 else
4030 lt_fatal ("%s missing required argument", env_append_opt);
4031 continue;
4033 if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
4035 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4036 namespace, but it is not one of the ones we know about and
4037 have already dealt with, above (inluding dump-script), then
4038 report an error. Otherwise, targets might begin to believe
4039 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4040 namespace. The first time any user complains about this, we'll
4041 need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4042 or a configure.ac-settable value.
4044 lt_fatal ("Unrecognized option in %s namespace: '%s'",
4045 ltwrapper_option_prefix, argv[i]);
4047 /* otherwise ... */
4048 newargz[++newargc] = xstrdup (argv[i]);
4050 newargz[++newargc] = NULL;
4052 LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
4053 for (i = 0; i < newargc; i++)
4055 LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
4060 case $host_os in
4061 mingw*)
4062 cat <<"EOF"
4063 /* execv doesn't actually work on mingw as expected on unix */
4064 rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4065 if (rval == -1)
4067 /* failed to start process */
4068 LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
4069 return 127;
4071 return rval;
4075 cat <<"EOF"
4076 execv (lt_argv_zero, newargz);
4077 return rval; /* =127, but avoids unused variable warning */
4080 esac
4082 cat <<"EOF"
4085 void *
4086 xmalloc (size_t num)
4088 void *p = (void *) malloc (num);
4089 if (!p)
4090 lt_fatal ("Memory exhausted");
4092 return p;
4095 char *
4096 xstrdup (const char *string)
4098 return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4099 string) : NULL;
4102 const char *
4103 base_name (const char *name)
4105 const char *base;
4107 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4108 /* Skip over the disk name in MSDOS pathnames. */
4109 if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4110 name += 2;
4111 #endif
4113 for (base = name; *name; name++)
4114 if (IS_DIR_SEPARATOR (*name))
4115 base = name + 1;
4116 return base;
4120 check_executable (const char *path)
4122 struct stat st;
4124 LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
4125 path ? (*path ? path : "EMPTY!") : "NULL!"));
4126 if ((!path) || (!*path))
4127 return 0;
4129 if ((stat (path, &st) >= 0)
4130 && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4131 return 1;
4132 else
4133 return 0;
4137 make_executable (const char *path)
4139 int rval = 0;
4140 struct stat st;
4142 LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
4143 path ? (*path ? path : "EMPTY!") : "NULL!"));
4144 if ((!path) || (!*path))
4145 return 0;
4147 if (stat (path, &st) >= 0)
4149 rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4151 return rval;
4154 /* Searches for the full path of the wrapper. Returns
4155 newly allocated full path name if found, NULL otherwise
4156 Does not chase symlinks, even on platforms that support them.
4158 char *
4159 find_executable (const char *wrapper)
4161 int has_slash = 0;
4162 const char *p;
4163 const char *p_next;
4164 /* static buffer for getcwd */
4165 char tmp[LT_PATHMAX + 1];
4166 int tmp_len;
4167 char *concat_name;
4169 LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
4170 wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
4172 if ((wrapper == NULL) || (*wrapper == '\0'))
4173 return NULL;
4175 /* Absolute path? */
4176 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4177 if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4179 concat_name = xstrdup (wrapper);
4180 if (check_executable (concat_name))
4181 return concat_name;
4182 XFREE (concat_name);
4184 else
4186 #endif
4187 if (IS_DIR_SEPARATOR (wrapper[0]))
4189 concat_name = xstrdup (wrapper);
4190 if (check_executable (concat_name))
4191 return concat_name;
4192 XFREE (concat_name);
4194 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4196 #endif
4198 for (p = wrapper; *p; p++)
4199 if (*p == '/')
4201 has_slash = 1;
4202 break;
4204 if (!has_slash)
4206 /* no slashes; search PATH */
4207 const char *path = getenv ("PATH");
4208 if (path != NULL)
4210 for (p = path; *p; p = p_next)
4212 const char *q;
4213 size_t p_len;
4214 for (q = p; *q; q++)
4215 if (IS_PATH_SEPARATOR (*q))
4216 break;
4217 p_len = q - p;
4218 p_next = (*q == '\0' ? q : q + 1);
4219 if (p_len == 0)
4221 /* empty path: current directory */
4222 if (getcwd (tmp, LT_PATHMAX) == NULL)
4223 lt_fatal ("getcwd failed");
4224 tmp_len = strlen (tmp);
4225 concat_name =
4226 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4227 memcpy (concat_name, tmp, tmp_len);
4228 concat_name[tmp_len] = '/';
4229 strcpy (concat_name + tmp_len + 1, wrapper);
4231 else
4233 concat_name =
4234 XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4235 memcpy (concat_name, p, p_len);
4236 concat_name[p_len] = '/';
4237 strcpy (concat_name + p_len + 1, wrapper);
4239 if (check_executable (concat_name))
4240 return concat_name;
4241 XFREE (concat_name);
4244 /* not found in PATH; assume curdir */
4246 /* Relative path | not found in path: prepend cwd */
4247 if (getcwd (tmp, LT_PATHMAX) == NULL)
4248 lt_fatal ("getcwd failed");
4249 tmp_len = strlen (tmp);
4250 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4251 memcpy (concat_name, tmp, tmp_len);
4252 concat_name[tmp_len] = '/';
4253 strcpy (concat_name + tmp_len + 1, wrapper);
4255 if (check_executable (concat_name))
4256 return concat_name;
4257 XFREE (concat_name);
4258 return NULL;
4261 char *
4262 chase_symlinks (const char *pathspec)
4264 #ifndef S_ISLNK
4265 return xstrdup (pathspec);
4266 #else
4267 char buf[LT_PATHMAX];
4268 struct stat s;
4269 char *tmp_pathspec = xstrdup (pathspec);
4270 char *p;
4271 int has_symlinks = 0;
4272 while (strlen (tmp_pathspec) && !has_symlinks)
4274 LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
4275 tmp_pathspec));
4276 if (lstat (tmp_pathspec, &s) == 0)
4278 if (S_ISLNK (s.st_mode) != 0)
4280 has_symlinks = 1;
4281 break;
4284 /* search backwards for last DIR_SEPARATOR */
4285 p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4286 while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4287 p--;
4288 if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4290 /* no more DIR_SEPARATORS left */
4291 break;
4293 *p = '\0';
4295 else
4297 char *errstr = strerror (errno);
4298 lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
4301 XFREE (tmp_pathspec);
4303 if (!has_symlinks)
4305 return xstrdup (pathspec);
4308 tmp_pathspec = realpath (pathspec, buf);
4309 if (tmp_pathspec == 0)
4311 lt_fatal ("Could not follow symlinks for %s", pathspec);
4313 return xstrdup (tmp_pathspec);
4314 #endif
4317 char *
4318 strendzap (char *str, const char *pat)
4320 size_t len, patlen;
4322 assert (str != NULL);
4323 assert (pat != NULL);
4325 len = strlen (str);
4326 patlen = strlen (pat);
4328 if (patlen <= len)
4330 str += len - patlen;
4331 if (strcmp (str, pat) == 0)
4332 *str = '\0';
4334 return str;
4337 static void
4338 lt_error_core (int exit_status, const char *mode,
4339 const char *message, va_list ap)
4341 fprintf (stderr, "%s: %s: ", program_name, mode);
4342 vfprintf (stderr, message, ap);
4343 fprintf (stderr, ".\n");
4345 if (exit_status >= 0)
4346 exit (exit_status);
4349 void
4350 lt_fatal (const char *message, ...)
4352 va_list ap;
4353 va_start (ap, message);
4354 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4355 va_end (ap);
4358 void
4359 lt_setenv (const char *name, const char *value)
4361 LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
4362 (name ? name : "<NULL>"),
4363 (value ? value : "<NULL>")));
4365 #ifdef HAVE_SETENV
4366 /* always make a copy, for consistency with !HAVE_SETENV */
4367 char *str = xstrdup (value);
4368 setenv (name, str, 1);
4369 #else
4370 int len = strlen (name) + 1 + strlen (value) + 1;
4371 char *str = XMALLOC (char, len);
4372 sprintf (str, "%s=%s", name, value);
4373 if (putenv (str) != EXIT_SUCCESS)
4375 XFREE (str);
4377 #endif
4381 char *
4382 lt_extend_str (const char *orig_value, const char *add, int to_end)
4384 char *new_value;
4385 if (orig_value && *orig_value)
4387 int orig_value_len = strlen (orig_value);
4388 int add_len = strlen (add);
4389 new_value = XMALLOC (char, add_len + orig_value_len + 1);
4390 if (to_end)
4392 strcpy (new_value, orig_value);
4393 strcpy (new_value + orig_value_len, add);
4395 else
4397 strcpy (new_value, add);
4398 strcpy (new_value + add_len, orig_value);
4401 else
4403 new_value = xstrdup (add);
4405 return new_value;
4409 lt_split_name_value (const char *arg, char** name, char** value)
4411 const char *p;
4412 int len;
4413 if (!arg || !*arg)
4414 return 1;
4416 p = strchr (arg, (int)'=');
4418 if (!p)
4419 return 1;
4421 *value = xstrdup (++p);
4423 len = strlen (arg) - strlen (*value);
4424 *name = XMALLOC (char, len);
4425 strncpy (*name, arg, len-1);
4426 (*name)[len - 1] = '\0';
4428 return 0;
4431 void
4432 lt_opt_process_env_set (const char *arg)
4434 char *name = NULL;
4435 char *value = NULL;
4437 if (lt_split_name_value (arg, &name, &value) != 0)
4439 XFREE (name);
4440 XFREE (value);
4441 lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
4444 lt_setenv (name, value);
4445 XFREE (name);
4446 XFREE (value);
4449 void
4450 lt_opt_process_env_prepend (const char *arg)
4452 char *name = NULL;
4453 char *value = NULL;
4454 char *new_value = NULL;
4456 if (lt_split_name_value (arg, &name, &value) != 0)
4458 XFREE (name);
4459 XFREE (value);
4460 lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
4463 new_value = lt_extend_str (getenv (name), value, 0);
4464 lt_setenv (name, new_value);
4465 XFREE (new_value);
4466 XFREE (name);
4467 XFREE (value);
4470 void
4471 lt_opt_process_env_append (const char *arg)
4473 char *name = NULL;
4474 char *value = NULL;
4475 char *new_value = NULL;
4477 if (lt_split_name_value (arg, &name, &value) != 0)
4479 XFREE (name);
4480 XFREE (value);
4481 lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
4484 new_value = lt_extend_str (getenv (name), value, 1);
4485 lt_setenv (name, new_value);
4486 XFREE (new_value);
4487 XFREE (name);
4488 XFREE (value);
4491 void
4492 lt_update_exe_path (const char *name, const char *value)
4494 LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4495 (name ? name : "<NULL>"),
4496 (value ? value : "<NULL>")));
4498 if (name && *name && value && *value)
4500 char *new_value = lt_extend_str (getenv (name), value, 0);
4501 /* some systems can't cope with a ':'-terminated path #' */
4502 int len = strlen (new_value);
4503 while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4505 new_value[len-1] = '\0';
4507 lt_setenv (name, new_value);
4508 XFREE (new_value);
4512 void
4513 lt_update_lib_path (const char *name, const char *value)
4515 LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4516 (name ? name : "<NULL>"),
4517 (value ? value : "<NULL>")));
4519 if (name && *name && value && *value)
4521 char *new_value = lt_extend_str (getenv (name), value, 0);
4522 lt_setenv (name, new_value);
4523 XFREE (new_value);
4530 # end: func_emit_cwrapperexe_src
4532 # func_mode_link arg...
4533 func_mode_link ()
4535 $opt_debug
4536 case $host in
4537 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4538 # It is impossible to link a dll without this setting, and
4539 # we shouldn't force the makefile maintainer to figure out
4540 # which system we are compiling for in order to pass an extra
4541 # flag for every libtool invocation.
4542 # allow_undefined=no
4544 # FIXME: Unfortunately, there are problems with the above when trying
4545 # to make a dll which has undefined symbols, in which case not
4546 # even a static library is built. For now, we need to specify
4547 # -no-undefined on the libtool link line when we can be certain
4548 # that all symbols are satisfied, otherwise we get a static library.
4549 allow_undefined=yes
4552 allow_undefined=yes
4554 esac
4555 libtool_args=$nonopt
4556 base_compile="$nonopt $@"
4557 compile_command=$nonopt
4558 finalize_command=$nonopt
4560 compile_rpath=
4561 finalize_rpath=
4562 compile_shlibpath=
4563 finalize_shlibpath=
4564 convenience=
4565 old_convenience=
4566 deplibs=
4567 old_deplibs=
4568 compiler_flags=
4569 linker_flags=
4570 dllsearchpath=
4571 lib_search_path=`pwd`
4572 inst_prefix_dir=
4573 new_inherited_linker_flags=
4575 avoid_version=no
4576 dlfiles=
4577 dlprefiles=
4578 dlself=no
4579 export_dynamic=no
4580 export_symbols=
4581 export_symbols_regex=
4582 generated=
4583 libobjs=
4584 ltlibs=
4585 module=no
4586 no_install=no
4587 objs=
4588 non_pic_objects=
4589 precious_files_regex=
4590 prefer_static_libs=no
4591 preload=no
4592 prev=
4593 prevarg=
4594 release=
4595 rpath=
4596 xrpath=
4597 perm_rpath=
4598 temp_rpath=
4599 thread_safe=no
4600 vinfo=
4601 vinfo_number=no
4602 weak_libs=
4603 single_module="${wl}-single_module"
4604 func_infer_tag $base_compile
4606 # We need to know -static, to get the right output filenames.
4607 for arg
4609 case $arg in
4610 -shared)
4611 test "$build_libtool_libs" != yes && \
4612 func_fatal_configuration "can not build a shared library"
4613 build_old_libs=no
4614 break
4616 -all-static | -static | -static-libtool-libs)
4617 case $arg in
4618 -all-static)
4619 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4620 func_warning "complete static linking is impossible in this configuration"
4622 if test -n "$link_static_flag"; then
4623 dlopen_self=$dlopen_self_static
4625 prefer_static_libs=yes
4627 -static)
4628 if test -z "$pic_flag" && test -n "$link_static_flag"; then
4629 dlopen_self=$dlopen_self_static
4631 prefer_static_libs=built
4633 -static-libtool-libs)
4634 if test -z "$pic_flag" && test -n "$link_static_flag"; then
4635 dlopen_self=$dlopen_self_static
4637 prefer_static_libs=yes
4639 esac
4640 build_libtool_libs=no
4641 build_old_libs=yes
4642 break
4644 esac
4645 done
4647 # See if our shared archives depend on static archives.
4648 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4650 # Go through the arguments, transforming them on the way.
4651 while test "$#" -gt 0; do
4652 arg="$1"
4653 shift
4654 func_quote_for_eval "$arg"
4655 qarg=$func_quote_for_eval_unquoted_result
4656 func_append libtool_args " $func_quote_for_eval_result"
4658 # If the previous option needs an argument, assign it.
4659 if test -n "$prev"; then
4660 case $prev in
4661 output)
4662 func_append compile_command " @OUTPUT@"
4663 func_append finalize_command " @OUTPUT@"
4665 esac
4667 case $prev in
4668 dlfiles|dlprefiles)
4669 if test "$preload" = no; then
4670 # Add the symbol object into the linking commands.
4671 func_append compile_command " @SYMFILE@"
4672 func_append finalize_command " @SYMFILE@"
4673 preload=yes
4675 case $arg in
4676 *.la | *.lo) ;; # We handle these cases below.
4677 force)
4678 if test "$dlself" = no; then
4679 dlself=needless
4680 export_dynamic=yes
4682 prev=
4683 continue
4685 self)
4686 if test "$prev" = dlprefiles; then
4687 dlself=yes
4688 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4689 dlself=yes
4690 else
4691 dlself=needless
4692 export_dynamic=yes
4694 prev=
4695 continue
4698 if test "$prev" = dlfiles; then
4699 dlfiles="$dlfiles $arg"
4700 else
4701 dlprefiles="$dlprefiles $arg"
4703 prev=
4704 continue
4706 esac
4708 expsyms)
4709 export_symbols="$arg"
4710 test -f "$arg" \
4711 || func_fatal_error "symbol file \`$arg' does not exist"
4712 prev=
4713 continue
4715 expsyms_regex)
4716 export_symbols_regex="$arg"
4717 prev=
4718 continue
4720 framework)
4721 case $host in
4722 *-*-darwin*)
4723 case "$deplibs " in
4724 *" $qarg.ltframework "*) ;;
4725 *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4727 esac
4729 esac
4730 prev=
4731 continue
4733 inst_prefix)
4734 inst_prefix_dir="$arg"
4735 prev=
4736 continue
4738 objectlist)
4739 if test -f "$arg"; then
4740 save_arg=$arg
4741 moreargs=
4742 for fil in `cat "$save_arg"`
4744 # moreargs="$moreargs $fil"
4745 arg=$fil
4746 # A libtool-controlled object.
4748 # Check to see that this really is a libtool object.
4749 if func_lalib_unsafe_p "$arg"; then
4750 pic_object=
4751 non_pic_object=
4753 # Read the .lo file
4754 func_source "$arg"
4756 if test -z "$pic_object" ||
4757 test -z "$non_pic_object" ||
4758 test "$pic_object" = none &&
4759 test "$non_pic_object" = none; then
4760 func_fatal_error "cannot find name of object for \`$arg'"
4763 # Extract subdirectory from the argument.
4764 func_dirname "$arg" "/" ""
4765 xdir="$func_dirname_result"
4767 if test "$pic_object" != none; then
4768 # Prepend the subdirectory the object is found in.
4769 pic_object="$xdir$pic_object"
4771 if test "$prev" = dlfiles; then
4772 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4773 dlfiles="$dlfiles $pic_object"
4774 prev=
4775 continue
4776 else
4777 # If libtool objects are unsupported, then we need to preload.
4778 prev=dlprefiles
4782 # CHECK ME: I think I busted this. -Ossama
4783 if test "$prev" = dlprefiles; then
4784 # Preload the old-style object.
4785 dlprefiles="$dlprefiles $pic_object"
4786 prev=
4789 # A PIC object.
4790 func_append libobjs " $pic_object"
4791 arg="$pic_object"
4794 # Non-PIC object.
4795 if test "$non_pic_object" != none; then
4796 # Prepend the subdirectory the object is found in.
4797 non_pic_object="$xdir$non_pic_object"
4799 # A standard non-PIC object
4800 func_append non_pic_objects " $non_pic_object"
4801 if test -z "$pic_object" || test "$pic_object" = none ; then
4802 arg="$non_pic_object"
4804 else
4805 # If the PIC object exists, use it instead.
4806 # $xdir was prepended to $pic_object above.
4807 non_pic_object="$pic_object"
4808 func_append non_pic_objects " $non_pic_object"
4810 else
4811 # Only an error if not doing a dry-run.
4812 if $opt_dry_run; then
4813 # Extract subdirectory from the argument.
4814 func_dirname "$arg" "/" ""
4815 xdir="$func_dirname_result"
4817 func_lo2o "$arg"
4818 pic_object=$xdir$objdir/$func_lo2o_result
4819 non_pic_object=$xdir$func_lo2o_result
4820 func_append libobjs " $pic_object"
4821 func_append non_pic_objects " $non_pic_object"
4822 else
4823 func_fatal_error "\`$arg' is not a valid libtool object"
4826 done
4827 else
4828 func_fatal_error "link input file \`$arg' does not exist"
4830 arg=$save_arg
4831 prev=
4832 continue
4834 precious_regex)
4835 precious_files_regex="$arg"
4836 prev=
4837 continue
4839 release)
4840 release="-$arg"
4841 prev=
4842 continue
4844 rpath | xrpath)
4845 # We need an absolute path.
4846 case $arg in
4847 [\\/]* | [A-Za-z]:[\\/]*) ;;
4849 func_fatal_error "only absolute run-paths are allowed"
4851 esac
4852 if test "$prev" = rpath; then
4853 case "$rpath " in
4854 *" $arg "*) ;;
4855 *) rpath="$rpath $arg" ;;
4856 esac
4857 else
4858 case "$xrpath " in
4859 *" $arg "*) ;;
4860 *) xrpath="$xrpath $arg" ;;
4861 esac
4863 prev=
4864 continue
4866 shrext)
4867 shrext_cmds="$arg"
4868 prev=
4869 continue
4871 weak)
4872 weak_libs="$weak_libs $arg"
4873 prev=
4874 continue
4876 xcclinker)
4877 linker_flags="$linker_flags $qarg"
4878 compiler_flags="$compiler_flags $qarg"
4879 prev=
4880 func_append compile_command " $qarg"
4881 func_append finalize_command " $qarg"
4882 continue
4884 xcompiler)
4885 compiler_flags="$compiler_flags $qarg"
4886 prev=
4887 func_append compile_command " $qarg"
4888 func_append finalize_command " $qarg"
4889 continue
4891 xlinker)
4892 linker_flags="$linker_flags $qarg"
4893 compiler_flags="$compiler_flags $wl$qarg"
4894 prev=
4895 func_append compile_command " $wl$qarg"
4896 func_append finalize_command " $wl$qarg"
4897 continue
4900 eval "$prev=\"\$arg\""
4901 prev=
4902 continue
4904 esac
4905 fi # test -n "$prev"
4907 prevarg="$arg"
4909 case $arg in
4910 -all-static)
4911 if test -n "$link_static_flag"; then
4912 # See comment for -static flag below, for more details.
4913 func_append compile_command " $link_static_flag"
4914 func_append finalize_command " $link_static_flag"
4916 continue
4919 -allow-undefined)
4920 # FIXME: remove this flag sometime in the future.
4921 func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4924 -avoid-version)
4925 avoid_version=yes
4926 continue
4929 -dlopen)
4930 prev=dlfiles
4931 continue
4934 -dlpreopen)
4935 prev=dlprefiles
4936 continue
4939 -export-dynamic)
4940 export_dynamic=yes
4941 continue
4944 -export-symbols | -export-symbols-regex)
4945 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4946 func_fatal_error "more than one -exported-symbols argument is not allowed"
4948 if test "X$arg" = "X-export-symbols"; then
4949 prev=expsyms
4950 else
4951 prev=expsyms_regex
4953 continue
4956 -framework)
4957 prev=framework
4958 continue
4961 -inst-prefix-dir)
4962 prev=inst_prefix
4963 continue
4966 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4967 # so, if we see these flags be careful not to treat them like -L
4968 -L[A-Z][A-Z]*:*)
4969 case $with_gcc/$host in
4970 no/*-*-irix* | /*-*-irix*)
4971 func_append compile_command " $arg"
4972 func_append finalize_command " $arg"
4974 esac
4975 continue
4978 -L*)
4979 func_stripname '-L' '' "$arg"
4980 dir=$func_stripname_result
4981 if test -z "$dir"; then
4982 if test "$#" -gt 0; then
4983 func_fatal_error "require no space between \`-L' and \`$1'"
4984 else
4985 func_fatal_error "need path for \`-L' option"
4988 # We need an absolute path.
4989 case $dir in
4990 [\\/]* | [A-Za-z]:[\\/]*) ;;
4992 absdir=`cd "$dir" && pwd`
4993 test -z "$absdir" && \
4994 func_fatal_error "cannot determine absolute directory name of \`$dir'"
4995 dir="$absdir"
4997 esac
4998 case "$deplibs " in
4999 *" -L$dir "*) ;;
5001 deplibs="$deplibs -L$dir"
5002 lib_search_path="$lib_search_path $dir"
5004 esac
5005 case $host in
5006 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5007 testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
5008 case :$dllsearchpath: in
5009 *":$dir:"*) ;;
5010 ::) dllsearchpath=$dir;;
5011 *) dllsearchpath="$dllsearchpath:$dir";;
5012 esac
5013 case :$dllsearchpath: in
5014 *":$testbindir:"*) ;;
5015 ::) dllsearchpath=$testbindir;;
5016 *) dllsearchpath="$dllsearchpath:$testbindir";;
5017 esac
5019 esac
5020 continue
5023 -l*)
5024 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5025 case $host in
5026 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
5027 # These systems don't actually have a C or math library (as such)
5028 continue
5030 *-*-os2*)
5031 # These systems don't actually have a C library (as such)
5032 test "X$arg" = "X-lc" && continue
5034 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5035 # Do not include libc due to us having libc/libc_r.
5036 test "X$arg" = "X-lc" && continue
5038 *-*-rhapsody* | *-*-darwin1.[012])
5039 # Rhapsody C and math libraries are in the System framework
5040 deplibs="$deplibs System.ltframework"
5041 continue
5043 *-*-sco3.2v5* | *-*-sco5v6*)
5044 # Causes problems with __ctype
5045 test "X$arg" = "X-lc" && continue
5047 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5048 # Compiler inserts libc in the correct place for threads to work
5049 test "X$arg" = "X-lc" && continue
5051 esac
5052 elif test "X$arg" = "X-lc_r"; then
5053 case $host in
5054 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5055 # Do not include libc_r directly, use -pthread flag.
5056 continue
5058 esac
5060 deplibs="$deplibs $arg"
5061 continue
5064 -module)
5065 module=yes
5066 continue
5069 # Tru64 UNIX uses -model [arg] to determine the layout of C++
5070 # classes, name mangling, and exception handling.
5071 # Darwin uses the -arch flag to determine output architecture.
5072 -model|-arch|-isysroot)
5073 compiler_flags="$compiler_flags $arg"
5074 func_append compile_command " $arg"
5075 func_append finalize_command " $arg"
5076 prev=xcompiler
5077 continue
5080 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5081 compiler_flags="$compiler_flags $arg"
5082 func_append compile_command " $arg"
5083 func_append finalize_command " $arg"
5084 case "$new_inherited_linker_flags " in
5085 *" $arg "*) ;;
5086 * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
5087 esac
5088 continue
5091 -multi_module)
5092 single_module="${wl}-multi_module"
5093 continue
5096 -no-fast-install)
5097 fast_install=no
5098 continue
5101 -no-install)
5102 case $host in
5103 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5104 # The PATH hackery in wrapper scripts is required on Windows
5105 # and Darwin in order for the loader to find any dlls it needs.
5106 func_warning "\`-no-install' is ignored for $host"
5107 func_warning "assuming \`-no-fast-install' instead"
5108 fast_install=no
5110 *) no_install=yes ;;
5111 esac
5112 continue
5115 -no-undefined)
5116 allow_undefined=no
5117 continue
5120 -objectlist)
5121 prev=objectlist
5122 continue
5125 -o) prev=output ;;
5127 -precious-files-regex)
5128 prev=precious_regex
5129 continue
5132 -release)
5133 prev=release
5134 continue
5137 -rpath)
5138 prev=rpath
5139 continue
5143 prev=xrpath
5144 continue
5147 -R*)
5148 func_stripname '-R' '' "$arg"
5149 dir=$func_stripname_result
5150 # We need an absolute path.
5151 case $dir in
5152 [\\/]* | [A-Za-z]:[\\/]*) ;;
5154 func_fatal_error "only absolute run-paths are allowed"
5156 esac
5157 case "$xrpath " in
5158 *" $dir "*) ;;
5159 *) xrpath="$xrpath $dir" ;;
5160 esac
5161 continue
5164 -shared)
5165 # The effects of -shared are defined in a previous loop.
5166 continue
5169 -shrext)
5170 prev=shrext
5171 continue
5174 -static | -static-libtool-libs)
5175 # The effects of -static are defined in a previous loop.
5176 # We used to do the same as -all-static on platforms that
5177 # didn't have a PIC flag, but the assumption that the effects
5178 # would be equivalent was wrong. It would break on at least
5179 # Digital Unix and AIX.
5180 continue
5183 -thread-safe)
5184 thread_safe=yes
5185 continue
5188 -version-info)
5189 prev=vinfo
5190 continue
5193 -version-number)
5194 prev=vinfo
5195 vinfo_number=yes
5196 continue
5199 -weak)
5200 prev=weak
5201 continue
5204 -Wc,*)
5205 func_stripname '-Wc,' '' "$arg"
5206 args=$func_stripname_result
5207 arg=
5208 save_ifs="$IFS"; IFS=','
5209 for flag in $args; do
5210 IFS="$save_ifs"
5211 func_quote_for_eval "$flag"
5212 arg="$arg $wl$func_quote_for_eval_result"
5213 compiler_flags="$compiler_flags $func_quote_for_eval_result"
5214 done
5215 IFS="$save_ifs"
5216 func_stripname ' ' '' "$arg"
5217 arg=$func_stripname_result
5220 -Wl,*)
5221 func_stripname '-Wl,' '' "$arg"
5222 args=$func_stripname_result
5223 arg=
5224 save_ifs="$IFS"; IFS=','
5225 for flag in $args; do
5226 IFS="$save_ifs"
5227 func_quote_for_eval "$flag"
5228 arg="$arg $wl$func_quote_for_eval_result"
5229 compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
5230 linker_flags="$linker_flags $func_quote_for_eval_result"
5231 done
5232 IFS="$save_ifs"
5233 func_stripname ' ' '' "$arg"
5234 arg=$func_stripname_result
5237 -Xcompiler)
5238 prev=xcompiler
5239 continue
5242 -Xlinker)
5243 prev=xlinker
5244 continue
5247 -XCClinker)
5248 prev=xcclinker
5249 continue
5252 # -msg_* for osf cc
5253 -msg_*)
5254 func_quote_for_eval "$arg"
5255 arg="$func_quote_for_eval_result"
5258 # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
5259 # -r[0-9][0-9]* specifies the processor on the SGI compiler
5260 # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
5261 # +DA*, +DD* enable 64-bit mode on the HP compiler
5262 # -q* pass through compiler args for the IBM compiler
5263 # -m*, -t[45]*, -txscale* pass through architecture-specific
5264 # compiler args for GCC
5265 # -F/path gives path to uninstalled frameworks, gcc on darwin
5266 # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
5267 # @file GCC response files
5268 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5269 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
5270 func_quote_for_eval "$arg"
5271 arg="$func_quote_for_eval_result"
5272 func_append compile_command " $arg"
5273 func_append finalize_command " $arg"
5274 compiler_flags="$compiler_flags $arg"
5275 continue
5278 # Some other compiler flag.
5279 -* | +*)
5280 func_quote_for_eval "$arg"
5281 arg="$func_quote_for_eval_result"
5284 *.$objext)
5285 # A standard object.
5286 objs="$objs $arg"
5289 *.lo)
5290 # A libtool-controlled object.
5292 # Check to see that this really is a libtool object.
5293 if func_lalib_unsafe_p "$arg"; then
5294 pic_object=
5295 non_pic_object=
5297 # Read the .lo file
5298 func_source "$arg"
5300 if test -z "$pic_object" ||
5301 test -z "$non_pic_object" ||
5302 test "$pic_object" = none &&
5303 test "$non_pic_object" = none; then
5304 func_fatal_error "cannot find name of object for \`$arg'"
5307 # Extract subdirectory from the argument.
5308 func_dirname "$arg" "/" ""
5309 xdir="$func_dirname_result"
5311 if test "$pic_object" != none; then
5312 # Prepend the subdirectory the object is found in.
5313 pic_object="$xdir$pic_object"
5315 if test "$prev" = dlfiles; then
5316 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5317 dlfiles="$dlfiles $pic_object"
5318 prev=
5319 continue
5320 else
5321 # If libtool objects are unsupported, then we need to preload.
5322 prev=dlprefiles
5326 # CHECK ME: I think I busted this. -Ossama
5327 if test "$prev" = dlprefiles; then
5328 # Preload the old-style object.
5329 dlprefiles="$dlprefiles $pic_object"
5330 prev=
5333 # A PIC object.
5334 func_append libobjs " $pic_object"
5335 arg="$pic_object"
5338 # Non-PIC object.
5339 if test "$non_pic_object" != none; then
5340 # Prepend the subdirectory the object is found in.
5341 non_pic_object="$xdir$non_pic_object"
5343 # A standard non-PIC object
5344 func_append non_pic_objects " $non_pic_object"
5345 if test -z "$pic_object" || test "$pic_object" = none ; then
5346 arg="$non_pic_object"
5348 else
5349 # If the PIC object exists, use it instead.
5350 # $xdir was prepended to $pic_object above.
5351 non_pic_object="$pic_object"
5352 func_append non_pic_objects " $non_pic_object"
5354 else
5355 # Only an error if not doing a dry-run.
5356 if $opt_dry_run; then
5357 # Extract subdirectory from the argument.
5358 func_dirname "$arg" "/" ""
5359 xdir="$func_dirname_result"
5361 func_lo2o "$arg"
5362 pic_object=$xdir$objdir/$func_lo2o_result
5363 non_pic_object=$xdir$func_lo2o_result
5364 func_append libobjs " $pic_object"
5365 func_append non_pic_objects " $non_pic_object"
5366 else
5367 func_fatal_error "\`$arg' is not a valid libtool object"
5372 *.$libext)
5373 # An archive.
5374 deplibs="$deplibs $arg"
5375 old_deplibs="$old_deplibs $arg"
5376 continue
5379 *.la)
5380 # A libtool-controlled library.
5382 if test "$prev" = dlfiles; then
5383 # This library was specified with -dlopen.
5384 dlfiles="$dlfiles $arg"
5385 prev=
5386 elif test "$prev" = dlprefiles; then
5387 # The library was specified with -dlpreopen.
5388 dlprefiles="$dlprefiles $arg"
5389 prev=
5390 else
5391 deplibs="$deplibs $arg"
5393 continue
5396 # Some other compiler argument.
5398 # Unknown arguments in both finalize_command and compile_command need
5399 # to be aesthetically quoted because they are evaled later.
5400 func_quote_for_eval "$arg"
5401 arg="$func_quote_for_eval_result"
5403 esac # arg
5405 # Now actually substitute the argument into the commands.
5406 if test -n "$arg"; then
5407 func_append compile_command " $arg"
5408 func_append finalize_command " $arg"
5410 done # argument parsing loop
5412 test -n "$prev" && \
5413 func_fatal_help "the \`$prevarg' option requires an argument"
5415 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5416 eval arg=\"$export_dynamic_flag_spec\"
5417 func_append compile_command " $arg"
5418 func_append finalize_command " $arg"
5421 oldlibs=
5422 # calculate the name of the file, without its directory
5423 func_basename "$output"
5424 outputname="$func_basename_result"
5425 libobjs_save="$libobjs"
5427 if test -n "$shlibpath_var"; then
5428 # get the directories listed in $shlibpath_var
5429 eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
5430 else
5431 shlib_search_path=
5433 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
5434 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
5436 func_dirname "$output" "/" ""
5437 output_objdir="$func_dirname_result$objdir"
5438 # Create the object directory.
5439 func_mkdir_p "$output_objdir"
5441 # Determine the type of output
5442 case $output in
5444 func_fatal_help "you must specify an output file"
5446 *.$libext) linkmode=oldlib ;;
5447 *.lo | *.$objext) linkmode=obj ;;
5448 *.la) linkmode=lib ;;
5449 *) linkmode=prog ;; # Anything else should be a program.
5450 esac
5452 specialdeplibs=
5454 libs=
5455 # Find all interdependent deplibs by searching for libraries
5456 # that are linked more than once (e.g. -la -lb -la)
5457 for deplib in $deplibs; do
5458 if $opt_duplicate_deps ; then
5459 case "$libs " in
5460 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5461 esac
5463 libs="$libs $deplib"
5464 done
5466 if test "$linkmode" = lib; then
5467 libs="$predeps $libs $compiler_lib_search_path $postdeps"
5469 # Compute libraries that are listed more than once in $predeps
5470 # $postdeps and mark them as special (i.e., whose duplicates are
5471 # not to be eliminated).
5472 pre_post_deps=
5473 if $opt_duplicate_compiler_generated_deps; then
5474 for pre_post_dep in $predeps $postdeps; do
5475 case "$pre_post_deps " in
5476 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
5477 esac
5478 pre_post_deps="$pre_post_deps $pre_post_dep"
5479 done
5481 pre_post_deps=
5484 deplibs=
5485 newdependency_libs=
5486 newlib_search_path=
5487 need_relink=no # whether we're linking any uninstalled libtool libraries
5488 notinst_deplibs= # not-installed libtool libraries
5489 notinst_path= # paths that contain not-installed libtool libraries
5491 case $linkmode in
5492 lib)
5493 passes="conv dlpreopen link"
5494 for file in $dlfiles $dlprefiles; do
5495 case $file in
5496 *.la) ;;
5498 func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5500 esac
5501 done
5503 prog)
5504 compile_deplibs=
5505 finalize_deplibs=
5506 alldeplibs=no
5507 newdlfiles=
5508 newdlprefiles=
5509 passes="conv scan dlopen dlpreopen link"
5511 *) passes="conv"
5513 esac
5515 for pass in $passes; do
5516 # The preopen pass in lib mode reverses $deplibs; put it back here
5517 # so that -L comes before libs that need it for instance...
5518 if test "$linkmode,$pass" = "lib,link"; then
5519 ## FIXME: Find the place where the list is rebuilt in the wrong
5520 ## order, and fix it there properly
5521 tmp_deplibs=
5522 for deplib in $deplibs; do
5523 tmp_deplibs="$deplib $tmp_deplibs"
5524 done
5525 deplibs="$tmp_deplibs"
5528 if test "$linkmode,$pass" = "lib,link" ||
5529 test "$linkmode,$pass" = "prog,scan"; then
5530 libs="$deplibs"
5531 deplibs=
5533 if test "$linkmode" = prog; then
5534 case $pass in
5535 dlopen) libs="$dlfiles" ;;
5536 dlpreopen) libs="$dlprefiles" ;;
5537 link)
5538 libs="$deplibs %DEPLIBS%"
5539 test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
5541 esac
5543 if test "$linkmode,$pass" = "lib,dlpreopen"; then
5544 # Collect and forward deplibs of preopened libtool libs
5545 for lib in $dlprefiles; do
5546 # Ignore non-libtool-libs
5547 dependency_libs=
5548 case $lib in
5549 *.la) func_source "$lib" ;;
5550 esac
5552 # Collect preopened libtool deplibs, except any this library
5553 # has declared as weak libs
5554 for deplib in $dependency_libs; do
5555 deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
5556 case " $weak_libs " in
5557 *" $deplib_base "*) ;;
5558 *) deplibs="$deplibs $deplib" ;;
5559 esac
5560 done
5561 done
5562 libs="$dlprefiles"
5564 if test "$pass" = dlopen; then
5565 # Collect dlpreopened libraries
5566 save_deplibs="$deplibs"
5567 deplibs=
5570 for deplib in $libs; do
5571 lib=
5572 found=no
5573 case $deplib in
5574 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5575 if test "$linkmode,$pass" = "prog,link"; then
5576 compile_deplibs="$deplib $compile_deplibs"
5577 finalize_deplibs="$deplib $finalize_deplibs"
5578 else
5579 compiler_flags="$compiler_flags $deplib"
5580 if test "$linkmode" = lib ; then
5581 case "$new_inherited_linker_flags " in
5582 *" $deplib "*) ;;
5583 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5584 esac
5587 continue
5589 -l*)
5590 if test "$linkmode" != lib && test "$linkmode" != prog; then
5591 func_warning "\`-l' is ignored for archives/objects"
5592 continue
5594 func_stripname '-l' '' "$deplib"
5595 name=$func_stripname_result
5596 if test "$linkmode" = lib; then
5597 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5598 else
5599 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5601 for searchdir in $searchdirs; do
5602 for search_ext in .la $std_shrext .so .a; do
5603 # Search the libtool library
5604 lib="$searchdir/lib${name}${search_ext}"
5605 if test -f "$lib"; then
5606 if test "$search_ext" = ".la"; then
5607 found=yes
5608 else
5609 found=no
5611 break 2
5613 done
5614 done
5615 if test "$found" != yes; then
5616 # deplib doesn't seem to be a libtool library
5617 if test "$linkmode,$pass" = "prog,link"; then
5618 compile_deplibs="$deplib $compile_deplibs"
5619 finalize_deplibs="$deplib $finalize_deplibs"
5620 else
5621 deplibs="$deplib $deplibs"
5622 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5624 continue
5625 else # deplib is a libtool library
5626 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5627 # We need to do some special things here, and not later.
5628 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5629 case " $predeps $postdeps " in
5630 *" $deplib "*)
5631 if func_lalib_p "$lib"; then
5632 library_names=
5633 old_library=
5634 func_source "$lib"
5635 for l in $old_library $library_names; do
5636 ll="$l"
5637 done
5638 if test "X$ll" = "X$old_library" ; then # only static version available
5639 found=no
5640 func_dirname "$lib" "" "."
5641 ladir="$func_dirname_result"
5642 lib=$ladir/$old_library
5643 if test "$linkmode,$pass" = "prog,link"; then
5644 compile_deplibs="$deplib $compile_deplibs"
5645 finalize_deplibs="$deplib $finalize_deplibs"
5646 else
5647 deplibs="$deplib $deplibs"
5648 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5650 continue
5654 *) ;;
5655 esac
5658 ;; # -l
5659 *.ltframework)
5660 if test "$linkmode,$pass" = "prog,link"; then
5661 compile_deplibs="$deplib $compile_deplibs"
5662 finalize_deplibs="$deplib $finalize_deplibs"
5663 else
5664 deplibs="$deplib $deplibs"
5665 if test "$linkmode" = lib ; then
5666 case "$new_inherited_linker_flags " in
5667 *" $deplib "*) ;;
5668 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5669 esac
5672 continue
5674 -L*)
5675 case $linkmode in
5676 lib)
5677 deplibs="$deplib $deplibs"
5678 test "$pass" = conv && continue
5679 newdependency_libs="$deplib $newdependency_libs"
5680 func_stripname '-L' '' "$deplib"
5681 newlib_search_path="$newlib_search_path $func_stripname_result"
5683 prog)
5684 if test "$pass" = conv; then
5685 deplibs="$deplib $deplibs"
5686 continue
5688 if test "$pass" = scan; then
5689 deplibs="$deplib $deplibs"
5690 else
5691 compile_deplibs="$deplib $compile_deplibs"
5692 finalize_deplibs="$deplib $finalize_deplibs"
5694 func_stripname '-L' '' "$deplib"
5695 newlib_search_path="$newlib_search_path $func_stripname_result"
5698 func_warning "\`-L' is ignored for archives/objects"
5700 esac # linkmode
5701 continue
5702 ;; # -L
5703 -R*)
5704 if test "$pass" = link; then
5705 func_stripname '-R' '' "$deplib"
5706 dir=$func_stripname_result
5707 # Make sure the xrpath contains only unique directories.
5708 case "$xrpath " in
5709 *" $dir "*) ;;
5710 *) xrpath="$xrpath $dir" ;;
5711 esac
5713 deplibs="$deplib $deplibs"
5714 continue
5716 *.la) lib="$deplib" ;;
5717 *.$libext)
5718 if test "$pass" = conv; then
5719 deplibs="$deplib $deplibs"
5720 continue
5722 case $linkmode in
5723 lib)
5724 # Linking convenience modules into shared libraries is allowed,
5725 # but linking other static libraries is non-portable.
5726 case " $dlpreconveniencelibs " in
5727 *" $deplib "*) ;;
5729 valid_a_lib=no
5730 case $deplibs_check_method in
5731 match_pattern*)
5732 set dummy $deplibs_check_method; shift
5733 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
5734 if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
5735 | $EGREP "$match_pattern_regex" > /dev/null; then
5736 valid_a_lib=yes
5739 pass_all)
5740 valid_a_lib=yes
5742 esac
5743 if test "$valid_a_lib" != yes; then
5744 $ECHO
5745 $ECHO "*** Warning: Trying to link with static lib archive $deplib."
5746 $ECHO "*** I have the capability to make that library automatically link in when"
5747 $ECHO "*** you link to this library. But I can only do this if you have a"
5748 $ECHO "*** shared version of the library, which you do not appear to have"
5749 $ECHO "*** because the file extensions .$libext of this argument makes me believe"
5750 $ECHO "*** that it is just a static archive that I should not use here."
5751 else
5752 $ECHO
5753 $ECHO "*** Warning: Linking the shared library $output against the"
5754 $ECHO "*** static library $deplib is not portable!"
5755 deplibs="$deplib $deplibs"
5758 esac
5759 continue
5761 prog)
5762 if test "$pass" != link; then
5763 deplibs="$deplib $deplibs"
5764 else
5765 compile_deplibs="$deplib $compile_deplibs"
5766 finalize_deplibs="$deplib $finalize_deplibs"
5768 continue
5770 esac # linkmode
5771 ;; # *.$libext
5772 *.lo | *.$objext)
5773 if test "$pass" = conv; then
5774 deplibs="$deplib $deplibs"
5775 elif test "$linkmode" = prog; then
5776 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5777 # If there is no dlopen support or we're linking statically,
5778 # we need to preload.
5779 newdlprefiles="$newdlprefiles $deplib"
5780 compile_deplibs="$deplib $compile_deplibs"
5781 finalize_deplibs="$deplib $finalize_deplibs"
5782 else
5783 newdlfiles="$newdlfiles $deplib"
5786 continue
5788 %DEPLIBS%)
5789 alldeplibs=yes
5790 continue
5792 esac # case $deplib
5794 if test "$found" = yes || test -f "$lib"; then :
5795 else
5796 func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5799 # Check to see that this really is a libtool archive.
5800 func_lalib_unsafe_p "$lib" \
5801 || func_fatal_error "\`$lib' is not a valid libtool archive"
5803 func_dirname "$lib" "" "."
5804 ladir="$func_dirname_result"
5806 dlname=
5807 dlopen=
5808 dlpreopen=
5809 libdir=
5810 library_names=
5811 old_library=
5812 inherited_linker_flags=
5813 # If the library was installed with an old release of libtool,
5814 # it will not redefine variables installed, or shouldnotlink
5815 installed=yes
5816 shouldnotlink=no
5817 avoidtemprpath=
5820 # Read the .la file
5821 func_source "$lib"
5823 # Convert "-framework foo" to "foo.ltframework"
5824 if test -n "$inherited_linker_flags"; then
5825 tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
5826 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5827 case " $new_inherited_linker_flags " in
5828 *" $tmp_inherited_linker_flag "*) ;;
5829 *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5830 esac
5831 done
5833 dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
5834 if test "$linkmode,$pass" = "lib,link" ||
5835 test "$linkmode,$pass" = "prog,scan" ||
5836 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5837 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5838 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5841 if test "$pass" = conv; then
5842 # Only check for convenience libraries
5843 deplibs="$lib $deplibs"
5844 if test -z "$libdir"; then
5845 if test -z "$old_library"; then
5846 func_fatal_error "cannot find name of link library for \`$lib'"
5848 # It is a libtool convenience library, so add in its objects.
5849 convenience="$convenience $ladir/$objdir/$old_library"
5850 old_convenience="$old_convenience $ladir/$objdir/$old_library"
5851 tmp_libs=
5852 for deplib in $dependency_libs; do
5853 deplibs="$deplib $deplibs"
5854 if $opt_duplicate_deps ; then
5855 case "$tmp_libs " in
5856 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5857 esac
5859 tmp_libs="$tmp_libs $deplib"
5860 done
5861 elif test "$linkmode" != prog && test "$linkmode" != lib; then
5862 func_fatal_error "\`$lib' is not a convenience library"
5864 continue
5865 fi # $pass = conv
5868 # Get the name of the library we link against.
5869 linklib=
5870 for l in $old_library $library_names; do
5871 linklib="$l"
5872 done
5873 if test -z "$linklib"; then
5874 func_fatal_error "cannot find name of link library for \`$lib'"
5877 # This library was specified with -dlopen.
5878 if test "$pass" = dlopen; then
5879 if test -z "$libdir"; then
5880 func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5882 if test -z "$dlname" ||
5883 test "$dlopen_support" != yes ||
5884 test "$build_libtool_libs" = no; then
5885 # If there is no dlname, no dlopen support or we're linking
5886 # statically, we need to preload. We also need to preload any
5887 # dependent libraries so libltdl's deplib preloader doesn't
5888 # bomb out in the load deplibs phase.
5889 dlprefiles="$dlprefiles $lib $dependency_libs"
5890 else
5891 newdlfiles="$newdlfiles $lib"
5893 continue
5894 fi # $pass = dlopen
5896 # We need an absolute path.
5897 case $ladir in
5898 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5900 abs_ladir=`cd "$ladir" && pwd`
5901 if test -z "$abs_ladir"; then
5902 func_warning "cannot determine absolute directory name of \`$ladir'"
5903 func_warning "passing it literally to the linker, although it might fail"
5904 abs_ladir="$ladir"
5907 esac
5908 func_basename "$lib"
5909 laname="$func_basename_result"
5911 # Find the relevant object directory and library name.
5912 if test "X$installed" = Xyes; then
5913 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5914 func_warning "library \`$lib' was moved."
5915 dir="$ladir"
5916 absdir="$abs_ladir"
5917 libdir="$abs_ladir"
5918 else
5919 dir="$libdir"
5920 absdir="$libdir"
5922 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5923 else
5924 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5925 dir="$ladir"
5926 absdir="$abs_ladir"
5927 # Remove this search path later
5928 notinst_path="$notinst_path $abs_ladir"
5929 else
5930 dir="$ladir/$objdir"
5931 absdir="$abs_ladir/$objdir"
5932 # Remove this search path later
5933 notinst_path="$notinst_path $abs_ladir"
5935 fi # $installed = yes
5936 func_stripname 'lib' '.la' "$laname"
5937 name=$func_stripname_result
5939 # This library was specified with -dlpreopen.
5940 if test "$pass" = dlpreopen; then
5941 if test -z "$libdir" && test "$linkmode" = prog; then
5942 func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5944 # Prefer using a static library (so that no silly _DYNAMIC symbols
5945 # are required to link).
5946 if test -n "$old_library"; then
5947 newdlprefiles="$newdlprefiles $dir/$old_library"
5948 # Keep a list of preopened convenience libraries to check
5949 # that they are being used correctly in the link pass.
5950 test -z "$libdir" && \
5951 dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5952 # Otherwise, use the dlname, so that lt_dlopen finds it.
5953 elif test -n "$dlname"; then
5954 newdlprefiles="$newdlprefiles $dir/$dlname"
5955 else
5956 newdlprefiles="$newdlprefiles $dir/$linklib"
5958 fi # $pass = dlpreopen
5960 if test -z "$libdir"; then
5961 # Link the convenience library
5962 if test "$linkmode" = lib; then
5963 deplibs="$dir/$old_library $deplibs"
5964 elif test "$linkmode,$pass" = "prog,link"; then
5965 compile_deplibs="$dir/$old_library $compile_deplibs"
5966 finalize_deplibs="$dir/$old_library $finalize_deplibs"
5967 else
5968 deplibs="$lib $deplibs" # used for prog,scan pass
5970 continue
5974 if test "$linkmode" = prog && test "$pass" != link; then
5975 newlib_search_path="$newlib_search_path $ladir"
5976 deplibs="$lib $deplibs"
5978 linkalldeplibs=no
5979 if test "$link_all_deplibs" != no || test -z "$library_names" ||
5980 test "$build_libtool_libs" = no; then
5981 linkalldeplibs=yes
5984 tmp_libs=
5985 for deplib in $dependency_libs; do
5986 case $deplib in
5987 -L*) func_stripname '-L' '' "$deplib"
5988 newlib_search_path="$newlib_search_path $func_stripname_result"
5990 esac
5991 # Need to link against all dependency_libs?
5992 if test "$linkalldeplibs" = yes; then
5993 deplibs="$deplib $deplibs"
5994 else
5995 # Need to hardcode shared library paths
5996 # or/and link against static libraries
5997 newdependency_libs="$deplib $newdependency_libs"
5999 if $opt_duplicate_deps ; then
6000 case "$tmp_libs " in
6001 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6002 esac
6004 tmp_libs="$tmp_libs $deplib"
6005 done # for deplib
6006 continue
6007 fi # $linkmode = prog...
6009 if test "$linkmode,$pass" = "prog,link"; then
6010 if test -n "$library_names" &&
6011 { { test "$prefer_static_libs" = no ||
6012 test "$prefer_static_libs,$installed" = "built,yes"; } ||
6013 test -z "$old_library"; }; then
6014 # We need to hardcode the library path
6015 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6016 # Make sure the rpath contains only unique directories.
6017 case "$temp_rpath:" in
6018 *"$absdir:"*) ;;
6019 *) temp_rpath="$temp_rpath$absdir:" ;;
6020 esac
6023 # Hardcode the library path.
6024 # Skip directories that are in the system default run-time
6025 # search path.
6026 case " $sys_lib_dlsearch_path " in
6027 *" $absdir "*) ;;
6029 case "$compile_rpath " in
6030 *" $absdir "*) ;;
6031 *) compile_rpath="$compile_rpath $absdir"
6032 esac
6034 esac
6035 case " $sys_lib_dlsearch_path " in
6036 *" $libdir "*) ;;
6038 case "$finalize_rpath " in
6039 *" $libdir "*) ;;
6040 *) finalize_rpath="$finalize_rpath $libdir"
6041 esac
6043 esac
6044 fi # $linkmode,$pass = prog,link...
6046 if test "$alldeplibs" = yes &&
6047 { test "$deplibs_check_method" = pass_all ||
6048 { test "$build_libtool_libs" = yes &&
6049 test -n "$library_names"; }; }; then
6050 # We only need to search for static libraries
6051 continue
6055 link_static=no # Whether the deplib will be linked statically
6056 use_static_libs=$prefer_static_libs
6057 if test "$use_static_libs" = built && test "$installed" = yes; then
6058 use_static_libs=no
6060 if test -n "$library_names" &&
6061 { test "$use_static_libs" = no || test -z "$old_library"; }; then
6062 case $host in
6063 *cygwin* | *mingw* | *cegcc*)
6064 # No point in relinking DLLs because paths are not encoded
6065 notinst_deplibs="$notinst_deplibs $lib"
6066 need_relink=no
6069 if test "$installed" = no; then
6070 notinst_deplibs="$notinst_deplibs $lib"
6071 need_relink=yes
6074 esac
6075 # This is a shared library
6077 # Warn about portability, can't link against -module's on some
6078 # systems (darwin). Don't bleat about dlopened modules though!
6079 dlopenmodule=""
6080 for dlpremoduletest in $dlprefiles; do
6081 if test "X$dlpremoduletest" = "X$lib"; then
6082 dlopenmodule="$dlpremoduletest"
6083 break
6085 done
6086 if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6087 $ECHO
6088 if test "$linkmode" = prog; then
6089 $ECHO "*** Warning: Linking the executable $output against the loadable module"
6090 else
6091 $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6093 $ECHO "*** $linklib is not portable!"
6095 if test "$linkmode" = lib &&
6096 test "$hardcode_into_libs" = yes; then
6097 # Hardcode the library path.
6098 # Skip directories that are in the system default run-time
6099 # search path.
6100 case " $sys_lib_dlsearch_path " in
6101 *" $absdir "*) ;;
6103 case "$compile_rpath " in
6104 *" $absdir "*) ;;
6105 *) compile_rpath="$compile_rpath $absdir"
6106 esac
6108 esac
6109 case " $sys_lib_dlsearch_path " in
6110 *" $libdir "*) ;;
6112 case "$finalize_rpath " in
6113 *" $libdir "*) ;;
6114 *) finalize_rpath="$finalize_rpath $libdir"
6115 esac
6117 esac
6120 if test -n "$old_archive_from_expsyms_cmds"; then
6121 # figure out the soname
6122 set dummy $library_names
6123 shift
6124 realname="$1"
6125 shift
6126 libname=`eval "\\$ECHO \"$libname_spec\""`
6127 # use dlname if we got it. it's perfectly good, no?
6128 if test -n "$dlname"; then
6129 soname="$dlname"
6130 elif test -n "$soname_spec"; then
6131 # bleh windows
6132 case $host in
6133 *cygwin* | mingw* | *cegcc*)
6134 func_arith $current - $age
6135 major=$func_arith_result
6136 versuffix="-$major"
6138 esac
6139 eval soname=\"$soname_spec\"
6140 else
6141 soname="$realname"
6144 # Make a new name for the extract_expsyms_cmds to use
6145 soroot="$soname"
6146 func_basename "$soroot"
6147 soname="$func_basename_result"
6148 func_stripname 'lib' '.dll' "$soname"
6149 newlib=libimp-$func_stripname_result.a
6151 # If the library has no export list, then create one now
6152 if test -f "$output_objdir/$soname-def"; then :
6153 else
6154 func_verbose "extracting exported symbol list from \`$soname'"
6155 func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6158 # Create $newlib
6159 if test -f "$output_objdir/$newlib"; then :; else
6160 func_verbose "generating import library for \`$soname'"
6161 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6163 # make sure the library variables are pointing to the new library
6164 dir=$output_objdir
6165 linklib=$newlib
6166 fi # test -n "$old_archive_from_expsyms_cmds"
6168 if test "$linkmode" = prog || test "$mode" != relink; then
6169 add_shlibpath=
6170 add_dir=
6171 add=
6172 lib_linked=yes
6173 case $hardcode_action in
6174 immediate | unsupported)
6175 if test "$hardcode_direct" = no; then
6176 add="$dir/$linklib"
6177 case $host in
6178 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6179 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6180 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6181 *-*-unixware7*) add_dir="-L$dir" ;;
6182 *-*-darwin* )
6183 # if the lib is a (non-dlopened) module then we can not
6184 # link against it, someone is ignoring the earlier warnings
6185 if /usr/bin/file -L $add 2> /dev/null |
6186 $GREP ": [^:]* bundle" >/dev/null ; then
6187 if test "X$dlopenmodule" != "X$lib"; then
6188 $ECHO "*** Warning: lib $linklib is a module, not a shared library"
6189 if test -z "$old_library" ; then
6190 $ECHO
6191 $ECHO "*** And there doesn't seem to be a static archive available"
6192 $ECHO "*** The link will probably fail, sorry"
6193 else
6194 add="$dir/$old_library"
6196 elif test -n "$old_library"; then
6197 add="$dir/$old_library"
6200 esac
6201 elif test "$hardcode_minus_L" = no; then
6202 case $host in
6203 *-*-sunos*) add_shlibpath="$dir" ;;
6204 esac
6205 add_dir="-L$dir"
6206 add="-l$name"
6207 elif test "$hardcode_shlibpath_var" = no; then
6208 add_shlibpath="$dir"
6209 add="-l$name"
6210 else
6211 lib_linked=no
6214 relink)
6215 if test "$hardcode_direct" = yes &&
6216 test "$hardcode_direct_absolute" = no; then
6217 add="$dir/$linklib"
6218 elif test "$hardcode_minus_L" = yes; then
6219 add_dir="-L$dir"
6220 # Try looking first in the location we're being installed to.
6221 if test -n "$inst_prefix_dir"; then
6222 case $libdir in
6223 [\\/]*)
6224 add_dir="$add_dir -L$inst_prefix_dir$libdir"
6226 esac
6228 add="-l$name"
6229 elif test "$hardcode_shlibpath_var" = yes; then
6230 add_shlibpath="$dir"
6231 add="-l$name"
6232 else
6233 lib_linked=no
6236 *) lib_linked=no ;;
6237 esac
6239 if test "$lib_linked" != yes; then
6240 func_fatal_configuration "unsupported hardcode properties"
6243 if test -n "$add_shlibpath"; then
6244 case :$compile_shlibpath: in
6245 *":$add_shlibpath:"*) ;;
6246 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
6247 esac
6249 if test "$linkmode" = prog; then
6250 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6251 test -n "$add" && compile_deplibs="$add $compile_deplibs"
6252 else
6253 test -n "$add_dir" && deplibs="$add_dir $deplibs"
6254 test -n "$add" && deplibs="$add $deplibs"
6255 if test "$hardcode_direct" != yes &&
6256 test "$hardcode_minus_L" != yes &&
6257 test "$hardcode_shlibpath_var" = yes; then
6258 case :$finalize_shlibpath: in
6259 *":$libdir:"*) ;;
6260 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6261 esac
6266 if test "$linkmode" = prog || test "$mode" = relink; then
6267 add_shlibpath=
6268 add_dir=
6269 add=
6270 # Finalize command for both is simple: just hardcode it.
6271 if test "$hardcode_direct" = yes &&
6272 test "$hardcode_direct_absolute" = no; then
6273 add="$libdir/$linklib"
6274 elif test "$hardcode_minus_L" = yes; then
6275 add_dir="-L$libdir"
6276 add="-l$name"
6277 elif test "$hardcode_shlibpath_var" = yes; then
6278 case :$finalize_shlibpath: in
6279 *":$libdir:"*) ;;
6280 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6281 esac
6282 add="-l$name"
6283 elif test "$hardcode_automatic" = yes; then
6284 if test -n "$inst_prefix_dir" &&
6285 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6286 add="$inst_prefix_dir$libdir/$linklib"
6287 else
6288 add="$libdir/$linklib"
6290 else
6291 # We cannot seem to hardcode it, guess we'll fake it.
6292 add_dir="-L$libdir"
6293 # Try looking first in the location we're being installed to.
6294 if test -n "$inst_prefix_dir"; then
6295 case $libdir in
6296 [\\/]*)
6297 add_dir="$add_dir -L$inst_prefix_dir$libdir"
6299 esac
6301 add="-l$name"
6304 if test "$linkmode" = prog; then
6305 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6306 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6307 else
6308 test -n "$add_dir" && deplibs="$add_dir $deplibs"
6309 test -n "$add" && deplibs="$add $deplibs"
6312 elif test "$linkmode" = prog; then
6313 # Here we assume that one of hardcode_direct or hardcode_minus_L
6314 # is not unsupported. This is valid on all known static and
6315 # shared platforms.
6316 if test "$hardcode_direct" != unsupported; then
6317 test -n "$old_library" && linklib="$old_library"
6318 compile_deplibs="$dir/$linklib $compile_deplibs"
6319 finalize_deplibs="$dir/$linklib $finalize_deplibs"
6320 else
6321 compile_deplibs="-l$name -L$dir $compile_deplibs"
6322 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6324 elif test "$build_libtool_libs" = yes; then
6325 # Not a shared library
6326 if test "$deplibs_check_method" != pass_all; then
6327 # We're trying link a shared library against a static one
6328 # but the system doesn't support it.
6330 # Just print a warning and add the library to dependency_libs so
6331 # that the program can be linked against the static library.
6332 $ECHO
6333 $ECHO "*** Warning: This system can not link to static lib archive $lib."
6334 $ECHO "*** I have the capability to make that library automatically link in when"
6335 $ECHO "*** you link to this library. But I can only do this if you have a"
6336 $ECHO "*** shared version of the library, which you do not appear to have."
6337 if test "$module" = yes; then
6338 $ECHO "*** But as you try to build a module library, libtool will still create "
6339 $ECHO "*** a static module, that should work as long as the dlopening application"
6340 $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
6341 if test -z "$global_symbol_pipe"; then
6342 $ECHO
6343 $ECHO "*** However, this would only work if libtool was able to extract symbol"
6344 $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
6345 $ECHO "*** not find such a program. So, this module is probably useless."
6346 $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
6348 if test "$build_old_libs" = no; then
6349 build_libtool_libs=module
6350 build_old_libs=yes
6351 else
6352 build_libtool_libs=no
6355 else
6356 deplibs="$dir/$old_library $deplibs"
6357 link_static=yes
6359 fi # link shared/static library?
6361 if test "$linkmode" = lib; then
6362 if test -n "$dependency_libs" &&
6363 { test "$hardcode_into_libs" != yes ||
6364 test "$build_old_libs" = yes ||
6365 test "$link_static" = yes; }; then
6366 # Extract -R from dependency_libs
6367 temp_deplibs=
6368 for libdir in $dependency_libs; do
6369 case $libdir in
6370 -R*) func_stripname '-R' '' "$libdir"
6371 temp_xrpath=$func_stripname_result
6372 case " $xrpath " in
6373 *" $temp_xrpath "*) ;;
6374 *) xrpath="$xrpath $temp_xrpath";;
6375 esac;;
6376 *) temp_deplibs="$temp_deplibs $libdir";;
6377 esac
6378 done
6379 dependency_libs="$temp_deplibs"
6382 newlib_search_path="$newlib_search_path $absdir"
6383 # Link against this library
6384 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
6385 # ... and its dependency_libs
6386 tmp_libs=
6387 for deplib in $dependency_libs; do
6388 newdependency_libs="$deplib $newdependency_libs"
6389 if $opt_duplicate_deps ; then
6390 case "$tmp_libs " in
6391 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6392 esac
6394 tmp_libs="$tmp_libs $deplib"
6395 done
6397 if test "$link_all_deplibs" != no; then
6398 # Add the search paths of all dependency libraries
6399 for deplib in $dependency_libs; do
6400 path=
6401 case $deplib in
6402 -L*) path="$deplib" ;;
6403 *.la)
6404 func_dirname "$deplib" "" "."
6405 dir="$func_dirname_result"
6406 # We need an absolute path.
6407 case $dir in
6408 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
6410 absdir=`cd "$dir" && pwd`
6411 if test -z "$absdir"; then
6412 func_warning "cannot determine absolute directory name of \`$dir'"
6413 absdir="$dir"
6416 esac
6417 if $GREP "^installed=no" $deplib > /dev/null; then
6418 case $host in
6419 *-*-darwin*)
6420 depdepl=
6421 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
6422 if test -n "$deplibrary_names" ; then
6423 for tmp in $deplibrary_names ; do
6424 depdepl=$tmp
6425 done
6426 if test -f "$absdir/$objdir/$depdepl" ; then
6427 depdepl="$absdir/$objdir/$depdepl"
6428 darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6429 if test -z "$darwin_install_name"; then
6430 darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6432 compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6433 linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
6434 path=
6439 path="-L$absdir/$objdir"
6441 esac
6442 else
6443 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
6444 test -z "$libdir" && \
6445 func_fatal_error "\`$deplib' is not a valid libtool archive"
6446 test "$absdir" != "$libdir" && \
6447 func_warning "\`$deplib' seems to be moved"
6449 path="-L$absdir"
6452 esac
6453 case " $deplibs " in
6454 *" $path "*) ;;
6455 *) deplibs="$path $deplibs" ;;
6456 esac
6457 done
6458 fi # link_all_deplibs != no
6459 fi # linkmode = lib
6460 done # for deplib in $libs
6461 if test "$pass" = link; then
6462 if test "$linkmode" = "prog"; then
6463 compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
6464 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
6465 else
6466 compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
6469 dependency_libs="$newdependency_libs"
6470 if test "$pass" = dlpreopen; then
6471 # Link the dlpreopened libraries before other libraries
6472 for deplib in $save_deplibs; do
6473 deplibs="$deplib $deplibs"
6474 done
6476 if test "$pass" != dlopen; then
6477 if test "$pass" != conv; then
6478 # Make sure lib_search_path contains only unique directories.
6479 lib_search_path=
6480 for dir in $newlib_search_path; do
6481 case "$lib_search_path " in
6482 *" $dir "*) ;;
6483 *) lib_search_path="$lib_search_path $dir" ;;
6484 esac
6485 done
6486 newlib_search_path=
6489 if test "$linkmode,$pass" != "prog,link"; then
6490 vars="deplibs"
6491 else
6492 vars="compile_deplibs finalize_deplibs"
6494 for var in $vars dependency_libs; do
6495 # Add libraries to $var in reverse order
6496 eval tmp_libs=\"\$$var\"
6497 new_libs=
6498 for deplib in $tmp_libs; do
6499 # FIXME: Pedantically, this is the right thing to do, so
6500 # that some nasty dependency loop isn't accidentally
6501 # broken:
6502 #new_libs="$deplib $new_libs"
6503 # Pragmatically, this seems to cause very few problems in
6504 # practice:
6505 case $deplib in
6506 -L*) new_libs="$deplib $new_libs" ;;
6507 -R*) ;;
6509 # And here is the reason: when a library appears more
6510 # than once as an explicit dependence of a library, or
6511 # is implicitly linked in more than once by the
6512 # compiler, it is considered special, and multiple
6513 # occurrences thereof are not removed. Compare this
6514 # with having the same library being listed as a
6515 # dependency of multiple other libraries: in this case,
6516 # we know (pedantically, we assume) the library does not
6517 # need to be listed more than once, so we keep only the
6518 # last copy. This is not always right, but it is rare
6519 # enough that we require users that really mean to play
6520 # such unportable linking tricks to link the library
6521 # using -Wl,-lname, so that libtool does not consider it
6522 # for duplicate removal.
6523 case " $specialdeplibs " in
6524 *" $deplib "*) new_libs="$deplib $new_libs" ;;
6526 case " $new_libs " in
6527 *" $deplib "*) ;;
6528 *) new_libs="$deplib $new_libs" ;;
6529 esac
6531 esac
6533 esac
6534 done
6535 tmp_libs=
6536 for deplib in $new_libs; do
6537 case $deplib in
6538 -L*)
6539 case " $tmp_libs " in
6540 *" $deplib "*) ;;
6541 *) tmp_libs="$tmp_libs $deplib" ;;
6542 esac
6544 *) tmp_libs="$tmp_libs $deplib" ;;
6545 esac
6546 done
6547 eval $var=\"$tmp_libs\"
6548 done # for var
6550 # Last step: remove runtime libs from dependency_libs
6551 # (they stay in deplibs)
6552 tmp_libs=
6553 for i in $dependency_libs ; do
6554 case " $predeps $postdeps $compiler_lib_search_path " in
6555 *" $i "*)
6556 i=""
6558 esac
6559 if test -n "$i" ; then
6560 tmp_libs="$tmp_libs $i"
6562 done
6563 dependency_libs=$tmp_libs
6564 done # for pass
6565 if test "$linkmode" = prog; then
6566 dlfiles="$newdlfiles"
6568 if test "$linkmode" = prog || test "$linkmode" = lib; then
6569 dlprefiles="$newdlprefiles"
6572 case $linkmode in
6573 oldlib)
6574 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6575 func_warning "\`-dlopen' is ignored for archives"
6578 case " $deplibs" in
6579 *\ -l* | *\ -L*)
6580 func_warning "\`-l' and \`-L' are ignored for archives" ;;
6581 esac
6583 test -n "$rpath" && \
6584 func_warning "\`-rpath' is ignored for archives"
6586 test -n "$xrpath" && \
6587 func_warning "\`-R' is ignored for archives"
6589 test -n "$vinfo" && \
6590 func_warning "\`-version-info/-version-number' is ignored for archives"
6592 test -n "$release" && \
6593 func_warning "\`-release' is ignored for archives"
6595 test -n "$export_symbols$export_symbols_regex" && \
6596 func_warning "\`-export-symbols' is ignored for archives"
6598 # Now set the variables for building old libraries.
6599 build_libtool_libs=no
6600 oldlibs="$output"
6601 objs="$objs$old_deplibs"
6604 lib)
6605 # Make sure we only generate libraries of the form `libNAME.la'.
6606 case $outputname in
6607 lib*)
6608 func_stripname 'lib' '.la' "$outputname"
6609 name=$func_stripname_result
6610 eval shared_ext=\"$shrext_cmds\"
6611 eval libname=\"$libname_spec\"
6614 test "$module" = no && \
6615 func_fatal_help "libtool library \`$output' must begin with \`lib'"
6617 if test "$need_lib_prefix" != no; then
6618 # Add the "lib" prefix for modules if required
6619 func_stripname '' '.la' "$outputname"
6620 name=$func_stripname_result
6621 eval shared_ext=\"$shrext_cmds\"
6622 eval libname=\"$libname_spec\"
6623 else
6624 func_stripname '' '.la' "$outputname"
6625 libname=$func_stripname_result
6628 esac
6630 if test -n "$objs"; then
6631 if test "$deplibs_check_method" != pass_all; then
6632 func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6633 else
6634 $ECHO
6635 $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6636 $ECHO "*** objects $objs is not portable!"
6637 libobjs="$libobjs $objs"
6641 test "$dlself" != no && \
6642 func_warning "\`-dlopen self' is ignored for libtool libraries"
6644 set dummy $rpath
6645 shift
6646 test "$#" -gt 1 && \
6647 func_warning "ignoring multiple \`-rpath's for a libtool library"
6649 install_libdir="$1"
6651 oldlibs=
6652 if test -z "$rpath"; then
6653 if test "$build_libtool_libs" = yes; then
6654 # Building a libtool convenience library.
6655 # Some compilers have problems with a `.al' extension so
6656 # convenience libraries should have the same extension an
6657 # archive normally would.
6658 oldlibs="$output_objdir/$libname.$libext $oldlibs"
6659 build_libtool_libs=convenience
6660 build_old_libs=yes
6663 test -n "$vinfo" && \
6664 func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6666 test -n "$release" && \
6667 func_warning "\`-release' is ignored for convenience libraries"
6668 else
6670 # Parse the version information argument.
6671 save_ifs="$IFS"; IFS=':'
6672 set dummy $vinfo 0 0 0
6673 shift
6674 IFS="$save_ifs"
6676 test -n "$7" && \
6677 func_fatal_help "too many parameters to \`-version-info'"
6679 # convert absolute version numbers to libtool ages
6680 # this retains compatibility with .la files and attempts
6681 # to make the code below a bit more comprehensible
6683 case $vinfo_number in
6684 yes)
6685 number_major="$1"
6686 number_minor="$2"
6687 number_revision="$3"
6689 # There are really only two kinds -- those that
6690 # use the current revision as the major version
6691 # and those that subtract age and use age as
6692 # a minor version. But, then there is irix
6693 # which has an extra 1 added just for fun
6695 case $version_type in
6696 darwin|linux|osf|windows|none)
6697 func_arith $number_major + $number_minor
6698 current=$func_arith_result
6699 age="$number_minor"
6700 revision="$number_revision"
6702 freebsd-aout|freebsd-elf|sunos)
6703 current="$number_major"
6704 revision="$number_minor"
6705 age="0"
6707 irix|nonstopux)
6708 func_arith $number_major + $number_minor
6709 current=$func_arith_result
6710 age="$number_minor"
6711 revision="$number_minor"
6712 lt_irix_increment=no
6715 func_fatal_configuration "$modename: unknown library version type \`$version_type'"
6717 esac
6720 current="$1"
6721 revision="$2"
6722 age="$3"
6724 esac
6726 # Check that each of the things are valid numbers.
6727 case $current in
6728 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]) ;;
6730 func_error "CURRENT \`$current' must be a nonnegative integer"
6731 func_fatal_error "\`$vinfo' is not valid version information"
6733 esac
6735 case $revision in
6736 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]) ;;
6738 func_error "REVISION \`$revision' must be a nonnegative integer"
6739 func_fatal_error "\`$vinfo' is not valid version information"
6741 esac
6743 case $age in
6744 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]) ;;
6746 func_error "AGE \`$age' must be a nonnegative integer"
6747 func_fatal_error "\`$vinfo' is not valid version information"
6749 esac
6751 if test "$age" -gt "$current"; then
6752 func_error "AGE \`$age' is greater than the current interface number \`$current'"
6753 func_fatal_error "\`$vinfo' is not valid version information"
6756 # Calculate the version variables.
6757 major=
6758 versuffix=
6759 verstring=
6760 case $version_type in
6761 none) ;;
6763 darwin)
6764 # Like Linux, but with the current version available in
6765 # verstring for coding it into the library header
6766 func_arith $current - $age
6767 major=.$func_arith_result
6768 versuffix="$major.$age.$revision"
6769 # Darwin ld doesn't like 0 for these options...
6770 func_arith $current + 1
6771 minor_current=$func_arith_result
6772 xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6773 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6776 freebsd-aout)
6777 major=".$current"
6778 versuffix=".$current.$revision";
6781 freebsd-elf)
6782 major=".$current"
6783 versuffix=".$current"
6786 irix | nonstopux)
6787 if test "X$lt_irix_increment" = "Xno"; then
6788 func_arith $current - $age
6789 else
6790 func_arith $current - $age + 1
6792 major=$func_arith_result
6794 case $version_type in
6795 nonstopux) verstring_prefix=nonstopux ;;
6796 *) verstring_prefix=sgi ;;
6797 esac
6798 verstring="$verstring_prefix$major.$revision"
6800 # Add in all the interfaces that we are compatible with.
6801 loop=$revision
6802 while test "$loop" -ne 0; do
6803 func_arith $revision - $loop
6804 iface=$func_arith_result
6805 func_arith $loop - 1
6806 loop=$func_arith_result
6807 verstring="$verstring_prefix$major.$iface:$verstring"
6808 done
6810 # Before this point, $major must not contain `.'.
6811 major=.$major
6812 versuffix="$major.$revision"
6815 linux)
6816 func_arith $current - $age
6817 major=.$func_arith_result
6818 versuffix="$major.$age.$revision"
6821 osf)
6822 func_arith $current - $age
6823 major=.$func_arith_result
6824 versuffix=".$current.$age.$revision"
6825 verstring="$current.$age.$revision"
6827 # Add in all the interfaces that we are compatible with.
6828 loop=$age
6829 while test "$loop" -ne 0; do
6830 func_arith $current - $loop
6831 iface=$func_arith_result
6832 func_arith $loop - 1
6833 loop=$func_arith_result
6834 verstring="$verstring:${iface}.0"
6835 done
6837 # Make executables depend on our current version.
6838 verstring="$verstring:${current}.0"
6841 qnx)
6842 major=".$current"
6843 versuffix=".$current"
6846 sunos)
6847 major=".$current"
6848 versuffix=".$current.$revision"
6851 windows)
6852 # Use '-' rather than '.', since we only want one
6853 # extension on DOS 8.3 filesystems.
6854 func_arith $current - $age
6855 major=$func_arith_result
6856 versuffix="-$major"
6860 func_fatal_configuration "unknown library version type \`$version_type'"
6862 esac
6864 # Clear the version info if we defaulted, and they specified a release.
6865 if test -z "$vinfo" && test -n "$release"; then
6866 major=
6867 case $version_type in
6868 darwin)
6869 # we can't check for "0.0" in archive_cmds due to quoting
6870 # problems, so we reset it completely
6871 verstring=
6874 verstring="0.0"
6876 esac
6877 if test "$need_version" = no; then
6878 versuffix=
6879 else
6880 versuffix=".0.0"
6884 # Remove version info from name if versioning should be avoided
6885 if test "$avoid_version" = yes && test "$need_version" = no; then
6886 major=
6887 versuffix=
6888 verstring=""
6891 # Check to see if the archive will have undefined symbols.
6892 if test "$allow_undefined" = yes; then
6893 if test "$allow_undefined_flag" = unsupported; then
6894 func_warning "undefined symbols not allowed in $host shared libraries"
6895 build_libtool_libs=no
6896 build_old_libs=yes
6898 else
6899 # Don't allow undefined symbols.
6900 allow_undefined_flag="$no_undefined_flag"
6905 func_generate_dlsyms "$libname" "$libname" "yes"
6906 libobjs="$libobjs $symfileobj"
6907 test "X$libobjs" = "X " && libobjs=
6909 if test "$mode" != relink; then
6910 # Remove our outputs, but don't remove object files since they
6911 # may have been created when compiling PIC objects.
6912 removelist=
6913 tempremovelist=`$ECHO "$output_objdir/*"`
6914 for p in $tempremovelist; do
6915 case $p in
6916 *.$objext | *.gcno)
6918 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6919 if test "X$precious_files_regex" != "X"; then
6920 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6921 then
6922 continue
6925 removelist="$removelist $p"
6927 *) ;;
6928 esac
6929 done
6930 test -n "$removelist" && \
6931 func_show_eval "${RM}r \$removelist"
6934 # Now set the variables for building old libraries.
6935 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6936 oldlibs="$oldlibs $output_objdir/$libname.$libext"
6938 # Transform .lo files to .o files.
6939 oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6942 # Eliminate all temporary directories.
6943 #for path in $notinst_path; do
6944 # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
6945 # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
6946 # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
6947 #done
6949 if test -n "$xrpath"; then
6950 # If the user specified any rpath flags, then add them.
6951 temp_xrpath=
6952 for libdir in $xrpath; do
6953 temp_xrpath="$temp_xrpath -R$libdir"
6954 case "$finalize_rpath " in
6955 *" $libdir "*) ;;
6956 *) finalize_rpath="$finalize_rpath $libdir" ;;
6957 esac
6958 done
6959 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6960 dependency_libs="$temp_xrpath $dependency_libs"
6964 # Make sure dlfiles contains only unique files that won't be dlpreopened
6965 old_dlfiles="$dlfiles"
6966 dlfiles=
6967 for lib in $old_dlfiles; do
6968 case " $dlprefiles $dlfiles " in
6969 *" $lib "*) ;;
6970 *) dlfiles="$dlfiles $lib" ;;
6971 esac
6972 done
6974 # Make sure dlprefiles contains only unique files
6975 old_dlprefiles="$dlprefiles"
6976 dlprefiles=
6977 for lib in $old_dlprefiles; do
6978 case "$dlprefiles " in
6979 *" $lib "*) ;;
6980 *) dlprefiles="$dlprefiles $lib" ;;
6981 esac
6982 done
6984 if test "$build_libtool_libs" = yes; then
6985 if test -n "$rpath"; then
6986 case $host in
6987 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
6988 # these systems don't actually have a c library (as such)!
6990 *-*-rhapsody* | *-*-darwin1.[012])
6991 # Rhapsody C library is in the System framework
6992 deplibs="$deplibs System.ltframework"
6994 *-*-netbsd*)
6995 # Don't link with libc until the a.out ld.so is fixed.
6997 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6998 # Do not include libc due to us having libc/libc_r.
7000 *-*-sco3.2v5* | *-*-sco5v6*)
7001 # Causes problems with __ctype
7003 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7004 # Compiler inserts libc in the correct place for threads to work
7007 # Add libc to deplibs on all other systems if necessary.
7008 if test "$build_libtool_need_lc" = "yes"; then
7009 deplibs="$deplibs -lc"
7012 esac
7015 # Transform deplibs into only deplibs that can be linked in shared.
7016 name_save=$name
7017 libname_save=$libname
7018 release_save=$release
7019 versuffix_save=$versuffix
7020 major_save=$major
7021 # I'm not sure if I'm treating the release correctly. I think
7022 # release should show up in the -l (ie -lgmp5) so we don't want to
7023 # add it in twice. Is that correct?
7024 release=""
7025 versuffix=""
7026 major=""
7027 newdeplibs=
7028 droppeddeps=no
7029 case $deplibs_check_method in
7030 pass_all)
7031 # Don't check for shared/static. Everything works.
7032 # This might be a little naive. We might want to check
7033 # whether the library exists or not. But this is on
7034 # osf3 & osf4 and I'm not really sure... Just
7035 # implementing what was already the behavior.
7036 newdeplibs=$deplibs
7038 test_compile)
7039 # This code stresses the "libraries are programs" paradigm to its
7040 # limits. Maybe even breaks it. We compile a program, linking it
7041 # against the deplibs as a proxy for the library. Then we can check
7042 # whether they linked in statically or dynamically with ldd.
7043 $opt_dry_run || $RM conftest.c
7044 cat > conftest.c <<EOF
7045 int main() { return 0; }
7047 $opt_dry_run || $RM conftest
7048 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7049 ldd_output=`ldd conftest`
7050 for i in $deplibs; do
7051 case $i in
7052 -l*)
7053 func_stripname -l '' "$i"
7054 name=$func_stripname_result
7055 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7056 case " $predeps $postdeps " in
7057 *" $i "*)
7058 newdeplibs="$newdeplibs $i"
7059 i=""
7061 esac
7063 if test -n "$i" ; then
7064 libname=`eval "\\$ECHO \"$libname_spec\""`
7065 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7066 set dummy $deplib_matches; shift
7067 deplib_match=$1
7068 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7069 newdeplibs="$newdeplibs $i"
7070 else
7071 droppeddeps=yes
7072 $ECHO
7073 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7074 $ECHO "*** I have the capability to make that library automatically link in when"
7075 $ECHO "*** you link to this library. But I can only do this if you have a"
7076 $ECHO "*** shared version of the library, which I believe you do not have"
7077 $ECHO "*** because a test_compile did reveal that the linker did not use it for"
7078 $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
7083 newdeplibs="$newdeplibs $i"
7085 esac
7086 done
7087 else
7088 # Error occurred in the first compile. Let's try to salvage
7089 # the situation: Compile a separate program for each library.
7090 for i in $deplibs; do
7091 case $i in
7092 -l*)
7093 func_stripname -l '' "$i"
7094 name=$func_stripname_result
7095 $opt_dry_run || $RM conftest
7096 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7097 ldd_output=`ldd conftest`
7098 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7099 case " $predeps $postdeps " in
7100 *" $i "*)
7101 newdeplibs="$newdeplibs $i"
7102 i=""
7104 esac
7106 if test -n "$i" ; then
7107 libname=`eval "\\$ECHO \"$libname_spec\""`
7108 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7109 set dummy $deplib_matches; shift
7110 deplib_match=$1
7111 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7112 newdeplibs="$newdeplibs $i"
7113 else
7114 droppeddeps=yes
7115 $ECHO
7116 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7117 $ECHO "*** I have the capability to make that library automatically link in when"
7118 $ECHO "*** you link to this library. But I can only do this if you have a"
7119 $ECHO "*** shared version of the library, which you do not appear to have"
7120 $ECHO "*** because a test_compile did reveal that the linker did not use this one"
7121 $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
7124 else
7125 droppeddeps=yes
7126 $ECHO
7127 $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
7128 $ECHO "*** make it link in! You will probably need to install it or some"
7129 $ECHO "*** library that it depends on before this library will be fully"
7130 $ECHO "*** functional. Installing it before continuing would be even better."
7134 newdeplibs="$newdeplibs $i"
7136 esac
7137 done
7140 file_magic*)
7141 set dummy $deplibs_check_method; shift
7142 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7143 for a_deplib in $deplibs; do
7144 case $a_deplib in
7145 -l*)
7146 func_stripname -l '' "$a_deplib"
7147 name=$func_stripname_result
7148 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7149 case " $predeps $postdeps " in
7150 *" $a_deplib "*)
7151 newdeplibs="$newdeplibs $a_deplib"
7152 a_deplib=""
7154 esac
7156 if test -n "$a_deplib" ; then
7157 libname=`eval "\\$ECHO \"$libname_spec\""`
7158 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7159 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7160 for potent_lib in $potential_libs; do
7161 # Follow soft links.
7162 if ls -lLd "$potent_lib" 2>/dev/null |
7163 $GREP " -> " >/dev/null; then
7164 continue
7166 # The statement above tries to avoid entering an
7167 # endless loop below, in case of cyclic links.
7168 # We might still enter an endless loop, since a link
7169 # loop can be closed while we follow links,
7170 # but so what?
7171 potlib="$potent_lib"
7172 while test -h "$potlib" 2>/dev/null; do
7173 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7174 case $potliblink in
7175 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7176 *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
7177 esac
7178 done
7179 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7180 $SED -e 10q |
7181 $EGREP "$file_magic_regex" > /dev/null; then
7182 newdeplibs="$newdeplibs $a_deplib"
7183 a_deplib=""
7184 break 2
7186 done
7187 done
7189 if test -n "$a_deplib" ; then
7190 droppeddeps=yes
7191 $ECHO
7192 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7193 $ECHO "*** I have the capability to make that library automatically link in when"
7194 $ECHO "*** you link to this library. But I can only do this if you have a"
7195 $ECHO "*** shared version of the library, which you do not appear to have"
7196 $ECHO "*** because I did check the linker path looking for a file starting"
7197 if test -z "$potlib" ; then
7198 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7199 else
7200 $ECHO "*** with $libname and none of the candidates passed a file format test"
7201 $ECHO "*** using a file magic. Last file checked: $potlib"
7206 # Add a -L argument.
7207 newdeplibs="$newdeplibs $a_deplib"
7209 esac
7210 done # Gone through all deplibs.
7212 match_pattern*)
7213 set dummy $deplibs_check_method; shift
7214 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7215 for a_deplib in $deplibs; do
7216 case $a_deplib in
7217 -l*)
7218 func_stripname -l '' "$a_deplib"
7219 name=$func_stripname_result
7220 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7221 case " $predeps $postdeps " in
7222 *" $a_deplib "*)
7223 newdeplibs="$newdeplibs $a_deplib"
7224 a_deplib=""
7226 esac
7228 if test -n "$a_deplib" ; then
7229 libname=`eval "\\$ECHO \"$libname_spec\""`
7230 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7231 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7232 for potent_lib in $potential_libs; do
7233 potlib="$potent_lib" # see symlink-check above in file_magic test
7234 if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
7235 $EGREP "$match_pattern_regex" > /dev/null; then
7236 newdeplibs="$newdeplibs $a_deplib"
7237 a_deplib=""
7238 break 2
7240 done
7241 done
7243 if test -n "$a_deplib" ; then
7244 droppeddeps=yes
7245 $ECHO
7246 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7247 $ECHO "*** I have the capability to make that library automatically link in when"
7248 $ECHO "*** you link to this library. But I can only do this if you have a"
7249 $ECHO "*** shared version of the library, which you do not appear to have"
7250 $ECHO "*** because I did check the linker path looking for a file starting"
7251 if test -z "$potlib" ; then
7252 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7253 else
7254 $ECHO "*** with $libname and none of the candidates passed a file format test"
7255 $ECHO "*** using a regex pattern. Last file checked: $potlib"
7260 # Add a -L argument.
7261 newdeplibs="$newdeplibs $a_deplib"
7263 esac
7264 done # Gone through all deplibs.
7266 none | unknown | *)
7267 newdeplibs=""
7268 tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
7269 -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
7270 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7271 for i in $predeps $postdeps ; do
7272 # can't use Xsed below, because $i might contain '/'
7273 tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
7274 done
7276 if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
7277 $GREP . >/dev/null; then
7278 $ECHO
7279 if test "X$deplibs_check_method" = "Xnone"; then
7280 $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
7281 else
7282 $ECHO "*** Warning: inter-library dependencies are not known to be supported."
7284 $ECHO "*** All declared inter-library dependencies are being dropped."
7285 droppeddeps=yes
7288 esac
7289 versuffix=$versuffix_save
7290 major=$major_save
7291 release=$release_save
7292 libname=$libname_save
7293 name=$name_save
7295 case $host in
7296 *-*-rhapsody* | *-*-darwin1.[012])
7297 # On Rhapsody replace the C library with the System framework
7298 newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7300 esac
7302 if test "$droppeddeps" = yes; then
7303 if test "$module" = yes; then
7304 $ECHO
7305 $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
7306 $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
7307 $ECHO "*** a static module, that should work as long as the dlopening"
7308 $ECHO "*** application is linked with the -dlopen flag."
7309 if test -z "$global_symbol_pipe"; then
7310 $ECHO
7311 $ECHO "*** However, this would only work if libtool was able to extract symbol"
7312 $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
7313 $ECHO "*** not find such a program. So, this module is probably useless."
7314 $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
7316 if test "$build_old_libs" = no; then
7317 oldlibs="$output_objdir/$libname.$libext"
7318 build_libtool_libs=module
7319 build_old_libs=yes
7320 else
7321 build_libtool_libs=no
7323 else
7324 $ECHO "*** The inter-library dependencies that have been dropped here will be"
7325 $ECHO "*** automatically added whenever a program is linked with this library"
7326 $ECHO "*** or is declared to -dlopen it."
7328 if test "$allow_undefined" = no; then
7329 $ECHO
7330 $ECHO "*** Since this library must not contain undefined symbols,"
7331 $ECHO "*** because either the platform does not support them or"
7332 $ECHO "*** it was explicitly requested with -no-undefined,"
7333 $ECHO "*** libtool will only create a static version of it."
7334 if test "$build_old_libs" = no; then
7335 oldlibs="$output_objdir/$libname.$libext"
7336 build_libtool_libs=module
7337 build_old_libs=yes
7338 else
7339 build_libtool_libs=no
7344 # Done checking deplibs!
7345 deplibs=$newdeplibs
7347 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7348 case $host in
7349 *-*-darwin*)
7350 newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7351 new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7352 deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7354 esac
7356 # move library search paths that coincide with paths to not yet
7357 # installed libraries to the beginning of the library search list
7358 new_libs=
7359 for path in $notinst_path; do
7360 case " $new_libs " in
7361 *" -L$path/$objdir "*) ;;
7363 case " $deplibs " in
7364 *" -L$path/$objdir "*)
7365 new_libs="$new_libs -L$path/$objdir" ;;
7366 esac
7368 esac
7369 done
7370 for deplib in $deplibs; do
7371 case $deplib in
7372 -L*)
7373 case " $new_libs " in
7374 *" $deplib "*) ;;
7375 *) new_libs="$new_libs $deplib" ;;
7376 esac
7378 *) new_libs="$new_libs $deplib" ;;
7379 esac
7380 done
7381 deplibs="$new_libs"
7383 # All the library-specific variables (install_libdir is set above).
7384 library_names=
7385 old_library=
7386 dlname=
7388 # Test again, we may have decided not to build it any more
7389 if test "$build_libtool_libs" = yes; then
7390 if test "$hardcode_into_libs" = yes; then
7391 # Hardcode the library paths
7392 hardcode_libdirs=
7393 dep_rpath=
7394 rpath="$finalize_rpath"
7395 test "$mode" != relink && rpath="$compile_rpath$rpath"
7396 for libdir in $rpath; do
7397 if test -n "$hardcode_libdir_flag_spec"; then
7398 if test -n "$hardcode_libdir_separator"; then
7399 if test -z "$hardcode_libdirs"; then
7400 hardcode_libdirs="$libdir"
7401 else
7402 # Just accumulate the unique libdirs.
7403 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7404 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7407 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7409 esac
7411 else
7412 eval flag=\"$hardcode_libdir_flag_spec\"
7413 dep_rpath="$dep_rpath $flag"
7415 elif test -n "$runpath_var"; then
7416 case "$perm_rpath " in
7417 *" $libdir "*) ;;
7418 *) perm_rpath="$perm_rpath $libdir" ;;
7419 esac
7421 done
7422 # Substitute the hardcoded libdirs into the rpath.
7423 if test -n "$hardcode_libdir_separator" &&
7424 test -n "$hardcode_libdirs"; then
7425 libdir="$hardcode_libdirs"
7426 if test -n "$hardcode_libdir_flag_spec_ld"; then
7427 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7428 else
7429 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
7432 if test -n "$runpath_var" && test -n "$perm_rpath"; then
7433 # We should set the runpath_var.
7434 rpath=
7435 for dir in $perm_rpath; do
7436 rpath="$rpath$dir:"
7437 done
7438 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
7440 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
7443 shlibpath="$finalize_shlibpath"
7444 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
7445 if test -n "$shlibpath"; then
7446 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
7449 # Get the real and link names of the library.
7450 eval shared_ext=\"$shrext_cmds\"
7451 eval library_names=\"$library_names_spec\"
7452 set dummy $library_names
7453 shift
7454 realname="$1"
7455 shift
7457 if test -n "$soname_spec"; then
7458 eval soname=\"$soname_spec\"
7459 else
7460 soname="$realname"
7462 if test -z "$dlname"; then
7463 dlname=$soname
7466 lib="$output_objdir/$realname"
7467 linknames=
7468 for link
7470 linknames="$linknames $link"
7471 done
7473 # Use standard objects if they are pic
7474 test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
7475 test "X$libobjs" = "X " && libobjs=
7477 delfiles=
7478 if test -n "$export_symbols" && test -n "$include_expsyms"; then
7479 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
7480 export_symbols="$output_objdir/$libname.uexp"
7481 delfiles="$delfiles $export_symbols"
7484 orig_export_symbols=
7485 case $host_os in
7486 cygwin* | mingw* | cegcc*)
7487 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
7488 # exporting using user supplied symfile
7489 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
7490 # and it's NOT already a .def file. Must figure out
7491 # which of the given symbols are data symbols and tag
7492 # them as such. So, trigger use of export_symbols_cmds.
7493 # export_symbols gets reassigned inside the "prepare
7494 # the list of exported symbols" if statement, so the
7495 # include_expsyms logic still works.
7496 orig_export_symbols="$export_symbols"
7497 export_symbols=
7498 always_export_symbols=yes
7502 esac
7504 # Prepare the list of exported symbols
7505 if test -z "$export_symbols"; then
7506 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
7507 func_verbose "generating symbol list for \`$libname.la'"
7508 export_symbols="$output_objdir/$libname.exp"
7509 $opt_dry_run || $RM $export_symbols
7510 cmds=$export_symbols_cmds
7511 save_ifs="$IFS"; IFS='~'
7512 for cmd in $cmds; do
7513 IFS="$save_ifs"
7514 eval cmd=\"$cmd\"
7515 func_len " $cmd"
7516 len=$func_len_result
7517 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7518 func_show_eval "$cmd" 'exit $?'
7519 skipped_export=false
7520 else
7521 # The command line is too long to execute in one step.
7522 func_verbose "using reloadable object file for export list..."
7523 skipped_export=:
7524 # Break out early, otherwise skipped_export may be
7525 # set to false by a later but shorter cmd.
7526 break
7528 done
7529 IFS="$save_ifs"
7530 if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7531 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7532 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7537 if test -n "$export_symbols" && test -n "$include_expsyms"; then
7538 tmp_export_symbols="$export_symbols"
7539 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7540 $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7543 if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7544 # The given exports_symbols file has to be filtered, so filter it.
7545 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7546 # FIXME: $output_objdir/$libname.filter potentially contains lots of
7547 # 's' commands which not all seds can handle. GNU sed should be fine
7548 # though. Also, the filter scales superlinearly with the number of
7549 # global variables. join(1) would be nice here, but unfortunately
7550 # isn't a blessed tool.
7551 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7552 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7553 export_symbols=$output_objdir/$libname.def
7554 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7557 tmp_deplibs=
7558 for test_deplib in $deplibs; do
7559 case " $convenience " in
7560 *" $test_deplib "*) ;;
7562 tmp_deplibs="$tmp_deplibs $test_deplib"
7564 esac
7565 done
7566 deplibs="$tmp_deplibs"
7568 if test -n "$convenience"; then
7569 if test -n "$whole_archive_flag_spec" &&
7570 test "$compiler_needs_object" = yes &&
7571 test -z "$libobjs"; then
7572 # extract the archives, so we have objects to list.
7573 # TODO: could optimize this to just extract one archive.
7574 whole_archive_flag_spec=
7576 if test -n "$whole_archive_flag_spec"; then
7577 save_libobjs=$libobjs
7578 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7579 test "X$libobjs" = "X " && libobjs=
7580 else
7581 gentop="$output_objdir/${outputname}x"
7582 generated="$generated $gentop"
7584 func_extract_archives $gentop $convenience
7585 libobjs="$libobjs $func_extract_archives_result"
7586 test "X$libobjs" = "X " && libobjs=
7590 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7591 eval flag=\"$thread_safe_flag_spec\"
7592 linker_flags="$linker_flags $flag"
7595 # Make a backup of the uninstalled library when relinking
7596 if test "$mode" = relink; then
7597 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7600 # Do each of the archive commands.
7601 if test "$module" = yes && test -n "$module_cmds" ; then
7602 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7603 eval test_cmds=\"$module_expsym_cmds\"
7604 cmds=$module_expsym_cmds
7605 else
7606 eval test_cmds=\"$module_cmds\"
7607 cmds=$module_cmds
7609 else
7610 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7611 eval test_cmds=\"$archive_expsym_cmds\"
7612 cmds=$archive_expsym_cmds
7613 else
7614 eval test_cmds=\"$archive_cmds\"
7615 cmds=$archive_cmds
7619 if test "X$skipped_export" != "X:" &&
7620 func_len " $test_cmds" &&
7621 len=$func_len_result &&
7622 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7624 else
7625 # The command line is too long to link in one step, link piecewise
7626 # or, if using GNU ld and skipped_export is not :, use a linker
7627 # script.
7629 # Save the value of $output and $libobjs because we want to
7630 # use them later. If we have whole_archive_flag_spec, we
7631 # want to use save_libobjs as it was before
7632 # whole_archive_flag_spec was expanded, because we can't
7633 # assume the linker understands whole_archive_flag_spec.
7634 # This may have to be revisited, in case too many
7635 # convenience libraries get linked in and end up exceeding
7636 # the spec.
7637 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7638 save_libobjs=$libobjs
7640 save_output=$output
7641 output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
7643 # Clear the reloadable object creation command queue and
7644 # initialize k to one.
7645 test_cmds=
7646 concat_cmds=
7647 objlist=
7648 last_robj=
7651 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7652 output=${output_objdir}/${output_la}.lnkscript
7653 func_verbose "creating GNU ld script: $output"
7654 $ECHO 'INPUT (' > $output
7655 for obj in $save_libobjs
7657 $ECHO "$obj" >> $output
7658 done
7659 $ECHO ')' >> $output
7660 delfiles="$delfiles $output"
7661 elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7662 output=${output_objdir}/${output_la}.lnk
7663 func_verbose "creating linker input file list: $output"
7664 : > $output
7665 set x $save_libobjs
7666 shift
7667 firstobj=
7668 if test "$compiler_needs_object" = yes; then
7669 firstobj="$1 "
7670 shift
7672 for obj
7674 $ECHO "$obj" >> $output
7675 done
7676 delfiles="$delfiles $output"
7677 output=$firstobj\"$file_list_spec$output\"
7678 else
7679 if test -n "$save_libobjs"; then
7680 func_verbose "creating reloadable object files..."
7681 output=$output_objdir/$output_la-${k}.$objext
7682 eval test_cmds=\"$reload_cmds\"
7683 func_len " $test_cmds"
7684 len0=$func_len_result
7685 len=$len0
7687 # Loop over the list of objects to be linked.
7688 for obj in $save_libobjs
7690 func_len " $obj"
7691 func_arith $len + $func_len_result
7692 len=$func_arith_result
7693 if test "X$objlist" = X ||
7694 test "$len" -lt "$max_cmd_len"; then
7695 func_append objlist " $obj"
7696 else
7697 # The command $test_cmds is almost too long, add a
7698 # command to the queue.
7699 if test "$k" -eq 1 ; then
7700 # The first file doesn't have a previous command to add.
7701 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
7702 else
7703 # All subsequent reloadable object files will link in
7704 # the last one created.
7705 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
7707 last_robj=$output_objdir/$output_la-${k}.$objext
7708 func_arith $k + 1
7709 k=$func_arith_result
7710 output=$output_objdir/$output_la-${k}.$objext
7711 objlist=$obj
7712 func_len " $last_robj"
7713 func_arith $len0 + $func_len_result
7714 len=$func_arith_result
7716 done
7717 # Handle the remaining objects by creating one last
7718 # reloadable object file. All subsequent reloadable object
7719 # files will link in the last one created.
7720 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7721 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
7722 if test -n "$last_robj"; then
7723 eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7725 delfiles="$delfiles $output"
7727 else
7728 output=
7731 if ${skipped_export-false}; then
7732 func_verbose "generating symbol list for \`$libname.la'"
7733 export_symbols="$output_objdir/$libname.exp"
7734 $opt_dry_run || $RM $export_symbols
7735 libobjs=$output
7736 # Append the command to create the export file.
7737 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7738 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7739 if test -n "$last_robj"; then
7740 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7744 test -n "$save_libobjs" &&
7745 func_verbose "creating a temporary reloadable object file: $output"
7747 # Loop through the commands generated above and execute them.
7748 save_ifs="$IFS"; IFS='~'
7749 for cmd in $concat_cmds; do
7750 IFS="$save_ifs"
7751 $opt_silent || {
7752 func_quote_for_expand "$cmd"
7753 eval "func_echo $func_quote_for_expand_result"
7755 $opt_dry_run || eval "$cmd" || {
7756 lt_exit=$?
7758 # Restore the uninstalled library and exit
7759 if test "$mode" = relink; then
7760 ( cd "$output_objdir" && \
7761 $RM "${realname}T" && \
7762 $MV "${realname}U" "$realname" )
7765 exit $lt_exit
7767 done
7768 IFS="$save_ifs"
7770 if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7771 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7772 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7776 if ${skipped_export-false}; then
7777 if test -n "$export_symbols" && test -n "$include_expsyms"; then
7778 tmp_export_symbols="$export_symbols"
7779 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7780 $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
7783 if test -n "$orig_export_symbols"; then
7784 # The given exports_symbols file has to be filtered, so filter it.
7785 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7786 # FIXME: $output_objdir/$libname.filter potentially contains lots of
7787 # 's' commands which not all seds can handle. GNU sed should be fine
7788 # though. Also, the filter scales superlinearly with the number of
7789 # global variables. join(1) would be nice here, but unfortunately
7790 # isn't a blessed tool.
7791 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7792 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7793 export_symbols=$output_objdir/$libname.def
7794 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7798 libobjs=$output
7799 # Restore the value of output.
7800 output=$save_output
7802 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7803 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7804 test "X$libobjs" = "X " && libobjs=
7806 # Expand the library linking commands again to reset the
7807 # value of $libobjs for piecewise linking.
7809 # Do each of the archive commands.
7810 if test "$module" = yes && test -n "$module_cmds" ; then
7811 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7812 cmds=$module_expsym_cmds
7813 else
7814 cmds=$module_cmds
7816 else
7817 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7818 cmds=$archive_expsym_cmds
7819 else
7820 cmds=$archive_cmds
7825 if test -n "$delfiles"; then
7826 # Append the command to remove temporary files to $cmds.
7827 eval cmds=\"\$cmds~\$RM $delfiles\"
7830 # Add any objects from preloaded convenience libraries
7831 if test -n "$dlprefiles"; then
7832 gentop="$output_objdir/${outputname}x"
7833 generated="$generated $gentop"
7835 func_extract_archives $gentop $dlprefiles
7836 libobjs="$libobjs $func_extract_archives_result"
7837 test "X$libobjs" = "X " && libobjs=
7840 save_ifs="$IFS"; IFS='~'
7841 for cmd in $cmds; do
7842 IFS="$save_ifs"
7843 eval cmd=\"$cmd\"
7844 $opt_silent || {
7845 func_quote_for_expand "$cmd"
7846 eval "func_echo $func_quote_for_expand_result"
7848 $opt_dry_run || eval "$cmd" || {
7849 lt_exit=$?
7851 # Restore the uninstalled library and exit
7852 if test "$mode" = relink; then
7853 ( cd "$output_objdir" && \
7854 $RM "${realname}T" && \
7855 $MV "${realname}U" "$realname" )
7858 exit $lt_exit
7860 done
7861 IFS="$save_ifs"
7863 # Restore the uninstalled library and exit
7864 if test "$mode" = relink; then
7865 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7867 if test -n "$convenience"; then
7868 if test -z "$whole_archive_flag_spec"; then
7869 func_show_eval '${RM}r "$gentop"'
7873 exit $EXIT_SUCCESS
7876 # Create links to the real library.
7877 for linkname in $linknames; do
7878 if test "$realname" != "$linkname"; then
7879 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7881 done
7883 # If -module or -export-dynamic was specified, set the dlname.
7884 if test "$module" = yes || test "$export_dynamic" = yes; then
7885 # On all known operating systems, these are identical.
7886 dlname="$soname"
7891 obj)
7892 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7893 func_warning "\`-dlopen' is ignored for objects"
7896 case " $deplibs" in
7897 *\ -l* | *\ -L*)
7898 func_warning "\`-l' and \`-L' are ignored for objects" ;;
7899 esac
7901 test -n "$rpath" && \
7902 func_warning "\`-rpath' is ignored for objects"
7904 test -n "$xrpath" && \
7905 func_warning "\`-R' is ignored for objects"
7907 test -n "$vinfo" && \
7908 func_warning "\`-version-info' is ignored for objects"
7910 test -n "$release" && \
7911 func_warning "\`-release' is ignored for objects"
7913 case $output in
7914 *.lo)
7915 test -n "$objs$old_deplibs" && \
7916 func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7918 libobj=$output
7919 func_lo2o "$libobj"
7920 obj=$func_lo2o_result
7923 libobj=
7924 obj="$output"
7926 esac
7928 # Delete the old objects.
7929 $opt_dry_run || $RM $obj $libobj
7931 # Objects from convenience libraries. This assumes
7932 # single-version convenience libraries. Whenever we create
7933 # different ones for PIC/non-PIC, this we'll have to duplicate
7934 # the extraction.
7935 reload_conv_objs=
7936 gentop=
7937 # reload_cmds runs $LD directly, so let us get rid of
7938 # -Wl from whole_archive_flag_spec and hope we can get by with
7939 # turning comma into space..
7942 if test -n "$convenience"; then
7943 if test -n "$whole_archive_flag_spec"; then
7944 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
7945 reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
7946 else
7947 gentop="$output_objdir/${obj}x"
7948 generated="$generated $gentop"
7950 func_extract_archives $gentop $convenience
7951 reload_conv_objs="$reload_objs $func_extract_archives_result"
7955 # Create the old-style object.
7956 reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7958 output="$obj"
7959 func_execute_cmds "$reload_cmds" 'exit $?'
7961 # Exit if we aren't doing a library object file.
7962 if test -z "$libobj"; then
7963 if test -n "$gentop"; then
7964 func_show_eval '${RM}r "$gentop"'
7967 exit $EXIT_SUCCESS
7970 if test "$build_libtool_libs" != yes; then
7971 if test -n "$gentop"; then
7972 func_show_eval '${RM}r "$gentop"'
7975 # Create an invalid libtool object if no PIC, so that we don't
7976 # accidentally link it into a program.
7977 # $show "echo timestamp > $libobj"
7978 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7979 exit $EXIT_SUCCESS
7982 if test -n "$pic_flag" || test "$pic_mode" != default; then
7983 # Only do commands if we really have different PIC objects.
7984 reload_objs="$libobjs $reload_conv_objs"
7985 output="$libobj"
7986 func_execute_cmds "$reload_cmds" 'exit $?'
7989 if test -n "$gentop"; then
7990 func_show_eval '${RM}r "$gentop"'
7993 exit $EXIT_SUCCESS
7996 prog)
7997 case $host in
7998 *cygwin*) func_stripname '' '.exe' "$output"
7999 output=$func_stripname_result.exe;;
8000 esac
8001 test -n "$vinfo" && \
8002 func_warning "\`-version-info' is ignored for programs"
8004 test -n "$release" && \
8005 func_warning "\`-release' is ignored for programs"
8007 test "$preload" = yes \
8008 && test "$dlopen_support" = unknown \
8009 && test "$dlopen_self" = unknown \
8010 && test "$dlopen_self_static" = unknown && \
8011 func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8013 case $host in
8014 *-*-rhapsody* | *-*-darwin1.[012])
8015 # On Rhapsody replace the C library is the System framework
8016 compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
8017 finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
8019 esac
8021 case $host in
8022 *-*-darwin*)
8023 # Don't allow lazy linking, it breaks C++ global constructors
8024 # But is supposedly fixed on 10.4 or later (yay!).
8025 if test "$tagname" = CXX ; then
8026 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8027 10.[0123])
8028 compile_command="$compile_command ${wl}-bind_at_load"
8029 finalize_command="$finalize_command ${wl}-bind_at_load"
8031 esac
8033 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8034 compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
8035 finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
8037 esac
8040 # move library search paths that coincide with paths to not yet
8041 # installed libraries to the beginning of the library search list
8042 new_libs=
8043 for path in $notinst_path; do
8044 case " $new_libs " in
8045 *" -L$path/$objdir "*) ;;
8047 case " $compile_deplibs " in
8048 *" -L$path/$objdir "*)
8049 new_libs="$new_libs -L$path/$objdir" ;;
8050 esac
8052 esac
8053 done
8054 for deplib in $compile_deplibs; do
8055 case $deplib in
8056 -L*)
8057 case " $new_libs " in
8058 *" $deplib "*) ;;
8059 *) new_libs="$new_libs $deplib" ;;
8060 esac
8062 *) new_libs="$new_libs $deplib" ;;
8063 esac
8064 done
8065 compile_deplibs="$new_libs"
8068 compile_command="$compile_command $compile_deplibs"
8069 finalize_command="$finalize_command $finalize_deplibs"
8071 if test -n "$rpath$xrpath"; then
8072 # If the user specified any rpath flags, then add them.
8073 for libdir in $rpath $xrpath; do
8074 # This is the magic to use -rpath.
8075 case "$finalize_rpath " in
8076 *" $libdir "*) ;;
8077 *) finalize_rpath="$finalize_rpath $libdir" ;;
8078 esac
8079 done
8082 # Now hardcode the library paths
8083 rpath=
8084 hardcode_libdirs=
8085 for libdir in $compile_rpath $finalize_rpath; do
8086 if test -n "$hardcode_libdir_flag_spec"; then
8087 if test -n "$hardcode_libdir_separator"; then
8088 if test -z "$hardcode_libdirs"; then
8089 hardcode_libdirs="$libdir"
8090 else
8091 # Just accumulate the unique libdirs.
8092 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8093 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8096 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
8098 esac
8100 else
8101 eval flag=\"$hardcode_libdir_flag_spec\"
8102 rpath="$rpath $flag"
8104 elif test -n "$runpath_var"; then
8105 case "$perm_rpath " in
8106 *" $libdir "*) ;;
8107 *) perm_rpath="$perm_rpath $libdir" ;;
8108 esac
8110 case $host in
8111 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8112 testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8113 case :$dllsearchpath: in
8114 *":$libdir:"*) ;;
8115 ::) dllsearchpath=$libdir;;
8116 *) dllsearchpath="$dllsearchpath:$libdir";;
8117 esac
8118 case :$dllsearchpath: in
8119 *":$testbindir:"*) ;;
8120 ::) dllsearchpath=$testbindir;;
8121 *) dllsearchpath="$dllsearchpath:$testbindir";;
8122 esac
8124 esac
8125 done
8126 # Substitute the hardcoded libdirs into the rpath.
8127 if test -n "$hardcode_libdir_separator" &&
8128 test -n "$hardcode_libdirs"; then
8129 libdir="$hardcode_libdirs"
8130 eval rpath=\" $hardcode_libdir_flag_spec\"
8132 compile_rpath="$rpath"
8134 rpath=
8135 hardcode_libdirs=
8136 for libdir in $finalize_rpath; do
8137 if test -n "$hardcode_libdir_flag_spec"; then
8138 if test -n "$hardcode_libdir_separator"; then
8139 if test -z "$hardcode_libdirs"; then
8140 hardcode_libdirs="$libdir"
8141 else
8142 # Just accumulate the unique libdirs.
8143 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8144 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8147 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
8149 esac
8151 else
8152 eval flag=\"$hardcode_libdir_flag_spec\"
8153 rpath="$rpath $flag"
8155 elif test -n "$runpath_var"; then
8156 case "$finalize_perm_rpath " in
8157 *" $libdir "*) ;;
8158 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
8159 esac
8161 done
8162 # Substitute the hardcoded libdirs into the rpath.
8163 if test -n "$hardcode_libdir_separator" &&
8164 test -n "$hardcode_libdirs"; then
8165 libdir="$hardcode_libdirs"
8166 eval rpath=\" $hardcode_libdir_flag_spec\"
8168 finalize_rpath="$rpath"
8170 if test -n "$libobjs" && test "$build_old_libs" = yes; then
8171 # Transform all the library objects into standard objects.
8172 compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
8173 finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
8176 func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8178 # template prelinking step
8179 if test -n "$prelink_cmds"; then
8180 func_execute_cmds "$prelink_cmds" 'exit $?'
8183 wrappers_required=yes
8184 case $host in
8185 *cygwin* | *mingw* )
8186 if test "$build_libtool_libs" != yes; then
8187 wrappers_required=no
8190 *cegcc)
8191 # Disable wrappers for cegcc, we are cross compiling anyway.
8192 wrappers_required=no
8195 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8196 wrappers_required=no
8199 esac
8200 if test "$wrappers_required" = no; then
8201 # Replace the output file specification.
8202 compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
8203 link_command="$compile_command$compile_rpath"
8205 # We have no uninstalled library dependencies, so finalize right now.
8206 exit_status=0
8207 func_show_eval "$link_command" 'exit_status=$?'
8209 # Delete the generated files.
8210 if test -f "$output_objdir/${outputname}S.${objext}"; then
8211 func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8214 exit $exit_status
8217 if test -n "$compile_shlibpath$finalize_shlibpath"; then
8218 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8220 if test -n "$finalize_shlibpath"; then
8221 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8224 compile_var=
8225 finalize_var=
8226 if test -n "$runpath_var"; then
8227 if test -n "$perm_rpath"; then
8228 # We should set the runpath_var.
8229 rpath=
8230 for dir in $perm_rpath; do
8231 rpath="$rpath$dir:"
8232 done
8233 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8235 if test -n "$finalize_perm_rpath"; then
8236 # We should set the runpath_var.
8237 rpath=
8238 for dir in $finalize_perm_rpath; do
8239 rpath="$rpath$dir:"
8240 done
8241 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8245 if test "$no_install" = yes; then
8246 # We don't need to create a wrapper script.
8247 link_command="$compile_var$compile_command$compile_rpath"
8248 # Replace the output file specification.
8249 link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
8250 # Delete the old output file.
8251 $opt_dry_run || $RM $output
8252 # Link the executable and exit
8253 func_show_eval "$link_command" 'exit $?'
8254 exit $EXIT_SUCCESS
8257 if test "$hardcode_action" = relink; then
8258 # Fast installation is not supported
8259 link_command="$compile_var$compile_command$compile_rpath"
8260 relink_command="$finalize_var$finalize_command$finalize_rpath"
8262 func_warning "this platform does not like uninstalled shared libraries"
8263 func_warning "\`$output' will be relinked during installation"
8264 else
8265 if test "$fast_install" != no; then
8266 link_command="$finalize_var$compile_command$finalize_rpath"
8267 if test "$fast_install" = yes; then
8268 relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
8269 else
8270 # fast_install is set to needless
8271 relink_command=
8273 else
8274 link_command="$compile_var$compile_command$compile_rpath"
8275 relink_command="$finalize_var$finalize_command$finalize_rpath"
8279 # Replace the output file specification.
8280 link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8282 # Delete the old output files.
8283 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8285 func_show_eval "$link_command" 'exit $?'
8287 # Now create the wrapper script.
8288 func_verbose "creating $output"
8290 # Quote the relink command for shipping.
8291 if test -n "$relink_command"; then
8292 # Preserve any variables that may affect compiler behavior
8293 for var in $variables_saved_for_relink; do
8294 if eval test -z \"\${$var+set}\"; then
8295 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8296 elif eval var_value=\$$var; test -z "$var_value"; then
8297 relink_command="$var=; export $var; $relink_command"
8298 else
8299 func_quote_for_eval "$var_value"
8300 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8302 done
8303 relink_command="(cd `pwd`; $relink_command)"
8304 relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8307 # Quote $ECHO for shipping.
8308 if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
8309 case $progpath in
8310 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
8311 *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
8312 esac
8313 qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
8314 else
8315 qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
8318 # Only actually do things if not in dry run mode.
8319 $opt_dry_run || {
8320 # win32 will think the script is a binary if it has
8321 # a .exe suffix, so we strip it off here.
8322 case $output in
8323 *.exe) func_stripname '' '.exe' "$output"
8324 output=$func_stripname_result ;;
8325 esac
8326 # test for cygwin because mv fails w/o .exe extensions
8327 case $host in
8328 *cygwin*)
8329 exeext=.exe
8330 func_stripname '' '.exe' "$outputname"
8331 outputname=$func_stripname_result ;;
8332 *) exeext= ;;
8333 esac
8334 case $host in
8335 *cygwin* | *mingw* )
8336 func_dirname_and_basename "$output" "" "."
8337 output_name=$func_basename_result
8338 output_path=$func_dirname_result
8339 cwrappersource="$output_path/$objdir/lt-$output_name.c"
8340 cwrapper="$output_path/$output_name.exe"
8341 $RM $cwrappersource $cwrapper
8342 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
8344 func_emit_cwrapperexe_src > $cwrappersource
8346 # The wrapper executable is built using the $host compiler,
8347 # because it contains $host paths and files. If cross-
8348 # compiling, it, like the target executable, must be
8349 # executed on the $host or under an emulation environment.
8350 $opt_dry_run || {
8351 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
8352 $STRIP $cwrapper
8355 # Now, create the wrapper script for func_source use:
8356 func_ltwrapper_scriptname $cwrapper
8357 $RM $func_ltwrapper_scriptname_result
8358 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
8359 $opt_dry_run || {
8360 # note: this script will not be executed, so do not chmod.
8361 if test "x$build" = "x$host" ; then
8362 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
8363 else
8364 func_emit_wrapper no > $func_ltwrapper_scriptname_result
8369 $RM $output
8370 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
8372 func_emit_wrapper no > $output
8373 chmod +x $output
8375 esac
8377 exit $EXIT_SUCCESS
8379 esac
8381 # See if we need to build an old-fashioned archive.
8382 for oldlib in $oldlibs; do
8384 if test "$build_libtool_libs" = convenience; then
8385 oldobjs="$libobjs_save $symfileobj"
8386 addlibs="$convenience"
8387 build_libtool_libs=no
8388 else
8389 if test "$build_libtool_libs" = module; then
8390 oldobjs="$libobjs_save"
8391 build_libtool_libs=no
8392 else
8393 oldobjs="$old_deplibs $non_pic_objects"
8394 if test "$preload" = yes && test -f "$symfileobj"; then
8395 oldobjs="$oldobjs $symfileobj"
8398 addlibs="$old_convenience"
8401 if test -n "$addlibs"; then
8402 gentop="$output_objdir/${outputname}x"
8403 generated="$generated $gentop"
8405 func_extract_archives $gentop $addlibs
8406 oldobjs="$oldobjs $func_extract_archives_result"
8409 # Do each command in the archive commands.
8410 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
8411 cmds=$old_archive_from_new_cmds
8412 else
8414 # Add any objects from preloaded convenience libraries
8415 if test -n "$dlprefiles"; then
8416 gentop="$output_objdir/${outputname}x"
8417 generated="$generated $gentop"
8419 func_extract_archives $gentop $dlprefiles
8420 oldobjs="$oldobjs $func_extract_archives_result"
8423 # POSIX demands no paths to be encoded in archives. We have
8424 # to avoid creating archives with duplicate basenames if we
8425 # might have to extract them afterwards, e.g., when creating a
8426 # static archive out of a convenience library, or when linking
8427 # the entirety of a libtool archive into another (currently
8428 # not supported by libtool).
8429 if (for obj in $oldobjs
8431 func_basename "$obj"
8432 $ECHO "$func_basename_result"
8433 done | sort | sort -uc >/dev/null 2>&1); then
8435 else
8436 $ECHO "copying selected object files to avoid basename conflicts..."
8437 gentop="$output_objdir/${outputname}x"
8438 generated="$generated $gentop"
8439 func_mkdir_p "$gentop"
8440 save_oldobjs=$oldobjs
8441 oldobjs=
8442 counter=1
8443 for obj in $save_oldobjs
8445 func_basename "$obj"
8446 objbase="$func_basename_result"
8447 case " $oldobjs " in
8448 " ") oldobjs=$obj ;;
8449 *[\ /]"$objbase "*)
8450 while :; do
8451 # Make sure we don't pick an alternate name that also
8452 # overlaps.
8453 newobj=lt$counter-$objbase
8454 func_arith $counter + 1
8455 counter=$func_arith_result
8456 case " $oldobjs " in
8457 *[\ /]"$newobj "*) ;;
8458 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
8459 esac
8460 done
8461 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8462 oldobjs="$oldobjs $gentop/$newobj"
8464 *) oldobjs="$oldobjs $obj" ;;
8465 esac
8466 done
8468 eval cmds=\"$old_archive_cmds\"
8470 func_len " $cmds"
8471 len=$func_len_result
8472 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8473 cmds=$old_archive_cmds
8474 else
8475 # the command line is too long to link in one step, link in parts
8476 func_verbose "using piecewise archive linking..."
8477 save_RANLIB=$RANLIB
8478 RANLIB=:
8479 objlist=
8480 concat_cmds=
8481 save_oldobjs=$oldobjs
8482 oldobjs=
8483 # Is there a better way of finding the last object in the list?
8484 for obj in $save_oldobjs
8486 last_oldobj=$obj
8487 done
8488 eval test_cmds=\"$old_archive_cmds\"
8489 func_len " $test_cmds"
8490 len0=$func_len_result
8491 len=$len0
8492 for obj in $save_oldobjs
8494 func_len " $obj"
8495 func_arith $len + $func_len_result
8496 len=$func_arith_result
8497 func_append objlist " $obj"
8498 if test "$len" -lt "$max_cmd_len"; then
8500 else
8501 # the above command should be used before it gets too long
8502 oldobjs=$objlist
8503 if test "$obj" = "$last_oldobj" ; then
8504 RANLIB=$save_RANLIB
8506 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8507 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8508 objlist=
8509 len=$len0
8511 done
8512 RANLIB=$save_RANLIB
8513 oldobjs=$objlist
8514 if test "X$oldobjs" = "X" ; then
8515 eval cmds=\"\$concat_cmds\"
8516 else
8517 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8521 func_execute_cmds "$cmds" 'exit $?'
8522 done
8524 test -n "$generated" && \
8525 func_show_eval "${RM}r$generated"
8527 # Now create the libtool archive.
8528 case $output in
8529 *.la)
8530 old_library=
8531 test "$build_old_libs" = yes && old_library="$libname.$libext"
8532 func_verbose "creating $output"
8534 # Preserve any variables that may affect compiler behavior
8535 for var in $variables_saved_for_relink; do
8536 if eval test -z \"\${$var+set}\"; then
8537 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8538 elif eval var_value=\$$var; test -z "$var_value"; then
8539 relink_command="$var=; export $var; $relink_command"
8540 else
8541 func_quote_for_eval "$var_value"
8542 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8544 done
8545 # Quote the link command for shipping.
8546 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
8547 relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
8548 if test "$hardcode_automatic" = yes ; then
8549 relink_command=
8552 # Only create the output if not a dry run.
8553 $opt_dry_run || {
8554 for installed in no yes; do
8555 if test "$installed" = yes; then
8556 if test -z "$install_libdir"; then
8557 break
8559 output="$output_objdir/$outputname"i
8560 # Replace all uninstalled libtool libraries with the installed ones
8561 newdependency_libs=
8562 for deplib in $dependency_libs; do
8563 case $deplib in
8564 *.la)
8565 func_basename "$deplib"
8566 name="$func_basename_result"
8567 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8568 test -z "$libdir" && \
8569 func_fatal_error "\`$deplib' is not a valid libtool archive"
8570 newdependency_libs="$newdependency_libs $libdir/$name"
8572 *) newdependency_libs="$newdependency_libs $deplib" ;;
8573 esac
8574 done
8575 dependency_libs="$newdependency_libs"
8576 newdlfiles=
8578 for lib in $dlfiles; do
8579 case $lib in
8580 *.la)
8581 func_basename "$lib"
8582 name="$func_basename_result"
8583 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8584 test -z "$libdir" && \
8585 func_fatal_error "\`$lib' is not a valid libtool archive"
8586 newdlfiles="$newdlfiles $libdir/$name"
8588 *) newdlfiles="$newdlfiles $lib" ;;
8589 esac
8590 done
8591 dlfiles="$newdlfiles"
8592 newdlprefiles=
8593 for lib in $dlprefiles; do
8594 case $lib in
8595 *.la)
8596 # Only pass preopened files to the pseudo-archive (for
8597 # eventual linking with the app. that links it) if we
8598 # didn't already link the preopened objects directly into
8599 # the library:
8600 func_basename "$lib"
8601 name="$func_basename_result"
8602 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8603 test -z "$libdir" && \
8604 func_fatal_error "\`$lib' is not a valid libtool archive"
8605 newdlprefiles="$newdlprefiles $libdir/$name"
8607 esac
8608 done
8609 dlprefiles="$newdlprefiles"
8610 else
8611 newdlfiles=
8612 for lib in $dlfiles; do
8613 case $lib in
8614 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8615 *) abs=`pwd`"/$lib" ;;
8616 esac
8617 newdlfiles="$newdlfiles $abs"
8618 done
8619 dlfiles="$newdlfiles"
8620 newdlprefiles=
8621 for lib in $dlprefiles; do
8622 case $lib in
8623 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8624 *) abs=`pwd`"/$lib" ;;
8625 esac
8626 newdlprefiles="$newdlprefiles $abs"
8627 done
8628 dlprefiles="$newdlprefiles"
8630 $RM $output
8631 # place dlname in correct position for cygwin
8632 tdlname=$dlname
8633 case $host,$output,$installed,$module,$dlname in
8634 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
8635 esac
8636 $ECHO > $output "\
8637 # $outputname - a libtool library file
8638 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8640 # Please DO NOT delete this file!
8641 # It is necessary for linking the library.
8643 # The name that we can dlopen(3).
8644 dlname='$tdlname'
8646 # Names of this library.
8647 library_names='$library_names'
8649 # The name of the static archive.
8650 old_library='$old_library'
8652 # Linker flags that can not go in dependency_libs.
8653 inherited_linker_flags='$new_inherited_linker_flags'
8655 # Libraries that this one depends upon.
8656 dependency_libs='$dependency_libs'
8658 # Names of additional weak libraries provided by this library
8659 weak_library_names='$weak_libs'
8661 # Version information for $libname.
8662 current=$current
8663 age=$age
8664 revision=$revision
8666 # Is this an already installed library?
8667 installed=$installed
8669 # Should we warn about portability when linking against -modules?
8670 shouldnotlink=$module
8672 # Files to dlopen/dlpreopen
8673 dlopen='$dlfiles'
8674 dlpreopen='$dlprefiles'
8676 # Directory that this library needs to be installed in:
8677 libdir='$install_libdir'"
8678 if test "$installed" = no && test "$need_relink" = yes; then
8679 $ECHO >> $output "\
8680 relink_command=\"$relink_command\""
8682 done
8685 # Do a symbolic link so that the libtool archive can be found in
8686 # LD_LIBRARY_PATH before the program is installed.
8687 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8689 esac
8690 exit $EXIT_SUCCESS
8693 { test "$mode" = link || test "$mode" = relink; } &&
8694 func_mode_link ${1+"$@"}
8697 # func_mode_uninstall arg...
8698 func_mode_uninstall ()
8700 $opt_debug
8701 RM="$nonopt"
8702 files=
8703 rmforce=
8704 exit_status=0
8706 # This variable tells wrapper scripts just to set variables rather
8707 # than running their programs.
8708 libtool_install_magic="$magic"
8710 for arg
8712 case $arg in
8713 -f) RM="$RM $arg"; rmforce=yes ;;
8714 -*) RM="$RM $arg" ;;
8715 *) files="$files $arg" ;;
8716 esac
8717 done
8719 test -z "$RM" && \
8720 func_fatal_help "you must specify an RM program"
8722 rmdirs=
8724 origobjdir="$objdir"
8725 for file in $files; do
8726 func_dirname "$file" "" "."
8727 dir="$func_dirname_result"
8728 if test "X$dir" = X.; then
8729 objdir="$origobjdir"
8730 else
8731 objdir="$dir/$origobjdir"
8733 func_basename "$file"
8734 name="$func_basename_result"
8735 test "$mode" = uninstall && objdir="$dir"
8737 # Remember objdir for removal later, being careful to avoid duplicates
8738 if test "$mode" = clean; then
8739 case " $rmdirs " in
8740 *" $objdir "*) ;;
8741 *) rmdirs="$rmdirs $objdir" ;;
8742 esac
8745 # Don't error if the file doesn't exist and rm -f was used.
8746 if { test -L "$file"; } >/dev/null 2>&1 ||
8747 { test -h "$file"; } >/dev/null 2>&1 ||
8748 test -f "$file"; then
8750 elif test -d "$file"; then
8751 exit_status=1
8752 continue
8753 elif test "$rmforce" = yes; then
8754 continue
8757 rmfiles="$file"
8759 case $name in
8760 *.la)
8761 # Possibly a libtool archive, so verify it.
8762 if func_lalib_p "$file"; then
8763 func_source $dir/$name
8765 # Delete the libtool libraries and symlinks.
8766 for n in $library_names; do
8767 rmfiles="$rmfiles $objdir/$n"
8768 done
8769 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8771 case "$mode" in
8772 clean)
8773 case " $library_names " in
8774 # " " in the beginning catches empty $dlname
8775 *" $dlname "*) ;;
8776 *) rmfiles="$rmfiles $objdir/$dlname" ;;
8777 esac
8778 test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8780 uninstall)
8781 if test -n "$library_names"; then
8782 # Do each command in the postuninstall commands.
8783 func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8786 if test -n "$old_library"; then
8787 # Do each command in the old_postuninstall commands.
8788 func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8790 # FIXME: should reinstall the best remaining shared library.
8792 esac
8796 *.lo)
8797 # Possibly a libtool object, so verify it.
8798 if func_lalib_p "$file"; then
8800 # Read the .lo file
8801 func_source $dir/$name
8803 # Add PIC object to the list of files to remove.
8804 if test -n "$pic_object" &&
8805 test "$pic_object" != none; then
8806 rmfiles="$rmfiles $dir/$pic_object"
8809 # Add non-PIC object to the list of files to remove.
8810 if test -n "$non_pic_object" &&
8811 test "$non_pic_object" != none; then
8812 rmfiles="$rmfiles $dir/$non_pic_object"
8818 if test "$mode" = clean ; then
8819 noexename=$name
8820 case $file in
8821 *.exe)
8822 func_stripname '' '.exe' "$file"
8823 file=$func_stripname_result
8824 func_stripname '' '.exe' "$name"
8825 noexename=$func_stripname_result
8826 # $file with .exe has already been added to rmfiles,
8827 # add $file without .exe
8828 rmfiles="$rmfiles $file"
8830 esac
8831 # Do a test to see if this is a libtool program.
8832 if func_ltwrapper_p "$file"; then
8833 if func_ltwrapper_executable_p "$file"; then
8834 func_ltwrapper_scriptname "$file"
8835 relink_command=
8836 func_source $func_ltwrapper_scriptname_result
8837 rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8838 else
8839 relink_command=
8840 func_source $dir/$noexename
8843 # note $name still contains .exe if it was in $file originally
8844 # as does the version of $file that was added into $rmfiles
8845 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8846 if test "$fast_install" = yes && test -n "$relink_command"; then
8847 rmfiles="$rmfiles $objdir/lt-$name"
8849 if test "X$noexename" != "X$name" ; then
8850 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8855 esac
8856 func_show_eval "$RM $rmfiles" 'exit_status=1'
8857 done
8858 objdir="$origobjdir"
8860 # Try to remove the ${objdir}s in the directories where we deleted files
8861 for dir in $rmdirs; do
8862 if test -d "$dir"; then
8863 func_show_eval "rmdir $dir >/dev/null 2>&1"
8865 done
8867 exit $exit_status
8870 { test "$mode" = uninstall || test "$mode" = clean; } &&
8871 func_mode_uninstall ${1+"$@"}
8873 test -z "$mode" && {
8874 help="$generic_help"
8875 func_fatal_help "you must specify a MODE"
8878 test -z "$exec_cmd" && \
8879 func_fatal_help "invalid operation mode \`$mode'"
8881 if test -n "$exec_cmd"; then
8882 eval exec "$exec_cmd"
8883 exit $EXIT_FAILURE
8886 exit $exit_status
8889 # The TAGs below are defined such that we never get into a situation
8890 # in which we disable both kinds of libraries. Given conflicting
8891 # choices, we go for a static library, that is the most portable,
8892 # since we can't tell whether shared libraries were disabled because
8893 # the user asked for that or because the platform doesn't support
8894 # them. This is particularly important on AIX, because we don't
8895 # support having both static and shared libraries enabled at the same
8896 # time on that platform, so we default to a shared-only configuration.
8897 # If a disable-shared tag is given, we'll fallback to a static-only
8898 # configuration. But we'll never go from static-only to shared-only.
8900 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8901 build_libtool_libs=no
8902 build_old_libs=yes
8903 # ### END LIBTOOL TAG CONFIG: disable-shared
8905 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
8906 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8907 # ### END LIBTOOL TAG CONFIG: disable-static
8909 # Local Variables:
8910 # mode:shell-script
8911 # sh-indentation:2
8912 # End:
8913 # vi:sw=2
8916 # ### BEGIN LIBTOOL TAG CONFIG: CXX
8918 # The linker used to build libraries.
8919 LD="mipsel-uclibc-ld"
8921 # Commands used to build an old-style archive.
8922 old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
8924 # A language specific compiler.
8925 CC="mipsel-linux-g++"
8927 # Is the compiler the GNU compiler?
8928 with_gcc=yes
8930 # Compiler flag to turn off builtin functions.
8931 no_builtin_flag=" -fno-builtin"
8933 # How to pass a linker flag through the compiler.
8934 wl="-Wl,"
8936 # Additional compiler flags for building library objects.
8937 pic_flag=" -fPIC -DPIC"
8939 # Compiler flag to prevent dynamic linking.
8940 link_static_flag="-static"
8942 # Does compiler simultaneously support -c and -o options?
8943 compiler_c_o="yes"
8945 # Whether or not to add -lc for building shared libraries.
8946 build_libtool_need_lc=no
8948 # Whether or not to disallow shared libs when runtime libs are static.
8949 allow_libtool_libs_with_static_runtimes=no
8951 # Compiler flag to allow reflexive dlopens.
8952 export_dynamic_flag_spec="\${wl}--export-dynamic"
8954 # Compiler flag to generate shared objects directly from archives.
8955 whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
8957 # Whether the compiler copes with passing no objects directly.
8958 compiler_needs_object="no"
8960 # Create an old-style archive from a shared archive.
8961 old_archive_from_new_cmds=""
8963 # Create a temporary old-style archive to link instead of a shared archive.
8964 old_archive_from_expsyms_cmds=""
8966 # Commands used to build a shared archive.
8967 archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
8968 archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib"
8970 # Commands used to build a loadable module if different from building
8971 # a shared archive.
8972 module_cmds=""
8973 module_expsym_cmds=""
8975 # Whether we are building with GNU ld or not.
8976 with_gnu_ld="yes"
8978 # Flag that allows shared libraries with undefined symbols to be built.
8979 allow_undefined_flag=""
8981 # Flag that enforces no undefined symbols.
8982 no_undefined_flag=""
8984 # Flag to hardcode $libdir into a binary during linking.
8985 # This must work even if $libdir does not exist
8986 hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
8988 # If ld is used when linking, flag to hardcode $libdir into a binary
8989 # during linking. This must work even if $libdir does not exist.
8990 hardcode_libdir_flag_spec_ld=""
8992 # Whether we need a single "-rpath" flag with a separated argument.
8993 hardcode_libdir_separator=""
8995 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
8996 # DIR into the resulting binary.
8997 hardcode_direct=no
8999 # Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
9000 # DIR into the resulting binary and the resulting library dependency is
9001 # "absolute",i.e impossible to change by setting ${shlibpath_var} if the
9002 # library is relocated.
9003 hardcode_direct_absolute=no
9005 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
9006 # into the resulting binary.
9007 hardcode_minus_L=no
9009 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
9010 # into the resulting binary.
9011 hardcode_shlibpath_var=unsupported
9013 # Set to "yes" if building a shared library automatically hardcodes DIR
9014 # into the library and all subsequent libraries and executables linked
9015 # against it.
9016 hardcode_automatic=no
9018 # Set to yes if linker adds runtime paths of dependent libraries
9019 # to runtime path list.
9020 inherit_rpath=no
9022 # Whether libtool must link a program against all its dependency libraries.
9023 link_all_deplibs=no
9025 # Fix the shell variable $srcfile for the compiler.
9026 fix_srcfile_path=""
9028 # Set to "yes" if exported symbols are required.
9029 always_export_symbols=no
9031 # The commands to list exported symbols.
9032 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
9034 # Symbols that should not be listed in the preloaded symbols.
9035 exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
9037 # Symbols that must always be exported.
9038 include_expsyms=""
9040 # Commands necessary for linking programs (against libraries) with templates.
9041 prelink_cmds=""
9043 # Specify filename containing input files.
9044 file_list_spec=""
9046 # How to hardcode a shared library path into an executable.
9047 hardcode_action=immediate
9049 # The directories searched by this compiler when creating a shared library.
9050 compiler_lib_search_dirs="/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4 /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/../../../../mipsel-linux-uclibc/lib"
9052 # Dependencies to place before and after the objects being linked to
9053 # create a shared library.
9054 predep_objects="/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/../../../../mipsel-linux-uclibc/lib/crti.o /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/crtbeginS.o"
9055 postdep_objects="/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/crtendS.o /opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/../../../../mipsel-linux-uclibc/lib/crtn.o"
9056 predeps=""
9057 postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
9059 # The library search path used internally by the compiler when linking
9060 # a shared library.
9061 compiler_lib_search_path="-L/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4 -L/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc -L/opt/brcm/K24/hndtools-mipsel-uclibc-4.2.4/bin/../lib/gcc/mipsel-linux-uclibc/4.2.4/../../../../mipsel-linux-uclibc/lib"
9063 # ### END LIBTOOL TAG CONFIG: CXX