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