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