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